--- a/.hgtags-top-repo Mon Jan 27 21:01:55 2014 -0800
+++ b/.hgtags-top-repo Wed Jul 05 19:27:58 2017 +0200
@@ -243,3 +243,4 @@
9e90215673be68a3e77a9e444e4232076373734d jdk8-b119
cd3825b2983045784d6fc6d1729c799b08215752 jdk8-b120
1e1f86d5d4e22c15a9bf9f1581acddb8c59abae2 jdk9-b00
+50669e45cec4491de0d921d3118a3fe2e767020a jdk9-b01
--- a/common/autoconf/boot-jdk.m4 Mon Jan 27 21:01:55 2014 -0800
+++ b/common/autoconf/boot-jdk.m4 Wed Jul 05 19:27:58 2017 +0200
@@ -324,8 +324,6 @@
fi
# When is adding -client something that speeds up the JVM?
# ADD_JVM_ARG_IF_OK([-client],boot_jdk_jvmargs,[$JAVA])
- ADD_JVM_ARG_IF_OK([-XX:PermSize=32m],boot_jdk_jvmargs,[$JAVA])
- ADD_JVM_ARG_IF_OK([-XX:MaxPermSize=160m],boot_jdk_jvmargs,[$JAVA])
ADD_JVM_ARG_IF_OK([-XX:ThreadStackSize=$STACK_SIZE],boot_jdk_jvmargs,[$JAVA])
# Disable special log output when a debug build is used as Boot JDK...
ADD_JVM_ARG_IF_OK([-XX:-PrintVMOptions -XX:-UnlockDiagnosticVMOptions -XX:-LogVMOutput],boot_jdk_jvmargs,[$JAVA])
--- a/common/autoconf/generated-configure.sh Mon Jan 27 21:01:55 2014 -0800
+++ b/common/autoconf/generated-configure.sh Wed Jul 05 19:27:58 2017 +0200
@@ -3865,7 +3865,7 @@
#CUSTOM_AUTOCONF_INCLUDE
# Do not change or remove the following line, it is needed for consistency checks:
-DATE_WHEN_GENERATED=1389186094
+DATE_WHEN_GENERATED=1389815815
###############################################################################
#
@@ -11156,6 +11156,12 @@
as_fn_error $? "Update version must have a value" "$LINENO" 5
elif test "x$with_update_version" != x; then
JDK_UPDATE_VERSION="$with_update_version"
+ # On macosx 10.7, it's not possible to set --with-update-version=0X due
+ # to a bug in expr (which reduces it to just X). To work around this, we
+ # always add a 0 to one digit update versions.
+ if test "${#JDK_UPDATE_VERSION}" = "1"; then
+ JDK_UPDATE_VERSION="0${JDK_UPDATE_VERSION}"
+ fi
fi
@@ -16068,36 +16074,6 @@
# When is adding -client something that speeds up the JVM?
# ADD_JVM_ARG_IF_OK([-client],boot_jdk_jvmargs,[$JAVA])
- $ECHO "Check if jvm arg is ok: -XX:PermSize=32m" >&5
- $ECHO "Command: $JAVA -XX:PermSize=32m -version" >&5
- OUTPUT=`$JAVA -XX:PermSize=32m -version 2>&1`
- FOUND_WARN=`$ECHO "$OUTPUT" | grep -i warn`
- FOUND_VERSION=`$ECHO $OUTPUT | grep " version \""`
- if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
- boot_jdk_jvmargs="$boot_jdk_jvmargs -XX:PermSize=32m"
- JVM_ARG_OK=true
- else
- $ECHO "Arg failed:" >&5
- $ECHO "$OUTPUT" >&5
- JVM_ARG_OK=false
- fi
-
-
- $ECHO "Check if jvm arg is ok: -XX:MaxPermSize=160m" >&5
- $ECHO "Command: $JAVA -XX:MaxPermSize=160m -version" >&5
- OUTPUT=`$JAVA -XX:MaxPermSize=160m -version 2>&1`
- FOUND_WARN=`$ECHO "$OUTPUT" | grep -i warn`
- FOUND_VERSION=`$ECHO $OUTPUT | grep " version \""`
- if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
- boot_jdk_jvmargs="$boot_jdk_jvmargs -XX:MaxPermSize=160m"
- JVM_ARG_OK=true
- else
- $ECHO "Arg failed:" >&5
- $ECHO "$OUTPUT" >&5
- JVM_ARG_OK=false
- fi
-
-
$ECHO "Check if jvm arg is ok: -XX:ThreadStackSize=$STACK_SIZE" >&5
$ECHO "Command: $JAVA -XX:ThreadStackSize=$STACK_SIZE -version" >&5
OUTPUT=`$JAVA -XX:ThreadStackSize=$STACK_SIZE -version 2>&1`
@@ -20011,8 +19987,8 @@
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no, keeping CC" >&5
$as_echo "no, keeping CC" >&6; }
- CC="$TEST_COMPILER"
- fi
+ fi
+
COMPILER=$CC
COMPILER_NAME=$COMPILER_NAME
@@ -21590,8 +21566,8 @@
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no, keeping CXX" >&5
$as_echo "no, keeping CXX" >&6; }
- CXX="$TEST_COMPILER"
- fi
+ fi
+
COMPILER=$CXX
COMPILER_NAME=$COMPILER_NAME
--- a/common/autoconf/jdk-options.m4 Mon Jan 27 21:01:55 2014 -0800
+++ b/common/autoconf/jdk-options.m4 Wed Jul 05 19:27:58 2017 +0200
@@ -105,7 +105,7 @@
fi
# Replace the commas with AND for use in the build directory name.
- ANDED_JVM_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/^,//' -e 's/,$//' -e 's/,/AND/'`
+ ANDED_JVM_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/^,//' -e 's/,$//' -e 's/,/AND/g'`
COUNT_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/server,/1/' -e 's/client,/1/' -e 's/minimal1,/1/' -e 's/kernel,/1/' -e 's/zero,/1/' -e 's/zeroshark,/1/'`
if test "x$COUNT_VARIANTS" != "x,1"; then
BUILDING_MULTIPLE_JVM_VARIANTS=yes
@@ -423,6 +423,12 @@
AC_MSG_ERROR([Update version must have a value])
elif test "x$with_update_version" != x; then
JDK_UPDATE_VERSION="$with_update_version"
+ # On macosx 10.7, it's not possible to set --with-update-version=0X due
+ # to a bug in expr (which reduces it to just X). To work around this, we
+ # always add a 0 to one digit update versions.
+ if test "${#JDK_UPDATE_VERSION}" = "1"; then
+ JDK_UPDATE_VERSION="0${JDK_UPDATE_VERSION}"
+ fi
fi
AC_ARG_WITH(user-release-suffix, [AS_HELP_STRING([--with-user-release-suffix],
--- a/common/autoconf/toolchain.m4 Mon Jan 27 21:01:55 2014 -0800
+++ b/common/autoconf/toolchain.m4 Wed Jul 05 19:27:58 2017 +0200
@@ -166,8 +166,8 @@
$1="$PROPER_COMPILER_$1"
else
AC_MSG_RESULT([no, keeping $1])
- $1="$TEST_COMPILER"
fi
+
TOOLCHAIN_CHECK_COMPILER_VERSION([$1], [$COMPILER_NAME])
])
--- a/corba/.hgtags Mon Jan 27 21:01:55 2014 -0800
+++ b/corba/.hgtags Wed Jul 05 19:27:58 2017 +0200
@@ -243,3 +243,4 @@
379fc7609beb7a3d85ebc0cc21a8a51c60d3c7d3 jdk8-b119
53fd772d28c8a9f0f43adfc06f75f6b3cfa93cb5 jdk8-b120
a7d3638deb2f4e33217b1ecf889479e90f9e5b50 jdk9-b00
+79a8136b18c1c6848f500088f5a4b39f262f082d jdk9-b01
--- a/corba/src/share/classes/com/sun/corba/se/impl/corba/AnyImpl.java Mon Jan 27 21:01:55 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/corba/AnyImpl.java Wed Jul 05 19:27:58 2017 +0200
@@ -82,11 +82,18 @@
super((ORB)orb);
}
- public org.omg.CORBA.portable.InputStream create_input_stream()
- {
- return new AnyInputStream(
- (com.sun.corba.se.impl.encoding.EncapsInputStream)
- super.create_input_stream());
+ public org.omg.CORBA.portable.InputStream create_input_stream() {
+ final org.omg.CORBA.portable.InputStream is = super
+ .create_input_stream();
+ AnyInputStream aIS = AccessController
+ .doPrivileged(new PrivilegedAction<AnyInputStream>() {
+ @Override
+ public AnyInputStream run() {
+ return new AnyInputStream(
+ (com.sun.corba.se.impl.encoding.EncapsInputStream) is);
+ }
+ });
+ return aIS;
}
}
--- a/corba/src/share/classes/com/sun/corba/se/impl/encoding/EncapsInputStream.java Mon Jan 27 21:01:55 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/encoding/EncapsInputStream.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -36,11 +36,10 @@
import com.sun.corba.se.impl.protocol.giopmsgheaders.Message;
import com.sun.corba.se.spi.orb.ORB;
-
import com.sun.corba.se.spi.logging.CORBALogDomains;
-
import com.sun.corba.se.impl.logging.ORBUtilSystemException;
+import sun.corba.EncapsInputStreamFactory;
/**
* Encapsulations are supposed to explicitly define their
* code sets and GIOP version. The original resolution to issue 2784
@@ -148,7 +147,7 @@
}
public CDRInputStream dup() {
- return new EncapsInputStream(this);
+ return EncapsInputStreamFactory.newEncapsInputStream(this);
}
protected CodeSetConversion.BTCConverter createCharBTCConverter() {
--- a/corba/src/share/classes/com/sun/corba/se/impl/encoding/EncapsOutputStream.java Mon Jan 27 21:01:55 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/encoding/EncapsOutputStream.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -39,6 +39,8 @@
import com.sun.corba.se.impl.protocol.giopmsgheaders.Message;
import com.sun.corba.se.impl.orbutil.ORBConstants;
+import sun.corba.EncapsInputStreamFactory;
+
/**
* Encapsulations are supposed to explicitly define their
* code sets and GIOP version. The original resolution to issue 2784
@@ -107,11 +109,11 @@
public org.omg.CORBA.portable.InputStream create_input_stream() {
freeInternalCaches();
- return new EncapsInputStream(orb(),
- getByteBuffer(),
- getSize(),
- isLittleEndian(),
- getGIOPVersion());
+ return EncapsInputStreamFactory.newEncapsInputStream(orb(),
+ getByteBuffer(),
+ getSize(),
+ isLittleEndian(),
+ getGIOPVersion());
}
protected CodeSetConversion.CTBConverter createCharCTBConverter() {
--- a/corba/src/share/classes/com/sun/corba/se/impl/encoding/TypeCodeInputStream.java Mon Jan 27 21:01:55 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/encoding/TypeCodeInputStream.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -64,6 +64,8 @@
import com.sun.corba.se.impl.encoding.CDROutputStream;
import com.sun.corba.se.impl.encoding.MarshalInputStream;
+import sun.corba.EncapsInputStreamFactory;
+
public class TypeCodeInputStream extends EncapsInputStream implements TypeCodeReader
{
private Map typeMap = null;
@@ -157,11 +159,13 @@
// create an encapsulation using the marshal buffer
if (is instanceof CDRInputStream) {
- encap = new TypeCodeInputStream((ORB)_orb, encapBuffer, encapBuffer.length,
- ((CDRInputStream)is).isLittleEndian(),
- ((CDRInputStream)is).getGIOPVersion());
+ encap = EncapsInputStreamFactory.newTypeCodeInputStream((ORB) _orb,
+ encapBuffer, encapBuffer.length,
+ ((CDRInputStream) is).isLittleEndian(),
+ ((CDRInputStream) is).getGIOPVersion());
} else {
- encap = new TypeCodeInputStream((ORB)_orb, encapBuffer, encapBuffer.length);
+ encap = EncapsInputStreamFactory.newTypeCodeInputStream((ORB) _orb,
+ encapBuffer, encapBuffer.length);
}
encap.setEnclosingInputStream(is);
encap.makeEncapsulation();
--- a/corba/src/share/classes/com/sun/corba/se/impl/encoding/TypeCodeOutputStream.java Mon Jan 27 21:01:55 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/encoding/TypeCodeOutputStream.java Wed Jul 05 19:27:58 2017 +0200
@@ -61,6 +61,8 @@
import java.math.BigInteger;
import java.nio.ByteBuffer;
+import sun.corba.EncapsInputStreamFactory;
+
public final class TypeCodeOutputStream extends EncapsOutputStream
{
private OutputStream enclosure = null;
@@ -77,9 +79,9 @@
public org.omg.CORBA.portable.InputStream create_input_stream()
{
- //return new TypeCodeInputStream((ORB)orb(), getByteBuffer(), getIndex(), isLittleEndian());
- TypeCodeInputStream tcis
- = new TypeCodeInputStream((ORB)orb(), getByteBuffer(), getIndex(), isLittleEndian(), getGIOPVersion());
+ TypeCodeInputStream tcis = EncapsInputStreamFactory
+ .newTypeCodeInputStream((ORB) orb(), getByteBuffer(),
+ getIndex(), isLittleEndian(), getGIOPVersion());
//if (TypeCodeImpl.debug) {
//System.out.println("Created TypeCodeInputStream " + tcis + " with no parent");
//tcis.printBuffer();
--- a/corba/src/share/classes/com/sun/corba/se/impl/interceptors/CDREncapsCodec.java Mon Jan 27 21:01:55 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/interceptors/CDREncapsCodec.java Wed Jul 05 19:27:58 2017 +0200
@@ -33,6 +33,8 @@
import com.sun.corba.se.spi.ior.iiop.GIOPVersion;
import com.sun.corba.se.spi.logging.CORBALogDomains;
+import sun.corba.EncapsInputStreamFactory;
+
import com.sun.corba.se.impl.corba.AnyImpl;
import com.sun.corba.se.impl.encoding.EncapsInputStream;
import com.sun.corba.se.impl.encoding.EncapsOutputStream;
@@ -193,8 +195,9 @@
// it is turned into a FormatMismatch exception.
try {
- EncapsInputStream cdrIn = new EncapsInputStream( orb, data,
- data.length, giopVersion );
+ EncapsInputStream cdrIn = EncapsInputStreamFactory.newEncapsInputStream( orb, data,
+ data.length, giopVersion );
+
cdrIn.consumeEndian();
--- a/corba/src/share/classes/com/sun/corba/se/impl/io/IIOPInputStream.java Mon Jan 27 21:01:55 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/io/IIOPInputStream.java Wed Jul 05 19:27:58 2017 +0200
@@ -370,7 +370,7 @@
* @exception IOException Any of the usual Input/Output related exceptions.
* @since JDK1.1
*/
- public final Object readObjectDelegate() throws IOException
+ public final synchronized Object readObjectDelegate() throws IOException
{
try {
@@ -389,7 +389,7 @@
}
}
- final Object simpleReadObject(Class clz,
+ final synchronized Object simpleReadObject(Class clz,
String repositoryID,
com.sun.org.omg.SendingContext.CodeBase sender,
int offset)
@@ -461,7 +461,7 @@
return obj;
}
- public final void simpleSkipObject(String repositoryID,
+ public final synchronized void simpleSkipObject(String repositoryID,
com.sun.org.omg.SendingContext.CodeBase sender)
/* throws OptionalDataException, ClassNotFoundException, IOException */
{
@@ -559,7 +559,7 @@
* objects.
* @since JDK1.1
*/
- public final void defaultReadObjectDelegate()
+ final synchronized void defaultReadObjectDelegate()
/* throws IOException, ClassNotFoundException, NotActiveException */
{
try {
@@ -988,7 +988,7 @@
}
}
- private Object inputObject(Class clz,
+ private synchronized Object inputObject(Class clz,
String repositoryID,
com.sun.org.omg.SendingContext.CodeBase sender,
int offset)
@@ -1317,7 +1317,7 @@
* a form of custom marshaling.
*
*/
- private Object inputObjectUsingFVD(Class clz,
+ private synchronized Object inputObjectUsingFVD(Class clz,
String repositoryID,
com.sun.org.omg.SendingContext.CodeBase sender,
int offset)
--- a/corba/src/share/classes/com/sun/corba/se/impl/io/InputStreamHook.java Mon Jan 27 21:01:55 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/io/InputStreamHook.java Wed Jul 05 19:27:58 2017 +0200
@@ -201,7 +201,7 @@
readObjectState.endDefaultReadObject(this);
}
- public abstract void defaultReadObjectDelegate();
+ abstract void defaultReadObjectDelegate();
abstract void readFields(java.util.Map fieldToValueMap)
throws java.io.InvalidClassException, java.io.StreamCorruptedException,
--- a/corba/src/share/classes/com/sun/corba/se/impl/ior/EncapsulationUtility.java Mon Jan 27 21:01:55 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/ior/EncapsulationUtility.java Wed Jul 05 19:27:58 2017 +0200
@@ -47,6 +47,8 @@
import com.sun.corba.se.impl.encoding.EncapsOutputStream ;
import com.sun.corba.se.impl.encoding.EncapsInputStream ;
+import sun.corba.EncapsInputStreamFactory;
+
/**
* This static utility class contains various utility methods for reading and
* writing CDR encapsulations.
@@ -108,8 +110,8 @@
static public InputStream getEncapsulationStream( InputStream is )
{
byte[] data = readOctets( is ) ;
- EncapsInputStream result = new EncapsInputStream( is.orb(), data,
- data.length ) ;
+ EncapsInputStream result = EncapsInputStreamFactory.newEncapsInputStream( is.orb(), data,
+ data.length ) ;
result.consumeEndian() ;
return result ;
}
--- a/corba/src/share/classes/com/sun/corba/se/impl/ior/ObjectKeyFactoryImpl.java Mon Jan 27 21:01:55 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/ior/ObjectKeyFactoryImpl.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -49,6 +49,8 @@
import com.sun.corba.se.impl.logging.IORSystemException ;
import com.sun.corba.se.impl.encoding.EncapsInputStream ;
+import sun.corba.EncapsInputStreamFactory;
+
/** Based on the magic and scid, return the appropriate
* ObjectKeyTemplate. Expects to be called with a valid
@@ -217,7 +219,7 @@
public ObjectKey create( byte[] key )
{
OctetSeqHolder osh = new OctetSeqHolder() ;
- EncapsInputStream is = new EncapsInputStream( orb, key, key.length ) ;
+ EncapsInputStream is = EncapsInputStreamFactory.newEncapsInputStream( orb, key, key.length );
ObjectKeyTemplate oktemp = create( is, fullKey, osh ) ;
if (oktemp == null)
--- a/corba/src/share/classes/com/sun/corba/se/impl/ior/iiop/IIOPProfileImpl.java Mon Jan 27 21:01:55 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/ior/iiop/IIOPProfileImpl.java Wed Jul 05 19:27:58 2017 +0200
@@ -70,6 +70,8 @@
import com.sun.corba.se.impl.encoding.EncapsInputStream ;
import com.sun.corba.se.impl.encoding.EncapsOutputStream ;
+import sun.corba.EncapsInputStreamFactory;
+
import com.sun.corba.se.impl.util.JDKBridge;
import com.sun.corba.se.impl.logging.IORSystemException;
@@ -170,8 +172,8 @@
throw wrapper.invalidTaggedProfile() ;
}
- EncapsInputStream istr = new EncapsInputStream((ORB)orb, profile.profile_data,
- profile.profile_data.length);
+ EncapsInputStream istr = EncapsInputStreamFactory.newEncapsInputStream((ORB)orb, profile.profile_data,
+ profile.profile_data.length);
istr.consumeEndian();
init( istr ) ;
}
--- a/corba/src/share/classes/com/sun/corba/se/impl/presentation/rmi/StubFactoryDynamicBase.java Mon Jan 27 21:01:55 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/presentation/rmi/StubFactoryDynamicBase.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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,6 +25,7 @@
package com.sun.corba.se.impl.presentation.rmi ;
+import java.io.SerializablePermission;
import java.lang.reflect.InvocationHandler ;
import java.lang.reflect.Proxy ;
@@ -38,11 +39,18 @@
{
protected final ClassLoader loader ;
- public StubFactoryDynamicBase( PresentationManager.ClassData classData,
- ClassLoader loader )
- {
- super( classData ) ;
+ private static Void checkPermission() {
+ SecurityManager sm = System.getSecurityManager();
+ if (sm != null) {
+ sm.checkPermission(new SerializablePermission(
+ "enableSubclassImplementation"));
+ }
+ return null;
+ }
+ private StubFactoryDynamicBase(Void unused,
+ PresentationManager.ClassData classData, ClassLoader loader) {
+ super(classData);
// this.loader must not be null, or the newProxyInstance call
// will fail.
if (loader == null) {
@@ -55,5 +63,11 @@
}
}
+ public StubFactoryDynamicBase( PresentationManager.ClassData classData,
+ ClassLoader loader )
+ {
+ this (checkPermission(), classData, loader);
+ }
+
public abstract org.omg.CORBA.Object makeStub() ;
}
--- a/corba/src/share/classes/com/sun/corba/se/impl/presentation/rmi/StubFactoryFactoryProxyImpl.java Mon Jan 27 21:01:55 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/presentation/rmi/StubFactoryFactoryProxyImpl.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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,14 +25,22 @@
package com.sun.corba.se.impl.presentation.rmi;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import com.sun.corba.se.spi.presentation.rmi.PresentationManager ;
public class StubFactoryFactoryProxyImpl extends StubFactoryFactoryDynamicBase
{
public PresentationManager.StubFactory makeDynamicStubFactory(
- PresentationManager pm, PresentationManager.ClassData classData,
- ClassLoader classLoader )
+ PresentationManager pm, final PresentationManager.ClassData classData,
+ final ClassLoader classLoader )
{
- return new StubFactoryProxyImpl( classData, classLoader ) ;
+ return AccessController
+ .doPrivileged(new PrivilegedAction<StubFactoryProxyImpl>() {
+ @Override
+ public StubFactoryProxyImpl run() {
+ return new StubFactoryProxyImpl(classData, classLoader);
+ }
+ });
}
}
--- a/corba/src/share/classes/com/sun/corba/se/impl/protocol/CorbaClientRequestDispatcherImpl.java Mon Jan 27 21:01:55 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/protocol/CorbaClientRequestDispatcherImpl.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -115,6 +115,7 @@
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ConcurrentHashMap;
+import sun.corba.EncapsInputStreamFactory;
/**
* ClientDelegate is the RMI client-side subcontract or representation
@@ -847,8 +848,8 @@
}
byte[] data = ((UnknownServiceContext)sc).getData();
EncapsInputStream in =
- new EncapsInputStream((ORB)messageMediator.getBroker(),
- data, data.length);
+ EncapsInputStreamFactory.newEncapsInputStream((ORB)messageMediator.getBroker(),
+ data, data.length);
in.consumeEndian();
String msg =
--- a/corba/src/share/classes/com/sun/corba/se/impl/protocol/SharedCDRClientRequestDispatcherImpl.java Mon Jan 27 21:01:55 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/protocol/SharedCDRClientRequestDispatcherImpl.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -36,7 +36,8 @@
import java.util.Iterator;
import java.rmi.RemoteException;
import java.nio.ByteBuffer;
-
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import javax.rmi.CORBA.Util;
import javax.rmi.CORBA.Tie;
@@ -111,6 +112,7 @@
import com.sun.corba.se.impl.protocol.giopmsgheaders.ProfileAddr;
import com.sun.corba.se.impl.protocol.giopmsgheaders.ReferenceAddr;
import com.sun.corba.se.impl.transport.CorbaContactInfoListIteratorImpl;
+import com.sun.corba.se.impl.protocol.giopmsgheaders.Message;
import com.sun.corba.se.impl.util.JDKBridge;
/**
@@ -156,10 +158,17 @@
ByteBufferWithInfo bbwi = cdrOutputObject.getByteBufferWithInfo();
cdrOutputObject.getMessageHeader().setSize(bbwi.byteBuffer, bbwi.getSize());
-
- CDRInputObject cdrInputObject =
- new CDRInputObject(orb, null, bbwi.byteBuffer,
- cdrOutputObject.getMessageHeader());
+ final ORB inOrb = orb;
+ final ByteBuffer inBuffer = bbwi.byteBuffer;
+ final Message inMsg = cdrOutputObject.getMessageHeader();
+ CDRInputObject cdrInputObject = AccessController
+ .doPrivileged(new PrivilegedAction<CDRInputObject>() {
+ @Override
+ public CDRInputObject run() {
+ return new CDRInputObject(inOrb, null, inBuffer,
+ inMsg);
+ }
+ });
messageMediator.setInputObject(cdrInputObject);
cdrInputObject.setMessageMediator(messageMediator);
@@ -192,9 +201,17 @@
cdrOutputObject = (CDROutputObject) messageMediator.getOutputObject();
bbwi = cdrOutputObject.getByteBufferWithInfo();
cdrOutputObject.getMessageHeader().setSize(bbwi.byteBuffer, bbwi.getSize());
- cdrInputObject =
- new CDRInputObject(orb, null, bbwi.byteBuffer,
- cdrOutputObject.getMessageHeader());
+ final ORB inOrb2 = orb;
+ final ByteBuffer inBuffer2 = bbwi.byteBuffer;
+ final Message inMsg2 = cdrOutputObject.getMessageHeader();
+ cdrInputObject = AccessController
+ .doPrivileged(new PrivilegedAction<CDRInputObject>() {
+ @Override
+ public CDRInputObject run() {
+ return new CDRInputObject(inOrb2, null, inBuffer2,
+ inMsg2);
+ }
+ });
messageMediator.setInputObject(cdrInputObject);
cdrInputObject.setMessageMediator(messageMediator);
--- a/corba/src/share/classes/com/sun/corba/se/impl/resolver/INSURLOperationImpl.java Mon Jan 27 21:01:55 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/impl/resolver/INSURLOperationImpl.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -36,6 +36,8 @@
import org.omg.CosNaming.NamingContextExt ;
import org.omg.CosNaming.NamingContextExtHelper ;
+import sun.corba.EncapsInputStreamFactory;
+
import com.sun.corba.se.spi.ior.IOR;
import com.sun.corba.se.spi.ior.IORTemplate;
import com.sun.corba.se.spi.ior.ObjectKey;
@@ -114,8 +116,8 @@
buf[j] = (byte)((ORBUtility.hexOf(str.charAt(i)) << UN_SHIFT) & 0xF0);
buf[j] |= (byte)(ORBUtility.hexOf(str.charAt(i+1)) & 0x0F);
}
- EncapsInputStream s = new EncapsInputStream(orb, buf, buf.length,
- orb.getORBData().getGIOPVersion());
+ EncapsInputStream s = EncapsInputStreamFactory.newEncapsInputStream(orb, buf, buf.length,
+ orb.getORBData().getGIOPVersion());
s.consumeEndian();
return s.read_Object() ;
}
--- a/corba/src/share/classes/com/sun/corba/se/spi/servicecontext/ServiceContexts.java Mon Jan 27 21:01:55 2014 -0800
+++ b/corba/src/share/classes/com/sun/corba/se/spi/servicecontext/ServiceContexts.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2004, 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
@@ -58,6 +58,9 @@
import com.sun.corba.se.impl.util.Utility ;
import com.sun.corba.se.impl.logging.ORBUtilSystemException ;
+import sun.corba.EncapsInputStreamFactory;
+
+
public class ServiceContexts {
private static boolean isDebugging( OutputStream os )
{
@@ -198,11 +201,11 @@
// Note: As of Jan 2001, no standard OMG or Sun service contexts
// ship wchar data or are defined as using anything but GIOP 1.0 CDR.
EncapsInputStream eis
- = new EncapsInputStream(orb,
- data,
- data.length,
- giopVersion,
- codeBase);
+ = EncapsInputStreamFactory.newEncapsInputStream(orb,
+ data,
+ data.length,
+ giopVersion,
+ codeBase);
eis.consumeEndian();
// Now the input stream passed to a ServiceContext
--- a/corba/src/share/classes/org/omg/CORBA_2_3/portable/InputStream.java Mon Jan 27 21:01:55 2014 -0800
+++ b/corba/src/share/classes/org/omg/CORBA_2_3/portable/InputStream.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -31,6 +31,10 @@
package org.omg.CORBA_2_3.portable;
+import java.io.SerializablePermission;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
/**
* InputStream provides for the reading of all of the mapped IDL types
* from the stream. It extends org.omg.CORBA.portable.InputStream. This
@@ -43,6 +47,43 @@
public abstract class InputStream extends org.omg.CORBA.portable.InputStream {
+
+ private static final String ALLOW_SUBCLASS_PROP = "jdk.corba.allowInputStreamSubclass";
+
+ private static final boolean allowSubclass = AccessController.doPrivileged(
+ new PrivilegedAction<Boolean>() {
+ @Override
+ public Boolean run() {
+ String prop = System.getProperty(ALLOW_SUBCLASS_PROP);
+ return prop == null ? false :
+ (prop.equalsIgnoreCase("false") ? false : true);
+ }
+ });
+
+ private static Void checkPermission() {
+ SecurityManager sm = System.getSecurityManager();
+ if (sm != null) {
+ if (!allowSubclass)
+ sm.checkPermission(new
+ SerializablePermission("enableSubclassImplementation"));
+ }
+ return null;
+ }
+
+ private InputStream(Void ignore) { }
+
+ /**
+ * Create a new instance of this class.
+ *
+ * throw SecurityException if SecurityManager is installed and
+ * enableSubclassImplementation SerializablePermission
+ * is not granted or jdk.corba.allowOutputStreamSubclass system
+ * property is either not set or is set to 'false'
+ */
+ public InputStream() {
+ this(checkPermission());
+ }
+
/**
* Unmarshalls a value type from the input stream.
* @return the value type unmarshalled from the input stream
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/corba/src/share/classes/sun/corba/EncapsInputStreamFactory.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,153 @@
+/*
+ * Copyright (c) 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
+ * 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.
+ */
+package sun.corba;
+
+import java.nio.ByteBuffer;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
+
+import com.sun.corba.se.impl.encoding.EncapsInputStream;
+import com.sun.corba.se.impl.encoding.TypeCodeInputStream;
+import com.sun.corba.se.impl.protocol.giopmsgheaders.Message;
+import com.sun.corba.se.pept.protocol.MessageMediator;
+import com.sun.corba.se.spi.ior.iiop.GIOPVersion;
+import com.sun.corba.se.spi.orb.ORB;
+import com.sun.org.omg.SendingContext.CodeBase;
+
+public class EncapsInputStreamFactory {
+
+ public static EncapsInputStream newEncapsInputStream(
+ final org.omg.CORBA.ORB orb, final byte[] buf, final int size,
+ final boolean littleEndian, final GIOPVersion version) {
+ return AccessController
+ .doPrivileged(new PrivilegedAction<EncapsInputStream>() {
+ @Override
+ public EncapsInputStream run() {
+ return new EncapsInputStream(orb, buf, size,
+ littleEndian, version);
+ }
+ });
+ }
+
+ public static EncapsInputStream newEncapsInputStream(
+ final org.omg.CORBA.ORB orb, final ByteBuffer byteBuffer,
+ final int size, final boolean littleEndian,
+ final GIOPVersion version) {
+ return AccessController
+ .doPrivileged(new PrivilegedAction<EncapsInputStream>() {
+ @Override
+ public EncapsInputStream run() {
+ return new EncapsInputStream(orb, byteBuffer, size,
+ littleEndian, version);
+ }
+ });
+ }
+
+ public static EncapsInputStream newEncapsInputStream(
+ final org.omg.CORBA.ORB orb, final byte[] data, final int size) {
+ return AccessController
+ .doPrivileged(new PrivilegedAction<EncapsInputStream>() {
+ @Override
+ public EncapsInputStream run() {
+ return new EncapsInputStream(orb, data, size);
+ }
+ });
+ }
+
+ public static EncapsInputStream newEncapsInputStream(
+ final EncapsInputStream eis) {
+ return AccessController
+ .doPrivileged(new PrivilegedAction<EncapsInputStream>() {
+ @Override
+ public EncapsInputStream run() {
+ return new EncapsInputStream(eis);
+ }
+ });
+ }
+
+ public static EncapsInputStream newEncapsInputStream(
+ final org.omg.CORBA.ORB orb, final byte[] data, final int size,
+ final GIOPVersion version) {
+ return AccessController
+ .doPrivileged(new PrivilegedAction<EncapsInputStream>() {
+ @Override
+ public EncapsInputStream run() {
+ return new EncapsInputStream(orb, data, size, version);
+ }
+ });
+ }
+
+ public static EncapsInputStream newEncapsInputStream(
+ final org.omg.CORBA.ORB orb, final byte[] data, final int size,
+ final GIOPVersion version, final CodeBase codeBase) {
+ return AccessController
+ .doPrivileged(new PrivilegedAction<EncapsInputStream>() {
+ @Override
+ public EncapsInputStream run() {
+ return new EncapsInputStream(orb, data, size, version,
+ codeBase);
+ }
+ });
+ }
+
+ public static TypeCodeInputStream newTypeCodeInputStream(
+ final org.omg.CORBA.ORB orb, final byte[] buf, final int size,
+ final boolean littleEndian, final GIOPVersion version) {
+ return AccessController
+ .doPrivileged(new PrivilegedAction<TypeCodeInputStream>() {
+ @Override
+ public TypeCodeInputStream run() {
+ return new TypeCodeInputStream(orb, buf, size,
+ littleEndian, version);
+ }
+ });
+ }
+
+ public static TypeCodeInputStream newTypeCodeInputStream(
+ final org.omg.CORBA.ORB orb, final ByteBuffer byteBuffer,
+ final int size, final boolean littleEndian,
+ final GIOPVersion version) {
+ return AccessController
+ .doPrivileged(new PrivilegedAction<TypeCodeInputStream>() {
+ @Override
+ public TypeCodeInputStream run() {
+ return new TypeCodeInputStream(orb, byteBuffer, size,
+ littleEndian, version);
+ }
+ });
+ }
+
+ public static TypeCodeInputStream newTypeCodeInputStream(
+ final org.omg.CORBA.ORB orb, final byte[] data, final int size) {
+ return AccessController
+ .doPrivileged(new PrivilegedAction<TypeCodeInputStream>() {
+ @Override
+ public TypeCodeInputStream run() {
+ return new TypeCodeInputStream(orb, data, size);
+ }
+ });
+ }
+}
--- a/hotspot/.hgtags Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/.hgtags Wed Jul 05 19:27:58 2017 +0200
@@ -403,3 +403,4 @@
05fedd51e40da22c9460bf17c7185889e435db3d hs25-b62
fca262db9c4309f99d2f5542ab0780e45c2f1578 jdk8-b120
ce2d7e46f3c7e41241f3b407705a4071323a11ab jdk9-b00
+050a626a88951140df874f7b163e304d07b6c296 jdk9-b01
--- a/hotspot/agent/make/Makefile Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/make/Makefile Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 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
--- a/hotspot/agent/src/os/linux/libproc.h Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/os/linux/libproc.h Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/agent/src/os/linux/salibelf.c Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/os/linux/salibelf.c Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/agent/src/os/linux/symtab.c Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/os/linux/symtab.c Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -214,8 +214,10 @@
+ 2);
strcpy(debug_pathname, name);
char *last_slash = strrchr(debug_pathname, '/');
- if (last_slash == NULL)
+ if (last_slash == NULL) {
+ free(debug_pathname);
return -1;
+ }
/* Look in the same directory as the object. */
strcpy(last_slash+1, debug_filename);
--- a/hotspot/agent/src/os/solaris/proc/saproc.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/os/solaris/proc/saproc.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/agent/src/os/win32/windbg/sawindbg.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/os/win32/windbg/sawindbg.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/CLHSDB.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/CLHSDB.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/CommandProcessor.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/CommandProcessor.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/HSDB.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/HSDB.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/LinuxVtblAccess.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/LinuxVtblAccess.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/asm/Disassembler.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/asm/Disassembler.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/ci/ciEnv.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/ci/ciEnv.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, 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
@@ -95,9 +95,15 @@
int entryBci = task.osrBci();
int compLevel = task.compLevel();
Klass holder = method.getMethodHolder();
- out.println("compile " + holder.getName().asString() + " " +
- OopUtilities.escapeString(method.getName().asString()) + " " +
- method.getSignature().asString() + " " +
- entryBci + " " + compLevel);
+ out.print("compile " + holder.getName().asString() + " " +
+ OopUtilities.escapeString(method.getName().asString()) + " " +
+ method.getSignature().asString() + " " +
+ entryBci + " " + compLevel);
+ Compile compiler = compilerData();
+ if (compiler != null) {
+ // Dump inlining data.
+ compiler.dumpInlineData(out);
+ }
+ out.println();
}
}
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/ci/ciMethod.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/ci/ciMethod.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/code/NMethod.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/code/NMethod.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/compiler/CompileTask.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/compiler/CompileTask.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/BsdAddress.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/BsdAddress.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/BsdDebugger.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/BsdDebugger.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxAddress.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxAddress.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxDebuggerLocal.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxDebuggerLocal.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxOopHandle.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxOopHandle.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/amd64/LinuxAMD64CFrame.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/amd64/LinuxAMD64CFrame.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/x86/LinuxX86CFrame.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/x86/LinuxX86CFrame.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgCDebugger.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgCDebugger.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgDebuggerLocal.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgDebuggerLocal.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/windows/amd64/WindowsAMD64CFrame.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/windows/amd64/WindowsAMD64CFrame.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/windows/x86/WindowsX86CFrame.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/windows/x86/WindowsX86CFrame.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/ArrayTypeImpl.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/ArrayTypeImpl.java Wed Jul 05 19:27:58 2017 +0200
@@ -24,19 +24,29 @@
package sun.jvm.hotspot.jdi;
-import com.sun.jdi.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
import sun.jvm.hotspot.oops.ArrayKlass;
+import sun.jvm.hotspot.oops.Instance;
import sun.jvm.hotspot.oops.InstanceKlass;
-import sun.jvm.hotspot.oops.ObjArrayKlass;
-import sun.jvm.hotspot.oops.TypeArrayKlass;
import sun.jvm.hotspot.oops.Klass;
-import sun.jvm.hotspot.oops.Instance;
+import sun.jvm.hotspot.oops.ObjArrayKlass;
import sun.jvm.hotspot.oops.Symbol;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.Map;
+import sun.jvm.hotspot.oops.TypeArrayKlass;
+
+import com.sun.jdi.ArrayReference;
+import com.sun.jdi.ArrayType;
+import com.sun.jdi.ClassLoaderReference;
+import com.sun.jdi.ClassNotLoadedException;
+import com.sun.jdi.InterfaceType;
+import com.sun.jdi.Method;
+import com.sun.jdi.PrimitiveType;
+import com.sun.jdi.ReferenceType;
+import com.sun.jdi.Type;
+import com.sun.jdi.VirtualMachine;
public class ArrayTypeImpl extends ReferenceTypeImpl implements ArrayType {
protected ArrayTypeImpl(VirtualMachine aVm, ArrayKlass aRef) {
@@ -75,7 +85,8 @@
}
}
- void addVisibleMethods(Map methodMap) {
+ @Override
+ void addVisibleMethods(Map<String, Method> methodMap, Set<InterfaceType> handledInterfaces) {
// arrays don't have methods
}
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/ClassTypeImpl.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/ClassTypeImpl.java Wed Jul 05 19:27:58 2017 +0200
@@ -24,12 +24,30 @@
package sun.jvm.hotspot.jdi;
-import com.sun.jdi.*;
-import sun.jvm.hotspot.oops.Klass;
+import java.lang.ref.SoftReference;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
import sun.jvm.hotspot.oops.InstanceKlass;
-import java.util.*;
-import java.lang.ref.SoftReference;
+import com.sun.jdi.ClassNotLoadedException;
+import com.sun.jdi.ClassType;
+import com.sun.jdi.Field;
+import com.sun.jdi.IncompatibleThreadStateException;
+import com.sun.jdi.InterfaceType;
+import com.sun.jdi.InvalidTypeException;
+import com.sun.jdi.InvocationException;
+import com.sun.jdi.Method;
+import com.sun.jdi.ObjectReference;
+import com.sun.jdi.ReferenceType;
+import com.sun.jdi.ThreadReference;
+import com.sun.jdi.Value;
+import com.sun.jdi.VirtualMachine;
public class ClassTypeImpl extends ReferenceTypeImpl
implements ClassType
@@ -195,22 +213,26 @@
return null;
}
- void addVisibleMethods(Map methodMap) {
+ @Override
+ void addVisibleMethods(Map<String, Method> methodMap, Set<InterfaceType> seenInterfaces) {
/*
* Add methods from
* parent types first, so that the methods in this class will
* overwrite them in the hash table
*/
- Iterator iter = interfaces().iterator();
+ Iterator<InterfaceType> iter = interfaces().iterator();
while (iter.hasNext()) {
InterfaceTypeImpl interfaze = (InterfaceTypeImpl)iter.next();
- interfaze.addVisibleMethods(methodMap);
+ if (!seenInterfaces.contains(interfaze)) {
+ interfaze.addVisibleMethods(methodMap, seenInterfaces);
+ seenInterfaces.add(interfaze);
+ }
}
ClassTypeImpl clazz = (ClassTypeImpl)superclass();
if (clazz != null) {
- clazz.addVisibleMethods(methodMap);
+ clazz.addVisibleMethods(methodMap, seenInterfaces);
}
addToMethodMap(methodMap, methods());
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/InterfaceTypeImpl.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/InterfaceTypeImpl.java Wed Jul 05 19:27:58 2017 +0200
@@ -24,15 +24,22 @@
package sun.jvm.hotspot.jdi;
-import com.sun.jdi.*;
+import java.lang.ref.SoftReference;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
import sun.jvm.hotspot.oops.InstanceKlass;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.Iterator;
-import java.util.Collections;
-import java.lang.ref.SoftReference;
+import com.sun.jdi.ClassNotPreparedException;
+import com.sun.jdi.ClassType;
+import com.sun.jdi.InterfaceType;
+import com.sun.jdi.Method;
+import com.sun.jdi.ReferenceType;
+import com.sun.jdi.VirtualMachine;
public class InterfaceTypeImpl extends ReferenceTypeImpl
implements InterfaceType {
@@ -96,16 +103,20 @@
return implementors;
}
- void addVisibleMethods(Map methodMap) {
+ @Override
+ void addVisibleMethods(Map<String, Method> methodMap, Set<InterfaceType> seenInterfaces) {
/*
* Add methods from
* parent types first, so that the methods in this class will
* overwrite them in the hash table
*/
- Iterator iter = superinterfaces().iterator();
+ Iterator<InterfaceType> iter = superinterfaces().iterator();
while (iter.hasNext()) {
InterfaceTypeImpl interfaze = (InterfaceTypeImpl)iter.next();
- interfaze.addVisibleMethods(methodMap);
+ if (!seenInterfaces.contains(interfaze)) {
+ interfaze.addVisibleMethods(methodMap, seenInterfaces);
+ seenInterfaces.add(interfaze);
+ }
}
addToMethodMap(methodMap, methods());
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/JVMTIThreadState.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/JVMTIThreadState.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/ReferenceTypeImpl.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/ReferenceTypeImpl.java Wed Jul 05 19:27:58 2017 +0200
@@ -24,24 +24,45 @@
package sun.jvm.hotspot.jdi;
-import java.io.*;
-
-import com.sun.jdi.*;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.lang.ref.SoftReference;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
import sun.jvm.hotspot.memory.SystemDictionary;
+import sun.jvm.hotspot.oops.ArrayKlass;
+import sun.jvm.hotspot.oops.DefaultHeapVisitor;
import sun.jvm.hotspot.oops.Instance;
import sun.jvm.hotspot.oops.InstanceKlass;
-import sun.jvm.hotspot.oops.ArrayKlass;
import sun.jvm.hotspot.oops.JVMDIClassStatus;
import sun.jvm.hotspot.oops.Klass;
-import sun.jvm.hotspot.oops.ObjArray;
import sun.jvm.hotspot.oops.Oop;
import sun.jvm.hotspot.oops.Symbol;
-import sun.jvm.hotspot.oops.DefaultHeapVisitor;
import sun.jvm.hotspot.utilities.Assert;
-import java.util.*;
-import java.lang.ref.SoftReference;
+import com.sun.jdi.AbsentInformationException;
+import com.sun.jdi.ArrayType;
+import com.sun.jdi.ClassLoaderReference;
+import com.sun.jdi.ClassNotLoadedException;
+import com.sun.jdi.ClassNotPreparedException;
+import com.sun.jdi.ClassObjectReference;
+import com.sun.jdi.Field;
+import com.sun.jdi.InterfaceType;
+import com.sun.jdi.Method;
+import com.sun.jdi.ObjectReference;
+import com.sun.jdi.PrimitiveType;
+import com.sun.jdi.ReferenceType;
+import com.sun.jdi.Type;
+import com.sun.jdi.Value;
+import com.sun.jdi.VirtualMachine;
public abstract class ReferenceTypeImpl extends TypeImpl
implements ReferenceType {
@@ -421,7 +442,8 @@
}
}
- abstract void addVisibleMethods(Map methodMap);
+ abstract void addVisibleMethods(Map<String, Method> methodMap, Set<InterfaceType> seenInterfaces);
+
public final List visibleMethods() throws ClassNotPreparedException {
checkPrepared();
/*
@@ -430,8 +452,8 @@
* concatenation of name and signature.
*/
//System.out.println("jj: RTI: Calling addVisibleMethods for:" + this);
- Map map = new HashMap();
- addVisibleMethods(map);
+ Map<String, Method> map = new HashMap<String, Method>();
+ addVisibleMethods(map, new HashSet<InterfaceType>());
/*
* ... but the hash map destroys order. Methods should be
@@ -441,7 +463,7 @@
*/
//System.out.println("jj: RTI: Calling allMethods for:" + this);
- List list = new ArrayList(allMethods());
+ List<Method> list = new ArrayList<Method>(allMethods());
//System.out.println("jj: allMethods = " + jjstr(list));
//System.out.println("jj: map = " + map.toString());
//System.out.println("jj: map = " + jjstr(map.values()));
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/CMSCollector.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/CMSCollector.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/DictionaryEntry.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/DictionaryEntry.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/SymbolTable.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/SymbolTable.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ArrayKlass.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ArrayKlass.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Klass.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Klass.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/MethodCounters.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/MethodCounters.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/MethodData.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/MethodData.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -364,7 +364,7 @@
}
catch (AddressException e) {
// This is okay at the top of these regions
- }
+ }
catch (UnknownOopException e) {
// This is okay at the top of these regions
}
@@ -373,7 +373,7 @@
visitor.epilogue();
}
- private void addLiveRegions(List input, List output) {
+ private void addLiveRegions(String name, List input, List output) {
for (Iterator itr = input.iterator(); itr.hasNext();) {
MemRegion reg = (MemRegion) itr.next();
Address top = reg.end();
@@ -386,6 +386,9 @@
}
output.add(top);
output.add(bottom);
+ if (DEBUG) {
+ System.err.println("Live region: " + name + ": " + bottom + ", " + top);
+ }
}
}
@@ -395,7 +398,7 @@
}
public void doSpace(Space s) {
- addLiveRegions(s.getLiveRegions(), liveRegions);
+ addLiveRegions(s.toString(), s.getLiveRegions(), liveRegions);
}
private List liveRegions;
}
@@ -426,11 +429,11 @@
ParallelScavengeHeap psh = (ParallelScavengeHeap) heap;
PSYoungGen youngGen = psh.youngGen();
// Add eden space
- addLiveRegions(youngGen.edenSpace().getLiveRegions(), liveRegions);
+ addLiveRegions("eden", youngGen.edenSpace().getLiveRegions(), liveRegions);
// Add from-space but not to-space
- addLiveRegions(youngGen.fromSpace().getLiveRegions(), liveRegions);
+ addLiveRegions("from", youngGen.fromSpace().getLiveRegions(), liveRegions);
PSOldGen oldGen = psh.oldGen();
- addLiveRegions(oldGen.objectSpace().getLiveRegions(), liveRegions);
+ addLiveRegions("old ", oldGen.objectSpace().getLiveRegions(), liveRegions);
} else if (heap instanceof G1CollectedHeap) {
G1CollectedHeap g1h = (G1CollectedHeap) heap;
g1h.heapRegionIterate(lrc);
@@ -451,23 +454,27 @@
if (VM.getVM().getUseTLAB()) {
for (JavaThread thread = VM.getVM().getThreads().first(); thread != null; thread = thread.next()) {
- if (thread.isJavaThread()) {
- ThreadLocalAllocBuffer tlab = thread.tlab();
- if (tlab.start() != null) {
- if ((tlab.top() == null) || (tlab.end() == null)) {
- System.err.print("Warning: skipping invalid TLAB for thread ");
+ ThreadLocalAllocBuffer tlab = thread.tlab();
+ if (tlab.start() != null) {
+ if ((tlab.top() == null) || (tlab.end() == null)) {
+ System.err.print("Warning: skipping invalid TLAB for thread ");
+ thread.printThreadIDOn(System.err);
+ System.err.println();
+ } else {
+ if (DEBUG) {
+ System.err.print("TLAB for " + thread.getThreadName() + ", #");
thread.printThreadIDOn(System.err);
- System.err.println();
- } else {
- // Go from:
- // - below start() to start()
- // - start() to top()
- // - end() and above
- liveRegions.add(tlab.start());
- liveRegions.add(tlab.start());
- liveRegions.add(tlab.top());
- liveRegions.add(tlab.hardEnd());
+ System.err.print(": ");
+ tlab.printOn(System.err);
}
+ // Go from:
+ // - below start() to start()
+ // - start() to top()
+ // - end() and above
+ liveRegions.add(tlab.start());
+ liveRegions.add(tlab.start());
+ liveRegions.add(tlab.top());
+ liveRegions.add(tlab.hardEnd());
}
}
}
@@ -480,6 +487,15 @@
Assert.that(liveRegions.size() % 2 == 0, "Must have even number of region boundaries");
}
+ if (DEBUG) {
+ System.err.println("liveRegions:");
+ for (int i = 0; i < liveRegions.size(); i += 2) {
+ Address bottom = (Address) liveRegions.get(i);
+ Address top = (Address) liveRegions.get(i+1);
+ System.err.println(" " + bottom + " - " + top);
+ }
+ }
+
return liveRegions;
}
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/opto/Compile.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/opto/Compile.java Wed Jul 05 19:27:58 2017 +0200
@@ -25,6 +25,7 @@
package sun.jvm.hotspot.opto;
import java.util.*;
+import java.io.PrintStream;
import sun.jvm.hotspot.ci.*;
import sun.jvm.hotspot.debugger.*;
import sun.jvm.hotspot.runtime.*;
@@ -92,4 +93,13 @@
}
return null;
}
+
+ public void dumpInlineData(PrintStream out) {
+ InlineTree inlTree = ilt();
+ if (inlTree != null) {
+ out.print(" inline " + inlTree.count());
+ inlTree.dumpReplayData(out);
+ }
+ }
+
}
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/opto/InlineTree.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/opto/InlineTree.java Wed Jul 05 19:27:58 2017 +0200
@@ -87,6 +87,11 @@
return GrowableArray.create(addr, inlineTreeConstructor);
}
+ public int inlineLevel() {
+ JVMState jvms = callerJvms();
+ return (jvms != null) ? jvms.depth() : 0;
+ }
+
public void printImpl(PrintStream st, int indent) {
for (int i = 0; i < indent; i++) st.print(" ");
st.printf(" @ %d ", callerBci());
@@ -101,4 +106,28 @@
public void print(PrintStream st) {
printImpl(st, 2);
}
+
+ // Count number of nodes in this subtree
+ public int count() {
+ int result = 1;
+ GrowableArray<InlineTree> subt = subtrees();
+ for (int i = 0 ; i < subt.length(); i++) {
+ result += subt.at(i).count();
+ }
+ return result;
+ }
+
+ public void dumpReplayData(PrintStream out) {
+ out.printf(" %d %d ", inlineLevel(), callerBci());
+ Method method = (Method)method().getMetadata();
+ Klass holder = method.getMethodHolder();
+ out.print(holder.getName().asString() + " " +
+ OopUtilities.escapeString(method.getName().asString()) + " " +
+ method.getSignature().asString());
+
+ GrowableArray<InlineTree> subt = subtrees();
+ for (int i = 0 ; i < subt.length(); i++) {
+ subt.at(i).dumpReplayData(out);
+ }
+ }
}
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/opto/JVMState.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/opto/JVMState.java Wed Jul 05 19:27:58 2017 +0200
@@ -88,6 +88,10 @@
return (int)bciField.getValue(getAddress());
}
+ public int depth() {
+ return (int)depthField.getValue(getAddress());
+ }
+
public JVMState caller() {
return create(callerField.getValue(getAddress()));
}
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/opto/PhaseCFG.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/opto/PhaseCFG.java Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/ThreadLocalAllocBuffer.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/ThreadLocalAllocBuffer.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -109,6 +109,6 @@
public void printOn(PrintStream tty) {
tty.println(" [" + start() + "," +
- top() + "," + end() + ")");
+ top() + "," + end() + ",{" + hardEnd() + "})");
}
}
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/VM.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/VM.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/bsd_amd64/BsdAMD64JavaThreadPDAccess.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/bsd_amd64/BsdAMD64JavaThreadPDAccess.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/FinalizerInfo.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/FinalizerInfo.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/FlagDumper.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/FlagDumper.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/HeapDumper.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/HeapDumper.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/HeapSummary.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/HeapSummary.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/JInfo.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/JInfo.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/JSnap.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/JSnap.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/JStack.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/JStack.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/ObjectHistogram.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/ObjectHistogram.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/PMap.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/PMap.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/StackTrace.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/StackTrace.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/SysPropsDumper.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/SysPropsDumper.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/Tool.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/Tool.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/soql/JSDB.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/soql/JSDB.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/soql/SOQL.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/soql/SOQL.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicTypeDataBase.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicTypeDataBase.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/SAPanel.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/SAPanel.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/AbstractHeapGraphWriter.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/AbstractHeapGraphWriter.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapGXLWriter.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapGXLWriter.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaInstanceKlass.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaInstanceKlass.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/sa.js Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/sa.js Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
--- a/hotspot/make/bsd/makefiles/adlc.make Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/make/bsd/makefiles/adlc.make Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/make/bsd/makefiles/gcc.make Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/make/bsd/makefiles/gcc.make Wed Jul 05 19:27:58 2017 +0200
@@ -260,14 +260,13 @@
WARNINGS_ARE_ERRORS += -Wno-empty-body
endif
-WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wundef
+WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wundef -Wunused-function -Wunused-value
-ifeq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
+ifeq ($(USE_CLANG),)
# Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit
# conversions which might affect the values. Only enable it in earlier versions.
- WARNING_FLAGS = -Wunused-function
- ifeq ($(USE_CLANG),)
- WARNING_FLAGS += -Wconversion
+ ifeq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
+ WARNINGS_FLAGS += -Wconversion
endif
endif
--- a/hotspot/make/bsd/makefiles/mapfile-vers-debug Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/make/bsd/makefiles/mapfile-vers-debug Wed Jul 05 19:27:58 2017 +0200
@@ -242,11 +242,6 @@
_JVM_Yield
_JVM_handle_bsd_signal
- # debug _JVM
- _JVM_AccessVMBooleanFlag
- _JVM_AccessVMIntFlag
- _JVM_VMBreakPoint
-
# miscellaneous functions
_jio_fprintf
_jio_printf
--- a/hotspot/make/bsd/makefiles/minimal1.make Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/make/bsd/makefiles/minimal1.make Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/make/hotspot.script Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/make/hotspot.script Wed Jul 05 19:27:58 2017 +0200
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright (c) 2010, 2012, 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
--- a/hotspot/make/linux/makefiles/adlc.make Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/make/linux/makefiles/adlc.make Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/make/linux/makefiles/jsig.make Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/make/linux/makefiles/jsig.make Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 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
--- a/hotspot/make/linux/makefiles/mapfile-vers-debug Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/make/linux/makefiles/mapfile-vers-debug Wed Jul 05 19:27:58 2017 +0200
@@ -244,11 +244,6 @@
JVM_Yield;
JVM_handle_linux_signal;
- # debug JVM
- JVM_AccessVMBooleanFlag;
- JVM_AccessVMIntFlag;
- JVM_VMBreakPoint;
-
# miscellaneous functions
jio_fprintf;
jio_printf;
--- a/hotspot/make/linux/makefiles/minimal1.make Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/make/linux/makefiles/minimal1.make Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/make/linux/makefiles/saproc.make Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/make/linux/makefiles/saproc.make Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 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
--- a/hotspot/make/sa.files Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/make/sa.files Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 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
--- a/hotspot/make/solaris/makefiles/adlc.make Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/make/solaris/makefiles/adlc.make Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 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
--- a/hotspot/make/solaris/makefiles/gcc.make Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/make/solaris/makefiles/gcc.make Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 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
--- a/hotspot/make/solaris/makefiles/mapfile-vers-debug Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/make/solaris/makefiles/mapfile-vers-debug Wed Jul 05 19:27:58 2017 +0200
@@ -28,10 +28,6 @@
SUNWprivate_1.1 {
global:
- # debug JVM
- JVM_AccessVMBooleanFlag;
- JVM_AccessVMIntFlag;
- JVM_VMBreakPoint;
# miscellaneous
};
--- a/hotspot/make/windows/build_vm_def.sh Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/make/windows/build_vm_def.sh Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 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
--- a/hotspot/make/windows/makefiles/adlc.make Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/make/windows/makefiles/adlc.make Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/make/windows/makefiles/debug.make Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/make/windows/makefiles/debug.make Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 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
--- a/hotspot/make/windows/makefiles/product.make Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/make/windows/makefiles/product.make Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 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
--- a/hotspot/make/windows/makefiles/rules.make Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/make/windows/makefiles/rules.make Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 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
--- a/hotspot/make/windows/makefiles/sa.make Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/make/windows/makefiles/sa.make Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 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
@@ -94,7 +94,7 @@
SA_LD_FLAGS = bufferoverflowU.lib
!endif
!else
-SA_CFLAGS = -nologo $(MS_RUNTIME_OPTION) -W3 -Gm $(GX_OPTION) -Od -D "WIN32" -D "_WINDOWS" -D "_DEBUG" -D "_CONSOLE" -D "_MBCS" -YX -FD -GZ -c
+SA_CFLAGS = -nologo $(MS_RUNTIME_OPTION) -W3 $(GX_OPTION) -Od -D "WIN32" -D "_WINDOWS" -D "_DEBUG" -D "_CONSOLE" -D "_MBCS" -FD -RTC1 -c
!if "$(ENABLE_FULL_DEBUG_SYMBOLS)" == "1"
SA_CFLAGS = $(SA_CFLAGS) -ZI
!endif
--- a/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/cpu/sparc/vm/assembler_sparc.inline.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/assembler_sparc.inline.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/cpu/sparc/vm/c1_FrameMap_sparc.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/c1_FrameMap_sparc.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/cpu/sparc/vm/c1_globals_sparc.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/c1_globals_sparc.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/cpu/sparc/vm/c2_globals_sparc.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/c2_globals_sparc.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/cpu/sparc/vm/c2_init_sparc.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/c2_init_sparc.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/cpu/sparc/vm/disassembler_sparc.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/disassembler_sparc.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/cpu/sparc/vm/frame_sparc.inline.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/frame_sparc.inline.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/cpu/sparc/vm/globalDefinitions_sparc.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/globalDefinitions_sparc.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, 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
--- a/hotspot/src/cpu/sparc/vm/globals_sparc.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/globals_sparc.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/cpu/sparc/vm/jni_sparc.h Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/jni_sparc.h Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/cpu/sparc/vm/nativeInst_sparc.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/nativeInst_sparc.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/cpu/sparc/vm/register_sparc.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/register_sparc.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/src/cpu/sparc/vm/sparc.ad Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/sparc.ad Wed Jul 05 19:27:58 2017 +0200
@@ -757,7 +757,7 @@
#endif
-void emit_form3_mem_reg(CodeBuffer &cbuf, const MachNode* n, int primary, int tertiary,
+void emit_form3_mem_reg(CodeBuffer &cbuf, PhaseRegAlloc* ra, const MachNode* n, int primary, int tertiary,
int src1_enc, int disp32, int src2_enc, int dst_enc) {
#ifdef ASSERT
@@ -912,8 +912,14 @@
uint index = src2_enc;
int disp = disp32;
- if (src1_enc == R_SP_enc || src1_enc == R_FP_enc)
+ if (src1_enc == R_SP_enc || src1_enc == R_FP_enc) {
disp += STACK_BIAS;
+ // Quick fix for JDK-8029668: check that stack offset fits, bailout if not
+ if (!Assembler::is_simm13(disp)) {
+ ra->C->record_method_not_compilable("unable to handle large constant offsets");
+ return;
+ }
+ }
// We should have a compiler bailout here rather than a guarantee.
// Better yet would be some mechanism to handle variable-size matches correctly.
@@ -1279,20 +1285,15 @@
return rc_float;
}
-static int impl_helper( const MachNode *mach, CodeBuffer *cbuf, PhaseRegAlloc *ra_, bool do_size, bool is_load, int offset, int reg, int opcode, const char *op_str, int size, outputStream* st ) {
- if( cbuf ) {
- // Better yet would be some mechanism to handle variable-size matches correctly
- if (!Assembler::is_simm13(offset + STACK_BIAS)) {
- ra_->C->record_method_not_compilable("unable to handle large constant offsets");
- } else {
- emit_form3_mem_reg(*cbuf, mach, opcode, -1, R_SP_enc, offset, 0, Matcher::_regEncode[reg]);
- }
+static int impl_helper(const MachNode* mach, CodeBuffer* cbuf, PhaseRegAlloc* ra, bool do_size, bool is_load, int offset, int reg, int opcode, const char *op_str, int size, outputStream* st ) {
+ if (cbuf) {
+ emit_form3_mem_reg(*cbuf, ra, mach, opcode, -1, R_SP_enc, offset, 0, Matcher::_regEncode[reg]);
}
#ifndef PRODUCT
- else if( !do_size ) {
- if( size != 0 ) st->print("\n\t");
- if( is_load ) st->print("%s [R_SP + #%d],R_%s\t! spill",op_str,offset,OptoReg::regname(reg));
- else st->print("%s R_%s,[R_SP + #%d]\t! spill",op_str,OptoReg::regname(reg),offset);
+ else if (!do_size) {
+ if (size != 0) st->print("\n\t");
+ if (is_load) st->print("%s [R_SP + #%d],R_%s\t! spill",op_str,offset,OptoReg::regname(reg));
+ else st->print("%s R_%s,[R_SP + #%d]\t! spill",op_str,OptoReg::regname(reg),offset);
}
#endif
return size+4;
@@ -2087,22 +2088,22 @@
%}
enc_class form3_mem_reg( memory mem, iRegI dst ) %{
- emit_form3_mem_reg(cbuf, this, $primary, $tertiary,
+ emit_form3_mem_reg(cbuf, ra_, this, $primary, $tertiary,
$mem$$base, $mem$$disp, $mem$$index, $dst$$reg);
%}
enc_class simple_form3_mem_reg( memory mem, iRegI dst ) %{
- emit_form3_mem_reg(cbuf, this, $primary, -1,
+ emit_form3_mem_reg(cbuf, ra_, this, $primary, -1,
$mem$$base, $mem$$disp, $mem$$index, $dst$$reg);
%}
enc_class form3_mem_prefetch_read( memory mem ) %{
- emit_form3_mem_reg(cbuf, this, $primary, -1,
+ emit_form3_mem_reg(cbuf, ra_, this, $primary, -1,
$mem$$base, $mem$$disp, $mem$$index, 0/*prefetch function many-reads*/);
%}
enc_class form3_mem_prefetch_write( memory mem ) %{
- emit_form3_mem_reg(cbuf, this, $primary, -1,
+ emit_form3_mem_reg(cbuf, ra_, this, $primary, -1,
$mem$$base, $mem$$disp, $mem$$index, 2/*prefetch function many-writes*/);
%}
@@ -2110,8 +2111,8 @@
assert(Assembler::is_simm13($mem$$disp ), "need disp and disp+4");
assert(Assembler::is_simm13($mem$$disp+4), "need disp and disp+4");
guarantee($mem$$index == R_G0_enc, "double index?");
- emit_form3_mem_reg(cbuf, this, $primary, -1, $mem$$base, $mem$$disp+4, R_G0_enc, R_O7_enc );
- emit_form3_mem_reg(cbuf, this, $primary, -1, $mem$$base, $mem$$disp, R_G0_enc, $reg$$reg );
+ emit_form3_mem_reg(cbuf, ra_, this, $primary, -1, $mem$$base, $mem$$disp+4, R_G0_enc, R_O7_enc );
+ emit_form3_mem_reg(cbuf, ra_, this, $primary, -1, $mem$$base, $mem$$disp, R_G0_enc, $reg$$reg );
emit3_simm13( cbuf, Assembler::arith_op, $reg$$reg, Assembler::sllx_op3, $reg$$reg, 0x1020 );
emit3( cbuf, Assembler::arith_op, $reg$$reg, Assembler::or_op3, $reg$$reg, 0, R_O7_enc );
%}
@@ -2121,14 +2122,14 @@
assert(Assembler::is_simm13($mem$$disp+4), "need disp and disp+4");
guarantee($mem$$index == R_G0_enc, "double index?");
// Load long with 2 instructions
- emit_form3_mem_reg(cbuf, this, $primary, -1, $mem$$base, $mem$$disp, R_G0_enc, $reg$$reg+0 );
- emit_form3_mem_reg(cbuf, this, $primary, -1, $mem$$base, $mem$$disp+4, R_G0_enc, $reg$$reg+1 );
+ emit_form3_mem_reg(cbuf, ra_, this, $primary, -1, $mem$$base, $mem$$disp, R_G0_enc, $reg$$reg+0 );
+ emit_form3_mem_reg(cbuf, ra_, this, $primary, -1, $mem$$base, $mem$$disp+4, R_G0_enc, $reg$$reg+1 );
%}
//%%% form3_mem_plus_4_reg is a hack--get rid of it
enc_class form3_mem_plus_4_reg( memory mem, iRegI dst ) %{
guarantee($mem$$disp, "cannot offset a reg-reg operand by 4");
- emit_form3_mem_reg(cbuf, this, $primary, -1, $mem$$base, $mem$$disp + 4, $mem$$index, $dst$$reg);
+ emit_form3_mem_reg(cbuf, ra_, this, $primary, -1, $mem$$base, $mem$$disp + 4, $mem$$index, $dst$$reg);
%}
enc_class form3_g0_rs2_rd_move( iRegI rs2, iRegI rd ) %{
--- a/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/cpu/sparc/vm/stubRoutines_sparc.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/stubRoutines_sparc.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/cpu/sparc/vm/stubRoutines_sparc.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/stubRoutines_sparc.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/cpu/sparc/vm/vmStructs_sparc.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/vmStructs_sparc.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/cpu/sparc/vm/vm_version_sparc.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/sparc/vm/vm_version_sparc.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/cpu/x86/vm/bytecodeInterpreter_x86.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/bytecodeInterpreter_x86.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
--- a/hotspot/src/cpu/x86/vm/c1_CodeStubs_x86.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/c1_CodeStubs_x86.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/cpu/x86/vm/c1_FrameMap_x86.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/c1_FrameMap_x86.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/cpu/x86/vm/c1_FrameMap_x86.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/c1_FrameMap_x86.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/cpu/x86/vm/c1_LinearScan_x86.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/c1_LinearScan_x86.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
--- a/hotspot/src/cpu/x86/vm/c1_MacroAssembler_x86.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/c1_MacroAssembler_x86.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/cpu/x86/vm/c1_Runtime1_x86.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/c1_Runtime1_x86.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/cpu/x86/vm/c1_globals_x86.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/c1_globals_x86.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/cpu/x86/vm/frame_x86.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/frame_x86.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -94,13 +94,6 @@
// other generic buffer blobs are more problematic so we just assume they are
// ok. adapter blobs never have a frame complete and are never ok.
- // check for a valid frame_size, otherwise we are unlikely to get a valid sender_pc
-
- if (!Interpreter::contains(_pc) && _cb->frame_size() <= 0) {
- //assert(0, "Invalid frame_size");
- return false;
- }
-
if (!_cb->is_frame_complete_at(_pc)) {
if (_cb->is_nmethod() || _cb->is_adapter_blob() || _cb->is_runtime_stub()) {
return false;
@@ -144,6 +137,11 @@
// must be some sort of compiled/runtime frame
// fp does not have to be safe (although it could be check for c1?)
+ // check for a valid frame_size, otherwise we are unlikely to get a valid sender_pc
+ if (_cb->frame_size() <= 0) {
+ return false;
+ }
+
sender_sp = _unextended_sp + _cb->frame_size();
// On Intel the return_address is always the word on the stack
sender_pc = (address) *(sender_sp-1);
--- a/hotspot/src/cpu/x86/vm/frame_x86.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/frame_x86.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/cpu/x86/vm/globalDefinitions_x86.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/globalDefinitions_x86.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, 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
--- a/hotspot/src/cpu/x86/vm/register_definitions_x86.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/register_definitions_x86.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/src/cpu/x86/vm/templateInterpreter_x86.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/templateInterpreter_x86.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/cpu/x86/vm/vmStructs_x86.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/vmStructs_x86.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/cpu/x86/vm/vtableStubs_x86_32.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/vtableStubs_x86_32.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/cpu/x86/vm/vtableStubs_x86_64.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/x86/vm/vtableStubs_x86_64.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/src/cpu/zero/vm/assembler_zero.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/assembler_zero.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2009 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2009, 2010, 2011 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2008, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/frame_zero.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/frame_zero.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2009, 2010, 2011 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/globals_zero.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/globals_zero.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2009, 2010, 2011 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/icBuffer_zero.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/icBuffer_zero.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/interp_masm_zero.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/interp_masm_zero.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/interpreter_zero.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/interpreter_zero.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2009, 2010, 2011 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/jni_zero.h Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/jni_zero.h Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2009 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/nativeInst_zero.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/register_zero.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/register_zero.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/relocInfo_zero.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/relocInfo_zero.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2009, 2010, 2011 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/sharedRuntime_zero.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/sharedRuntime_zero.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2009, 2010, 2011 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2008, 2009 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/stubGenerator_zero.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/stubGenerator_zero.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/vmStructs_zero.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/vmStructs_zero.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/cpu/zero/vm/vtableStubs_zero.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/vtableStubs_zero.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/os/bsd/dtrace/hotspot.d Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os/bsd/dtrace/hotspot.d Wed Jul 05 19:27:58 2017 +0200
@@ -47,8 +47,8 @@
probe mem__pool__gc__end(
char*, uintptr_t, char*, uintptr_t,
uintptr_t, uintptr_t, uintptr_t, uintptr_t);
- probe thread__probe__start(char*, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
- probe thread__probe__stop(char*, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
+ probe thread__start(char*, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
+ probe thread__stop(char*, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
probe thread__sleep__begin(long long);
probe thread__sleep__end(int);
probe thread__yield();
@@ -68,7 +68,7 @@
probe monitor__contended__entered(uintptr_t, uintptr_t, char*, uintptr_t);
probe monitor__contended__exit(uintptr_t, uintptr_t, char*, uintptr_t);
probe monitor__wait(uintptr_t, uintptr_t, char*, uintptr_t, uintptr_t);
- probe monitor__probe__waited(uintptr_t, uintptr_t, char*, uintptr_t);
+ probe monitor__waited(uintptr_t, uintptr_t, char*, uintptr_t);
probe monitor__notify(uintptr_t, uintptr_t, char*, uintptr_t);
probe monitor__notifyAll(uintptr_t, uintptr_t, char*, uintptr_t);
--- a/hotspot/src/os/bsd/dtrace/jvm_dtrace.c Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os/bsd/dtrace/jvm_dtrace.c Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
--- a/hotspot/src/os/posix/vm/os_posix.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os/posix/vm/os_posix.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/os/solaris/dtrace/jvm_dtrace.c Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os/solaris/dtrace/jvm_dtrace.c Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
--- a/hotspot/src/os/solaris/vm/globals_solaris.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os/solaris/vm/globals_solaris.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
--- a/hotspot/src/os/windows/vm/decoder_windows.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os/windows/vm/decoder_windows.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, 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
--- a/hotspot/src/os_cpu/bsd_x86/vm/bsd_x86_32.s Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/bsd_x86/vm/bsd_x86_32.s Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 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
--- a/hotspot/src/os_cpu/bsd_x86/vm/bsd_x86_64.s Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/bsd_x86/vm/bsd_x86_64.s Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 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
--- a/hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/os_cpu/bsd_x86/vm/vmStructs_bsd_x86.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/bsd_x86/vm/vmStructs_bsd_x86.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/os_cpu/bsd_zero/vm/globals_bsd_zero.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/bsd_zero/vm/globals_bsd_zero.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/os_cpu/bsd_zero/vm/thread_bsd_zero.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/bsd_zero/vm/thread_bsd_zero.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/os_cpu/bsd_zero/vm/vmStructs_bsd_zero.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/bsd_zero/vm/vmStructs_bsd_zero.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/os_cpu/linux_sparc/vm/globals_linux_sparc.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/linux_sparc/vm/globals_linux_sparc.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/os_cpu/linux_sparc/vm/linux_sparc.s Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/linux_sparc/vm/linux_sparc.s Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 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
--- a/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/os_cpu/linux_sparc/vm/vmStructs_linux_sparc.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/linux_sparc/vm/vmStructs_linux_sparc.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/os_cpu/linux_x86/vm/globals_linux_x86.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/linux_x86/vm/globals_linux_x86.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/os_cpu/linux_x86/vm/linux_x86_32.s Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/linux_x86/vm/linux_x86_32.s Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 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
--- a/hotspot/src/os_cpu/linux_x86/vm/linux_x86_64.s Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/linux_x86/vm/linux_x86_64.s Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 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
--- a/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/os_cpu/linux_x86/vm/vmStructs_linux_x86.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/linux_x86/vm/vmStructs_linux_x86.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/os_cpu/linux_zero/vm/vmStructs_linux_zero.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/linux_zero/vm/vmStructs_linux_zero.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/os_cpu/solaris_sparc/vm/globals_solaris_sparc.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/solaris_sparc/vm/globals_solaris_sparc.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/os_cpu/solaris_sparc/vm/solaris_sparc.il Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/solaris_sparc/vm/solaris_sparc.il Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
//
-// Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 2002, 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
--- a/hotspot/src/os_cpu/solaris_sparc/vm/solaris_sparc.s Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/solaris_sparc/vm/solaris_sparc.s Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
!!
-!! Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+!! Copyright (c) 2005, 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
--- a/hotspot/src/os_cpu/solaris_sparc/vm/vmStructs_solaris_sparc.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/solaris_sparc/vm/vmStructs_solaris_sparc.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/os_cpu/solaris_x86/vm/globals_solaris_x86.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/solaris_x86/vm/globals_solaris_x86.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_32.s Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_32.s Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
//
-// Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 2004, 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
--- a/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_64.s Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_64.s Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/
-/ Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+/ Copyright (c) 2004, 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
--- a/hotspot/src/os_cpu/solaris_x86/vm/vmStructs_solaris_x86.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/solaris_x86/vm/vmStructs_solaris_x86.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/os_cpu/windows_x86/vm/globals_windows_x86.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/windows_x86/vm/globals_windows_x86.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/os_cpu/windows_x86/vm/os_windows_x86.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/windows_x86/vm/os_windows_x86.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/os_cpu/windows_x86/vm/os_windows_x86.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/windows_x86/vm/os_windows_x86.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/os_cpu/windows_x86/vm/vmStructs_windows_x86.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/os_cpu/windows_x86/vm/vmStructs_windows_x86.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/CallSite.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/CallSite.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
--- a/hotspot/src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/LogParser.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/LogParser.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
--- a/hotspot/src/share/tools/ProjectCreator/WinGammaPlatformVC7.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/tools/ProjectCreator/WinGammaPlatformVC7.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
--- a/hotspot/src/share/tools/hsdis/hsdis.c Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/tools/hsdis/hsdis.c Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 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
--- a/hotspot/src/share/vm/adlc/adlc.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/adlc/adlc.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -38,6 +38,9 @@
#include "stdarg.h"
#include <sys/types.h>
+/* Make sure that we have the intptr_t and uintptr_t definitions */
+#ifdef _WIN32
+
#if _MSC_VER >= 1300
using namespace std;
#endif
@@ -46,8 +49,6 @@
#define strdup _strdup
#endif
-/* Make sure that we have the intptr_t and uintptr_t definitions */
-#ifdef _WIN32
#ifndef _INTPTR_T_DEFINED
#ifdef _WIN64
typedef __int64 intptr_t;
@@ -65,6 +66,7 @@
#endif
#define _UINTPTR_T_DEFINED
#endif
+
#endif // _WIN32
#if defined(LINUX) || defined(_ALLBSD_SOURCE)
--- a/hotspot/src/share/vm/adlc/adlparse.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/adlc/adlparse.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/adlc/archDesc.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/adlc/archDesc.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
//
-// Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 1997, 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
@@ -43,32 +43,6 @@
return result;
}
-// Utilities to characterize effect statements
-static bool is_def(int usedef) {
- switch(usedef) {
- case Component::DEF:
- case Component::USE_DEF: return true; break;
- }
- return false;
-}
-
-static bool is_use(int usedef) {
- switch(usedef) {
- case Component::USE:
- case Component::USE_DEF:
- case Component::USE_KILL: return true; break;
- }
- return false;
-}
-
-static bool is_kill(int usedef) {
- switch(usedef) {
- case Component::KILL:
- case Component::USE_KILL: return true; break;
- }
- return false;
-}
-
//---------------------------ChainList Methods-------------------------------
ChainList::ChainList() {
}
--- a/hotspot/src/share/vm/adlc/dfa.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/adlc/dfa.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/adlc/dict2.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/adlc/dict2.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/hotspot/src/share/vm/adlc/formssel.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/adlc/formssel.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/hotspot/src/share/vm/adlc/formssel.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/adlc/formssel.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/hotspot/src/share/vm/adlc/main.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/adlc/main.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -29,7 +29,6 @@
static void usage(ArchDesc& AD); // Print usage message and exit
static char *strip_ext(char *fname); // Strip off name extension
static char *base_plus_suffix(const char* base, const char *suffix);// New concatenated string
-static char *prefix_plus_base_plus_suffix(const char* prefix, const char* base, const char *suffix);// New concatenated string
static int get_legal_text(FileBuff &fbuf, char **legal_text); // Get pointer to legal text
ArchDesc* globalAD = NULL; // global reference to Architecture Description object
--- a/hotspot/src/share/vm/adlc/output_c.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/adlc/output_c.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -35,23 +35,6 @@
return false;
}
-static bool is_use(int usedef) {
- switch(usedef) {
- case Component::USE:
- case Component::USE_DEF:
- case Component::USE_KILL: return true; break;
- }
- return false;
-}
-
-static bool is_kill(int usedef) {
- switch(usedef) {
- case Component::KILL:
- case Component::USE_KILL: return true; break;
- }
- return false;
-}
-
// Define an array containing the machine register names, strings.
static void defineRegNames(FILE *fp, RegisterForm *registers) {
if (registers) {
--- a/hotspot/src/share/vm/adlc/output_h.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/adlc/output_h.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/hotspot/src/share/vm/asm/assembler.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/asm/assembler.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/asm/assembler.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/asm/assembler.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/asm/codeBuffer.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/asm/codeBuffer.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/asm/macroAssembler.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/asm/macroAssembler.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/asm/macroAssembler.inline.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/asm/macroAssembler.inline.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/c1/c1_Canonicalizer.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_Canonicalizer.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/c1/c1_Canonicalizer.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_Canonicalizer.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/c1/c1_CodeStubs.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_CodeStubs.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/c1/c1_Compilation.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_Compilation.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/c1/c1_Compilation.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_Compilation.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -259,6 +259,9 @@
}
ciKlass* cha_exact_type(ciType* type);
+
+ // Dump inlining replay data to the stream.
+ void dump_inline_data(outputStream* out) { /* do nothing now */ }
};
--- a/hotspot/src/share/vm/c1/c1_Compiler.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_Compiler.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -43,7 +43,8 @@
#include "runtime/sharedRuntime.hpp"
-Compiler::Compiler () {}
+Compiler::Compiler() : AbstractCompiler(c1) {
+}
void Compiler::init_c1_runtime() {
BufferBlob* buffer_blob = CompilerThread::current()->get_buffer_blob();
--- a/hotspot/src/share/vm/c1/c1_Compiler.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_Compiler.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
* 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,8 +42,6 @@
// Name of this compiler
virtual const char* name() { return "C1"; }
- virtual bool is_c1() { return true; };
-
// Missing feature tests
virtual bool supports_native() { return true; }
virtual bool supports_osr () { return true; }
--- a/hotspot/src/share/vm/c1/c1_FrameMap.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_FrameMap.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/share/vm/c1/c1_FrameMap.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_FrameMap.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -4338,11 +4338,15 @@
#endif // PRODUCT
void GraphBuilder::profile_call(ciMethod* callee, Value recv, ciKlass* known_holder, Values* obj_args, bool inlined) {
- // A default method's holder is an interface
- if (known_holder != NULL && known_holder->is_interface()) {
- assert(known_holder->is_instance_klass() && ((ciInstanceKlass*)known_holder)->has_default_methods(), "should be default method");
- known_holder = NULL;
+ assert(known_holder == NULL || (known_holder->is_instance_klass() &&
+ (!known_holder->is_interface() ||
+ ((ciInstanceKlass*)known_holder)->has_default_methods())), "should be default method");
+ if (known_holder != NULL) {
+ if (known_holder->exact_klass() == NULL) {
+ known_holder = compilation()->cha_exact_type(known_holder);
+ }
}
+
append(new ProfileCall(method(), bci(), callee, recv, known_holder, obj_args, inlined));
}
--- a/hotspot/src/share/vm/c1/c1_GraphBuilder.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_GraphBuilder.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/c1/c1_IR.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_IR.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/c1/c1_IR.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_IR.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/c1/c1_Instruction.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_Instruction.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/c1/c1_InstructionPrinter.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_InstructionPrinter.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -858,9 +858,7 @@
void LIR_Assembler::verify_oop_map(CodeEmitInfo* info) {
#ifndef PRODUCT
- if (VerifyOopMaps || VerifyOops) {
- bool v = VerifyOops;
- VerifyOops = true;
+ if (VerifyOops) {
OopMapStream s(info->oop_map());
while (!s.is_done()) {
OopMapValue v = s.current();
@@ -883,7 +881,6 @@
s.next();
}
- VerifyOops = v;
}
#endif
}
--- a/hotspot/src/share/vm/c1/c1_LinearScan.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_LinearScan.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
--- a/hotspot/src/share/vm/c1/c1_Optimizer.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_Optimizer.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/c1/c1_RangeCheckElimination.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_RangeCheckElimination.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/c1/c1_RangeCheckElimination.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_RangeCheckElimination.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/c1/c1_Runtime1.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_Runtime1.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/c1/c1_ValueMap.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_ValueMap.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/c1/c1_ValueMap.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_ValueMap.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/c1/c1_globals.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_globals.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/share/vm/c1/c1_globals.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/c1/c1_globals.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -269,9 +269,6 @@
develop(bool, PrintNotLoaded, false, \
"Prints where classes are not loaded during code generation") \
\
- notproduct(bool, VerifyOopMaps, false, \
- "Adds oopmap verification code to the generated code") \
- \
develop(bool, PrintLIR, false, \
"print low-level IR") \
\
--- a/hotspot/src/share/vm/ci/bcEscapeAnalyzer.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/bcEscapeAnalyzer.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
--- a/hotspot/src/share/vm/ci/bcEscapeAnalyzer.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/bcEscapeAnalyzer.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
--- a/hotspot/src/share/vm/ci/ciArray.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciArray.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, 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
--- a/hotspot/src/share/vm/ci/ciArray.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciArray.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, 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
--- a/hotspot/src/share/vm/ci/ciClassList.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciClassList.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/ci/ciConstant.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciConstant.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2011, 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
--- a/hotspot/src/share/vm/ci/ciEnv.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciEnv.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1147,6 +1147,33 @@
// Don't change thread state and acquire any locks.
// Safe to call from VM error reporter.
+
+void ciEnv::dump_compile_data(outputStream* out) {
+ CompileTask* task = this->task();
+ Method* method = task->method();
+ int entry_bci = task->osr_bci();
+ int comp_level = task->comp_level();
+ out->print("compile %s %s %s %d %d",
+ method->klass_name()->as_quoted_ascii(),
+ method->name()->as_quoted_ascii(),
+ method->signature()->as_quoted_ascii(),
+ entry_bci, comp_level);
+ if (compiler_data() != NULL) {
+ if (is_c2_compile(comp_level)) { // C2 or Shark
+#ifdef COMPILER2
+ // Dump C2 inlining data.
+ ((Compile*)compiler_data())->dump_inline_data(out);
+#endif
+ } else if (is_c1_compile(comp_level)) { // C1
+#ifdef COMPILER1
+ // Dump C1 inlining data.
+ ((Compilation*)compiler_data())->dump_inline_data(out);
+#endif
+ }
+ }
+ out->cr();
+}
+
void ciEnv::dump_replay_data_unsafe(outputStream* out) {
ResourceMark rm;
#if INCLUDE_JVMTI
@@ -1160,16 +1187,7 @@
for (int i = 0; i < objects->length(); i++) {
objects->at(i)->dump_replay_data(out);
}
- CompileTask* task = this->task();
- Method* method = task->method();
- int entry_bci = task->osr_bci();
- int comp_level = task->comp_level();
- // Klass holder = method->method_holder();
- out->print_cr("compile %s %s %s %d %d",
- method->klass_name()->as_quoted_ascii(),
- method->name()->as_quoted_ascii(),
- method->signature()->as_quoted_ascii(),
- entry_bci, comp_level);
+ dump_compile_data(out);
out->flush();
}
@@ -1179,3 +1197,45 @@
dump_replay_data_unsafe(out);
)
}
+
+void ciEnv::dump_replay_data(int compile_id) {
+ static char buffer[O_BUFLEN];
+ int ret = jio_snprintf(buffer, O_BUFLEN, "replay_pid%p_compid%d.log", os::current_process_id(), compile_id);
+ if (ret > 0) {
+ int fd = open(buffer, O_RDWR | O_CREAT | O_TRUNC, 0666);
+ if (fd != -1) {
+ FILE* replay_data_file = os::open(fd, "w");
+ if (replay_data_file != NULL) {
+ fileStream replay_data_stream(replay_data_file, /*need_close=*/true);
+ dump_replay_data(&replay_data_stream);
+ tty->print("# Compiler replay data is saved as: ");
+ tty->print_cr(buffer);
+ } else {
+ tty->print_cr("# Can't open file to dump replay data.");
+ }
+ }
+ }
+}
+
+void ciEnv::dump_inline_data(int compile_id) {
+ static char buffer[O_BUFLEN];
+ int ret = jio_snprintf(buffer, O_BUFLEN, "inline_pid%p_compid%d.log", os::current_process_id(), compile_id);
+ if (ret > 0) {
+ int fd = open(buffer, O_RDWR | O_CREAT | O_TRUNC, 0666);
+ if (fd != -1) {
+ FILE* inline_data_file = os::open(fd, "w");
+ if (inline_data_file != NULL) {
+ fileStream replay_data_stream(inline_data_file, /*need_close=*/true);
+ GUARDED_VM_ENTRY(
+ MutexLocker ml(Compile_lock);
+ dump_compile_data(&replay_data_stream);
+ )
+ replay_data_stream.flush();
+ tty->print("# Compiler inline data is saved as: ");
+ tty->print_cr(buffer);
+ } else {
+ tty->print_cr("# Can't open file to dump inline data.");
+ }
+ }
+ }
+}
--- a/hotspot/src/share/vm/ci/ciEnv.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciEnv.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
@@ -451,8 +451,11 @@
void metadata_do(void f(Metadata*)) { _factory->metadata_do(f); }
// Dump the compilation replay data for the ciEnv to the stream.
+ void dump_replay_data(int compile_id);
+ void dump_inline_data(int compile_id);
void dump_replay_data(outputStream* out);
void dump_replay_data_unsafe(outputStream* out);
+ void dump_compile_data(outputStream* out);
};
#endif // SHARE_VM_CI_CIENV_HPP
--- a/hotspot/src/share/vm/ci/ciFlags.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciFlags.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, 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
--- a/hotspot/src/share/vm/ci/ciInstance.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciInstance.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/ci/ciInstanceKlass.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciInstanceKlass.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/ci/ciKlass.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciKlass.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/ci/ciKlass.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciKlass.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/ci/ciMethod.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciMethod.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1357,15 +1357,21 @@
#undef FETCH_FLAG_FROM_VM
+void ciMethod::dump_name_as_ascii(outputStream* st) {
+ Method* method = get_Method();
+ st->print("%s %s %s",
+ method->klass_name()->as_quoted_ascii(),
+ method->name()->as_quoted_ascii(),
+ method->signature()->as_quoted_ascii());
+}
+
void ciMethod::dump_replay_data(outputStream* st) {
ResourceMark rm;
Method* method = get_Method();
MethodCounters* mcs = method->method_counters();
- Klass* holder = method->method_holder();
- st->print_cr("ciMethod %s %s %s %d %d %d %d %d",
- holder->name()->as_quoted_ascii(),
- method->name()->as_quoted_ascii(),
- method->signature()->as_quoted_ascii(),
+ st->print("ciMethod ");
+ dump_name_as_ascii(st);
+ st->print_cr(" %d %d %d %d %d",
mcs == NULL ? 0 : mcs->invocation_counter()->raw_counter(),
mcs == NULL ? 0 : mcs->backedge_counter()->raw_counter(),
interpreter_invocation_count(),
--- a/hotspot/src/share/vm/ci/ciMethod.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciMethod.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -310,10 +310,13 @@
bool is_accessor () const;
bool is_initializer () const;
bool can_be_statically_bound() const { return _can_be_statically_bound; }
- void dump_replay_data(outputStream* st);
bool is_boxing_method() const;
bool is_unboxing_method() const;
+ // Replay data methods
+ void dump_name_as_ascii(outputStream* st);
+ void dump_replay_data(outputStream* st);
+
// Print the bytecodes of this method.
void print_codes_on(outputStream* st);
void print_codes() {
--- a/hotspot/src/share/vm/ci/ciMethodData.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciMethodData.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/ci/ciMethodData.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciMethodData.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/ci/ciObjArrayKlass.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciObjArrayKlass.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/ci/ciObjArrayKlass.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciObjArrayKlass.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/ci/ciObjectFactory.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciObjectFactory.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/ci/ciObjectFactory.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciObjectFactory.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/ci/ciReplay.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciReplay.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -24,6 +24,8 @@
#include "precompiled.hpp"
#include "ci/ciMethodData.hpp"
#include "ci/ciReplay.hpp"
+#include "ci/ciSymbol.hpp"
+#include "ci/ciKlass.hpp"
#include "ci/ciUtilities.hpp"
#include "compiler/compileBroker.hpp"
#include "memory/allocation.inline.hpp"
@@ -37,74 +39,107 @@
// ciReplay
typedef struct _ciMethodDataRecord {
- const char* klass;
- const char* method;
- const char* signature;
- int state;
- int current_mileage;
- intptr_t* data;
- int data_length;
- char* orig_data;
- int orig_data_length;
- int oops_length;
- jobject* oops_handles;
- int* oops_offsets;
+ const char* _klass_name;
+ const char* _method_name;
+ const char* _signature;
+
+ int _state;
+ int _current_mileage;
+
+ intptr_t* _data;
+ char* _orig_data;
+ jobject* _oops_handles;
+ int* _oops_offsets;
+ int _data_length;
+ int _orig_data_length;
+ int _oops_length;
} ciMethodDataRecord;
typedef struct _ciMethodRecord {
- const char* klass;
- const char* method;
- const char* signature;
- int instructions_size;
- int interpreter_invocation_count;
- int interpreter_throwout_count;
- int invocation_counter;
- int backedge_counter;
+ const char* _klass_name;
+ const char* _method_name;
+ const char* _signature;
+
+ int _instructions_size;
+ int _interpreter_invocation_count;
+ int _interpreter_throwout_count;
+ int _invocation_counter;
+ int _backedge_counter;
} ciMethodRecord;
-class CompileReplay;
+typedef struct _ciInlineRecord {
+ const char* _klass_name;
+ const char* _method_name;
+ const char* _signature;
+
+ int _inline_depth;
+ int _inline_bci;
+} ciInlineRecord;
+
+class CompileReplay;
static CompileReplay* replay_state;
class CompileReplay : public StackObj {
private:
- FILE* stream;
- Thread* thread;
- Handle protection_domain;
- Handle loader;
+ FILE* _stream;
+ Thread* _thread;
+ Handle _protection_domain;
+ Handle _loader;
- GrowableArray<ciMethodRecord*> ci_method_records;
- GrowableArray<ciMethodDataRecord*> ci_method_data_records;
+ GrowableArray<ciMethodRecord*> _ci_method_records;
+ GrowableArray<ciMethodDataRecord*> _ci_method_data_records;
+
+ // Use pointer because we may need to return inline records
+ // without destroying them.
+ GrowableArray<ciInlineRecord*>* _ci_inline_records;
const char* _error_message;
- char* bufptr;
- char* buffer;
- int buffer_length;
- int buffer_end;
- int line_no;
+ char* _bufptr;
+ char* _buffer;
+ int _buffer_length;
+ int _buffer_pos;
+
+ // "compile" data
+ ciKlass* _iklass;
+ Method* _imethod;
+ int _entry_bci;
+ int _comp_level;
public:
CompileReplay(const char* filename, TRAPS) {
- thread = THREAD;
- loader = Handle(thread, SystemDictionary::java_system_loader());
- stream = fopen(filename, "rt");
- if (stream == NULL) {
+ _thread = THREAD;
+ _loader = Handle(_thread, SystemDictionary::java_system_loader());
+ _protection_domain = Handle();
+
+ _stream = fopen(filename, "rt");
+ if (_stream == NULL) {
fprintf(stderr, "ERROR: Can't open replay file %s\n", filename);
}
- buffer_length = 32;
- buffer = NEW_RESOURCE_ARRAY(char, buffer_length);
+
+ _ci_inline_records = NULL;
_error_message = NULL;
+ _buffer_length = 32;
+ _buffer = NEW_RESOURCE_ARRAY(char, _buffer_length);
+ _bufptr = _buffer;
+ _buffer_pos = 0;
+
+ _imethod = NULL;
+ _iklass = NULL;
+ _entry_bci = 0;
+ _comp_level = 0;
+
test();
}
~CompileReplay() {
- if (stream != NULL) fclose(stream);
+ if (_stream != NULL) fclose(_stream);
}
void test() {
- strcpy(buffer, "1 2 foo 4 bar 0x9 \"this is it\"");
- bufptr = buffer;
+ strcpy(_buffer, "1 2 foo 4 bar 0x9 \"this is it\"");
+ _bufptr = _buffer;
assert(parse_int("test") == 1, "what");
assert(parse_int("test") == 2, "what");
assert(strcmp(parse_string(), "foo") == 0, "what");
@@ -115,18 +150,18 @@
}
bool had_error() {
- return _error_message != NULL || thread->has_pending_exception();
+ return _error_message != NULL || _thread->has_pending_exception();
}
bool can_replay() {
- return !(stream == NULL || had_error());
+ return !(_stream == NULL || had_error());
}
void report_error(const char* msg) {
_error_message = msg;
- // Restore the buffer contents for error reporting
- for (int i = 0; i < buffer_end; i++) {
- if (buffer[i] == '\0') buffer[i] = ' ';
+ // Restore the _buffer contents for error reporting
+ for (int i = 0; i < _buffer_pos; i++) {
+ if (_buffer[i] == '\0') _buffer[i] = ' ';
}
}
@@ -137,10 +172,10 @@
int v = 0;
int read;
- if (sscanf(bufptr, "%i%n", &v, &read) != 1) {
+ if (sscanf(_bufptr, "%i%n", &v, &read) != 1) {
report_error(label);
} else {
- bufptr += read;
+ _bufptr += read;
}
return v;
}
@@ -152,31 +187,31 @@
intptr_t v = 0;
int read;
- if (sscanf(bufptr, INTPTR_FORMAT "%n", &v, &read) != 1) {
+ if (sscanf(_bufptr, INTPTR_FORMAT "%n", &v, &read) != 1) {
report_error(label);
} else {
- bufptr += read;
+ _bufptr += read;
}
return v;
}
void skip_ws() {
// Skip any leading whitespace
- while (*bufptr == ' ' || *bufptr == '\t') {
- bufptr++;
+ while (*_bufptr == ' ' || *_bufptr == '\t') {
+ _bufptr++;
}
}
char* scan_and_terminate(char delim) {
- char* str = bufptr;
- while (*bufptr != delim && *bufptr != '\0') {
- bufptr++;
+ char* str = _bufptr;
+ while (*_bufptr != delim && *_bufptr != '\0') {
+ _bufptr++;
}
- if (*bufptr != '\0') {
- *bufptr++ = '\0';
+ if (*_bufptr != '\0') {
+ *_bufptr++ = '\0';
}
- if (bufptr == str) {
+ if (_bufptr == str) {
// nothing here
return NULL;
}
@@ -195,8 +230,8 @@
skip_ws();
- if (*bufptr == '"') {
- bufptr++;
+ if (*_bufptr == '"') {
+ _bufptr++;
return scan_and_terminate('"');
} else {
return scan_and_terminate(' ');
@@ -273,7 +308,12 @@
const char* str = parse_escaped_string();
Symbol* klass_name = SymbolTable::lookup(str, (int)strlen(str), CHECK_NULL);
if (klass_name != NULL) {
- Klass* k = SystemDictionary::resolve_or_fail(klass_name, loader, protection_domain, true, THREAD);
+ Klass* k = NULL;
+ if (_iklass != NULL) {
+ k = (Klass*)_iklass->find_klass(ciSymbol::make(klass_name->as_C_string()))->constant_encoding();
+ } else {
+ k = SystemDictionary::resolve_or_fail(klass_name, _loader, _protection_domain, true, THREAD);
+ }
if (HAS_PENDING_EXCEPTION) {
oop throwable = PENDING_EXCEPTION;
java_lang_Throwable::print(throwable, tty);
@@ -289,7 +329,7 @@
// Lookup a klass
Klass* resolve_klass(const char* klass, TRAPS) {
Symbol* klass_name = SymbolTable::lookup(klass, (int)strlen(klass), CHECK_NULL);
- return SystemDictionary::resolve_or_fail(klass_name, loader, protection_domain, true, CHECK_NULL);
+ return SystemDictionary::resolve_or_fail(klass_name, _loader, _protection_domain, true, CHECK_NULL);
}
// Parse the standard tuple of <klass> <name> <signature>
@@ -304,40 +344,45 @@
return m;
}
+ int get_line(int c) {
+ while(c != EOF) {
+ if (_buffer_pos + 1 >= _buffer_length) {
+ int new_length = _buffer_length * 2;
+ // Next call will throw error in case of OOM.
+ _buffer = REALLOC_RESOURCE_ARRAY(char, _buffer, _buffer_length, new_length);
+ _buffer_length = new_length;
+ }
+ if (c == '\n') {
+ c = getc(_stream); // get next char
+ break;
+ } else if (c == '\r') {
+ // skip LF
+ } else {
+ _buffer[_buffer_pos++] = c;
+ }
+ c = getc(_stream);
+ }
+ // null terminate it, reset the pointer
+ _buffer[_buffer_pos] = '\0'; // NL or EOF
+ _buffer_pos = 0;
+ _bufptr = _buffer;
+ return c;
+ }
+
// Process each line of the replay file executing each command until
// the file ends.
void process(TRAPS) {
- line_no = 1;
- int pos = 0;
- int c = getc(stream);
+ int line_no = 1;
+ int c = getc(_stream);
while(c != EOF) {
- if (pos + 1 >= buffer_length) {
- int newl = buffer_length * 2;
- char* newb = NEW_RESOURCE_ARRAY(char, newl);
- memcpy(newb, buffer, pos);
- buffer = newb;
- buffer_length = newl;
+ c = get_line(c);
+ process_command(CHECK);
+ if (had_error()) {
+ tty->print_cr("Error while parsing line %d: %s\n", line_no, _error_message);
+ tty->print_cr("%s", _buffer);
+ return;
}
- if (c == '\n') {
- // null terminate it, reset the pointer and process the line
- buffer[pos] = '\0';
- buffer_end = pos++;
- bufptr = buffer;
- process_command(CHECK);
- if (had_error()) {
- tty->print_cr("Error while parsing line %d: %s\n", line_no, _error_message);
- tty->print_cr("%s", buffer);
- return;
- }
- pos = 0;
- buffer_end = 0;
- line_no++;
- } else if (c == '\r') {
- // skip LF
- } else {
- buffer[pos++] = c;
- }
- c = getc(stream);
+ line_no++;
}
}
@@ -396,7 +441,37 @@
return true;
}
- // compile <klass> <name> <signature> <entry_bci> <comp_level>
+ // compile <klass> <name> <signature> <entry_bci> <comp_level> inline <count> <depth> <bci> <klass> <name> <signature> ...
+ void* process_inline(ciMethod* imethod, Method* m, int entry_bci, int comp_level, TRAPS) {
+ _imethod = m;
+ _iklass = imethod->holder();
+ _entry_bci = entry_bci;
+ _comp_level = comp_level;
+ int line_no = 1;
+ int c = getc(_stream);
+ while(c != EOF) {
+ c = get_line(c);
+ // Expecting only lines with "compile" command in inline replay file.
+ char* cmd = parse_string();
+ if (cmd == NULL || strcmp("compile", cmd) != 0) {
+ return NULL;
+ }
+ process_compile(CHECK_NULL);
+ if (had_error()) {
+ tty->print_cr("Error while parsing line %d: %s\n", line_no, _error_message);
+ tty->print_cr("%s", _buffer);
+ return NULL;
+ }
+ if (_ci_inline_records != NULL && _ci_inline_records->length() > 0) {
+ // Found inlining record for the requested method.
+ return _ci_inline_records;
+ }
+ line_no++;
+ }
+ return NULL;
+ }
+
+ // compile <klass> <name> <signature> <entry_bci> <comp_level> inline <count> <depth> <bci> <klass> <name> <signature> ...
void process_compile(TRAPS) {
Method* method = parse_method(CHECK);
if (had_error()) return;
@@ -410,6 +485,43 @@
if (!is_valid_comp_level(comp_level)) {
return;
}
+ if (_imethod != NULL) {
+ // Replay Inlining
+ if (entry_bci != _entry_bci || comp_level != _comp_level) {
+ return;
+ }
+ const char* iklass_name = _imethod->method_holder()->name()->as_utf8();
+ const char* imethod_name = _imethod->name()->as_utf8();
+ const char* isignature = _imethod->signature()->as_utf8();
+ const char* klass_name = method->method_holder()->name()->as_utf8();
+ const char* method_name = method->name()->as_utf8();
+ const char* signature = method->signature()->as_utf8();
+ if (strcmp(iklass_name, klass_name) != 0 ||
+ strcmp(imethod_name, method_name) != 0 ||
+ strcmp(isignature, signature) != 0) {
+ return;
+ }
+ }
+ int inline_count = 0;
+ if (parse_tag_and_count("inline", inline_count)) {
+ // Record inlining data
+ _ci_inline_records = new GrowableArray<ciInlineRecord*>();
+ for (int i = 0; i < inline_count; i++) {
+ int depth = parse_int("inline_depth");
+ int bci = parse_int("inline_bci");
+ if (had_error()) {
+ break;
+ }
+ Method* inl_method = parse_method(CHECK);
+ if (had_error()) {
+ break;
+ }
+ new_ciInlineRecord(inl_method, bci, depth);
+ }
+ }
+ if (_imethod != NULL) {
+ return; // Replay Inlining
+ }
Klass* k = method->method_holder();
((InstanceKlass*)k)->initialize(THREAD);
if (HAS_PENDING_EXCEPTION) {
@@ -442,11 +554,11 @@
Method* method = parse_method(CHECK);
if (had_error()) return;
ciMethodRecord* rec = new_ciMethod(method);
- rec->invocation_counter = parse_int("invocation_counter");
- rec->backedge_counter = parse_int("backedge_counter");
- rec->interpreter_invocation_count = parse_int("interpreter_invocation_count");
- rec->interpreter_throwout_count = parse_int("interpreter_throwout_count");
- rec->instructions_size = parse_int("instructions_size");
+ rec->_invocation_counter = parse_int("invocation_counter");
+ rec->_backedge_counter = parse_int("backedge_counter");
+ rec->_interpreter_invocation_count = parse_int("interpreter_invocation_count");
+ rec->_interpreter_throwout_count = parse_int("interpreter_throwout_count");
+ rec->_instructions_size = parse_int("instructions_size");
}
// ciMethodData <klass> <name> <signature> <state> <current mileage> orig <length> # # ... data <length> # # ... oops <length>
@@ -471,32 +583,32 @@
// collect and record all the needed information for later
ciMethodDataRecord* rec = new_ciMethodData(method);
- rec->state = parse_int("state");
- rec->current_mileage = parse_int("current_mileage");
+ rec->_state = parse_int("state");
+ rec->_current_mileage = parse_int("current_mileage");
- rec->orig_data = parse_data("orig", rec->orig_data_length);
- if (rec->orig_data == NULL) {
+ rec->_orig_data = parse_data("orig", rec->_orig_data_length);
+ if (rec->_orig_data == NULL) {
return;
}
- rec->data = parse_intptr_data("data", rec->data_length);
- if (rec->data == NULL) {
+ rec->_data = parse_intptr_data("data", rec->_data_length);
+ if (rec->_data == NULL) {
return;
}
- if (!parse_tag_and_count("oops", rec->oops_length)) {
+ if (!parse_tag_and_count("oops", rec->_oops_length)) {
return;
}
- rec->oops_handles = NEW_RESOURCE_ARRAY(jobject, rec->oops_length);
- rec->oops_offsets = NEW_RESOURCE_ARRAY(int, rec->oops_length);
- for (int i = 0; i < rec->oops_length; i++) {
+ rec->_oops_handles = NEW_RESOURCE_ARRAY(jobject, rec->_oops_length);
+ rec->_oops_offsets = NEW_RESOURCE_ARRAY(int, rec->_oops_length);
+ for (int i = 0; i < rec->_oops_length; i++) {
int offset = parse_int("offset");
if (had_error()) {
return;
}
Klass* k = parse_klass(CHECK);
- rec->oops_offsets[i] = offset;
+ rec->_oops_offsets[i] = offset;
KlassHandle *kh = NEW_C_HEAP_OBJ(KlassHandle, mtCompiler);
::new ((void*)kh) KlassHandle(THREAD, k);
- rec->oops_handles[i] = (jobject)kh;
+ rec->_oops_handles[i] = (jobject)kh;
}
}
@@ -570,6 +682,9 @@
case JVM_CONSTANT_Utf8:
case JVM_CONSTANT_Integer:
case JVM_CONSTANT_Float:
+ case JVM_CONSTANT_MethodHandle:
+ case JVM_CONSTANT_MethodType:
+ case JVM_CONSTANT_InvokeDynamic:
if (tag != cp->tag_at(i).value()) {
report_error("tag mismatch: wrong class files?");
return;
@@ -729,10 +844,10 @@
// Create and initialize a record for a ciMethod
ciMethodRecord* new_ciMethod(Method* method) {
ciMethodRecord* rec = NEW_RESOURCE_OBJ(ciMethodRecord);
- rec->klass = method->method_holder()->name()->as_utf8();
- rec->method = method->name()->as_utf8();
- rec->signature = method->signature()->as_utf8();
- ci_method_records.append(rec);
+ rec->_klass_name = method->method_holder()->name()->as_utf8();
+ rec->_method_name = method->name()->as_utf8();
+ rec->_signature = method->signature()->as_utf8();
+ _ci_method_records.append(rec);
return rec;
}
@@ -741,11 +856,11 @@
const char* klass_name = method->method_holder()->name()->as_utf8();
const char* method_name = method->name()->as_utf8();
const char* signature = method->signature()->as_utf8();
- for (int i = 0; i < ci_method_records.length(); i++) {
- ciMethodRecord* rec = ci_method_records.at(i);
- if (strcmp(rec->klass, klass_name) == 0 &&
- strcmp(rec->method, method_name) == 0 &&
- strcmp(rec->signature, signature) == 0) {
+ for (int i = 0; i < _ci_method_records.length(); i++) {
+ ciMethodRecord* rec = _ci_method_records.at(i);
+ if (strcmp(rec->_klass_name, klass_name) == 0 &&
+ strcmp(rec->_method_name, method_name) == 0 &&
+ strcmp(rec->_signature, signature) == 0) {
return rec;
}
}
@@ -755,10 +870,10 @@
// Create and initialize a record for a ciMethodData
ciMethodDataRecord* new_ciMethodData(Method* method) {
ciMethodDataRecord* rec = NEW_RESOURCE_OBJ(ciMethodDataRecord);
- rec->klass = method->method_holder()->name()->as_utf8();
- rec->method = method->name()->as_utf8();
- rec->signature = method->signature()->as_utf8();
- ci_method_data_records.append(rec);
+ rec->_klass_name = method->method_holder()->name()->as_utf8();
+ rec->_method_name = method->name()->as_utf8();
+ rec->_signature = method->signature()->as_utf8();
+ _ci_method_data_records.append(rec);
return rec;
}
@@ -767,25 +882,65 @@
const char* klass_name = method->method_holder()->name()->as_utf8();
const char* method_name = method->name()->as_utf8();
const char* signature = method->signature()->as_utf8();
- for (int i = 0; i < ci_method_data_records.length(); i++) {
- ciMethodDataRecord* rec = ci_method_data_records.at(i);
- if (strcmp(rec->klass, klass_name) == 0 &&
- strcmp(rec->method, method_name) == 0 &&
- strcmp(rec->signature, signature) == 0) {
+ for (int i = 0; i < _ci_method_data_records.length(); i++) {
+ ciMethodDataRecord* rec = _ci_method_data_records.at(i);
+ if (strcmp(rec->_klass_name, klass_name) == 0 &&
+ strcmp(rec->_method_name, method_name) == 0 &&
+ strcmp(rec->_signature, signature) == 0) {
return rec;
}
}
return NULL;
}
+ // Create and initialize a record for a ciInlineRecord
+ ciInlineRecord* new_ciInlineRecord(Method* method, int bci, int depth) {
+ ciInlineRecord* rec = NEW_RESOURCE_OBJ(ciInlineRecord);
+ rec->_klass_name = method->method_holder()->name()->as_utf8();
+ rec->_method_name = method->name()->as_utf8();
+ rec->_signature = method->signature()->as_utf8();
+ rec->_inline_bci = bci;
+ rec->_inline_depth = depth;
+ _ci_inline_records->append(rec);
+ return rec;
+ }
+
+ // Lookup inlining data for a ciMethod
+ ciInlineRecord* find_ciInlineRecord(Method* method, int bci, int depth) {
+ if (_ci_inline_records != NULL) {
+ return find_ciInlineRecord(_ci_inline_records, method, bci, depth);
+ }
+ return NULL;
+ }
+
+ static ciInlineRecord* find_ciInlineRecord(GrowableArray<ciInlineRecord*>* records,
+ Method* method, int bci, int depth) {
+ if (records != NULL) {
+ const char* klass_name = method->method_holder()->name()->as_utf8();
+ const char* method_name = method->name()->as_utf8();
+ const char* signature = method->signature()->as_utf8();
+ for (int i = 0; i < records->length(); i++) {
+ ciInlineRecord* rec = records->at(i);
+ if ((rec->_inline_bci == bci) &&
+ (rec->_inline_depth == depth) &&
+ (strcmp(rec->_klass_name, klass_name) == 0) &&
+ (strcmp(rec->_method_name, method_name) == 0) &&
+ (strcmp(rec->_signature, signature) == 0)) {
+ return rec;
+ }
+ }
+ }
+ return NULL;
+ }
+
const char* error_message() {
return _error_message;
}
void reset() {
_error_message = NULL;
- ci_method_records.clear();
- ci_method_data_records.clear();
+ _ci_method_records.clear();
+ _ci_method_data_records.clear();
}
// Take an ascii string contain \u#### escapes and convert it to utf8
@@ -845,6 +1000,37 @@
vm_exit(exit_code);
}
+void* ciReplay::load_inline_data(ciMethod* method, int entry_bci, int comp_level) {
+ if (FLAG_IS_DEFAULT(InlineDataFile)) {
+ tty->print_cr("ERROR: no inline replay data file specified (use -XX:InlineDataFile=inline_pid12345.txt).");
+ return NULL;
+ }
+
+ VM_ENTRY_MARK;
+ // Load and parse the replay data
+ CompileReplay rp(InlineDataFile, THREAD);
+ if (!rp.can_replay()) {
+ tty->print_cr("ciReplay: !rp.can_replay()");
+ return NULL;
+ }
+ void* data = rp.process_inline(method, method->get_Method(), entry_bci, comp_level, THREAD);
+ if (HAS_PENDING_EXCEPTION) {
+ oop throwable = PENDING_EXCEPTION;
+ CLEAR_PENDING_EXCEPTION;
+ java_lang_Throwable::print(throwable, tty);
+ tty->cr();
+ java_lang_Throwable::print_stack_trace(throwable, tty);
+ tty->cr();
+ return NULL;
+ }
+
+ if (rp.had_error()) {
+ tty->print_cr("ciReplay: Failed on %s", rp.error_message());
+ return NULL;
+ }
+ return data;
+}
+
int ciReplay::replay_impl(TRAPS) {
HandleMark hm;
ResourceMark rm;
@@ -890,7 +1076,6 @@
return exit_code;
}
-
void ciReplay::initialize(ciMethodData* m) {
if (replay_state == NULL) {
return;
@@ -909,28 +1094,28 @@
method->print_name(tty);
tty->cr();
} else {
- m->_state = rec->state;
- m->_current_mileage = rec->current_mileage;
- if (rec->data_length != 0) {
- assert(m->_data_size == rec->data_length * (int)sizeof(rec->data[0]), "must agree");
+ m->_state = rec->_state;
+ m->_current_mileage = rec->_current_mileage;
+ if (rec->_data_length != 0) {
+ assert(m->_data_size == rec->_data_length * (int)sizeof(rec->_data[0]), "must agree");
// Write the correct ciObjects back into the profile data
ciEnv* env = ciEnv::current();
- for (int i = 0; i < rec->oops_length; i++) {
- KlassHandle *h = (KlassHandle *)rec->oops_handles[i];
- *(ciMetadata**)(rec->data + rec->oops_offsets[i]) =
+ for (int i = 0; i < rec->_oops_length; i++) {
+ KlassHandle *h = (KlassHandle *)rec->_oops_handles[i];
+ *(ciMetadata**)(rec->_data + rec->_oops_offsets[i]) =
env->get_metadata((*h)());
}
// Copy the updated profile data into place as intptr_ts
#ifdef _LP64
- Copy::conjoint_jlongs_atomic((jlong *)rec->data, (jlong *)m->_data, rec->data_length);
+ Copy::conjoint_jlongs_atomic((jlong *)rec->_data, (jlong *)m->_data, rec->_data_length);
#else
- Copy::conjoint_jints_atomic((jint *)rec->data, (jint *)m->_data, rec->data_length);
+ Copy::conjoint_jints_atomic((jint *)rec->_data, (jint *)m->_data, rec->_data_length);
#endif
}
// copy in the original header
- Copy::conjoint_jbytes(rec->orig_data, (char*)&m->_orig, rec->orig_data_length);
+ Copy::conjoint_jbytes(rec->_orig_data, (char*)&m->_orig, rec->_orig_data_length);
}
}
@@ -939,12 +1124,38 @@
if (replay_state == NULL) {
return false;
}
-
VM_ENTRY_MARK;
// ciMethod without a record shouldn't be inlined.
return replay_state->find_ciMethodRecord(method->get_Method()) == NULL;
}
+bool ciReplay::should_inline(void* data, ciMethod* method, int bci, int inline_depth) {
+ if (data != NULL) {
+ GrowableArray<ciInlineRecord*>* records = (GrowableArray<ciInlineRecord*>*)data;
+ VM_ENTRY_MARK;
+ // Inline record are ordered by bci and depth.
+ return CompileReplay::find_ciInlineRecord(records, method->get_Method(), bci, inline_depth) != NULL;
+ } else if (replay_state != NULL) {
+ VM_ENTRY_MARK;
+ // Inline record are ordered by bci and depth.
+ return replay_state->find_ciInlineRecord(method->get_Method(), bci, inline_depth) != NULL;
+ }
+ return false;
+}
+
+bool ciReplay::should_not_inline(void* data, ciMethod* method, int bci, int inline_depth) {
+ if (data != NULL) {
+ GrowableArray<ciInlineRecord*>* records = (GrowableArray<ciInlineRecord*>*)data;
+ VM_ENTRY_MARK;
+ // Inline record are ordered by bci and depth.
+ return CompileReplay::find_ciInlineRecord(records, method->get_Method(), bci, inline_depth) == NULL;
+ } else if (replay_state != NULL) {
+ VM_ENTRY_MARK;
+ // Inline record are ordered by bci and depth.
+ return replay_state->find_ciInlineRecord(method->get_Method(), bci, inline_depth) == NULL;
+ }
+ return false;
+}
void ciReplay::initialize(ciMethod* m) {
if (replay_state == NULL) {
@@ -965,14 +1176,14 @@
tty->cr();
} else {
EXCEPTION_CONTEXT;
- // m->_instructions_size = rec->instructions_size;
+ // m->_instructions_size = rec->_instructions_size;
m->_instructions_size = -1;
- m->_interpreter_invocation_count = rec->interpreter_invocation_count;
- m->_interpreter_throwout_count = rec->interpreter_throwout_count;
+ m->_interpreter_invocation_count = rec->_interpreter_invocation_count;
+ m->_interpreter_throwout_count = rec->_interpreter_throwout_count;
MethodCounters* mcs = method->get_method_counters(CHECK_AND_CLEAR);
guarantee(mcs != NULL, "method counters allocation failed");
- mcs->invocation_counter()->_counter = rec->invocation_counter;
- mcs->backedge_counter()->_counter = rec->backedge_counter;
+ mcs->invocation_counter()->_counter = rec->_invocation_counter;
+ mcs->backedge_counter()->_counter = rec->_backedge_counter;
}
}
--- a/hotspot/src/share/vm/ci/ciReplay.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciReplay.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -29,6 +29,73 @@
// ciReplay
+//
+// Replay compilation of a java method by using an information in replay file.
+// Replay inlining decisions during compilation by using an information in inline file.
+//
+// NOTE: these replay functions only exist in debug version of VM.
+//
+// Replay compilation.
+// -------------------
+//
+// Replay data file replay.txt can be created by Serviceability Agent
+// from a core file, see agent/doc/cireplay.html
+//
+// $ java -cp <jdk>/lib/sa-jdi.jar sun.jvm.hotspot.CLHSDB
+// hsdb> attach <jdk>/bin/java ./core
+// hsdb> threads
+// t@10 Service Thread
+// t@9 C2 CompilerThread0
+// t@8 Signal Dispatcher
+// t@7 Finalizer
+// t@6 Reference Handler
+// t@2 main
+// hsdb> dumpreplaydata t@9 > replay.txt
+// hsdb> quit
+//
+// (Note: SA could be also used to extract app.jar and boot.jar files
+// from core file to replay compilation if only core file is available)
+//
+// Replay data file replay_pid%p.log is also created when VM crashes
+// in Compiler thread during compilation. It is controlled by
+// DumpReplayDataOnError flag which is ON by default.
+//
+// Replay file replay_pid%p_compid%d.log can be created
+// for the specified java method during normal execution using
+// CompileCommand option DumpReplay:
+//
+// -XX:CompileCommand=option,Benchmark::test,DumpReplay
+//
+// In this case the file name has additional compilation id "_compid%d"
+// because the method could be compiled several times.
+//
+// To replay compilation the replay file should be specified:
+//
+// -XX:+ReplayCompiles -XX:ReplayDataFile=replay_pid2133.log
+//
+// VM thread reads data from the file immediately after VM initialization
+// and puts the compilation task on compile queue. After that it goes into
+// wait state (BackgroundCompilation flag is set to false) since there is no
+// a program to execute. VM exits when the compilation is finished.
+//
+//
+// Replay inlining.
+// ----------------
+//
+// Replay inlining file inline_pid%p_compid%d.log is created for
+// a specific java method during normal execution of a java program
+// using CompileCommand option DumpInline:
+//
+// -XX:CompileCommand=option,Benchmark::test,DumpInline
+//
+// To replay inlining the replay file and the method should be specified:
+//
+// -XX:CompileCommand=option,Benchmark::test,ReplayInline -XX:InlineDataFile=inline_pid3244_compid6.log
+//
+// The difference from replay compilation is that replay inlining
+// is performed during normal java program execution.
+//
+
class ciReplay {
CI_PACKAGE_ACCESS
@@ -37,7 +104,11 @@
static int replay_impl(TRAPS);
public:
+ // Replay specified compilation and exit VM.
static void replay(TRAPS);
+ // Load inlining decisions from file and use them
+ // during compilation of specified method.
+ static void* load_inline_data(ciMethod* method, int entry_bci, int comp_level);
// These are used by the CI to fill in the cached data from the
// replay file when replaying compiles.
@@ -48,6 +119,8 @@
static bool is_loaded(Klass* klass);
static bool should_not_inline(ciMethod* method);
+ static bool should_inline(void* data, ciMethod* method, int bci, int inline_depth);
+ static bool should_not_inline(void* data, ciMethod* method, int bci, int inline_depth);
#endif
};
--- a/hotspot/src/share/vm/ci/ciStreams.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciStreams.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/ci/ciType.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciType.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/share/vm/ci/ciType.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciType.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/share/vm/ci/ciTypeArray.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciTypeArray.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
--- a/hotspot/src/share/vm/ci/ciTypeArrayKlass.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciTypeArrayKlass.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/ci/ciTypeFlow.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciTypeFlow.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/share/vm/ci/ciUtilities.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/ci/ciUtilities.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/classfile/bytecodeAssembler.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/classfile/bytecodeAssembler.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/classfile/classFileStream.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/classfile/classFileStream.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/classfile/classFileStream.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/classfile/classFileStream.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/classfile/classLoaderData.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/classfile/classLoaderData.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -648,12 +648,12 @@
return array;
}
-#ifndef PRODUCT
-// for debugging and hsfind(x)
-bool ClassLoaderDataGraph::contains(address x) {
- // I think we need the _metaspace_lock taken here because the class loader
- // data graph could be changing while we are walking it (new entries added,
- // new entries being unloaded, etc).
+// For profiling and hsfind() only. Otherwise, this is unsafe (and slow). This
+// is done lock free to avoid lock inversion problems. It is safe because
+// new ClassLoaderData are added to the end of the CLDG, and only removed at
+// safepoint. The _unloading list can be deallocated concurrently with CMS so
+// this doesn't look in metaspace for classes that have been unloaded.
+bool ClassLoaderDataGraph::contains(const void* x) {
if (DumpSharedSpaces) {
// There are only two metaspaces to worry about.
ClassLoaderData* ncld = ClassLoaderData::the_null_class_loader_data();
@@ -670,16 +670,11 @@
}
}
- // Could also be on an unloading list which is okay, ie. still allocated
- // for a little while.
- for (ClassLoaderData* ucld = _unloading; ucld != NULL; ucld = ucld->next()) {
- if (ucld->metaspace_or_null() != NULL && ucld->metaspace_or_null()->contains(x)) {
- return true;
- }
- }
+ // Do not check unloading list because deallocation can be concurrent.
return false;
}
+#ifndef PRODUCT
bool ClassLoaderDataGraph::contains_loader_data(ClassLoaderData* loader_data) {
for (ClassLoaderData* data = _head; data != NULL; data = data->next()) {
if (loader_data == data) {
--- a/hotspot/src/share/vm/classfile/classLoaderData.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/classfile/classLoaderData.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -90,9 +90,9 @@
static void dump() { dump_on(tty); }
static void verify();
+ // expensive test for pointer in metaspace for debugging
+ static bool contains(const void* x);
#ifndef PRODUCT
- // expensive test for pointer in metaspace for debugging
- static bool contains(address x);
static bool contains_loader_data(ClassLoaderData* loader_data);
#endif
--- a/hotspot/src/share/vm/classfile/classLoaderData.inline.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/classfile/classLoaderData.inline.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, 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
--- a/hotspot/src/share/vm/classfile/defaultMethods.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/classfile/defaultMethods.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -349,6 +349,7 @@
}
Symbol* generate_no_defaults_message(TRAPS) const;
+ Symbol* generate_method_message(Symbol *klass_name, Method* method, TRAPS) const;
Symbol* generate_conflicts_message(GrowableArray<Method*>* methods, TRAPS) const;
public:
@@ -414,21 +415,25 @@
}
}
- if (qualified_methods.length() == 0) {
- _exception_message = generate_no_defaults_message(CHECK);
+ if (num_defaults == 0) {
+ if (qualified_methods.length() == 0) {
+ _exception_message = generate_no_defaults_message(CHECK);
+ } else {
+ assert(root != NULL, "Null root class");
+ _exception_message = generate_method_message(root->name(), qualified_methods.at(0), CHECK);
+ }
_exception_name = vmSymbols::java_lang_AbstractMethodError();
// If only one qualified method is default, select that
} else if (num_defaults == 1) {
_selected_target = qualified_methods.at(default_index);
} else if (num_defaults > 1) {
- _exception_message = generate_conflicts_message(&qualified_methods,CHECK);
- _exception_name = vmSymbols::java_lang_IncompatibleClassChangeError();
+ _exception_message = generate_conflicts_message(&qualified_methods,CHECK);
+ _exception_name = vmSymbols::java_lang_IncompatibleClassChangeError();
if (TraceDefaultMethods) {
_exception_message->print_value_on(tty);
tty->print_cr("");
}
}
- // leave abstract methods alone, they will be found via normal search path
}
bool contains_signature(Symbol* query) {
@@ -486,6 +491,19 @@
return SymbolTable::new_symbol("No qualifying defaults found", CHECK_NULL);
}
+Symbol* MethodFamily::generate_method_message(Symbol *klass_name, Method* method, TRAPS) const {
+ stringStream ss;
+ ss.print("Method ");
+ Symbol* name = method->name();
+ Symbol* signature = method->signature();
+ ss.write((const char*)klass_name->bytes(), klass_name->utf8_length());
+ ss.print(".");
+ ss.write((const char*)name->bytes(), name->utf8_length());
+ ss.write((const char*)signature->bytes(), signature->utf8_length());
+ ss.print(" is abstract");
+ return SymbolTable::new_symbol(ss.base(), (int)ss.size(), CHECK_NULL);
+}
+
Symbol* MethodFamily::generate_conflicts_message(GrowableArray<Method*>* methods, TRAPS) const {
stringStream ss;
ss.print("Conflicting default methods:");
@@ -1026,7 +1044,8 @@
Array<Method*>* merged_methods = MetadataFactory::new_array<Method*>(
klass->class_loader_data(), new_size, NULL, CHECK);
- if (original_ordering != NULL && original_ordering->length() > 0) {
+ // original_ordering might be empty if this class has no methods of its own
+ if (JvmtiExport::can_maintain_original_method_order() || DumpSharedSpaces) {
merged_ordering = MetadataFactory::new_array<int>(
klass->class_loader_data(), new_size, CHECK);
}
@@ -1053,6 +1072,8 @@
merged_methods->at_put(i, orig_method);
original_methods->at_put(orig_idx, NULL);
if (merged_ordering->length() > 0) {
+ assert(original_ordering != NULL && original_ordering->length() > 0,
+ "should have original order information for this method");
merged_ordering->at_put(i, original_ordering->at(orig_idx));
}
++orig_idx;
@@ -1081,13 +1102,14 @@
// Replace klass methods with new merged lists
klass->set_methods(merged_methods);
klass->set_initial_method_idnum(new_size);
+ klass->set_method_ordering(merged_ordering);
+ // Free metadata
ClassLoaderData* cld = klass->class_loader_data();
- if (original_methods ->length() > 0) {
+ if (original_methods->length() > 0) {
MetadataFactory::free_array(cld, original_methods);
}
- if (original_ordering->length() > 0) {
- klass->set_method_ordering(merged_ordering);
+ if (original_ordering != NULL && original_ordering->length() > 0) {
MetadataFactory::free_array(cld, original_ordering);
}
}
--- a/hotspot/src/share/vm/classfile/javaClasses.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/classfile/javaClasses.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -3286,7 +3286,7 @@
sun_reflect_ConstantPool::compute_offsets();
sun_reflect_UnsafeStaticFieldAccessorImpl::compute_offsets();
}
- if (JDK_Version::is_jdk18x_version())
+ if (JDK_Version::is_gte_jdk18x_version())
java_lang_reflect_Parameter::compute_offsets();
// generated interpreter code wants to know about the offsets we just computed:
--- a/hotspot/src/share/vm/classfile/systemDictionary.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/classfile/systemDictionary.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1049,6 +1049,9 @@
add_to_hierarchy(k, CHECK_NULL); // No exception, but can block
// But, do not add to system dictionary.
+
+ // compiled code dependencies need to be validated anyway
+ notice_modification();
}
// Rewrite and patch constant pool here.
--- a/hotspot/src/share/vm/classfile/vmSymbols.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/classfile/vmSymbols.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/classfile/vmSymbols.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/classfile/vmSymbols.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -654,9 +654,9 @@
do_intrinsic(_addExactI, java_lang_Math, addExact_name, int2_int_signature, F_S) \
do_intrinsic(_addExactL, java_lang_Math, addExact_name, long2_long_signature, F_S) \
do_intrinsic(_decrementExactI, java_lang_Math, decrementExact_name, int_int_signature, F_S) \
- do_intrinsic(_decrementExactL, java_lang_Math, decrementExact_name, long2_long_signature, F_S) \
+ do_intrinsic(_decrementExactL, java_lang_Math, decrementExact_name, long_long_signature, F_S) \
do_intrinsic(_incrementExactI, java_lang_Math, incrementExact_name, int_int_signature, F_S) \
- do_intrinsic(_incrementExactL, java_lang_Math, incrementExact_name, long2_long_signature, F_S) \
+ do_intrinsic(_incrementExactL, java_lang_Math, incrementExact_name, long_long_signature, F_S) \
do_intrinsic(_multiplyExactI, java_lang_Math, multiplyExact_name, int2_int_signature, F_S) \
do_intrinsic(_multiplyExactL, java_lang_Math, multiplyExact_name, long2_long_signature, F_S) \
do_intrinsic(_negateExactI, java_lang_Math, negateExact_name, int_int_signature, F_S) \
--- a/hotspot/src/share/vm/code/compiledIC.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/code/compiledIC.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -418,7 +418,7 @@
TRAPS) {
nmethod* method_code = method->code();
address entry = NULL;
- if (method_code != NULL) {
+ if (method_code != NULL && method_code->is_in_use()) {
// Call to compiled code
if (static_bound || is_optimized) {
entry = method_code->verified_entry_point();
@@ -545,7 +545,7 @@
void CompiledStaticCall::compute_entry(methodHandle m, StaticCallInfo& info) {
nmethod* m_code = m->code();
info._callee = m;
- if (m_code != NULL) {
+ if (m_code != NULL && m_code->is_in_use()) {
info._to_interpreter = false;
info._entry = m_code->verified_entry_point();
} else {
--- a/hotspot/src/share/vm/code/compiledIC.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/code/compiledIC.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/code/compressedStream.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/code/compressedStream.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/code/debugInfo.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/code/debugInfo.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/code/dependencies.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/code/dependencies.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -655,8 +655,6 @@
} else {
o = _deps->oop_recorder()->metadata_at(i);
}
- assert(o == NULL || o->is_metaspace_object(),
- err_msg("Should be metadata " PTR_FORMAT, o));
return o;
}
--- a/hotspot/src/share/vm/code/icBuffer.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/code/icBuffer.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/code/nmethod.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/code/nmethod.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -459,7 +459,7 @@
// Fill in default values for various flag fields
void nmethod::init_defaults() {
- _state = alive;
+ _state = in_use;
_marked_for_reclamation = 0;
_has_flushed_dependencies = 0;
_has_unsafe_access = 0;
@@ -1660,8 +1660,8 @@
CompiledICHolder* cichk_oop = ic->cached_icholder();
if (cichk_oop->holder_method()->method_holder()->is_loader_alive(is_alive) &&
cichk_oop->holder_klass()->is_loader_alive(is_alive)) {
- continue;
- }
+ continue;
+ }
} else {
Metadata* ic_oop = ic->cached_metadata();
if (ic_oop != NULL) {
@@ -1677,8 +1677,8 @@
ShouldNotReachHere();
}
}
- }
- ic->set_to_clean();
+ }
+ ic->set_to_clean();
}
}
}
@@ -2393,8 +2393,8 @@
void nmethod::verify_interrupt_point(address call_site) {
// Verify IC only when nmethod installation is finished.
- bool is_installed = (method()->code() == this) // nmethod is in state 'alive' and installed
- || !this->is_in_use(); // nmethod is installed, but not in 'alive' state
+ bool is_installed = (method()->code() == this) // nmethod is in state 'in_use' and installed
+ || !this->is_in_use(); // nmethod is installed, but not in 'in_use' state
if (is_installed) {
Thread *cur = Thread::current();
if (CompiledIC_lock->owner() == cur ||
--- a/hotspot/src/share/vm/code/nmethod.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/code/nmethod.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -184,11 +184,12 @@
bool _oops_are_stale; // indicates that it's no longer safe to access oops section
#endif
- enum { alive = 0,
- not_entrant = 1, // uncommon trap has happened but activations may still exist
- zombie = 2,
- unloaded = 3 };
-
+ enum { in_use = 0, // executable nmethod
+ not_entrant = 1, // marked for deoptimization but activations may still exist,
+ // will be transformed to zombie when all activations are gone
+ zombie = 2, // no activations exist, nmethod is ready for purge
+ unloaded = 3 }; // there should be no activations, should not be called,
+ // will be transformed to zombie immediately
jbyte _scavenge_root_state;
@@ -407,8 +408,8 @@
address verified_entry_point() const { return _verified_entry_point; } // if klass is correct
// flag accessing and manipulation
- bool is_in_use() const { return _state == alive; }
- bool is_alive() const { return _state == alive || _state == not_entrant; }
+ bool is_in_use() const { return _state == in_use; }
+ bool is_alive() const { return _state == in_use || _state == not_entrant; }
bool is_not_entrant() const { return _state == not_entrant; }
bool is_zombie() const { return _state == zombie; }
bool is_unloaded() const { return _state == unloaded; }
--- a/hotspot/src/share/vm/code/relocInfo.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/code/relocInfo.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/code/scopeDesc.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/code/scopeDesc.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -86,8 +86,6 @@
// Tells whether sender() returns NULL
bool is_top() const;
- // Tells whether sd is equal to this
- bool is_equal(ScopeDesc* sd) const;
private:
// Alternative constructor
--- a/hotspot/src/share/vm/code/stubs.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/code/stubs.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/code/stubs.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/code/stubs.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/compiler/abstractCompiler.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/compiler/abstractCompiler.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
//
-// Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 2007, 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
--- a/hotspot/src/share/vm/compiler/abstractCompiler.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/compiler/abstractCompiler.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -40,8 +40,19 @@
// This thread will initialize the compiler runtime.
bool should_perform_init();
+ // The (closed set) of concrete compiler classes.
+ enum Type {
+ none,
+ c1,
+ c2,
+ shark
+ };
+
+ private:
+ Type _type;
+
public:
- AbstractCompiler() : _compiler_state(uninitialized), _num_compiler_threads(0) {}
+ AbstractCompiler(Type type) : _type(type), _compiler_state(uninitialized), _num_compiler_threads(0) {}
// This function determines the compiler thread that will perform the
// shutdown of the corresponding compiler runtime.
@@ -54,27 +65,11 @@
virtual bool supports_native() { return true; }
virtual bool supports_osr () { return true; }
virtual bool can_compile_method(methodHandle method) { return true; }
-#if defined(TIERED) || ( !defined(COMPILER1) && !defined(COMPILER2) && !defined(SHARK))
- virtual bool is_c1 () { return false; }
- virtual bool is_c2 () { return false; }
- virtual bool is_shark() { return false; }
-#else
-#ifdef COMPILER1
- bool is_c1 () { return true; }
- bool is_c2 () { return false; }
- bool is_shark() { return false; }
-#endif // COMPILER1
-#ifdef COMPILER2
- bool is_c1 () { return false; }
- bool is_c2 () { return true; }
- bool is_shark() { return false; }
-#endif // COMPILER2
-#ifdef SHARK
- bool is_c1 () { return false; }
- bool is_c2 () { return false; }
- bool is_shark() { return true; }
-#endif // SHARK
-#endif // TIERED
+
+ // Compiler type queries.
+ bool is_c1() { return _type == c1; }
+ bool is_c2() { return _type == c2; }
+ bool is_shark() { return _type == shark; }
// Customization
virtual void initialize () = 0;
--- a/hotspot/src/share/vm/compiler/compileBroker.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/compiler/compileBroker.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -132,9 +132,9 @@
// The installed compiler(s)
AbstractCompiler* CompileBroker::_compilers[2];
-// These counters are used for assigning id's to each compilation
-uint CompileBroker::_compilation_id = 0;
-uint CompileBroker::_osr_compilation_id = 0;
+// These counters are used to assign an unique ID to each compilation.
+volatile jint CompileBroker::_compilation_id = 0;
+volatile jint CompileBroker::_osr_compilation_id = 0;
// Debugging information
int CompileBroker::_last_compile_type = no_compile;
@@ -1158,7 +1158,7 @@
// We now know that this compilation is not pending, complete,
// or prohibited. Assign a compile_id to this compilation
// and check to see if it is in our [Start..Stop) range.
- uint compile_id = assign_compile_id(method, osr_bci);
+ int compile_id = assign_compile_id(method, osr_bci);
if (compile_id == 0) {
// The compilation falls outside the allowed range.
return;
@@ -1305,18 +1305,12 @@
// do the compilation
if (method->is_native()) {
if (!PreferInterpreterNativeStubs || method->is_method_handle_intrinsic()) {
- // Acquire our lock.
- int compile_id;
- {
- MutexLocker locker(MethodCompileQueue_lock, THREAD);
- compile_id = assign_compile_id(method, standard_entry_bci);
- }
// To properly handle the appendix argument for out-of-line calls we are using a small trampoline that
// pops off the appendix argument and jumps to the target (see gen_special_dispatch in SharedRuntime).
//
// Since normal compiled-to-compiled calls are not able to handle such a thing we MUST generate an adapter
// in this case. If we can't generate one and use it we can not execute the out-of-line method handle calls.
- (void) AdapterHandlerLibrary::create_native_wrapper(method, compile_id);
+ AdapterHandlerLibrary::create_native_wrapper(method);
} else {
return NULL;
}
@@ -1419,27 +1413,28 @@
return false;
}
-
-// ------------------------------------------------------------------
-// CompileBroker::assign_compile_id
-//
-// Assign a serialized id number to this compilation request. If the
-// number falls out of the allowed range, return a 0. OSR
-// compilations may be numbered separately from regular compilations
-// if certain debugging flags are used.
-uint CompileBroker::assign_compile_id(methodHandle method, int osr_bci) {
- assert(MethodCompileQueue_lock->owner() == Thread::current(),
- "must hold the compilation queue lock");
+/**
+ * Generate serialized IDs for compilation requests. If certain debugging flags are used
+ * and the ID is not within the specified range, the method is not compiled and 0 is returned.
+ * The function also allows to generate separate compilation IDs for OSR compilations.
+ */
+int CompileBroker::assign_compile_id(methodHandle method, int osr_bci) {
+#ifdef ASSERT
bool is_osr = (osr_bci != standard_entry_bci);
- uint id;
- if (CICountOSR && is_osr) {
- id = ++_osr_compilation_id;
- if ((uint)CIStartOSR <= id && id < (uint)CIStopOSR) {
+ int id;
+ if (method->is_native()) {
+ assert(!is_osr, "can't be osr");
+ // Adapters, native wrappers and method handle intrinsics
+ // should be generated always.
+ return Atomic::add(1, &_compilation_id);
+ } else if (CICountOSR && is_osr) {
+ id = Atomic::add(1, &_osr_compilation_id);
+ if (CIStartOSR <= id && id < CIStopOSR) {
return id;
}
} else {
- id = ++_compilation_id;
- if ((uint)CIStart <= id && id < (uint)CIStop) {
+ id = Atomic::add(1, &_compilation_id);
+ if (CIStart <= id && id < CIStop) {
return id;
}
}
@@ -1447,6 +1442,11 @@
// Method was not in the appropriate compilation range.
method->set_not_compilable_quietly();
return 0;
+#else
+ // CICountOSR is a develop flag and set to 'false' by default. In a product built,
+ // only _compilation_id is incremented.
+ return Atomic::add(1, &_compilation_id);
+#endif
}
--- a/hotspot/src/share/vm/compiler/compileBroker.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/compiler/compileBroker.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -246,6 +246,8 @@
// Compile type Information for print_last_compile() and CompilerCounters
enum { no_compile, normal_compile, osr_compile, native_compile };
+ static int assign_compile_id (methodHandle method, int osr_bci);
+
private:
static bool _initialized;
@@ -258,9 +260,8 @@
static AbstractCompiler* _compilers[2];
// These counters are used for assigning id's to each compilation
- static uint _compilation_id;
- static uint _osr_compilation_id;
- static uint _native_compilation_id;
+ static volatile jint _compilation_id;
+ static volatile jint _osr_compilation_id;
static int _last_compile_type;
static int _last_compile_level;
@@ -321,7 +322,6 @@
static void init_compiler_threads(int c1_compiler_count, int c2_compiler_count);
static bool compilation_is_complete (methodHandle method, int osr_bci, int comp_level);
static bool compilation_is_prohibited(methodHandle method, int osr_bci, int comp_level);
- static uint assign_compile_id (methodHandle method, int osr_bci);
static bool is_compile_blocking (methodHandle method, int osr_bci);
static void preload_classes (methodHandle method, TRAPS);
--- a/hotspot/src/share/vm/compiler/compileLog.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/compiler/compileLog.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/src/share/vm/compiler/compileLog.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/compiler/compileLog.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/src/share/vm/compiler/compilerOracle.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/compiler/compilerOracle.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/hotspot/src/share/vm/compiler/disassembler.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/compiler/disassembler.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 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
--- a/hotspot/src/share/vm/compiler/disassembler.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/compiler/disassembler.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 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
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/adaptiveFreeList.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/adaptiveFreeList.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/adaptiveFreeList.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/adaptiveFreeList.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/collectionSetChooser.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/collectionSetChooser.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/collectionSetChooser.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/collectionSetChooser.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -27,6 +27,7 @@
#include "gc_implementation/g1/concurrentG1RefineThread.hpp"
#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
#include "gc_implementation/g1/g1HotCardCache.hpp"
+#include "runtime/java.hpp"
ConcurrentG1Refine::ConcurrentG1Refine(G1CollectedHeap* g1h) :
_threads(NULL), _n_threads(0),
@@ -62,6 +63,10 @@
for (int i = _n_threads - 1; i >= 0; i--) {
ConcurrentG1RefineThread* t = new ConcurrentG1RefineThread(this, next, worker_id_offset, i);
assert(t != NULL, "Conc refine should have been created");
+ if (t->osthread() == NULL) {
+ vm_shutdown_during_initialization("Could not create ConcurrentG1RefineThread");
+ }
+
assert(t->cg1r() == this, "Conc refine thread should refer to this");
_threads[i] = t;
next = t;
--- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -553,6 +553,9 @@
_cmThread = new ConcurrentMarkThread(this);
assert(cmThread() != NULL, "CM Thread should have been created");
assert(cmThread()->cm() != NULL, "CM Thread should refer to this cm");
+ if (_cmThread->osthread() == NULL) {
+ vm_shutdown_during_initialization("Could not create ConcurrentMarkThread");
+ }
assert(CGC_lock != NULL, "Where's the CGC_lock?");
assert(_markBitMap1.covers(heap_rs), "_markBitMap1 inconsistency");
--- a/hotspot/src/share/vm/gc_implementation/g1/g1AllocRegion.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1AllocRegion.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -2376,25 +2376,6 @@
return blk.result();
}
-size_t G1CollectedHeap::unsafe_max_alloc() {
- if (free_regions() > 0) return HeapRegion::GrainBytes;
- // otherwise, is there space in the current allocation region?
-
- // We need to store the current allocation region in a local variable
- // here. The problem is that this method doesn't take any locks and
- // there may be other threads which overwrite the current allocation
- // region field. attempt_allocation(), for example, sets it to NULL
- // and this can happen *after* the NULL check here but before the call
- // to free(), resulting in a SIGSEGV. Note that this doesn't appear
- // to be a problem in the optimized build, since the two loads of the
- // current allocation region field are optimized away.
- HeapRegion* hr = _mutator_alloc_region.get();
- if (hr == NULL) {
- return 0;
- }
- return hr->free();
-}
-
bool G1CollectedHeap::should_do_concurrent_full_gc(GCCause::Cause cause) {
switch (cause) {
case GCCause::_gc_locker: return GCLockerInvokesConcurrent;
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1183,15 +1183,6 @@
// end fields defining the extent of the contiguous allocation region.)
// But G1CollectedHeap doesn't yet support this.
- // Return an estimate of the maximum allocation that could be performed
- // without triggering any collection or expansion activity. In a
- // generational collector, for example, this is probably the largest
- // allocation that could be supported (without expansion) in the youngest
- // generation. It is "unsafe" because no locks are taken; the result
- // should be treated as an approximation, not a guarantee, for use in
- // heuristic resizing decisions.
- virtual size_t unsafe_max_alloc();
-
virtual bool is_maximal_no_gc() const {
return _g1_storage.uncommitted_size() == 0;
}
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.inline.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.inline.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/g1EvacFailure.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1EvacFailure.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/gc_implementation/g1/g1MonitoringSupport.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1MonitoringSupport.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegionSeq.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegionSeq.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegionSeq.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegionSeq.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegionSeq.inline.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegionSeq.inline.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/ptrQueue.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/ptrQueue.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/ptrQueue.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/ptrQueue.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/sparsePRT.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/sparsePRT.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/sparsePRT.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/sparsePRT.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/g1/vmStructs_g1.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/vmStructs_g1.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, 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
--- a/hotspot/src/share/vm/gc_implementation/parNew/parCardTableModRefBS.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parNew/parCardTableModRefBS.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/gcTaskThread.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/gcTaskThread.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,6 +1,6 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/objectStartArray.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/objectStartArray.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -484,10 +484,6 @@
young_gen()->eden_space()->ensure_parsability();
}
-size_t ParallelScavengeHeap::unsafe_max_alloc() {
- return young_gen()->eden_space()->free_in_bytes();
-}
-
size_t ParallelScavengeHeap::tlab_capacity(Thread* thr) const {
return young_gen()->eden_space()->tlab_capacity(thr);
}
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -184,8 +184,6 @@
void accumulate_statistics_all_tlabs();
void resize_all_tlabs();
- size_t unsafe_max_alloc();
-
bool supports_tlab_allocation() const { return true; }
size_t tlab_capacity(Thread* thr) const;
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweepDecorator.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweepDecorator.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psOldGen.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psOldGen.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psOldGen.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psOldGen.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -2433,20 +2433,6 @@
_gc_tracer.report_object_count_after_gc(is_alive_closure());
}
-void PSParallelCompact::follow_klass(ParCompactionManager* cm, Klass* klass) {
- ClassLoaderData* cld = klass->class_loader_data();
- // The actual processing of the klass is done when we
- // traverse the list of Klasses in the class loader data.
- PSParallelCompact::follow_class_loader(cm, cld);
-}
-
-void PSParallelCompact::adjust_klass(ParCompactionManager* cm, Klass* klass) {
- ClassLoaderData* cld = klass->class_loader_data();
- // The actual processing of the klass is done when we
- // traverse the list of Klasses in the class loader data.
- PSParallelCompact::adjust_class_loader(cm, cld);
-}
-
void PSParallelCompact::follow_class_loader(ParCompactionManager* cm,
ClassLoaderData* cld) {
PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm);
@@ -2455,13 +2441,6 @@
cld->oops_do(&mark_and_push_closure, &follow_klass_closure, true);
}
-void PSParallelCompact::adjust_class_loader(ParCompactionManager* cm,
- ClassLoaderData* cld) {
- cld->oops_do(PSParallelCompact::adjust_pointer_closure(),
- PSParallelCompact::adjust_klass_closure(),
- true);
-}
-
// This should be moved to the shared markSweep code!
class PSAlwaysTrueClosure: public BoolObjectClosure {
public:
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1200,13 +1200,10 @@
T* p);
template <class T> static inline void adjust_pointer(T* p);
- static void follow_klass(ParCompactionManager* cm, Klass* klass);
- static void adjust_klass(ParCompactionManager* cm, Klass* klass);
+ static inline void follow_klass(ParCompactionManager* cm, Klass* klass);
static void follow_class_loader(ParCompactionManager* cm,
ClassLoaderData* klass);
- static void adjust_class_loader(ParCompactionManager* cm,
- ClassLoaderData* klass);
// Compaction support.
// Return true if p is in the range [beg_addr, end_addr).
@@ -1380,6 +1377,11 @@
}
}
+inline void PSParallelCompact::follow_klass(ParCompactionManager* cm, Klass* klass) {
+ oop holder = klass->klass_holder();
+ PSParallelCompact::mark_and_push(cm, &holder);
+}
+
template <class T>
inline void PSParallelCompact::KeepAliveClosure::do_oop_work(T* p) {
mark_and_push(_compaction_manager, p);
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -466,10 +466,12 @@
}
}
- GCTraceTime tm("StringTable", false, false, &_gc_timer);
- // Unlink any dead interned Strings and process the remaining live ones.
- PSScavengeRootsClosure root_closure(promotion_manager);
- StringTable::unlink_or_oops_do(&_is_alive_closure, &root_closure);
+ {
+ GCTraceTime tm("StringTable", false, false, &_gc_timer);
+ // Unlink any dead interned Strings and process the remaining live ones.
+ PSScavengeRootsClosure root_closure(promotion_manager);
+ StringTable::unlink_or_oops_do(&_is_alive_closure, &root_closure);
+ }
// Finally, flush the promotion_manager's labs, and deallocate its stacks.
promotion_failure_occurred = PSPromotionManager::post_scavenge(_gc_tracer);
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psTasks.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psTasks.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/allocationStats.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/allocationStats.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/concurrentGCThread.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/concurrentGCThread.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/gSpaceCounters.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/gSpaceCounters.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/gSpaceCounters.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/gSpaceCounters.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/gcAdaptivePolicyCounters.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/gcAdaptivePolicyCounters.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/immutableSpace.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/immutableSpace.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/isGCActiveMark.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/isGCActiveMark.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/markSweep.inline.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/markSweep.inline.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,6 +1,6 @@
/*
- * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/mutableSpace.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/mutableSpace.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/spaceCounters.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/spaceCounters.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/src/share/vm/gc_implementation/shared/spaceCounters.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/spaceCounters.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/src/share/vm/gc_interface/collectedHeap.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_interface/collectedHeap.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -389,15 +389,6 @@
// allocation from them and necessitating allocation of new TLABs.
virtual void ensure_parsability(bool retire_tlabs);
- // Return an estimate of the maximum allocation that could be performed
- // without triggering any collection or expansion activity. In a
- // generational collector, for example, this is probably the largest
- // allocation that could be supported (without expansion) in the youngest
- // generation. It is "unsafe" because no locks are taken; the result
- // should be treated as an approximation, not a guarantee, for use in
- // heuristic resizing decisions.
- virtual size_t unsafe_max_alloc() = 0;
-
// Section on thread-local allocation buffers (TLABs)
// If the heap supports thread-local allocation buffers, it should override
// the following methods:
--- a/hotspot/src/share/vm/gc_interface/collectedHeap.inline.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_interface/collectedHeap.inline.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/gc_interface/gcCause.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_interface/gcCause.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/src/share/vm/gc_interface/gcCause.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/gc_interface/gcCause.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/src/share/vm/interpreter/cppInterpreter.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/interpreter/cppInterpreter.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/interpreter/interpreter.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/interpreter/interpreter.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/interpreter/linkResolver.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/interpreter/linkResolver.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -242,8 +242,20 @@
// Look up method in klasses, including static methods
// Then look up local default methods
-void LinkResolver::lookup_method_in_klasses(methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, bool checkpolymorphism, TRAPS) {
+void LinkResolver::lookup_method_in_klasses(methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, bool checkpolymorphism, bool in_imethod_resolve, TRAPS) {
Method* result_oop = klass->uncached_lookup_method(name, signature);
+
+ // JDK 8, JVMS 5.4.3.4: Interface method resolution should
+ // ignore static and non-public methods of java.lang.Object,
+ // like clone, finalize, registerNatives.
+ if (in_imethod_resolve &&
+ result_oop != NULL &&
+ klass->is_interface() &&
+ (result_oop->is_static() || !result_oop->is_public()) &&
+ result_oop->method_holder() == SystemDictionary::Object_klass()) {
+ result_oop = NULL;
+ }
+
if (result_oop == NULL) {
Array<Method*>* default_methods = InstanceKlass::cast(klass())->default_methods();
if (default_methods != NULL) {
@@ -288,7 +300,7 @@
Symbol* signature = resolved_method->signature();
// First check in default method array
- if (!resolved_method->is_abstract() &&
+ if (!resolved_method->is_abstract() &&
(InstanceKlass::cast(klass())->default_methods() != NULL)) {
int index = InstanceKlass::find_method_index(InstanceKlass::cast(klass())->default_methods(), name, signature);
if (index >= 0 ) {
@@ -306,7 +318,11 @@
void LinkResolver::lookup_method_in_interfaces(methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS) {
InstanceKlass *ik = InstanceKlass::cast(klass());
- result = methodHandle(THREAD, ik->lookup_method_in_all_interfaces(name, signature));
+
+ // Specify 'true' in order to skip default methods when searching the
+ // interfaces. Function lookup_method_in_klasses() already looked for
+ // the method in the default methods table.
+ result = methodHandle(THREAD, ik->lookup_method_in_all_interfaces(name, signature, true));
}
void LinkResolver::lookup_polymorphic_method(methodHandle& result,
@@ -420,28 +436,18 @@
AccessFlags flags = sel_method->access_flags();
- // Special case #1: arrays always override "clone". JVMS 2.15.
+ // Special case: arrays always override "clone". JVMS 2.15.
// If the resolved klass is an array class, and the declaring class
// is java.lang.Object and the method is "clone", set the flags
// to public.
- // Special case #2: If the resolved klass is an interface, and
- // the declaring class is java.lang.Object, and the method is
- // "clone" or "finalize", set the flags to public. If the
- // resolved interface does not contain "clone" or "finalize"
- // methods, the method/interface method resolution looks to
- // the interface's super class, java.lang.Object. With JDK 8
- // interface accessability check requirement, special casing
- // this scenario is necessary to avoid an IAE.
//
- // We'll check for each method name first and then java.lang.Object
- // to best short-circuit out of these tests.
- if (((sel_method->name() == vmSymbols::clone_name() &&
- (resolved_klass->oop_is_array() || resolved_klass->is_interface())) ||
- (sel_method->name() == vmSymbols::finalize_method_name() &&
- resolved_klass->is_interface())) &&
- sel_klass() == SystemDictionary::Object_klass()) {
+ // We'll check for the method name first, as that's most likely
+ // to be false (so we'll short-circuit out of these tests).
+ if (sel_method->name() == vmSymbols::clone_name() &&
+ sel_klass() == SystemDictionary::Object_klass() &&
+ resolved_klass->oop_is_array()) {
// We need to change "protected" to "public".
- assert(flags.is_protected(), "clone or finalize not protected?");
+ assert(flags.is_protected(), "clone not protected?");
jint new_flags = flags.as_int();
new_flags = new_flags & (~JVM_ACC_PROTECTED);
new_flags = new_flags | JVM_ACC_PUBLIC;
@@ -531,7 +537,7 @@
}
// 2. lookup method in resolved klass and its super klasses
- lookup_method_in_klasses(resolved_method, resolved_klass, method_name, method_signature, true, CHECK);
+ lookup_method_in_klasses(resolved_method, resolved_klass, method_name, method_signature, true, false, CHECK);
if (resolved_method.is_null()) { // not found in the class hierarchy
// 3. lookup method in all the interfaces implemented by the resolved klass
@@ -618,7 +624,7 @@
bool check_access,
bool nostatics, TRAPS) {
- // check if klass is interface
+ // check if klass is interface
if (!resolved_klass->is_interface()) {
ResourceMark rm(THREAD);
char buf[200];
@@ -628,7 +634,7 @@
// lookup method in this interface or its super, java.lang.Object
// JDK8: also look for static methods
- lookup_method_in_klasses(resolved_method, resolved_klass, method_name, method_signature, false, CHECK);
+ lookup_method_in_klasses(resolved_method, resolved_klass, method_name, method_signature, false, true, CHECK);
if (resolved_method.is_null()) {
// lookup method in all the super-interfaces
@@ -943,8 +949,17 @@
Klass *klass_to_check = !InstanceKlass::cast(current_klass())->is_anonymous() ?
current_klass() :
InstanceKlass::cast(current_klass())->host_klass();
+ // As of the fix for 4486457 we disable verification for all of the
+ // dynamically-generated bytecodes associated with the 1.4
+ // reflection implementation, not just those associated with
+ // sun/reflect/SerializationConstructorAccessor.
+ bool is_reflect = JDK_Version::is_gte_jdk14x_version() &&
+ UseNewReflection &&
+ klass_to_check->is_subclass_of(
+ SystemDictionary::reflect_MagicAccessorImpl_klass());
- if (!InstanceKlass::cast(klass_to_check)->is_same_or_direct_interface(resolved_klass())) {
+ if (!is_reflect &&
+ !InstanceKlass::cast(klass_to_check)->is_same_or_direct_interface(resolved_klass())) {
ResourceMark rm(THREAD);
char buf[200];
jio_snprintf(buf, sizeof(buf),
@@ -1276,8 +1291,11 @@
resolved_klass()->external_name());
THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf);
}
+
// do lookup based on receiver klass
methodHandle sel_method;
+ // This search must match the linktime preparation search for itable initialization
+ // to correctly enforce loader constraints for interface method inheritance
lookup_instance_method_in_klasses(sel_method, recv_klass,
resolved_method->name(),
resolved_method->signature(), CHECK);
--- a/hotspot/src/share/vm/interpreter/linkResolver.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/interpreter/linkResolver.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -124,7 +124,7 @@
friend class klassItable;
private:
- static void lookup_method_in_klasses (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, bool checkpolymorphism, TRAPS);
+ static void lookup_method_in_klasses (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, bool checkpolymorphism, bool in_imethod_resolve, TRAPS);
static void lookup_instance_method_in_klasses (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS);
static void lookup_method_in_interfaces (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS);
static void lookup_polymorphic_method (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature,
--- a/hotspot/src/share/vm/interpreter/templateInterpreter.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/interpreter/templateInterpreter.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/interpreter/templateInterpreterGenerator.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/interpreter/templateInterpreterGenerator.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/interpreter/templateTable.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/interpreter/templateTable.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/memory/allocation.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/allocation.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -71,9 +71,8 @@
return MetaspaceShared::is_in_shared_space(this);
}
-
bool MetaspaceObj::is_metaspace_object() const {
- return Metaspace::contains((void*)this);
+ return ClassLoaderDataGraph::contains((void*)this);
}
void MetaspaceObj::print_address_on(outputStream* st) const {
@@ -140,7 +139,7 @@
void ResourceObj::set_allocation_type(address res, allocation_type type) {
// Set allocation type in the resource object
uintptr_t allocation = (uintptr_t)res;
- assert((allocation & allocation_mask) == 0, "address should be aligned to 4 bytes at least");
+ assert((allocation & allocation_mask) == 0, err_msg("address should be aligned to 4 bytes at least: " PTR_FORMAT, res));
assert(type <= allocation_mask, "incorrect allocation type");
ResourceObj* resobj = (ResourceObj *)res;
resobj->_allocation_t[0] = ~(allocation + type);
--- a/hotspot/src/share/vm/memory/allocation.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/allocation.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -264,7 +264,7 @@
class MetaspaceObj {
public:
- bool is_metaspace_object() const; // more specific test but slower
+ bool is_metaspace_object() const;
bool is_shared() const;
void print_address_on(outputStream* st) const; // nonvirtual address printing
--- a/hotspot/src/share/vm/memory/binaryTreeDictionary.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/binaryTreeDictionary.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/memory/blockOffsetTable.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/blockOffsetTable.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/share/vm/memory/defNewGeneration.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/defNewGeneration.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -667,9 +667,6 @@
// for full GC's.
AdaptiveSizePolicy* size_policy = gch->gen_policy()->size_policy();
size_policy->reset_gc_overhead_limit_count();
- if (PrintGC && !PrintGCDetails) {
- gch->print_heap_change(gch_prev_used);
- }
assert(!gch->incremental_collection_failed(), "Should be clear");
} else {
assert(_promo_failure_scan_stack.is_empty(), "post condition");
@@ -695,6 +692,9 @@
// Reset the PromotionFailureALot counters.
NOT_PRODUCT(Universe::heap()->reset_promotion_should_fail();)
}
+ if (PrintGC && !PrintGCDetails) {
+ gch->print_heap_change(gch_prev_used);
+ }
// set new iteration safe limit for the survivor spaces
from()->set_concurrent_iteration_safe_limit(from()->top());
to()->set_concurrent_iteration_safe_limit(to()->top());
--- a/hotspot/src/share/vm/memory/freeBlockDictionary.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/freeBlockDictionary.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/src/share/vm/memory/freeList.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/freeList.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/memory/freeList.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/freeList.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/memory/gcLocker.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/gcLocker.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/memory/gcLocker.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/gcLocker.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/memory/genCollectedHeap.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/genCollectedHeap.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -673,10 +673,6 @@
return _gens[0]->end_addr();
}
-size_t GenCollectedHeap::unsafe_max_alloc() {
- return _gens[0]->unsafe_max_alloc_nogc();
-}
-
// public collection interfaces
void GenCollectedHeap::collect(GCCause::Cause cause) {
--- a/hotspot/src/share/vm/memory/genCollectedHeap.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/genCollectedHeap.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -166,14 +166,6 @@
HeapWord** top_addr() const;
HeapWord** end_addr() const;
- // Return an estimate of the maximum allocation that could be performed
- // without triggering any collection activity. In a generational
- // collector, for example, this is probably the largest allocation that
- // could be supported in the youngest generation. It is "unsafe" because
- // no locks are taken; the result should be treated as an approximation,
- // not a guarantee.
- size_t unsafe_max_alloc();
-
// Does this heap support heap inspection? (+PrintClassHistogram)
virtual bool supports_heap_inspection() const { return true; }
--- a/hotspot/src/share/vm/memory/genRemSet.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/genRemSet.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/memory/genRemSet.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/genRemSet.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/memory/generation.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/generation.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/memory/generationSpec.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/generationSpec.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/memory/heap.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/heap.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/memory/iterator.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/iterator.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/memory/iterator.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/iterator.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/memory/metachunk.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/metachunk.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -143,6 +143,8 @@
void set_is_tagged_free(bool v) { _is_tagged_free = v; }
#endif
+ bool contains(const void* ptr) { return bottom() <= ptr && ptr < _top; }
+
NOT_PRODUCT(void mangle();)
void print_on(outputStream* st) const;
--- a/hotspot/src/share/vm/memory/metaspace.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/metaspace.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -287,7 +287,7 @@
VirtualSpace* virtual_space() const { return (VirtualSpace*) &_virtual_space; }
// Returns true if "word_size" is available in the VirtualSpace
- bool is_available(size_t word_size) { return _top + word_size <= end(); }
+ bool is_available(size_t word_size) { return word_size <= pointer_delta(end(), _top, sizeof(MetaWord)); }
MetaWord* top() const { return _top; }
void inc_top(size_t word_size) { _top += word_size; }
@@ -513,8 +513,6 @@
// Unlink empty VirtualSpaceNodes and free it.
void purge(ChunkManager* chunk_manager);
- bool contains(const void *ptr);
-
void print_on(outputStream* st) const;
class VirtualSpaceListIterator : public StackObj {
@@ -558,7 +556,7 @@
private:
- // protects allocations and contains.
+ // protects allocations
Mutex* const _lock;
// Type of metadata allocated.
@@ -595,7 +593,11 @@
private:
// Accessors
Metachunk* chunks_in_use(ChunkIndex index) const { return _chunks_in_use[index]; }
- void set_chunks_in_use(ChunkIndex index, Metachunk* v) { _chunks_in_use[index] = v; }
+ void set_chunks_in_use(ChunkIndex index, Metachunk* v) {
+ // ensure lock-free iteration sees fully initialized node
+ OrderAccess::storestore();
+ _chunks_in_use[index] = v;
+ }
BlockFreelist* block_freelists() const {
return (BlockFreelist*) &_block_freelists;
@@ -708,6 +710,8 @@
void print_on(outputStream* st) const;
void locked_print_chunks_in_use_on(outputStream* st) const;
+ bool contains(const void *ptr);
+
void verify();
void verify_chunk_size(Metachunk* chunk);
NOT_PRODUCT(void mangle_freed_chunks();)
@@ -1159,8 +1163,6 @@
} else {
assert(new_entry->reserved_words() == vs_word_size,
"Reserved memory size differs from requested memory size");
- // ensure lock-free iteration sees fully initialized node
- OrderAccess::storestore();
link_vs(new_entry);
return true;
}
@@ -1287,19 +1289,6 @@
}
}
-bool VirtualSpaceList::contains(const void *ptr) {
- VirtualSpaceNode* list = virtual_space_list();
- VirtualSpaceListIterator iter(list);
- while (iter.repeat()) {
- VirtualSpaceNode* node = iter.get_next();
- if (node->reserved()->contains(ptr)) {
- return true;
- }
- }
- return false;
-}
-
-
// MetaspaceGC methods
// VM_CollectForMetadataAllocation is the vm operation used to GC.
@@ -2392,6 +2381,21 @@
return result;
}
+// This function looks at the chunks in the metaspace without locking.
+// The chunks are added with store ordering and not deleted except for at
+// unloading time.
+bool SpaceManager::contains(const void *ptr) {
+ for (ChunkIndex i = ZeroIndex; i < NumberOfInUseLists; i = next_chunk_index(i))
+ {
+ Metachunk* curr = chunks_in_use(i);
+ while (curr != NULL) {
+ if (curr->contains(ptr)) return true;
+ curr = curr->next();
+ }
+ }
+ return false;
+}
+
void SpaceManager::verify() {
// If there are blocks in the dictionary, then
// verfication of chunks does not work since
@@ -3463,17 +3467,12 @@
}
}
-bool Metaspace::contains(const void * ptr) {
- if (MetaspaceShared::is_in_shared_space(ptr)) {
- return true;
+bool Metaspace::contains(const void* ptr) {
+ if (vsm()->contains(ptr)) return true;
+ if (using_class_space()) {
+ return class_vsm()->contains(ptr);
}
- // This is checked while unlocked. As long as the virtualspaces are added
- // at the end, the pointer will be in one of them. The virtual spaces
- // aren't deleted presently. When they are, some sort of locking might
- // be needed. Note, locking this can cause inversion problems with the
- // caller in MetaspaceObj::is_metadata() function.
- return space_list()->contains(ptr) ||
- (using_class_space() && class_space_list()->contains(ptr));
+ return false;
}
void Metaspace::verify() {
@@ -3641,10 +3640,82 @@
}
}
+
+#define assert_is_available_positive(word_size) \
+ assert(vsn.is_available(word_size), \
+ err_msg(#word_size ": " PTR_FORMAT " bytes were not available in " \
+ "VirtualSpaceNode [" PTR_FORMAT ", " PTR_FORMAT ")", \
+ (uintptr_t)(word_size * BytesPerWord), vsn.bottom(), vsn.end()));
+
+#define assert_is_available_negative(word_size) \
+ assert(!vsn.is_available(word_size), \
+ err_msg(#word_size ": " PTR_FORMAT " bytes should not be available in " \
+ "VirtualSpaceNode [" PTR_FORMAT ", " PTR_FORMAT ")", \
+ (uintptr_t)(word_size * BytesPerWord), vsn.bottom(), vsn.end()));
+
+ static void test_is_available_positive() {
+ // Reserve some memory.
+ VirtualSpaceNode vsn(os::vm_allocation_granularity());
+ assert(vsn.initialize(), "Failed to setup VirtualSpaceNode");
+
+ // Commit some memory.
+ size_t commit_word_size = os::vm_allocation_granularity() / BytesPerWord;
+ bool expanded = vsn.expand_by(commit_word_size, commit_word_size);
+ assert(expanded, "Failed to commit");
+
+ // Check that is_available accepts the committed size.
+ assert_is_available_positive(commit_word_size);
+
+ // Check that is_available accepts half the committed size.
+ size_t expand_word_size = commit_word_size / 2;
+ assert_is_available_positive(expand_word_size);
+ }
+
+ static void test_is_available_negative() {
+ // Reserve some memory.
+ VirtualSpaceNode vsn(os::vm_allocation_granularity());
+ assert(vsn.initialize(), "Failed to setup VirtualSpaceNode");
+
+ // Commit some memory.
+ size_t commit_word_size = os::vm_allocation_granularity() / BytesPerWord;
+ bool expanded = vsn.expand_by(commit_word_size, commit_word_size);
+ assert(expanded, "Failed to commit");
+
+ // Check that is_available doesn't accept a too large size.
+ size_t two_times_commit_word_size = commit_word_size * 2;
+ assert_is_available_negative(two_times_commit_word_size);
+ }
+
+ static void test_is_available_overflow() {
+ // Reserve some memory.
+ VirtualSpaceNode vsn(os::vm_allocation_granularity());
+ assert(vsn.initialize(), "Failed to setup VirtualSpaceNode");
+
+ // Commit some memory.
+ size_t commit_word_size = os::vm_allocation_granularity() / BytesPerWord;
+ bool expanded = vsn.expand_by(commit_word_size, commit_word_size);
+ assert(expanded, "Failed to commit");
+
+ // Calculate a size that will overflow the virtual space size.
+ void* virtual_space_max = (void*)(uintptr_t)-1;
+ size_t bottom_to_max = pointer_delta(virtual_space_max, vsn.bottom(), 1);
+ size_t overflow_size = bottom_to_max + BytesPerWord;
+ size_t overflow_word_size = overflow_size / BytesPerWord;
+
+ // Check that is_available can handle the overflow.
+ assert_is_available_negative(overflow_word_size);
+ }
+
+ static void test_is_available() {
+ TestVirtualSpaceNodeTest::test_is_available_positive();
+ TestVirtualSpaceNodeTest::test_is_available_negative();
+ TestVirtualSpaceNodeTest::test_is_available_overflow();
+ }
};
void TestVirtualSpaceNode_test() {
TestVirtualSpaceNodeTest::test();
+ TestVirtualSpaceNodeTest::test_is_available();
}
#endif
--- a/hotspot/src/share/vm/memory/metaspace.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/metaspace.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -225,7 +225,7 @@
MetaWord* expand_and_allocate(size_t size,
MetadataType mdtype);
- static bool contains(const void *ptr);
+ bool contains(const void* ptr);
void dump(outputStream* const out) const;
// Free empty virtualspaces
--- a/hotspot/src/share/vm/memory/metaspaceCounters.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/metaspaceCounters.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/memory/metaspaceCounters.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/metaspaceCounters.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/memory/sharedHeap.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/sharedHeap.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/share/vm/memory/space.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/space.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/memory/space.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/space.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/memory/specialized_oop_closures.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/specialized_oop_closures.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/memory/tenuredGeneration.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/tenuredGeneration.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/memory/tenuredGeneration.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/memory/tenuredGeneration.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/oops/arrayKlass.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/oops/arrayKlass.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/oops/arrayOop.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/oops/arrayOop.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/oops/compiledICHolder.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/oops/compiledICHolder.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/hotspot/src/share/vm/oops/fieldInfo.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/oops/fieldInfo.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, 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
--- a/hotspot/src/share/vm/oops/generateOopMap.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/oops/generateOopMap.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1863,11 +1863,8 @@
constantTag tag = cp->tag_at(ldc.pool_index()); // idx is index in resolved_references
BasicType bt = ldc.result_type();
CellTypeState cts;
- if (tag.is_klass() ||
- tag.is_unresolved_klass() ||
- tag.is_string() ||
- tag.is_method_handle() ||
- tag.is_method_type()) {
+ if (tag.basic_type() == T_OBJECT) {
+ assert(!tag.is_string_index() && !tag.is_klass_index(), "Unexpected index tag");
assert(bt == T_OBJECT, "Guard is incorrect");
cts = CellTypeState::make_line_ref(bci);
} else {
--- a/hotspot/src/share/vm/oops/instanceClassLoaderKlass.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/oops/instanceClassLoaderKlass.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, 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
@@ -150,10 +150,6 @@
int InstanceClassLoaderKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
InstanceKlass::oop_update_pointers(cm, obj);
- ClassLoaderData * const loader_data = java_lang_ClassLoader::loader_data(obj);
- if (loader_data != NULL) {
- PSParallelCompact::adjust_class_loader(cm, loader_data);
- }
return size_helper();
}
#endif // INCLUDE_ALL_GCS
--- a/hotspot/src/share/vm/oops/instanceClassLoaderKlass.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/oops/instanceClassLoaderKlass.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, 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
--- a/hotspot/src/share/vm/oops/instanceKlass.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/oops/instanceKlass.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1498,13 +1498,18 @@
return -1;
}
-// lookup_method searches both the local methods array and all superclasses methods arrays
+// uncached_lookup_method searches both the local class methods array and all
+// superclasses methods arrays, skipping any overpass methods in superclasses.
Method* InstanceKlass::uncached_lookup_method(Symbol* name, Symbol* signature) const {
Klass* klass = const_cast<InstanceKlass*>(this);
+ bool dont_ignore_overpasses = true; // For the class being searched, find its overpasses.
while (klass != NULL) {
Method* method = InstanceKlass::cast(klass)->find_method(name, signature);
- if (method != NULL) return method;
+ if ((method != NULL) && (dont_ignore_overpasses || !method->is_overpass())) {
+ return method;
+ }
klass = InstanceKlass::cast(klass)->super();
+ dont_ignore_overpasses = false; // Ignore overpass methods in all superclasses.
}
return NULL;
}
@@ -1519,7 +1524,7 @@
}
// Look up interfaces
if (m == NULL) {
- m = lookup_method_in_all_interfaces(name, signature);
+ m = lookup_method_in_all_interfaces(name, signature, false);
}
return m;
}
@@ -1528,14 +1533,16 @@
// Do NOT return private or static methods, new in JDK8 which are not externally visible
// They should only be found in the initial InterfaceMethodRef
Method* InstanceKlass::lookup_method_in_all_interfaces(Symbol* name,
- Symbol* signature) const {
+ Symbol* signature,
+ bool skip_default_methods) const {
Array<Klass*>* all_ifs = transitive_interfaces();
int num_ifs = all_ifs->length();
InstanceKlass *ik = NULL;
for (int i = 0; i < num_ifs; i++) {
ik = InstanceKlass::cast(all_ifs->at(i));
Method* m = ik->lookup_method(name, signature);
- if (m != NULL && m->is_public() && !m->is_static()) {
+ if (m != NULL && m->is_public() && !m->is_static() &&
+ (!skip_default_methods || !m->is_default_method())) {
return m;
}
}
@@ -2199,7 +2206,6 @@
obj, \
PSParallelCompact::adjust_pointer(p), \
assert_is_in)
- obj->update_header(cm);
return size;
}
--- a/hotspot/src/share/vm/oops/instanceKlass.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/oops/instanceKlass.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -525,7 +525,8 @@
// lookup a method in all the interfaces that this class implements
// (returns NULL if not found)
- Method* lookup_method_in_all_interfaces(Symbol* name, Symbol* signature) const;
+ Method* lookup_method_in_all_interfaces(Symbol* name, Symbol* signature, bool skip_default_methods) const;
+
// lookup a method in local defaults then in all interfaces
// (returns NULL if not found)
Method* lookup_method_in_ordered_interfaces(Symbol* name, Symbol* signature) const;
--- a/hotspot/src/share/vm/oops/instanceMirrorKlass.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/oops/instanceMirrorKlass.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, 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
@@ -155,8 +155,13 @@
// Follow the klass field in the mirror.
Klass* klass = java_lang_Class::as_Klass(obj);
if (klass != NULL) {
- // For anonymous classes we need to handle the class loader data,
- // otherwise it won't be claimed and can be unloaded.
+ // An anonymous class doesn't have its own class loader, so the call
+ // to follow_klass will mark and push its java mirror instead of the
+ // class loader. When handling the java mirror for an anonymous class
+ // we need to make sure its class loader data is claimed, this is done
+ // by calling follow_class_loader explicitly. For non-anonymous classes
+ // the call to follow_class_loader is made when the class loader itself
+ // is handled.
if (klass->oop_is_instance() && InstanceKlass::cast(klass)->is_anonymous()) {
MarkSweep::follow_class_loader(klass->class_loader_data());
} else {
@@ -183,7 +188,18 @@
// Follow the klass field in the mirror.
Klass* klass = java_lang_Class::as_Klass(obj);
if (klass != NULL) {
- PSParallelCompact::follow_klass(cm, klass);
+ // An anonymous class doesn't have its own class loader, so the call
+ // to follow_klass will mark and push its java mirror instead of the
+ // class loader. When handling the java mirror for an anonymous class
+ // we need to make sure its class loader data is claimed, this is done
+ // by calling follow_class_loader explicitly. For non-anonymous classes
+ // the call to follow_class_loader is made when the class loader itself
+ // is handled.
+ if (klass->oop_is_instance() && InstanceKlass::cast(klass)->is_anonymous()) {
+ PSParallelCompact::follow_class_loader(cm, klass->class_loader_data());
+ } else {
+ PSParallelCompact::follow_klass(cm, klass);
+ }
} else {
// If klass is NULL then this a mirror for a primitive type.
// We don't have to follow them, since they are handled as strong
@@ -332,17 +348,6 @@
int size = oop_size(obj);
InstanceKlass::oop_update_pointers(cm, obj);
- // Follow the klass field in the mirror.
- Klass* klass = java_lang_Class::as_Klass(obj);
- if (klass != NULL) {
- PSParallelCompact::adjust_klass(cm, klass);
- } else {
- // If klass is NULL then this a mirror for a primitive type.
- // We don't have to follow them, since they are handled as strong
- // roots in Universe::oops_do.
- assert(java_lang_Class::is_primitive(obj), "Sanity check");
- }
-
InstanceMirrorKlass_OOP_ITERATE( \
start_of_static_fields(obj), java_lang_Class::static_oop_field_count(obj),\
PSParallelCompact::adjust_pointer(p), \
--- a/hotspot/src/share/vm/oops/instanceOop.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/oops/instanceOop.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/oops/instanceRefKlass.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/oops/instanceRefKlass.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/oops/klass.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/oops/klass.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -376,8 +376,6 @@
}
bool Klass::is_loader_alive(BoolObjectClosure* is_alive) {
- assert(ClassLoaderDataGraph::contains((address)this), "is in the metaspace");
-
#ifdef ASSERT
// The class is alive iff the class loader is alive.
oop loader = class_loader();
--- a/hotspot/src/share/vm/oops/klassPS.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/oops/klassPS.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
--- a/hotspot/src/share/vm/oops/klassVtable.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/oops/klassVtable.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -622,7 +622,7 @@
// this check for all access permissions.
InstanceKlass *sk = InstanceKlass::cast(super);
if (sk->has_miranda_methods()) {
- if (sk->lookup_method_in_all_interfaces(name, signature) != NULL) {
+ if (sk->lookup_method_in_all_interfaces(name, signature, false) != NULL) {
return false; // found a matching miranda; we do not need a new entry
}
}
@@ -743,7 +743,7 @@
if (is_miranda(im, class_methods, default_methods, super)) { // is it a miranda at all?
InstanceKlass *sk = InstanceKlass::cast(super);
// check if it is a duplicate of a super's miranda
- if (sk->lookup_method_in_all_interfaces(im->name(), im->signature()) == NULL) {
+ if (sk->lookup_method_in_all_interfaces(im->name(), im->signature(), false) == NULL) {
new_mirandas->append(im);
}
if (all_mirandas != NULL) {
@@ -1085,6 +1085,8 @@
Method* m = methods->at(i);
methodHandle target;
if (m->has_itable_index()) {
+ // This search must match the runtime resolution, i.e. selection search for invokeinterface
+ // to correctly enforce loader constraints for interface method inheritance
LinkResolver::lookup_instance_method_in_klasses(target, _klass, m->name(), m->signature(), CHECK);
}
if (target == NULL || !target->is_public() || target->is_abstract()) {
--- a/hotspot/src/share/vm/oops/objArrayKlass.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/oops/objArrayKlass.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -587,7 +587,6 @@
assert (obj->is_objArray(), "obj must be obj array");
objArrayOop a = objArrayOop(obj);
int size = a->object_size();
- a->update_header(cm);
ObjArrayKlass_OOP_ITERATE(a, p, PSParallelCompact::adjust_pointer(p))
return size;
}
--- a/hotspot/src/share/vm/oops/objArrayKlass.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/oops/objArrayKlass.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2012, 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
--- a/hotspot/src/share/vm/oops/oop.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/oops/oop.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -328,11 +328,6 @@
// return the size of this oop. This is used by the MarkSweep collector.
int adjust_pointers();
-#if INCLUDE_ALL_GCS
- // Parallel old
- void update_header(ParCompactionManager* cm);
-#endif // INCLUDE_ALL_GCS
-
// mark-sweep support
void follow_body(int begin, int end);
--- a/hotspot/src/share/vm/oops/oop.pcgc.inline.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/oops/oop.pcgc.inline.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -80,8 +80,4 @@
return forwardee();
}
-inline void oopDesc::update_header(ParCompactionManager* cm) {
- PSParallelCompact::adjust_klass(cm, klass());
-}
-
#endif // SHARE_VM_OOPS_OOP_PCGC_INLINE_HPP
--- a/hotspot/src/share/vm/oops/oop.psgc.inline.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/oops/oop.psgc.inline.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/src/share/vm/oops/typeArrayKlass.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/oops/typeArrayKlass.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/oops/typeArrayKlass.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/oops/typeArrayKlass.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/opto/block.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/block.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/opto/block.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/block.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/opto/buildOopMap.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/buildOopMap.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
--- a/hotspot/src/share/vm/opto/bytecodeInfo.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/bytecodeInfo.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -50,7 +50,10 @@
_subtrees(c->comp_arena(), 2, 0, NULL),
_msg(NULL)
{
- NOT_PRODUCT(_count_inlines = 0;)
+#ifndef PRODUCT
+ _count_inlines = 0;
+ _forced_inline = false;
+#endif
if (_caller_jvms != NULL) {
// Keep a private copy of the caller_jvms:
_caller_jvms = new (C) JVMState(caller_jvms->method(), caller_tree->caller_jvms());
@@ -81,7 +84,10 @@
_count_inline_bcs(method()->code_size()),
_msg(NULL)
{
- NOT_PRODUCT(_count_inlines = 0;)
+#ifndef PRODUCT
+ _count_inlines = 0;
+ _forced_inline = false;
+#endif
assert(!UseOldInlining, "do not use for old stuff");
}
@@ -128,9 +134,19 @@
tty->print_cr("Inlined method is hot: ");
}
set_msg("force inline by CompilerOracle");
+ _forced_inline = true;
return true;
}
+#ifndef PRODUCT
+ int inline_depth = inline_level()+1;
+ if (ciReplay::should_inline(C->replay_inline_data(), callee_method, caller_bci, inline_depth)) {
+ set_msg("force inline by ciReplay");
+ _forced_inline = true;
+ return true;
+ }
+#endif
+
int size = callee_method->code_size_for_inlining();
// Check for too many throws (and not too huge)
@@ -264,6 +280,18 @@
}
#ifndef PRODUCT
+ int caller_bci = jvms->bci();
+ int inline_depth = inline_level()+1;
+ if (ciReplay::should_inline(C->replay_inline_data(), callee_method, caller_bci, inline_depth)) {
+ set_msg("force inline by ciReplay");
+ return false;
+ }
+
+ if (ciReplay::should_not_inline(C->replay_inline_data(), callee_method, caller_bci, inline_depth)) {
+ set_msg("disallowed by ciReplay");
+ return true;
+ }
+
if (ciReplay::should_not_inline(callee_method)) {
set_msg("disallowed by ciReplay");
return true;
@@ -343,6 +371,7 @@
}
}
+ _forced_inline = false; // Reset
if (!should_inline(callee_method, caller_method, caller_bci, profile,
wci_result)) {
return false;
@@ -373,10 +402,10 @@
if ((!UseInterpreter || CompileTheWorld) &&
is_init_with_ea(callee_method, caller_method, C)) {
-
// Escape Analysis stress testing when running Xcomp or CTW:
// inline constructors even if they are not reached.
-
+ } else if (forced_inline()) {
+ // Inlining was forced by CompilerOracle or ciReplay
} else if (profile.count() == 0) {
// don't inline unreached call sites
set_msg("call site not reached");
@@ -700,12 +729,28 @@
return iltp;
}
+// Count number of nodes in this subtree
+int InlineTree::count() const {
+ int result = 1;
+ for (int i = 0 ; i < _subtrees.length(); i++) {
+ result += _subtrees.at(i)->count();
+ }
+ return result;
+}
+
+void InlineTree::dump_replay_data(outputStream* out) {
+ out->print(" %d %d ", inline_level(), caller_bci());
+ method()->dump_name_as_ascii(out);
+ for (int i = 0 ; i < _subtrees.length(); i++) {
+ _subtrees.at(i)->dump_replay_data(out);
+ }
+}
#ifndef PRODUCT
void InlineTree::print_impl(outputStream* st, int indent) const {
for (int i = 0; i < indent; i++) st->print(" ");
- st->print(" @ %d ", caller_bci());
+ st->print(" @ %d", caller_bci());
method()->print_short_name(st);
st->cr();
--- a/hotspot/src/share/vm/opto/c2compiler.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/c2compiler.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2011, 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
--- a/hotspot/src/share/vm/opto/c2compiler.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/c2compiler.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -32,13 +32,11 @@
static bool init_c2_runtime();
public:
+ C2Compiler() : AbstractCompiler(c2) {}
+
// Name
const char *name() { return "C2"; }
-#ifdef TIERED
- virtual bool is_c2() { return true; };
-#endif // TIERED
-
void initialize();
// Compilation entry point for methods
--- a/hotspot/src/share/vm/opto/callGenerator.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/callGenerator.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/share/vm/opto/callnode.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/callnode.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/opto/chaitin.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/chaitin.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1682,9 +1682,21 @@
// (where top() node is placed).
base->init_req(0, _cfg.get_root_node());
Block *startb = _cfg.get_block_for_node(C->top());
- startb->insert_node(base, startb->find_node(C->top()));
+ uint node_pos = startb->find_node(C->top());
+ startb->insert_node(base, node_pos);
_cfg.map_node_to_block(base, startb);
assert(_lrg_map.live_range_id(base) == 0, "should not have LRG yet");
+
+ // The loadConP0 might have projection nodes depending on architecture
+ // Add the projection nodes to the CFG
+ for (DUIterator_Fast imax, i = base->fast_outs(imax); i < imax; i++) {
+ Node* use = base->fast_out(i);
+ if (use->is_MachProj()) {
+ startb->insert_node(use, ++node_pos);
+ _cfg.map_node_to_block(use, startb);
+ new_lrg(use, maxlrg++);
+ }
+ }
}
if (_lrg_map.live_range_id(base) == 0) {
new_lrg(base, maxlrg++);
--- a/hotspot/src/share/vm/opto/chaitin.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/chaitin.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/opto/classes.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/classes.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/opto/classes.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/classes.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/opto/coalesce.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/coalesce.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/opto/compile.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/compile.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -25,6 +25,7 @@
#include "precompiled.hpp"
#include "asm/macroAssembler.hpp"
#include "asm/macroAssembler.inline.hpp"
+#include "ci/ciReplay.hpp"
#include "classfile/systemDictionary.hpp"
#include "code/exceptionHandlerTable.hpp"
#include "code/nmethod.hpp"
@@ -647,6 +648,7 @@
_printer(IdealGraphPrinter::printer()),
#endif
_congraph(NULL),
+ _replay_inline_data(NULL),
_late_inlines(comp_arena(), 2, 0, NULL),
_string_late_inlines(comp_arena(), 2, 0, NULL),
_boxing_late_inlines(comp_arena(), 2, 0, NULL),
@@ -680,6 +682,10 @@
}
set_print_assembly(print_opto_assembly);
set_parsed_irreducible_loop(false);
+
+ if (method()->has_option("ReplayInline")) {
+ _replay_inline_data = ciReplay::load_inline_data(method(), entry_bci(), ci_env->comp_level());
+ }
#endif
set_print_inlining(PrintInlining || method()->has_option("PrintInlining") NOT_PRODUCT( || PrintOptoInlining));
set_print_intrinsics(PrintIntrinsics || method()->has_option("PrintIntrinsics"));
@@ -849,6 +855,15 @@
#endif
NOT_PRODUCT( verify_barriers(); )
+
+ // Dump compilation data to replay it.
+ if (method()->has_option("DumpReplay")) {
+ env()->dump_replay_data(_compile_id);
+ }
+ if (method()->has_option("DumpInline") && (ilt() != NULL)) {
+ env()->dump_inline_data(_compile_id);
+ }
+
// Now that we know the size of all the monitors we can add a fixed slot
// for the original deopt pc.
@@ -938,6 +953,7 @@
_dead_node_list(comp_arena()),
_dead_node_count(0),
_congraph(NULL),
+ _replay_inline_data(NULL),
_number_of_mh_late_inlines(0),
_inlining_progress(false),
_inlining_incrementally(false),
@@ -3757,6 +3773,16 @@
}
}
+// Dump inlining replay data to the stream.
+// Don't change thread state and acquire any locks.
+void Compile::dump_inline_data(outputStream* out) {
+ InlineTree* inl_tree = ilt();
+ if (inl_tree != NULL) {
+ out->print(" inline %d", inl_tree->count());
+ inl_tree->dump_replay_data(out);
+ }
+}
+
int Compile::cmp_expensive_nodes(Node* n1, Node* n2) {
if (n1->Opcode() < n2->Opcode()) return -1;
else if (n1->Opcode() > n2->Opcode()) return 1;
--- a/hotspot/src/share/vm/opto/compile.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/compile.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -431,6 +431,8 @@
// Are we within a PreserveJVMState block?
int _preserve_jvm_state;
+ void* _replay_inline_data; // Pointer to data loaded from file
+
public:
outputStream* print_inlining_stream() const {
@@ -465,6 +467,11 @@
print_inlining_stream()->print(ss.as_string());
}
+ void* replay_inline_data() const { return _replay_inline_data; }
+
+ // Dump inlining replay data to the stream.
+ void dump_inline_data(outputStream* out);
+
private:
// Matching, CFG layout, allocation, code generation
PhaseCFG* _cfg; // Results of CFG finding
--- a/hotspot/src/share/vm/opto/connode.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/connode.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/opto/doCall.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/doCall.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/hotspot/src/share/vm/opto/domgraph.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/domgraph.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/opto/escape.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/escape.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1579,9 +1579,20 @@
jobj->set_scalar_replaceable(false);
return;
}
+ // 2. An object is not scalar replaceable if the field into which it is
+ // stored has multiple bases one of which is null.
+ if (field->base_count() > 1) {
+ for (BaseIterator i(field); i.has_next(); i.next()) {
+ PointsToNode* base = i.get();
+ if (base == null_obj) {
+ jobj->set_scalar_replaceable(false);
+ return;
+ }
+ }
+ }
}
assert(use->is_Field() || use->is_LocalVar(), "sanity");
- // 2. An object is not scalar replaceable if it is merged with other objects.
+ // 3. An object is not scalar replaceable if it is merged with other objects.
for (EdgeIterator j(use); j.has_next(); j.next()) {
PointsToNode* ptn = j.get();
if (ptn->is_JavaObject() && ptn != jobj) {
@@ -1600,13 +1611,13 @@
FieldNode* field = j.get()->as_Field();
int offset = field->as_Field()->offset();
- // 3. An object is not scalar replaceable if it has a field with unknown
+ // 4. An object is not scalar replaceable if it has a field with unknown
// offset (array's element is accessed in loop).
if (offset == Type::OffsetBot) {
jobj->set_scalar_replaceable(false);
return;
}
- // 4. Currently an object is not scalar replaceable if a LoadStore node
+ // 5. Currently an object is not scalar replaceable if a LoadStore node
// access its field since the field value is unknown after it.
//
Node* n = field->ideal_node();
@@ -1617,7 +1628,7 @@
}
}
- // 5. Or the address may point to more then one object. This may produce
+ // 6. Or the address may point to more then one object. This may produce
// the false positive result (set not scalar replaceable)
// since the flow-insensitive escape analysis can't separate
// the case when stores overwrite the field's value from the case
--- a/hotspot/src/share/vm/opto/gcm.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/gcm.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/opto/generateOptoStub.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/generateOptoStub.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/opto/graphKit.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/graphKit.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/opto/graphKit.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/graphKit.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/opto/idealKit.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/idealKit.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
--- a/hotspot/src/share/vm/opto/idealKit.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/idealKit.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
--- a/hotspot/src/share/vm/opto/ifg.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/ifg.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/hotspot/src/share/vm/opto/ifnode.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/ifnode.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/share/vm/opto/lcm.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/lcm.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/hotspot/src/share/vm/opto/live.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/live.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/opto/live.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/live.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/opto/loopPredicate.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/loopPredicate.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, 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
--- a/hotspot/src/share/vm/opto/loopTransform.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/loopTransform.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/share/vm/opto/loopnode.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/loopnode.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/hotspot/src/share/vm/opto/loopopts.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/loopopts.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/opto/macro.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/macro.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
--- a/hotspot/src/share/vm/opto/macro.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/macro.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
--- a/hotspot/src/share/vm/opto/matcher.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/matcher.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/opto/memnode.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/memnode.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -2071,6 +2071,11 @@
if (t != NULL) {
// constant oop => constant klass
if (offset == java_lang_Class::array_klass_offset_in_bytes()) {
+ if (t->is_void()) {
+ // We cannot create a void array. Since void is a primitive type return null
+ // klass. Users of this result need to do a null check on the returned klass.
+ return TypePtr::NULL_PTR;
+ }
return TypeKlassPtr::make(ciArrayKlass::make(t));
}
if (!t->is_klass()) {
--- a/hotspot/src/share/vm/opto/memnode.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/memnode.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/opto/multnode.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/multnode.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/opto/multnode.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/multnode.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/opto/node.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/node.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/opto/optoreg.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/optoreg.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
--- a/hotspot/src/share/vm/opto/output.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/output.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/hotspot/src/share/vm/opto/output.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/output.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/share/vm/opto/parse.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/parse.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -141,6 +141,13 @@
GrowableArray<InlineTree*> subtrees() { return _subtrees; }
void print_value_on(outputStream* st) const PRODUCT_RETURN;
+
+ bool _forced_inline; // Inlining was forced by CompilerOracle or ciReplay
+ bool forced_inline() const { return _forced_inline; }
+ // Count number of nodes in this subtree
+ int count() const;
+ // Dump inlining replay data to the stream.
+ void dump_replay_data(outputStream* out);
};
--- a/hotspot/src/share/vm/opto/parse1.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/parse1.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/opto/parse2.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/parse2.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/hotspot/src/share/vm/opto/phase.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/phase.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/opto/phase.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/phase.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/opto/phaseX.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/phaseX.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/opto/phaseX.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/phaseX.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/opto/postaloc.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/postaloc.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/hotspot/src/share/vm/opto/reg_split.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/reg_split.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/share/vm/opto/regalloc.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/regalloc.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/share/vm/opto/regalloc.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/regalloc.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/share/vm/opto/subnode.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/subnode.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/opto/subnode.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/subnode.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/opto/superword.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/superword.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
--- a/hotspot/src/share/vm/opto/superword.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/superword.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
--- a/hotspot/src/share/vm/opto/type.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/opto/type.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -3812,17 +3812,17 @@
tary = TypeAry::make(Type::BOTTOM, tary->_size, tary->_stable);
}
} else // Non integral arrays.
- // Must fall to bottom if exact klasses in upper lattice
- // are not equal or super klass is exact.
- if ( above_centerline(ptr) && klass() != tap->klass() &&
- // meet with top[] and bottom[] are processed further down:
- tap ->_klass != NULL && this->_klass != NULL &&
- // both are exact and not equal:
- ((tap ->_klass_is_exact && this->_klass_is_exact) ||
- // 'tap' is exact and super or unrelated:
- (tap ->_klass_is_exact && !tap->klass()->is_subtype_of(klass())) ||
- // 'this' is exact and super or unrelated:
- (this->_klass_is_exact && !klass()->is_subtype_of(tap->klass())))) {
+ // Must fall to bottom if exact klasses in upper lattice
+ // are not equal or super klass is exact.
+ if ((above_centerline(ptr) || ptr == Constant) && klass() != tap->klass() &&
+ // meet with top[] and bottom[] are processed further down:
+ tap->_klass != NULL && this->_klass != NULL &&
+ // both are exact and not equal:
+ ((tap->_klass_is_exact && this->_klass_is_exact) ||
+ // 'tap' is exact and super or unrelated:
+ (tap->_klass_is_exact && !tap->klass()->is_subtype_of(klass())) ||
+ // 'this' is exact and super or unrelated:
+ (this->_klass_is_exact && !klass()->is_subtype_of(tap->klass())))) {
tary = TypeAry::make(Type::BOTTOM, tary->_size, tary->_stable);
return make(NotNull, NULL, tary, lazy_klass, false, off, InstanceBot);
}
--- a/hotspot/src/share/vm/precompiled/precompiled.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/precompiled/precompiled.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2012, 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
--- a/hotspot/src/share/vm/prims/forte.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/prims/forte.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -613,7 +613,7 @@
#ifdef __APPLE__
// XXXDARWIN: Link errors occur even when __attribute__((weak_import))
// is added
-#define collector_func_load(x0,x1,x2,x3,x4,x5,x6) (0)
+#define collector_func_load(x0,x1,x2,x3,x4,x5,x6) ((void) 0)
#else
void collector_func_load(char* name,
void* null_argument_1,
--- a/hotspot/src/share/vm/prims/jni.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/prims/jni.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1804,34 +1804,34 @@
// the runtime type of subword integral basic types is integer
DEFINE_CALLMETHODV(jboolean, Boolean, T_BOOLEAN
- , HOTSPOT_JNI_CALLBOOLEANMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLBOOLEANMETHOD_RETURN(_ret_ref))
+ , HOTSPOT_JNI_CALLBOOLEANMETHODV_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLBOOLEANMETHODV_RETURN(_ret_ref))
DEFINE_CALLMETHODV(jbyte, Byte, T_BYTE
- , HOTSPOT_JNI_CALLBYTEMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLBYTEMETHOD_RETURN(_ret_ref))
+ , HOTSPOT_JNI_CALLBYTEMETHODV_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLBYTEMETHODV_RETURN(_ret_ref))
DEFINE_CALLMETHODV(jchar, Char, T_CHAR
- , HOTSPOT_JNI_CALLCHARMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLCHARMETHOD_RETURN(_ret_ref))
+ , HOTSPOT_JNI_CALLCHARMETHODV_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLCHARMETHODV_RETURN(_ret_ref))
DEFINE_CALLMETHODV(jshort, Short, T_SHORT
- , HOTSPOT_JNI_CALLSHORTMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLSHORTMETHOD_RETURN(_ret_ref))
+ , HOTSPOT_JNI_CALLSHORTMETHODV_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLSHORTMETHODV_RETURN(_ret_ref))
DEFINE_CALLMETHODV(jobject, Object, T_OBJECT
- , HOTSPOT_JNI_CALLOBJECTMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLOBJECTMETHOD_RETURN(_ret_ref))
+ , HOTSPOT_JNI_CALLOBJECTMETHODV_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLOBJECTMETHODV_RETURN(_ret_ref))
DEFINE_CALLMETHODV(jint, Int, T_INT,
- HOTSPOT_JNI_CALLINTMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLINTMETHOD_RETURN(_ret_ref))
+ HOTSPOT_JNI_CALLINTMETHODV_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLINTMETHODV_RETURN(_ret_ref))
DEFINE_CALLMETHODV(jlong, Long, T_LONG
- , HOTSPOT_JNI_CALLLONGMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLLONGMETHOD_RETURN(_ret_ref))
+ , HOTSPOT_JNI_CALLLONGMETHODV_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLLONGMETHODV_RETURN(_ret_ref))
// Float and double probes don't return value because dtrace doesn't currently support it
DEFINE_CALLMETHODV(jfloat, Float, T_FLOAT
- , HOTSPOT_JNI_CALLFLOATMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLFLOATMETHOD_RETURN())
+ , HOTSPOT_JNI_CALLFLOATMETHODV_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLFLOATMETHODV_RETURN())
DEFINE_CALLMETHODV(jdouble, Double, T_DOUBLE
- , HOTSPOT_JNI_CALLDOUBLEMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLDOUBLEMETHOD_RETURN())
+ , HOTSPOT_JNI_CALLDOUBLEMETHODV_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLDOUBLEMETHODV_RETURN())
#define DEFINE_CALLMETHODA(ResultType, Result, Tag \
, EntryProbe, ReturnProbe) \
@@ -1856,34 +1856,34 @@
// the runtime type of subword integral basic types is integer
DEFINE_CALLMETHODA(jboolean, Boolean, T_BOOLEAN
- , HOTSPOT_JNI_CALLBOOLEANMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLBOOLEANMETHOD_RETURN(_ret_ref))
+ , HOTSPOT_JNI_CALLBOOLEANMETHODA_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLBOOLEANMETHODA_RETURN(_ret_ref))
DEFINE_CALLMETHODA(jbyte, Byte, T_BYTE
- , HOTSPOT_JNI_CALLBYTEMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLBYTEMETHOD_RETURN(_ret_ref))
+ , HOTSPOT_JNI_CALLBYTEMETHODA_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLBYTEMETHODA_RETURN(_ret_ref))
DEFINE_CALLMETHODA(jchar, Char, T_CHAR
- , HOTSPOT_JNI_CALLCHARMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLCHARMETHOD_RETURN(_ret_ref))
+ , HOTSPOT_JNI_CALLCHARMETHODA_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLCHARMETHODA_RETURN(_ret_ref))
DEFINE_CALLMETHODA(jshort, Short, T_SHORT
- , HOTSPOT_JNI_CALLSHORTMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLSHORTMETHOD_RETURN(_ret_ref))
+ , HOTSPOT_JNI_CALLSHORTMETHODA_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLSHORTMETHODA_RETURN(_ret_ref))
DEFINE_CALLMETHODA(jobject, Object, T_OBJECT
- , HOTSPOT_JNI_CALLOBJECTMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLOBJECTMETHOD_RETURN(_ret_ref))
+ , HOTSPOT_JNI_CALLOBJECTMETHODA_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLOBJECTMETHODA_RETURN(_ret_ref))
DEFINE_CALLMETHODA(jint, Int, T_INT,
- HOTSPOT_JNI_CALLINTMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLINTMETHOD_RETURN(_ret_ref))
+ HOTSPOT_JNI_CALLINTMETHODA_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLINTMETHODA_RETURN(_ret_ref))
DEFINE_CALLMETHODA(jlong, Long, T_LONG
- , HOTSPOT_JNI_CALLLONGMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLLONGMETHOD_RETURN(_ret_ref))
+ , HOTSPOT_JNI_CALLLONGMETHODA_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLLONGMETHODA_RETURN(_ret_ref))
// Float and double probes don't return value because dtrace doesn't currently support it
DEFINE_CALLMETHODA(jfloat, Float, T_FLOAT
- , HOTSPOT_JNI_CALLFLOATMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLFLOATMETHOD_RETURN())
+ , HOTSPOT_JNI_CALLFLOATMETHODA_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLFLOATMETHODA_RETURN())
DEFINE_CALLMETHODA(jdouble, Double, T_DOUBLE
- , HOTSPOT_JNI_CALLDOUBLEMETHOD_ENTRY(env, obj, (uintptr_t)methodID),
- HOTSPOT_JNI_CALLDOUBLEMETHOD_RETURN())
+ , HOTSPOT_JNI_CALLDOUBLEMETHODA_ENTRY(env, obj, (uintptr_t)methodID),
+ HOTSPOT_JNI_CALLDOUBLEMETHODA_RETURN())
DT_VOID_RETURN_MARK_DECL(CallVoidMethod, HOTSPOT_JNI_CALLVOIDMETHOD_RETURN());
DT_VOID_RETURN_MARK_DECL(CallVoidMethodV, HOTSPOT_JNI_CALLVOIDMETHODV_RETURN());
@@ -3145,7 +3145,7 @@
JNI_END
DEFINE_SETSTATICFIELD(jboolean, bool, Boolean, 'Z', z
- , HOTSPOT_JNI_SETBOOLEANFIELD_ENTRY(env, clazz, (uintptr_t)fieldID, value),
+ , HOTSPOT_JNI_SETSTATICBOOLEANFIELD_ENTRY(env, clazz, (uintptr_t)fieldID, value),
HOTSPOT_JNI_SETBOOLEANFIELD_RETURN())
DEFINE_SETSTATICFIELD(jbyte, byte, Byte, 'B', b
, HOTSPOT_JNI_SETSTATICBYTEFIELD_ENTRY(env, clazz, (uintptr_t) fieldID, value),
--- a/hotspot/src/share/vm/prims/jniCheck.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/prims/jniCheck.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/prims/jvm.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvm.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -3971,40 +3971,6 @@
}
-// Internal SQE debugging support ///////////////////////////////////////////////////////////
-
-#ifndef PRODUCT
-
-extern "C" {
- JNIEXPORT jboolean JNICALL JVM_AccessVMBooleanFlag(const char* name, jboolean* value, jboolean is_get);
- JNIEXPORT jboolean JNICALL JVM_AccessVMIntFlag(const char* name, jint* value, jboolean is_get);
- JNIEXPORT void JNICALL JVM_VMBreakPoint(JNIEnv *env, jobject obj);
-}
-
-JVM_LEAF(jboolean, JVM_AccessVMBooleanFlag(const char* name, jboolean* value, jboolean is_get))
- JVMWrapper("JVM_AccessBoolVMFlag");
- return is_get ? CommandLineFlags::boolAt((char*) name, (bool*) value) : CommandLineFlags::boolAtPut((char*) name, (bool*) value, Flag::INTERNAL);
-JVM_END
-
-JVM_LEAF(jboolean, JVM_AccessVMIntFlag(const char* name, jint* value, jboolean is_get))
- JVMWrapper("JVM_AccessVMIntFlag");
- intx v;
- jboolean result = is_get ? CommandLineFlags::intxAt((char*) name, &v) : CommandLineFlags::intxAtPut((char*) name, &v, Flag::INTERNAL);
- *value = (jint)v;
- return result;
-JVM_END
-
-
-JVM_ENTRY(void, JVM_VMBreakPoint(JNIEnv *env, jobject obj))
- JVMWrapper("JVM_VMBreakPoint");
- oop the_obj = JNIHandles::resolve(obj);
- BREAKPOINT;
-JVM_END
-
-
-#endif
-
-
// Method ///////////////////////////////////////////////////////////////////////////////////////////
JVM_ENTRY(jobject, JVM_InvokeMethod(JNIEnv *env, jobject method, jobject obj, jobjectArray args0))
--- a/hotspot/src/share/vm/prims/jvm_misc.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvm_misc.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
--- a/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
--- a/hotspot/src/share/vm/prims/jvmtiEnter.xsl Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiEnter.xsl Wed Jul 05 19:27:58 2017 +0200
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<!--
- Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2002, 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
--- a/hotspot/src/share/vm/prims/jvmtiEnvBase.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiEnvBase.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/src/share/vm/prims/jvmtiEnvThreadState.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiEnvThreadState.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/src/share/vm/prims/jvmtiEventController.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiEventController.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/src/share/vm/prims/jvmtiExport.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiExport.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/hotspot/src/share/vm/prims/jvmtiGetLoadedClasses.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiGetLoadedClasses.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -147,9 +147,6 @@
_scratch_classes[i] = NULL;
}
- // Disable any dependent concurrent compilations
- SystemDictionary::notice_modification();
-
// Set flag indicating that some invariants are no longer true.
// See jvmtiExport.hpp for detailed explanation.
JvmtiExport::set_has_redefined_a_class();
--- a/hotspot/src/share/vm/prims/jvmtiTrace.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiTrace.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, 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
--- a/hotspot/src/share/vm/prims/methodHandles.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/prims/methodHandles.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -175,8 +175,8 @@
oop MethodHandles::init_method_MemberName(Handle mname, CallInfo& info) {
assert(info.resolved_appendix().is_null(), "only normal methods here");
- KlassHandle receiver_limit = info.resolved_klass();
methodHandle m = info.resolved_method();
+ KlassHandle m_klass = m->method_holder();
int flags = (jushort)( m->access_flags().as_short() & JVM_RECOGNIZED_METHOD_MODIFIERS );
int vmindex = Method::invalid_vtable_index;
@@ -184,14 +184,13 @@
case CallInfo::itable_call:
vmindex = info.itable_index();
// More importantly, the itable index only works with the method holder.
- receiver_limit = m->method_holder();
- assert(receiver_limit->verify_itable_index(vmindex), "");
+ assert(m_klass->verify_itable_index(vmindex), "");
flags |= IS_METHOD | (JVM_REF_invokeInterface << REFERENCE_KIND_SHIFT);
if (TraceInvokeDynamic) {
ResourceMark rm;
- tty->print_cr("memberName: invokeinterface method_holder::method: %s, receiver: %s, itableindex: %d, access_flags:",
- Method::name_and_sig_as_C_string(receiver_limit(), m->name(), m->signature()),
- receiver_limit()->internal_name(), vmindex);
+ tty->print_cr("memberName: invokeinterface method_holder::method: %s, itableindex: %d, access_flags:",
+ Method::name_and_sig_as_C_string(m->method_holder(), m->name(), m->signature()),
+ vmindex);
m->access_flags().print_on(tty);
if (!m->is_abstract()) {
tty->print("default");
@@ -203,12 +202,35 @@
case CallInfo::vtable_call:
vmindex = info.vtable_index();
flags |= IS_METHOD | (JVM_REF_invokeVirtual << REFERENCE_KIND_SHIFT);
- assert(receiver_limit->is_subtype_of(m->method_holder()), "virtual call must be type-safe");
+ assert(info.resolved_klass()->is_subtype_of(m_klass()), "virtual call must be type-safe");
+ if (m_klass->is_interface()) {
+ // This is a vtable call to an interface method (abstract "miranda method" or default method).
+ // The vtable index is meaningless without a class (not interface) receiver type, so get one.
+ // (LinkResolver should help us figure this out.)
+ KlassHandle m_klass_non_interface = info.resolved_klass();
+ if (m_klass_non_interface->is_interface()) {
+ m_klass_non_interface = SystemDictionary::Object_klass();
+#ifdef ASSERT
+ { ResourceMark rm;
+ Method* m2 = m_klass_non_interface->vtable()->method_at(vmindex);
+ assert(m->name() == m2->name() && m->signature() == m2->signature(),
+ err_msg("at %d, %s != %s", vmindex,
+ m->name_and_sig_as_C_string(), m2->name_and_sig_as_C_string()));
+ }
+#endif //ASSERT
+ }
+ if (!m->is_public()) {
+ assert(m->is_public(), "virtual call must be to public interface method");
+ return NULL; // elicit an error later in product build
+ }
+ assert(info.resolved_klass()->is_subtype_of(m_klass_non_interface()), "virtual call must be type-safe");
+ m_klass = m_klass_non_interface;
+ }
if (TraceInvokeDynamic) {
ResourceMark rm;
tty->print_cr("memberName: invokevirtual method_holder::method: %s, receiver: %s, vtableindex: %d, access_flags:",
- Method::name_and_sig_as_C_string(receiver_limit(), m->name(), m->signature()),
- receiver_limit()->internal_name(), vmindex);
+ Method::name_and_sig_as_C_string(m->method_holder(), m->name(), m->signature()),
+ m_klass->internal_name(), vmindex);
m->access_flags().print_on(tty);
if (m->is_default_method()) {
tty->print("default");
@@ -223,10 +245,8 @@
flags |= IS_METHOD | (JVM_REF_invokeStatic << REFERENCE_KIND_SHIFT);
} else if (m->is_initializer()) {
flags |= IS_CONSTRUCTOR | (JVM_REF_invokeSpecial << REFERENCE_KIND_SHIFT);
- assert(receiver_limit == m->method_holder(), "constructor call must be exactly typed");
} else {
flags |= IS_METHOD | (JVM_REF_invokeSpecial << REFERENCE_KIND_SHIFT);
- assert(receiver_limit->is_subtype_of(m->method_holder()), "special call must be type-safe");
}
break;
@@ -242,7 +262,7 @@
java_lang_invoke_MemberName::set_flags( mname_oop, flags);
java_lang_invoke_MemberName::set_vmtarget(mname_oop, m());
java_lang_invoke_MemberName::set_vmindex( mname_oop, vmindex); // vtable/itable index
- java_lang_invoke_MemberName::set_clazz( mname_oop, receiver_limit->java_mirror());
+ java_lang_invoke_MemberName::set_clazz( mname_oop, m_klass->java_mirror());
// Note: name and type can be lazily computed by resolve_MemberName,
// if Java code needs them as resolved String and MethodType objects.
// The clazz must be eagerly stored, because it provides a GC
@@ -569,7 +589,7 @@
// An unresolved member name is a mere symbolic reference.
// Resolving it plants a vmtarget/vmindex in it,
// which refers directly to JVM internals.
-Handle MethodHandles::resolve_MemberName(Handle mname, TRAPS) {
+Handle MethodHandles::resolve_MemberName(Handle mname, KlassHandle caller, TRAPS) {
Handle empty;
assert(java_lang_invoke_MemberName::is_instance(mname()), "");
@@ -646,20 +666,20 @@
assert(!HAS_PENDING_EXCEPTION, "");
if (ref_kind == JVM_REF_invokeStatic) {
LinkResolver::resolve_static_call(result,
- defc, name, type, KlassHandle(), false, false, THREAD);
+ defc, name, type, caller, caller.not_null(), false, THREAD);
} else if (ref_kind == JVM_REF_invokeInterface) {
LinkResolver::resolve_interface_call(result, Handle(), defc,
- defc, name, type, KlassHandle(), false, false, THREAD);
+ defc, name, type, caller, caller.not_null(), false, THREAD);
} else if (mh_invoke_id != vmIntrinsics::_none) {
assert(!is_signature_polymorphic_static(mh_invoke_id), "");
LinkResolver::resolve_handle_call(result,
- defc, name, type, KlassHandle(), THREAD);
+ defc, name, type, caller, THREAD);
} else if (ref_kind == JVM_REF_invokeSpecial) {
LinkResolver::resolve_special_call(result,
- defc, name, type, KlassHandle(), false, THREAD);
+ defc, name, type, caller, caller.not_null(), THREAD);
} else if (ref_kind == JVM_REF_invokeVirtual) {
LinkResolver::resolve_virtual_call(result, Handle(), defc,
- defc, name, type, KlassHandle(), false, false, THREAD);
+ defc, name, type, caller, caller.not_null(), false, THREAD);
} else {
assert(false, err_msg("ref_kind=%d", ref_kind));
}
@@ -683,7 +703,7 @@
assert(!HAS_PENDING_EXCEPTION, "");
if (name == vmSymbols::object_initializer_name()) {
LinkResolver::resolve_special_call(result,
- defc, name, type, KlassHandle(), false, THREAD);
+ defc, name, type, caller, caller.not_null(), THREAD);
} else {
break; // will throw after end of switch
}
@@ -700,7 +720,7 @@
fieldDescriptor result; // find_field initializes fd if found
{
assert(!HAS_PENDING_EXCEPTION, "");
- LinkResolver::resolve_field(result, defc, name, type, KlassHandle(), Bytecodes::_nop, false, false, THREAD);
+ LinkResolver::resolve_field(result, defc, name, type, caller, Bytecodes::_nop, false, false, THREAD);
if (HAS_PENDING_EXCEPTION) {
return empty;
}
@@ -1121,7 +1141,11 @@
}
}
- Handle resolved = MethodHandles::resolve_MemberName(mname, CHECK_NULL);
+ KlassHandle caller(THREAD,
+ caller_jh == NULL ? (Klass*) NULL :
+ java_lang_Class::as_Klass(JNIHandles::resolve_non_null(caller_jh)));
+ Handle resolved = MethodHandles::resolve_MemberName(mname, caller, CHECK_NULL);
+
if (resolved.is_null()) {
int flags = java_lang_invoke_MemberName::flags(mname());
int ref_kind = (flags >> REFERENCE_KIND_SHIFT) & REFERENCE_KIND_MASK;
--- a/hotspot/src/share/vm/prims/methodHandles.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/prims/methodHandles.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -55,7 +55,7 @@
public:
// working with member names
- static Handle resolve_MemberName(Handle mname, TRAPS); // compute vmtarget/vmindex from name/type
+ static Handle resolve_MemberName(Handle mname, KlassHandle caller, TRAPS); // compute vmtarget/vmindex from name/type
static void expand_MemberName(Handle mname, int suppress, TRAPS); // expand defc/name/type if missing
static Handle new_MemberName(TRAPS); // must be followed by init_MemberName
static oop init_MemberName(Handle mname_h, Handle target_h); // compute vmtarget/vmindex from target
--- a/hotspot/src/share/vm/prims/nativeLookup.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/prims/nativeLookup.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/prims/perf.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/prims/perf.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/prims/wbtestmethods/parserTests.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/prims/wbtestmethods/parserTests.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/prims/whitebox.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/prims/whitebox.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/runtime/advancedThresholdPolicy.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/advancedThresholdPolicy.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2012, 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
--- a/hotspot/src/share/vm/runtime/atomic.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/atomic.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/runtime/atomic.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/atomic.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, 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
--- a/hotspot/src/share/vm/runtime/compilationPolicy.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/compilationPolicy.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
--- a/hotspot/src/share/vm/runtime/deoptimization.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/deoptimization.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1224,9 +1224,19 @@
load_class_by_index(constant_pool, index, THREAD);
if (HAS_PENDING_EXCEPTION) {
// Exception happened during classloading. We ignore the exception here, since it
- // is going to be rethrown since the current activation is going to be deoptimzied and
+ // is going to be rethrown since the current activation is going to be deoptimized and
// the interpreter will re-execute the bytecode.
CLEAR_PENDING_EXCEPTION;
+ // Class loading called java code which may have caused a stack
+ // overflow. If the exception was thrown right before the return
+ // to the runtime the stack is no longer guarded. Reguard the
+ // stack otherwise if we return to the uncommon trap blob and the
+ // stack bang causes a stack overflow we crash.
+ assert(THREAD->is_Java_thread(), "only a java thread can be here");
+ JavaThread* thread = (JavaThread*)THREAD;
+ bool guard_pages_enabled = thread->stack_yellow_zone_enabled();
+ if (!guard_pages_enabled) guard_pages_enabled = thread->reguard_stack();
+ assert(guard_pages_enabled, "stack banging in uncommon trap blob may cause crash");
}
}
--- a/hotspot/src/share/vm/runtime/fprofiler.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/fprofiler.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/runtime/globals.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/globals.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -295,7 +295,7 @@
else st->print("%-16s", "");
}
- st->print("%-20");
+ st->print("%-20s", " ");
print_kind(st);
if (withComments) {
@@ -702,8 +702,6 @@
return true;
}
-// Contract: Flag will make private copy of the incoming value.
-// Outgoing value is always malloc-ed, and caller MUST call free.
bool CommandLineFlags::ccstrAtPut(char* name, size_t len, ccstr* value, Flag::Flags origin) {
Flag* result = Flag::find_flag(name, len);
if (result == NULL) return false;
@@ -726,7 +724,6 @@
return true;
}
-// Contract: Flag will make private copy of the incoming value.
void CommandLineFlagsEx::ccstrAtPut(CommandLineFlagWithType flag, ccstr value, Flag::Flags origin) {
Flag* faddr = address_of_flag(flag);
guarantee(faddr != NULL && faddr->is_ccstr(), "wrong flag type");
--- a/hotspot/src/share/vm/runtime/globals.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/globals.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -376,6 +376,8 @@
static bool ccstrAt(char* name, size_t len, ccstr* value);
static bool ccstrAt(char* name, ccstr* value) { return ccstrAt(name, strlen(name), value); }
+ // Contract: Flag will make private copy of the incoming value.
+ // Outgoing value is always malloc-ed, and caller MUST call free.
static bool ccstrAtPut(char* name, size_t len, ccstr* value, Flag::Flags origin);
static bool ccstrAtPut(char* name, ccstr* value, Flag::Flags origin) { return ccstrAtPut(name, strlen(name), value, origin); }
@@ -2531,6 +2533,9 @@
develop(bool, PrintMethodFlushing, false, \
"Print the nmethods being flushed") \
\
+ diagnostic(bool, PrintMethodFlushingStatistics, false, \
+ "print statistics about method flushing") \
+ \
develop(bool, UseRelocIndex, false, \
"Use an index to speed random access to relocations") \
\
@@ -3306,21 +3311,21 @@
develop(intx, CIStart, 0, \
"The id of the first compilation to permit") \
\
- develop(intx, CIStop, -1, \
+ develop(intx, CIStop, max_jint, \
"The id of the last compilation to permit") \
\
- develop(intx, CIStartOSR, 0, \
+ develop(intx, CIStartOSR, 0, \
"The id of the first osr compilation to permit " \
"(CICountOSR must be on)") \
\
- develop(intx, CIStopOSR, -1, \
+ develop(intx, CIStopOSR, max_jint, \
"The id of the last osr compilation to permit " \
"(CICountOSR must be on)") \
\
- develop(intx, CIBreakAtOSR, -1, \
+ develop(intx, CIBreakAtOSR, -1, \
"The id of osr compilation to break at") \
\
- develop(intx, CIBreakAt, -1, \
+ develop(intx, CIBreakAt, -1, \
"The id of compilation to break at") \
\
product(ccstrlist, CompileOnly, "", \
@@ -3339,6 +3344,10 @@
"File containing compilation replay information" \
"[default: ./replay_pid%p.log] (%p replaced with pid)") \
\
+ product(ccstr, InlineDataFile, NULL, \
+ "File containing inlining replay information" \
+ "[default: ./inline_pid%p.log] (%p replaced with pid)") \
+ \
develop(intx, ReplaySuppressInitializers, 2, \
"Control handling of class initialization during replay: " \
"0 - don't do anything special; " \
--- a/hotspot/src/share/vm/runtime/globals_extension.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/globals_extension.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -201,6 +201,7 @@
static void uintxAtPut(CommandLineFlagWithType flag, uintx value, Flag::Flags origin);
static void uint64_tAtPut(CommandLineFlagWithType flag, uint64_t value, Flag::Flags origin);
static void doubleAtPut(CommandLineFlagWithType flag, double value, Flag::Flags origin);
+ // Contract: Flag will make private copy of the incoming value
static void ccstrAtPut(CommandLineFlagWithType flag, ccstr value, Flag::Flags origin);
static bool is_default(CommandLineFlag flag);
--- a/hotspot/src/share/vm/runtime/handles.inline.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/handles.inline.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/hotspot/src/share/vm/runtime/java.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/java.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -52,6 +52,7 @@
#include "runtime/memprofiler.hpp"
#include "runtime/sharedRuntime.hpp"
#include "runtime/statSampler.hpp"
+#include "runtime/sweeper.hpp"
#include "runtime/task.hpp"
#include "runtime/thread.inline.hpp"
#include "runtime/timer.hpp"
@@ -217,9 +218,7 @@
// General statistics printing (profiling ...)
-
void print_statistics() {
-
#ifdef ASSERT
if (CountRuntimeCalls) {
@@ -315,6 +314,10 @@
CodeCache::print();
}
+ if (PrintMethodFlushingStatistics) {
+ NMethodSweeper::print();
+ }
+
if (PrintCodeCache2) {
MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
CodeCache::print_internals();
@@ -382,6 +385,10 @@
CodeCache::print();
}
+ if (PrintMethodFlushingStatistics) {
+ NMethodSweeper::print();
+ }
+
#ifdef COMPILER2
if (PrintPreciseBiasedLockingStatistics) {
OptoRuntime::print_named_counters();
--- a/hotspot/src/share/vm/runtime/javaCalls.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/javaCalls.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/runtime/jniHandles.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/jniHandles.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/hotspot/src/share/vm/runtime/mutex.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/mutex.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,6 +1,6 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/hotspot/src/share/vm/runtime/os.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/os.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1081,7 +1081,6 @@
}
-#ifndef PRODUCT
// Check if in metaspace.
if (ClassLoaderDataGraph::contains((address)addr)) {
// Use addr->print() from the debugger instead (not here)
@@ -1089,7 +1088,6 @@
" is pointing into metadata", addr);
return;
}
-#endif
// Try an OS specific find
if (os::find(addr, st)) {
@@ -1264,9 +1262,6 @@
"%/lib/jce.jar:"
"%/lib/charsets.jar:"
"%/lib/jfr.jar:"
-#ifdef __APPLE__
- "%/lib/JObjC.jar:"
-#endif
"%/classes";
char* sysclasspath = format_boot_path(classpath_format, home, home_len, fileSep, pathSep);
if (sysclasspath == NULL) return false;
--- a/hotspot/src/share/vm/runtime/perfData.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/perfData.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/runtime/perfMemory.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/perfMemory.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -155,7 +155,7 @@
void PerfMemory::destroy() {
- assert(_prologue != NULL, "prologue pointer must be initialized");
+ if (_prologue == NULL) return;
if (_start != NULL && _prologue->overflow != 0) {
--- a/hotspot/src/share/vm/runtime/reflection.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/reflection.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -537,15 +537,26 @@
return true;
}
+ Klass* host_class = current_class;
+ while (host_class->oop_is_instance() &&
+ InstanceKlass::cast(host_class)->is_anonymous()) {
+ Klass* next_host_class = InstanceKlass::cast(host_class)->host_klass();
+ if (next_host_class == NULL) break;
+ host_class = next_host_class;
+ }
+ if (host_class == field_class) {
+ return true;
+ }
+
if (access.is_protected()) {
if (!protected_restriction) {
- // See if current_class is a subclass of field_class
- if (current_class->is_subclass_of(field_class)) {
+ // See if current_class (or outermost host class) is a subclass of field_class
+ if (host_class->is_subclass_of(field_class)) {
if (access.is_static() || // static fields are ok, see 6622385
current_class == resolved_class ||
field_class == resolved_class ||
- current_class->is_subclass_of(resolved_class) ||
- resolved_class->is_subclass_of(current_class)) {
+ host_class->is_subclass_of(resolved_class) ||
+ resolved_class->is_subclass_of(host_class)) {
return true;
}
}
--- a/hotspot/src/share/vm/runtime/reflection.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/reflection.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/runtime/sharedRuntime.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/sharedRuntime.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -494,6 +494,13 @@
assert(!nm->is_native_method(), "no exception handler");
assert(nm->header_begin() != nm->exception_begin(), "no exception handler");
if (nm->is_deopt_pc(return_address)) {
+ // If we come here because of a stack overflow, the stack may be
+ // unguarded. Reguard the stack otherwise if we return to the
+ // deopt blob and the stack bang causes a stack overflow we
+ // crash.
+ bool guard_pages_enabled = thread->stack_yellow_zone_enabled();
+ if (!guard_pages_enabled) guard_pages_enabled = thread->reguard_stack();
+ assert(guard_pages_enabled, "stack banging in deopt blob may cause crash");
return SharedRuntime::deopt_blob()->unpack_with_exception();
} else {
return nm->exception_begin();
@@ -1178,12 +1185,12 @@
CodeBlob* caller_cb = caller_frame.cb();
guarantee(caller_cb != NULL && caller_cb->is_nmethod(), "must be called from nmethod");
nmethod* caller_nm = caller_cb->as_nmethod_or_null();
+
// make sure caller is not getting deoptimized
// and removed before we are done with it.
// CLEANUP - with lazy deopt shouldn't need this lock
nmethodLocker caller_lock(caller_nm);
-
// determine call info & receiver
// note: a) receiver is NULL for static calls
// b) an exception is thrown if receiver is NULL for non-static calls
@@ -1198,6 +1205,11 @@
(!is_virtual && invoke_code == Bytecodes::_invokedynamic) ||
( is_virtual && invoke_code != Bytecodes::_invokestatic ), "inconsistent bytecode");
+ // We do not patch the call site if the caller nmethod has been made non-entrant.
+ if (!caller_nm->is_in_use()) {
+ return callee_method;
+ }
+
#ifndef PRODUCT
// tracing/debugging/statistics
int *addr = (is_optimized) ? (&_resolve_opt_virtual_ctr) :
@@ -1237,6 +1249,10 @@
// Make sure the callee nmethod does not get deoptimized and removed before
// we are done patching the code.
nmethod* callee_nm = callee_method->code();
+ if (callee_nm != NULL && !callee_nm->is_in_use()) {
+ // Patch call site to C2I adapter if callee nmethod is deoptimized or unloaded.
+ callee_nm = NULL;
+ }
nmethodLocker nl_callee(callee_nm);
#ifdef ASSERT
address dest_entry_point = callee_nm == NULL ? 0 : callee_nm->entry_point(); // used below
@@ -1258,15 +1274,24 @@
{
MutexLocker ml_patch(CompiledIC_lock);
+ // Lock blocks for safepoint during which both nmethods can change state.
+
// Now that we are ready to patch if the Method* was redefined then
// don't update call site and let the caller retry.
-
- if (!callee_method->is_old()) {
+ // Don't update call site if caller nmethod has been made non-entrant
+ // as it is a waste of time.
+ // Don't update call site if callee nmethod was unloaded or deoptimized.
+ // Don't update call site if callee nmethod was replaced by an other nmethod
+ // which may happen when multiply alive nmethod (tiered compilation)
+ // will be supported.
+ if (!callee_method->is_old() && caller_nm->is_in_use() &&
+ (callee_nm == NULL || callee_nm->is_in_use() && (callee_method->code() == callee_nm))) {
#ifdef ASSERT
// We must not try to patch to jump to an already unloaded method.
if (dest_entry_point != 0) {
- assert(CodeCache::find_blob(dest_entry_point) != NULL,
- "should not unload nmethod while locked");
+ CodeBlob* cb = CodeCache::find_blob(dest_entry_point);
+ assert((cb != NULL) && cb->is_nmethod() && (((nmethod*)cb) == callee_nm),
+ "should not call unloaded nmethod");
}
#endif
if (is_virtual) {
@@ -2382,7 +2407,7 @@
ResourceMark rm;
NOT_PRODUCT(int insts_size);
- AdapterBlob* B = NULL;
+ AdapterBlob* new_adapter = NULL;
AdapterHandlerEntry* entry = NULL;
AdapterFingerPrint* fingerprint = NULL;
{
@@ -2414,7 +2439,8 @@
#ifdef ASSERT
AdapterHandlerEntry* shared_entry = NULL;
- if (VerifyAdapterSharing && entry != NULL) {
+ // Start adapter sharing verification only after the VM is booted.
+ if (VerifyAdapterSharing && (entry != NULL)) {
shared_entry = entry;
entry = NULL;
}
@@ -2430,41 +2456,44 @@
// Make a C heap allocated version of the fingerprint to store in the adapter
fingerprint = new AdapterFingerPrint(total_args_passed, sig_bt);
+ // StubRoutines::code2() is initialized after this function can be called. As a result,
+ // VerifyAdapterCalls and VerifyAdapterSharing can fail if we re-use code that generated
+ // prior to StubRoutines::code2() being set. Checks refer to checks generated in an I2C
+ // stub that ensure that an I2C stub is called from an interpreter frame.
+ bool contains_all_checks = StubRoutines::code2() != NULL;
+
// Create I2C & C2I handlers
-
BufferBlob* buf = buffer_blob(); // the temporary code buffer in CodeCache
if (buf != NULL) {
CodeBuffer buffer(buf);
short buffer_locs[20];
buffer.insts()->initialize_shared_locs((relocInfo*)buffer_locs,
sizeof(buffer_locs)/sizeof(relocInfo));
+
MacroAssembler _masm(&buffer);
-
entry = SharedRuntime::generate_i2c2i_adapters(&_masm,
total_args_passed,
comp_args_on_stack,
sig_bt,
regs,
fingerprint);
-
#ifdef ASSERT
if (VerifyAdapterSharing) {
if (shared_entry != NULL) {
- assert(shared_entry->compare_code(buf->code_begin(), buffer.insts_size(), total_args_passed, sig_bt),
- "code must match");
+ assert(shared_entry->compare_code(buf->code_begin(), buffer.insts_size()), "code must match");
// Release the one just created and return the original
_adapters->free_entry(entry);
return shared_entry;
} else {
- entry->save_code(buf->code_begin(), buffer.insts_size(), total_args_passed, sig_bt);
+ entry->save_code(buf->code_begin(), buffer.insts_size());
}
}
#endif
- B = AdapterBlob::create(&buffer);
+ new_adapter = AdapterBlob::create(&buffer);
NOT_PRODUCT(insts_size = buffer.insts_size());
}
- if (B == NULL) {
+ if (new_adapter == NULL) {
// CodeCache is full, disable compilation
// Ought to log this but compile log is only per compile thread
// and we're some non descript Java thread.
@@ -2472,7 +2501,7 @@
CompileBroker::handle_full_code_cache();
return NULL; // Out of CodeCache space
}
- entry->relocate(B->content_begin());
+ entry->relocate(new_adapter->content_begin());
#ifndef PRODUCT
// debugging suppport
if (PrintAdapterHandlers || PrintStubCode) {
@@ -2491,22 +2520,25 @@
}
}
#endif
-
- _adapters->add(entry);
+ // Add the entry only if the entry contains all required checks (see sharedRuntime_xxx.cpp)
+ // The checks are inserted only if -XX:+VerifyAdapterCalls is specified.
+ if (contains_all_checks || !VerifyAdapterCalls) {
+ _adapters->add(entry);
+ }
}
// Outside of the lock
- if (B != NULL) {
+ if (new_adapter != NULL) {
char blob_id[256];
jio_snprintf(blob_id,
sizeof(blob_id),
"%s(%s)@" PTR_FORMAT,
- B->name(),
+ new_adapter->name(),
fingerprint->as_string(),
- B->content_begin());
- Forte::register_stub(blob_id, B->content_begin(), B->content_end());
+ new_adapter->content_begin());
+ Forte::register_stub(blob_id, new_adapter->content_begin(),new_adapter->content_end());
if (JvmtiExport::should_post_dynamic_code_generated()) {
- JvmtiExport::post_dynamic_code_generated(blob_id, B->content_begin(), B->content_end());
+ JvmtiExport::post_dynamic_code_generated(blob_id, new_adapter->content_begin(), new_adapter->content_end());
}
}
return entry;
@@ -2538,7 +2570,6 @@
delete _fingerprint;
#ifdef ASSERT
if (_saved_code) FREE_C_HEAP_ARRAY(unsigned char, _saved_code, mtCode);
- if (_saved_sig) FREE_C_HEAP_ARRAY(Basictype, _saved_sig, mtCode);
#endif
}
@@ -2547,35 +2578,30 @@
// Capture the code before relocation so that it can be compared
// against other versions. If the code is captured after relocation
// then relative instructions won't be equivalent.
-void AdapterHandlerEntry::save_code(unsigned char* buffer, int length, int total_args_passed, BasicType* sig_bt) {
+void AdapterHandlerEntry::save_code(unsigned char* buffer, int length) {
_saved_code = NEW_C_HEAP_ARRAY(unsigned char, length, mtCode);
- _code_length = length;
+ _saved_code_length = length;
memcpy(_saved_code, buffer, length);
- _total_args_passed = total_args_passed;
- _saved_sig = NEW_C_HEAP_ARRAY(BasicType, _total_args_passed, mtCode);
- memcpy(_saved_sig, sig_bt, _total_args_passed * sizeof(BasicType));
}
-bool AdapterHandlerEntry::compare_code(unsigned char* buffer, int length, int total_args_passed, BasicType* sig_bt) {
- if (length != _code_length) {
+bool AdapterHandlerEntry::compare_code(unsigned char* buffer, int length) {
+ if (length != _saved_code_length) {
return false;
}
- for (int i = 0; i < length; i++) {
- if (buffer[i] != _saved_code[i]) {
- return false;
- }
- }
- return true;
+
+ return (memcmp(buffer, _saved_code, length) == 0) ? true : false;
}
#endif
-// Create a native wrapper for this native method. The wrapper converts the
-// java compiled calling convention to the native convention, handlizes
-// arguments, and transitions to native. On return from the native we transition
-// back to java blocking if a safepoint is in progress.
-nmethod *AdapterHandlerLibrary::create_native_wrapper(methodHandle method, int compile_id) {
+/**
+ * Create a native wrapper for this native method. The wrapper converts the
+ * Java-compiled calling convention to the native convention, handles
+ * arguments, and transitions to native. On return from the native we transition
+ * back to java blocking if a safepoint is in progress.
+ */
+void AdapterHandlerLibrary::create_native_wrapper(methodHandle method) {
ResourceMark rm;
nmethod* nm = NULL;
@@ -2584,16 +2610,19 @@
method->has_native_function(), "must have something valid to call!");
{
- // perform the work while holding the lock, but perform any printing outside the lock
+ // Perform the work while holding the lock, but perform any printing outside the lock
MutexLocker mu(AdapterHandlerLibrary_lock);
// See if somebody beat us to it
nm = method->code();
- if (nm) {
- return nm;
+ if (nm != NULL) {
+ return;
}
+ const int compile_id = CompileBroker::assign_compile_id(method, CompileBroker::standard_entry_bci);
+ assert(compile_id > 0, "Must generate native wrapper");
+
+
ResourceMark rm;
-
BufferBlob* buf = buffer_blob(); // the temporary code buffer in CodeCache
if (buf != NULL) {
CodeBuffer buffer(buf);
@@ -2625,16 +2654,14 @@
int comp_args_on_stack = SharedRuntime::java_calling_convention(sig_bt, regs, total_args_passed, is_outgoing);
// Generate the compiled-to-native wrapper code
- nm = SharedRuntime::generate_native_wrapper(&_masm,
- method,
- compile_id,
- sig_bt,
- regs,
- ret_type);
+ nm = SharedRuntime::generate_native_wrapper(&_masm, method, compile_id, sig_bt, regs, ret_type);
+
+ if (nm != NULL) {
+ method->set_code(method, nm);
+ }
}
- }
-
- // Must unlock before calling set_code
+ } // Unlock AdapterHandlerLibrary_lock
+
// Install the generated code.
if (nm != NULL) {
@@ -2642,13 +2669,11 @@
ttyLocker ttyl;
CompileTask::print_compilation(tty, nm, method->is_static() ? "(static)" : "");
}
- method->set_code(method, nm);
nm->post_compiled_method_load_event();
} else {
// CodeCache is full, disable compilation
CompileBroker::handle_full_code_cache();
}
- return nm;
}
JRT_ENTRY_NO_ASYNC(void, SharedRuntime::block_for_jni_critical(JavaThread* thread))
--- a/hotspot/src/share/vm/runtime/sharedRuntime.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/sharedRuntime.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -612,9 +612,7 @@
// Captures code and signature used to generate this adapter when
// verifing adapter equivalence.
unsigned char* _saved_code;
- int _code_length;
- BasicType* _saved_sig;
- int _total_args_passed;
+ int _saved_code_length;
#endif
void init(AdapterFingerPrint* fingerprint, address i2c_entry, address c2i_entry, address c2i_unverified_entry) {
@@ -624,9 +622,7 @@
_c2i_unverified_entry = c2i_unverified_entry;
#ifdef ASSERT
_saved_code = NULL;
- _code_length = 0;
- _saved_sig = NULL;
- _total_args_passed = 0;
+ _saved_code_length = 0;
#endif
}
@@ -639,7 +635,6 @@
address get_i2c_entry() const { return _i2c_entry; }
address get_c2i_entry() const { return _c2i_entry; }
address get_c2i_unverified_entry() const { return _c2i_unverified_entry; }
-
address base_address();
void relocate(address new_base);
@@ -651,8 +646,8 @@
#ifdef ASSERT
// Used to verify that code generated for shared adapters is equivalent
- void save_code(unsigned char* code, int length, int total_args_passed, BasicType* sig_bt);
- bool compare_code(unsigned char* code, int length, int total_args_passed, BasicType* sig_bt);
+ void save_code (unsigned char* code, int length);
+ bool compare_code(unsigned char* code, int length);
#endif
//virtual void print_on(outputStream* st) const; DO NOT USE
@@ -671,7 +666,7 @@
static AdapterHandlerEntry* new_entry(AdapterFingerPrint* fingerprint,
address i2c_entry, address c2i_entry, address c2i_unverified_entry);
- static nmethod* create_native_wrapper(methodHandle method, int compile_id);
+ static void create_native_wrapper(methodHandle method);
static AdapterHandlerEntry* get_adapter(methodHandle method);
#ifdef HAVE_DTRACE_H
--- a/hotspot/src/share/vm/runtime/signature.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/signature.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/runtime/signature.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/signature.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/runtime/sweeper.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/sweeper.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -129,6 +129,7 @@
nmethod* NMethodSweeper::_current = NULL; // Current nmethod
long NMethodSweeper::_traversals = 0; // Stack scan count, also sweep ID.
+long NMethodSweeper::_total_nof_code_cache_sweeps = 0; // Total number of full sweeps of the code cache
long NMethodSweeper::_time_counter = 0; // Virtual time used to periodically invoke sweeper
long NMethodSweeper::_last_sweep = 0; // Value of _time_counter when the last sweep happened
int NMethodSweeper::_seen = 0; // Nof. nmethod we have currently processed in current pass of CodeCache
@@ -143,13 +144,16 @@
// 1) alive -> not_entrant
// 2) not_entrant -> zombie
// 3) zombie -> marked_for_reclamation
+int NMethodSweeper::_hotness_counter_reset_val = 0;
-int NMethodSweeper::_total_nof_methods_reclaimed = 0; // Accumulated nof methods flushed
-Tickspan NMethodSweeper::_total_time_sweeping; // Accumulated time sweeping
-Tickspan NMethodSweeper::_total_time_this_sweep; // Total time this sweep
-Tickspan NMethodSweeper::_peak_sweep_time; // Peak time for a full sweep
-Tickspan NMethodSweeper::_peak_sweep_fraction_time; // Peak time sweeping one fraction
-int NMethodSweeper::_hotness_counter_reset_val = 0;
+long NMethodSweeper::_total_nof_methods_reclaimed = 0; // Accumulated nof methods flushed
+long NMethodSweeper::_total_nof_c2_methods_reclaimed = 0; // Accumulated nof methods flushed
+size_t NMethodSweeper::_total_flushed_size = 0; // Total number of bytes flushed from the code cache
+Tickspan NMethodSweeper::_total_time_sweeping; // Accumulated time sweeping
+Tickspan NMethodSweeper::_total_time_this_sweep; // Total time this sweep
+Tickspan NMethodSweeper::_peak_sweep_time; // Peak time for a full sweep
+Tickspan NMethodSweeper::_peak_sweep_fraction_time; // Peak time sweeping one fraction
+
class MarkActivationClosure: public CodeBlobClosure {
@@ -257,9 +261,14 @@
// Large ReservedCodeCacheSize: (e.g., 256M + code Cache is 90% full). The formula
// computes: (256 / 16) - 10 = 6.
if (!_should_sweep) {
- int time_since_last_sweep = _time_counter - _last_sweep;
- double wait_until_next_sweep = (ReservedCodeCacheSize / (16 * M)) - time_since_last_sweep -
- CodeCache::reverse_free_ratio();
+ const int time_since_last_sweep = _time_counter - _last_sweep;
+ // ReservedCodeCacheSize has an 'unsigned' type. We need a 'signed' type for max_wait_time,
+ // since 'time_since_last_sweep' can be larger than 'max_wait_time'. If that happens using
+ // an unsigned type would cause an underflow (wait_until_next_sweep becomes a large positive
+ // value) that disables the intended periodic sweeps.
+ const int max_wait_time = ReservedCodeCacheSize / (16 * M);
+ double wait_until_next_sweep = max_wait_time - time_since_last_sweep - CodeCache::reverse_free_ratio();
+ assert(wait_until_next_sweep <= (double)max_wait_time, "Calculation of code cache sweeper interval is incorrect");
if ((wait_until_next_sweep <= 0.0) || !CompileBroker::should_compile_new_jobs()) {
_should_sweep = true;
@@ -287,6 +296,7 @@
// We are done with sweeping the code cache once.
if (_sweep_fractions_left == 0) {
+ _total_nof_code_cache_sweeps++;
_last_sweep = _time_counter;
// Reset flag; temporarily disables sweeper
_should_sweep = false;
@@ -373,6 +383,7 @@
_total_time_sweeping += sweep_time;
_total_time_this_sweep += sweep_time;
_peak_sweep_fraction_time = MAX2(sweep_time, _peak_sweep_fraction_time);
+ _total_flushed_size += freed_memory;
_total_nof_methods_reclaimed += _flushed_count;
EventSweepCodeCache event(UNTIMED);
@@ -504,6 +515,9 @@
tty->print_cr("### Nmethod %3d/" PTR_FORMAT " (marked for reclamation) being flushed", nm->compile_id(), nm);
}
freed_memory = nm->total_size();
+ if (nm->is_compiled_by_c2()) {
+ _total_nof_c2_methods_reclaimed++;
+ }
release_nmethod(nm);
_flushed_count++;
} else {
@@ -542,6 +556,9 @@
SWEEP(nm);
// No inline caches will ever point to osr methods, so we can just remove it
freed_memory = nm->total_size();
+ if (nm->is_compiled_by_c2()) {
+ _total_nof_c2_methods_reclaimed++;
+ }
release_nmethod(nm);
_flushed_count++;
} else {
@@ -629,3 +646,13 @@
xtty->end_elem();
}
}
+
+void NMethodSweeper::print() {
+ ttyLocker ttyl;
+ tty->print_cr("Code cache sweeper statistics:");
+ tty->print_cr(" Total sweep time: %1.0lfms", (double)_total_time_sweeping.value()/1000000);
+ tty->print_cr(" Total number of full sweeps: %ld", _total_nof_code_cache_sweeps);
+ tty->print_cr(" Total number of flushed methods: %ld(%ld C2 methods)", _total_nof_methods_reclaimed,
+ _total_nof_c2_methods_reclaimed);
+ tty->print_cr(" Total size of flushed methods: " SIZE_FORMAT "kB", _total_flushed_size/K);
+}
--- a/hotspot/src/share/vm/runtime/sweeper.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/sweeper.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -54,28 +54,33 @@
// is full.
class NMethodSweeper : public AllStatic {
- static long _traversals; // Stack scan count, also sweep ID.
- static long _time_counter; // Virtual time used to periodically invoke sweeper
- static long _last_sweep; // Value of _time_counter when the last sweep happened
- static nmethod* _current; // Current nmethod
- static int _seen; // Nof. nmethod we have currently processed in current pass of CodeCache
- static int _flushed_count; // Nof. nmethods flushed in current sweep
- static int _zombified_count; // Nof. nmethods made zombie in current sweep
- static int _marked_for_reclamation_count; // Nof. nmethods marked for reclaim in current sweep
+ static long _traversals; // Stack scan count, also sweep ID.
+ static long _total_nof_code_cache_sweeps; // Total number of full sweeps of the code cache
+ static long _time_counter; // Virtual time used to periodically invoke sweeper
+ static long _last_sweep; // Value of _time_counter when the last sweep happened
+ static nmethod* _current; // Current nmethod
+ static int _seen; // Nof. nmethod we have currently processed in current pass of CodeCache
+ static int _flushed_count; // Nof. nmethods flushed in current sweep
+ static int _zombified_count; // Nof. nmethods made zombie in current sweep
+ static int _marked_for_reclamation_count; // Nof. nmethods marked for reclaim in current sweep
- static volatile int _sweep_fractions_left; // Nof. invocations left until we are completed with this pass
- static volatile int _sweep_started; // Flag to control conc sweeper
- static volatile bool _should_sweep; // Indicates if we should invoke the sweeper
- static volatile int _bytes_changed; // Counts the total nmethod size if the nmethod changed from:
- // 1) alive -> not_entrant
- // 2) not_entrant -> zombie
- // 3) zombie -> marked_for_reclamation
+ static volatile int _sweep_fractions_left; // Nof. invocations left until we are completed with this pass
+ static volatile int _sweep_started; // Flag to control conc sweeper
+ static volatile bool _should_sweep; // Indicates if we should invoke the sweeper
+ static volatile int _bytes_changed; // Counts the total nmethod size if the nmethod changed from:
+ // 1) alive -> not_entrant
+ // 2) not_entrant -> zombie
+ // 3) zombie -> marked_for_reclamation
// Stat counters
- static int _total_nof_methods_reclaimed; // Accumulated nof methods flushed
- static Tickspan _total_time_sweeping; // Accumulated time sweeping
- static Tickspan _total_time_this_sweep; // Total time this sweep
- static Tickspan _peak_sweep_time; // Peak time for a full sweep
- static Tickspan _peak_sweep_fraction_time; // Peak time sweeping one fraction
+ static long _total_nof_methods_reclaimed; // Accumulated nof methods flushed
+ static long _total_nof_c2_methods_reclaimed; // Accumulated nof C2-compiled methods flushed
+ static size_t _total_flushed_size; // Total size of flushed methods
+ static int _hotness_counter_reset_val;
+
+ static Tickspan _total_time_sweeping; // Accumulated time sweeping
+ static Tickspan _total_time_this_sweep; // Total time this sweep
+ static Tickspan _peak_sweep_time; // Peak time for a full sweep
+ static Tickspan _peak_sweep_fraction_time; // Peak time sweeping one fraction
static int process_nmethod(nmethod *nm);
static void release_nmethod(nmethod* nm);
@@ -83,8 +88,6 @@
static bool sweep_in_progress();
static void sweep_code_cache();
- static int _hotness_counter_reset_val;
-
public:
static long traversal_count() { return _traversals; }
static int total_nof_methods_reclaimed() { return _total_nof_methods_reclaimed; }
@@ -105,10 +108,10 @@
static void mark_active_nmethods(); // Invoked at the end of each safepoint
static void possibly_sweep(); // Compiler threads call this to sweep
- static int sort_nmethods_by_hotness(nmethod** nm1, nmethod** nm2);
static int hotness_counter_reset_val();
static void report_state_change(nmethod* nm);
static void possibly_enable_sweeper();
+ static void print(); // Printing/debugging
};
#endif // SHARE_VM_RUNTIME_SWEEPER_HPP
--- a/hotspot/src/share/vm/runtime/synchronizer.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/synchronizer.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -119,7 +119,7 @@
} \
}
-#define HOTSPOT_MONITOR_PROBE_waited HOTSPOT_MONITOR_PROBE_WAITED
+#define HOTSPOT_MONITOR_PROBE_waited HOTSPOT_MONITOR_WAITED
#define DTRACE_MONITOR_PROBE(probe, monitor, obj, thread) \
{ \
--- a/hotspot/src/share/vm/runtime/synchronizer.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/synchronizer.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/hotspot/src/share/vm/runtime/thread.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/thread.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -135,8 +135,8 @@
#else /* USDT2 */
-#define HOTSPOT_THREAD_PROBE_start HOTSPOT_THREAD_PROBE_START
-#define HOTSPOT_THREAD_PROBE_stop HOTSPOT_THREAD_PROBE_STOP
+#define HOTSPOT_THREAD_PROBE_start HOTSPOT_THREAD_START
+#define HOTSPOT_THREAD_PROBE_stop HOTSPOT_THREAD_STOP
#define DTRACE_THREAD_PROBE(probe, javathread) \
{ \
--- a/hotspot/src/share/vm/runtime/unhandledOops.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/unhandledOops.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
--- a/hotspot/src/share/vm/runtime/vframe.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/vframe.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/runtime/vframe.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/vframe.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/runtime/vframeArray.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/vframeArray.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/runtime/virtualspace.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/virtualspace.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/runtime/vm_version.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/runtime/vm_version.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/services/attachListener.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/services/attachListener.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -451,15 +451,39 @@
}
}
+bool AttachListener::has_init_error(TRAPS) {
+ if (HAS_PENDING_EXCEPTION) {
+ tty->print_cr("Exception in VM (AttachListener::init) : ");
+ java_lang_Throwable::print(PENDING_EXCEPTION, tty);
+ tty->cr();
+
+ CLEAR_PENDING_EXCEPTION;
+
+ return true;
+ } else {
+ return false;
+ }
+}
+
// Starts the Attach Listener thread
void AttachListener::init() {
EXCEPTION_MARK;
- Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, CHECK);
+ Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, THREAD);
+ if (has_init_error(THREAD)) {
+ return;
+ }
+
instanceKlassHandle klass (THREAD, k);
- instanceHandle thread_oop = klass->allocate_instance_handle(CHECK);
+ instanceHandle thread_oop = klass->allocate_instance_handle(THREAD);
+ if (has_init_error(THREAD)) {
+ return;
+ }
const char thread_name[] = "Attach Listener";
- Handle string = java_lang_String::create_from_str(thread_name, CHECK);
+ Handle string = java_lang_String::create_from_str(thread_name, THREAD);
+ if (has_init_error(THREAD)) {
+ return;
+ }
// Initialize thread_oop to put it into the system threadGroup
Handle thread_group (THREAD, Universe::system_thread_group());
@@ -472,13 +496,7 @@
string,
THREAD);
- if (HAS_PENDING_EXCEPTION) {
- tty->print_cr("Exception in VM (AttachListener::init) : ");
- java_lang_Throwable::print(PENDING_EXCEPTION, tty);
- tty->cr();
-
- CLEAR_PENDING_EXCEPTION;
-
+ if (has_init_error(THREAD)) {
return;
}
@@ -490,14 +508,7 @@
vmSymbols::thread_void_signature(),
thread_oop, // ARG 1
THREAD);
-
- if (HAS_PENDING_EXCEPTION) {
- tty->print_cr("Exception in VM (AttachListener::init) : ");
- java_lang_Throwable::print(PENDING_EXCEPTION, tty);
- tty->cr();
-
- CLEAR_PENDING_EXCEPTION;
-
+ if (has_init_error(THREAD)) {
return;
}
--- a/hotspot/src/share/vm/services/attachListener.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/services/attachListener.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -94,6 +94,9 @@
// dequeue the next operation
static AttachOperation* dequeue();
#endif // !INCLUDE_SERVICES
+
+ private:
+ static bool has_init_error(TRAPS);
};
#if INCLUDE_SERVICES
--- a/hotspot/src/share/vm/services/classLoadingService.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/services/classLoadingService.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/src/share/vm/services/dtraceAttacher.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/services/dtraceAttacher.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
--- a/hotspot/src/share/vm/services/g1MemoryPool.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/services/g1MemoryPool.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
--- a/hotspot/src/share/vm/services/jmm.h Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/services/jmm.h Wed Jul 05 19:27:58 2017 +0200
@@ -153,6 +153,7 @@
JMM_VMGLOBAL_ORIGIN_ENVIRON_VAR = 4, /* Set via environment variables */
JMM_VMGLOBAL_ORIGIN_CONFIG_FILE = 5, /* Set via config file (such as .hotspotrc) */
JMM_VMGLOBAL_ORIGIN_ERGONOMIC = 6, /* Set via ergonomic */
+ JMM_VMGLOBAL_ORIGIN_ATTACH_ON_DEMAND = 7, /* Set via attach */
JMM_VMGLOBAL_ORIGIN_OTHER = 99 /* Set via some other mechanism */
} jmmVMGlobalOrigin;
--- a/hotspot/src/share/vm/services/management.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/services/management.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1724,6 +1724,9 @@
case Flag::ERGONOMIC:
global->origin = JMM_VMGLOBAL_ORIGIN_ERGONOMIC;
break;
+ case Flag::ATTACH_ON_DEMAND:
+ global->origin = JMM_VMGLOBAL_ORIGIN_ATTACH_ON_DEMAND;
+ break;
default:
global->origin = JMM_VMGLOBAL_ORIGIN_OTHER;
}
@@ -1821,7 +1824,7 @@
"This flag is not writeable.");
}
- bool succeed;
+ bool succeed = false;
if (flag->is_bool()) {
bool bvalue = (new_value.z == JNI_TRUE ? true : false);
succeed = CommandLineFlags::boolAtPut(name, &bvalue, Flag::MANAGEMENT);
@@ -1841,6 +1844,9 @@
}
ccstr svalue = java_lang_String::as_utf8_string(str);
succeed = CommandLineFlags::ccstrAtPut(name, &svalue, Flag::MANAGEMENT);
+ if (succeed) {
+ FREE_C_HEAP_ARRAY(char, svalue, mtInternal);
+ }
}
assert(succeed, "Setting flag should succeed");
JVM_END
--- a/hotspot/src/share/vm/services/memReporter.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/services/memReporter.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/services/memReporter.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/services/memReporter.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/services/memSnapshot.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/services/memSnapshot.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/src/share/vm/services/memoryManager.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/services/memoryManager.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/src/share/vm/services/memoryPool.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/services/memoryPool.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/src/share/vm/services/memoryService.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/services/memoryService.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/src/share/vm/services/memoryService.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/services/memoryService.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/src/share/vm/services/memoryUsage.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/services/memoryUsage.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/src/share/vm/services/psMemoryPool.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/services/psMemoryPool.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
--- a/hotspot/src/share/vm/services/threadService.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/services/threadService.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/src/share/vm/shark/sharkBlock.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/shark/sharkBlock.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2008, 2009, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/share/vm/shark/sharkBuilder.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/shark/sharkBuilder.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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.
* Copyright 2008, 2009, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/share/vm/shark/sharkCompiler.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/shark/sharkCompiler.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
* Copyright 2008, 2009, 2010, 2011 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -58,7 +58,7 @@
}
SharkCompiler::SharkCompiler()
- : AbstractCompiler() {
+ : AbstractCompiler(shark) {
// Create the lock to protect the memory manager and execution engine
_execution_engine_lock = new Monitor(Mutex::leaf, "SharkExecutionEngineLock");
MutexLocker locker(execution_engine_lock());
--- a/hotspot/src/share/vm/shark/sharkCompiler.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/shark/sharkCompiler.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2008, 2009, 2010, 2011 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/share/vm/shark/sharkConstant.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/shark/sharkConstant.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2009 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/share/vm/shark/sharkFunction.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/shark/sharkFunction.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2008, 2009 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/share/vm/shark/sharkInliner.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/shark/sharkInliner.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2009 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/share/vm/shark/sharkInvariants.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/shark/sharkInvariants.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright 2008, 2009 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -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.
* Copyright 2008, 2009, 2010 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
--- a/hotspot/src/share/vm/utilities/bitMap.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/utilities/bitMap.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/utilities/bitMap.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/utilities/bitMap.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/utilities/bitMap.inline.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/utilities/bitMap.inline.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
--- a/hotspot/src/share/vm/utilities/decoder.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/utilities/decoder.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/utilities/decoder.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/utilities/decoder.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/utilities/elfFile.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/utilities/elfFile.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/utilities/elfFile.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/utilities/elfFile.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/utilities/exceptions.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/utilities/exceptions.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/hotspot/src/share/vm/utilities/globalDefinitions.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/utilities/globalDefinitions.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -174,6 +174,7 @@
inline jint jint_cast (jfloat x) { return *(jint* )&x; }
inline jlong jlong_cast (jdouble x) { return *(jlong* )&x; }
+inline julong julong_cast (jdouble x) { return *(julong* )&x; }
inline jfloat jfloat_cast (jint x) { return *(jfloat* )&x; }
inline jdouble jdouble_cast(jlong x) { return *(jdouble*)&x; }
--- a/hotspot/src/share/vm/utilities/globalDefinitions_visCPP.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/utilities/globalDefinitions_visCPP.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/utilities/growableArray.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/utilities/growableArray.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/utilities/hashtable.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/utilities/hashtable.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
--- a/hotspot/src/share/vm/utilities/macros.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/utilities/macros.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/utilities/numberSeq.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/utilities/numberSeq.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
--- a/hotspot/src/share/vm/utilities/ostream.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/utilities/ostream.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/utilities/top.hpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/utilities/top.hpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
--- a/hotspot/src/share/vm/utilities/vmError.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/utilities/vmError.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1040,7 +1040,7 @@
OnError = NULL;
}
- static bool skip_replay = false;
+ static bool skip_replay = ReplayCompiles; // Do not overwrite file during replay
if (DumpReplayDataOnError && _thread && _thread->is_Compiler_thread() && !skip_replay) {
skip_replay = true;
ciEnv* env = ciEnv::current();
--- a/hotspot/src/share/vm/utilities/yieldingWorkgroup.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/src/share/vm/utilities/yieldingWorkgroup.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
--- a/hotspot/test/Makefile Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/Makefile Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1995, 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
--- a/hotspot/test/TEST.ROOT Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/TEST.ROOT Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 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
--- a/hotspot/test/compiler/5091921/Test7005594.sh Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/5091921/Test7005594.sh Wed Jul 05 19:27:58 2017 +0200
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# 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
--- a/hotspot/test/compiler/6431242/Test.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/6431242/Test.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
--- a/hotspot/test/compiler/6589834/Test_ia32.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/6589834/Test_ia32.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
--- a/hotspot/test/compiler/6636138/Test1.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/6636138/Test1.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
--- a/hotspot/test/compiler/6636138/Test2.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/6636138/Test2.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
--- a/hotspot/test/compiler/6795161/Test.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/6795161/Test.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
--- a/hotspot/test/compiler/6857159/Test6857159.sh Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/6857159/Test6857159.sh Wed Jul 05 19:27:58 2017 +0200
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2009, 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
--- a/hotspot/test/compiler/7068051/Test7068051.sh Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/7068051/Test7068051.sh Wed Jul 05 19:27:58 2017 +0200
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# 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
--- a/hotspot/test/compiler/7070134/Test7070134.sh Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/7070134/Test7070134.sh Wed Jul 05 19:27:58 2017 +0200
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# 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
--- a/hotspot/test/compiler/7141637/SpreadNullArg.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/7141637/SpreadNullArg.java Wed Jul 05 19:27:58 2017 +0200
@@ -46,13 +46,17 @@
mh_spread_target =
MethodHandles.lookup().findStatic(SpreadNullArg.class, "target_spread_arg", mt_ref_arg);
result = (int) mh_spreadInvoker.invokeExact(mh_spread_target, (Object[]) null);
- } catch(NullPointerException e) {
- // Expected exception - do nothing!
- } catch(Throwable e) {
+ throw new Error("Expected IllegalArgumentException was not thrown");
+ } catch (IllegalArgumentException e) {
+ System.out.println("Expected exception : " + e);
+ } catch (Throwable e) {
throw new Error(e);
}
- if (result != 42) throw new Error("Expected NullPointerException was not thrown");
+ if (result != 42) {
+ throw new Error("result [" + result
+ + "] != 42 : Expected IllegalArgumentException was not thrown?");
+ }
}
public static int target_spread_arg(Integer i1) {
--- a/hotspot/test/compiler/7200264/Test7200264.sh Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/7200264/Test7200264.sh Wed Jul 05 19:27:58 2017 +0200
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# 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
--- a/hotspot/test/compiler/8000805/Test8000805.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/8000805/Test8000805.java Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/test/compiler/8005419/Test8005419.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/8005419/Test8005419.java Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/debug/VerifyAdapterSharing.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8030783
+ * @summary Regression test for 8026478
+ * @library /testlibrary
+ *
+ */
+import com.oracle.java.testlibrary.*;
+
+public class VerifyAdapterSharing {
+ public static void main(String[] args) throws Exception {
+ ProcessBuilder pb;
+ OutputAnalyzer out;
+
+ pb = ProcessTools.createJavaProcessBuilder("-Xcomp", "-XX:+IgnoreUnrecognizedVMOptions",
+ "-XX:+VerifyAdapterSharing", "-version");
+ out = new OutputAnalyzer(pb.start());
+ out.shouldHaveExitValue(0);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/AddExactIntTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @library /testlibrary /testlibrary/whitebox /compiler/whitebox
+ * @build AddExactIntTest
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs_neg.log -XX:-UseMathExactIntrinsics AddExactIntTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs.log -XX:+UseMathExactIntrinsics AddExactIntTest
+ * @run main Verifier hs_neg.log hs.log
+ */
+
+public class AddExactIntTest {
+
+ public static void main(String[] args) throws Exception {
+ new IntrinsicBase.IntTest(MathIntrinsic.IntIntrinsic.Add).test();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/AddExactLongTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @library /testlibrary /testlibrary/whitebox /compiler/whitebox
+ * @build AddExactLongTest
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs_neg.log -XX:-UseMathExactIntrinsics AddExactLongTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs.log -XX:+UseMathExactIntrinsics AddExactLongTest
+ * @run main Verifier hs_neg.log hs.log
+ */
+
+public class AddExactLongTest {
+
+ public static void main(String[] args) throws Exception {
+ new IntrinsicBase.LongTest(MathIntrinsic.LongIntrinsic.Add).test();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/DecrementExactIntTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @library /testlibrary /testlibrary/whitebox /compiler/whitebox
+ * @build DecrementExactIntTest
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs_neg.log -XX:-UseMathExactIntrinsics DecrementExactIntTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs.log -XX:+UseMathExactIntrinsics DecrementExactIntTest
+ * @run main Verifier hs_neg.log hs.log
+ */
+
+public class DecrementExactIntTest {
+
+ public static void main(String[] args) throws Exception {
+ new IntrinsicBase.IntTest(MathIntrinsic.IntIntrinsic.Decrement).test();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/DecrementExactLongTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @library /testlibrary /testlibrary/whitebox /compiler/whitebox
+ * @build DecrementExactLongTest
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs_neg.log -XX:-UseMathExactIntrinsics DecrementExactLongTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs.log -XX:+UseMathExactIntrinsics DecrementExactLongTest
+ * @run main Verifier hs_neg.log hs.log
+ */
+
+public class DecrementExactLongTest {
+
+ public static void main(String[] args) throws Exception {
+ new IntrinsicBase.LongTest(MathIntrinsic.LongIntrinsic.Decrement).test();
+ }
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/IncrementExactIntTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @library /testlibrary /testlibrary/whitebox /compiler/whitebox
+ * @build IncrementExactIntTest
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs_neg.log -XX:-UseMathExactIntrinsics IncrementExactIntTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs.log -XX:+UseMathExactIntrinsics IncrementExactIntTest
+ * @run main Verifier hs_neg.log hs.log
+ */
+
+public class IncrementExactIntTest {
+
+ public static void main(String[] args) throws Exception {
+ new IntrinsicBase.IntTest(MathIntrinsic.IntIntrinsic.Increment).test();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/IncrementExactLongTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @library /testlibrary /testlibrary/whitebox /compiler/whitebox
+ * @build IncrementExactLongTest
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs_neg.log -XX:-UseMathExactIntrinsics IncrementExactLongTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs.log -XX:+UseMathExactIntrinsics IncrementExactLongTest
+ * @run main Verifier hs_neg.log hs.log
+ */
+
+public class IncrementExactLongTest {
+
+ public static void main(String[] args) throws Exception {
+ new IntrinsicBase.LongTest(MathIntrinsic.LongIntrinsic.Increment).test();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/IntrinsicBase.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import com.oracle.java.testlibrary.Platform;
+
+import java.io.FileOutputStream;
+import java.lang.reflect.Executable;
+import java.util.Properties;
+
+public abstract class IntrinsicBase extends CompilerWhiteBoxTest {
+ protected String javaVmName;
+ protected String useMathExactIntrinsics;
+
+ protected IntrinsicBase(TestCase testCase) {
+ super(testCase);
+ javaVmName = System.getProperty("java.vm.name");
+ useMathExactIntrinsics = getVMOption("UseMathExactIntrinsics");
+ }
+
+ @Override
+ protected void test() throws Exception {
+ //java.lang.Math should be loaded to allow a compilation of the methods that use Math's method
+ System.out.println("class java.lang.Math should be loaded. Proof: " + Math.class);
+ printEnvironmentInfo();
+
+ int expectedIntrinsicCount = 0;
+
+ switch (MODE) {
+ case "compiled mode":
+ case "mixed mode":
+ if (isServerVM()) {
+ if (TIERED_COMPILATION) {
+ int max_level = TIERED_STOP_AT_LEVEL;
+ expectedIntrinsicCount = (max_level == COMP_LEVEL_MAX) ? 1 : 0;
+ for (int i = CompilerWhiteBoxTest.COMP_LEVEL_SIMPLE; i <= max_level; ++i) {
+ deoptimize();
+ compileAtLevel(i);
+ }
+ } else {
+ expectedIntrinsicCount = 1;
+ deoptimize();
+ compileAtLevel(CompilerWhiteBoxTest.COMP_LEVEL_MAX);
+ }
+ } else {
+ deoptimize();
+ compileAtLevel(CompilerWhiteBoxTest.COMP_LEVEL_SIMPLE);
+ }
+
+ if (!isIntrinsicSupported()) {
+ expectedIntrinsicCount = 0;
+ }
+ break;
+ case "interpreted mode": //test is not applicable in this mode;
+ System.err.println("Warning: This test is not applicable in mode: " + MODE);
+ break;
+ default:
+ throw new RuntimeException("Test bug, unknown VM mode: " + MODE);
+ }
+
+ System.out.println("Expected intrinsic count is " + expectedIntrinsicCount + " name " + getIntrinsicId());
+
+ final FileOutputStream out = new FileOutputStream(getVMOption("LogFile") + ".verify.properties");
+ Properties expectedProps = new Properties();
+ expectedProps.setProperty("intrinsic.name", getIntrinsicId());
+ expectedProps.setProperty("intrinsic.expectedCount", String.valueOf(expectedIntrinsicCount));
+ expectedProps.store(out, null);
+
+ out.close();
+ }
+
+ protected void printEnvironmentInfo() {
+ System.out.println("java.vm.name=" + javaVmName);
+ System.out.println("os.arch=" + Platform.getOsArch());
+ System.out.println("java.vm.info=" + MODE);
+ System.out.println("useMathExactIntrinsics=" + useMathExactIntrinsics);
+ }
+
+ protected void compileAtLevel(int level) {
+ WHITE_BOX.enqueueMethodForCompilation(method, level);
+ waitBackgroundCompilation();
+ checkCompilation(method, level);
+ }
+
+ protected void checkCompilation(Executable executable, int level) {
+ if (!WHITE_BOX.isMethodCompiled(executable)) {
+ throw new RuntimeException("Test bug, expected compilation (level): " + level + ", but not compiled");
+ }
+ final int compilationLevel = WHITE_BOX.getMethodCompilationLevel(executable);
+ if (compilationLevel != level) {
+ if (!(TIERED_COMPILATION && level == COMP_LEVEL_FULL_PROFILE && compilationLevel == COMP_LEVEL_LIMITED_PROFILE)) { //possible case
+ throw new RuntimeException("Test bug, expected compilation (level): " + level + ", but level: " + compilationLevel);
+ }
+ }
+ }
+
+ protected abstract boolean isIntrinsicSupported();
+
+ protected abstract String getIntrinsicId();
+
+ protected boolean isServerVM() {
+ return javaVmName.toLowerCase().contains("server");
+ }
+
+ static class IntTest extends IntrinsicBase {
+ protected IntTest(MathIntrinsic.IntIntrinsic testCase) {
+ super(testCase);
+ }
+
+ @Override
+ protected boolean isIntrinsicSupported() {
+ return isServerVM() && Boolean.valueOf(useMathExactIntrinsics) && (Platform.isX86() || Platform.isX64());
+ }
+
+ @Override
+ protected String getIntrinsicId() {
+ return "_" + testCase.name().toLowerCase() + "ExactI";
+ }
+ }
+
+ static class LongTest extends IntrinsicBase {
+ protected LongTest(MathIntrinsic.LongIntrinsic testCase) {
+ super(testCase);
+ }
+
+ @Override
+ protected boolean isIntrinsicSupported() {
+ return isServerVM() && Boolean.valueOf(useMathExactIntrinsics) && Platform.isX64();
+ }
+
+ @Override
+ protected String getIntrinsicId() {
+ return "_" + testCase.name().toLowerCase() + "ExactL";
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/MathIntrinsic.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.lang.reflect.Executable;
+import java.util.concurrent.Callable;
+
+public class MathIntrinsic {
+
+ enum IntIntrinsic implements CompilerWhiteBoxTest.TestCase {
+ Add {
+ @Override
+ Object execMathMethod() {
+ return intR = Math.addExact(int1, int2);
+ }
+ },
+ Subtract {
+ @Override
+ Object execMathMethod() {
+ return intR = Math.subtractExact(int1, int2);
+ }
+ },
+ Multiply {
+ @Override
+ Object execMathMethod() {
+ return intR = Math.multiplyExact(int1, int2);
+ }
+ },
+ Increment {
+ @Override
+ Object execMathMethod() {
+ return intR = Math.incrementExact(int1);
+ }
+ },
+ Decrement {
+ @Override
+ Object execMathMethod() {
+ return intR = Math.decrementExact(int1);
+ }
+ },
+ Negate {
+ @Override
+ Object execMathMethod() {
+ return intR = Math.negateExact(int1);
+ }
+ };
+ protected int int1;
+ protected int int2;
+ protected int intR;
+
+ abstract Object execMathMethod();
+
+ @Override
+ public Executable getExecutable() {
+ try {
+ return getClass().getDeclaredMethod("execMathMethod");
+ } catch (NoSuchMethodException e) {
+ throw new RuntimeException("Test bug, no such method: " + e);
+ }
+ }
+
+ @Override
+ public Callable<Integer> getCallable() {
+ return null;
+ }
+
+ @Override
+ public boolean isOsr() {
+ return false;
+ }
+
+ }
+
+ enum LongIntrinsic implements CompilerWhiteBoxTest.TestCase {
+ Add {
+ @Override
+ Object execMathMethod() {
+ return longR = Math.addExact(long1, long2);
+ }
+ },
+ Subtract {
+ @Override
+ Object execMathMethod() {
+ return longR = Math.subtractExact(long1, long2);
+ }
+ },
+ Multiply {
+ @Override
+ Object execMathMethod() {
+ return longR = Math.multiplyExact(long1, long2);
+ }
+ },
+ Increment {
+ @Override
+ Object execMathMethod() {
+ return longR = Math.incrementExact(long1);
+ }
+ },
+ Decrement {
+ @Override
+ Object execMathMethod() {
+ return longR = Math.decrementExact(long1);
+ }
+ },
+ Negate {
+ @Override
+ Object execMathMethod() {
+ return longR = Math.negateExact(long1);
+ }
+ };
+ protected long long1;
+ protected long long2;
+ protected long longR;
+
+ abstract Object execMathMethod();
+
+ @Override
+ public Executable getExecutable() {
+ try {
+ return getClass().getDeclaredMethod("execMathMethod");
+ } catch (NoSuchMethodException e) {
+ throw new RuntimeException("Test bug, no such method: " + e);
+ }
+ }
+
+ @Override
+ public Callable<Integer> getCallable() {
+ return null;
+ }
+
+ @Override
+ public boolean isOsr() {
+ return false;
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/MultiplyExactIntTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @library /testlibrary /testlibrary/whitebox /compiler/whitebox
+ * @build MultiplyExactIntTest
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs_neg.log -XX:-UseMathExactIntrinsics MultiplyExactIntTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs.log -XX:+UseMathExactIntrinsics MultiplyExactIntTest
+ * @run main Verifier hs_neg.log hs.log
+ */
+
+public class MultiplyExactIntTest {
+
+ public static void main(String[] args) throws Exception {
+ new IntrinsicBase.IntTest(MathIntrinsic.IntIntrinsic.Multiply).test();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/MultiplyExactLongTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @library /testlibrary /testlibrary/whitebox /compiler/whitebox
+ * @build MultiplyExactLongTest
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs_neg.log -XX:-UseMathExactIntrinsics MultiplyExactLongTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs.log -XX:+UseMathExactIntrinsics MultiplyExactLongTest
+ * @run main Verifier hs_neg.log hs.log
+ */
+
+public class MultiplyExactLongTest {
+
+ public static void main(String[] args) throws Exception {
+ new IntrinsicBase.LongTest(MathIntrinsic.LongIntrinsic.Multiply).test();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/NegateExactIntTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @library /testlibrary /testlibrary/whitebox /compiler/whitebox
+ * @build NegateExactIntTest
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs_neg.log -XX:-UseMathExactIntrinsics NegateExactIntTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs.log -XX:+UseMathExactIntrinsics NegateExactIntTest
+ * @run main Verifier hs_neg.log hs.log
+ */
+
+public class NegateExactIntTest {
+
+ public static void main(String[] args) throws Exception {
+ new IntrinsicBase.IntTest(MathIntrinsic.IntIntrinsic.Negate).test();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/NegateExactLongTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @library /testlibrary /testlibrary/whitebox /compiler/whitebox
+ * @build NegateExactLongTest
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs_neg.log -XX:-UseMathExactIntrinsics NegateExactLongTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs.log -XX:+UseMathExactIntrinsics NegateExactLongTest
+ * @run main Verifier hs_neg.log hs.log
+ */
+
+public class NegateExactLongTest {
+
+ public static void main(String[] args) throws Exception {
+ new IntrinsicBase.LongTest(MathIntrinsic.LongIntrinsic.Negate).test();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/SubtractExactIntTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @library /testlibrary /testlibrary/whitebox /compiler/whitebox
+ * @build SubtractExactIntTest
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs_neg.log -XX:-UseMathExactIntrinsics SubtractExactIntTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs.log -XX:+UseMathExactIntrinsics SubtractExactIntTest
+ * @run main Verifier hs_neg.log hs.log
+
+ */
+
+public class SubtractExactIntTest {
+
+ public static void main(String[] args) throws Exception {
+ new IntrinsicBase.IntTest(MathIntrinsic.IntIntrinsic.Subtract).test();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/SubtractExactLongTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @library /testlibrary /testlibrary/whitebox /compiler/whitebox
+ * @build SubtractExactLongTest
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs_neg.log -XX:-UseMathExactIntrinsics SubtractExactLongTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+WhiteBoxAPI -XX:+LogCompilation
+ * -XX:CompileCommand=compileonly,MathIntrinsic*::execMathMethod
+ * -XX:LogFile=hs.log -XX:+UseMathExactIntrinsics SubtractExactLongTest
+ * @run main Verifier hs_neg.log hs.log
+ */
+
+public class SubtractExactLongTest {
+
+ public static void main(String[] args) throws Exception {
+ new IntrinsicBase.LongTest(MathIntrinsic.LongIntrinsic.Subtract).test();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/sanity/Verifier.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.util.Properties;
+
+public class Verifier {
+
+ public static void main(String[] args) throws Exception {
+ if (args.length == 0)
+ throw new RuntimeException("Test bug, nothing to verify");
+ for (String hsLogFile : args) {
+ verify(hsLogFile);
+ }
+ }
+
+ private static void verify(String hsLogFile) throws Exception {
+ System.out.println("Verifying " + hsLogFile);
+
+ final Properties expectedProperties = new Properties();
+ final FileReader reader = new FileReader(hsLogFile + ".verify.properties");
+ expectedProperties.load(reader);
+ reader.close();
+
+ int fullMatchCnt = 0;
+ int suspectCnt = 0;
+ final String intrinsicId = expectedProperties.getProperty("intrinsic.name");
+ final String prefix = "<intrinsic id='";
+ final String prefixWithId = prefix + intrinsicId + "'";
+ final int expectedCount = Integer.parseInt(expectedProperties.getProperty("intrinsic.expectedCount"));
+
+ BufferedReader r = new BufferedReader(new FileReader(hsLogFile));
+ String s;
+ while ((s = r.readLine()) != null) {
+ if (s.startsWith(prefix)) {
+ if (s.startsWith(prefixWithId)) {
+ fullMatchCnt++;
+ } else {
+ suspectCnt++;
+ System.out.println("WARNING: Other intrinsic detected " + s);
+ }
+ }
+ }
+ r.close();
+
+ System.out.println("Intrinsic " + intrinsicId + " verification, expected: " + expectedCount + ", matched: " + fullMatchCnt + ", suspected: " + suspectCnt);
+ if (expectedCount != fullMatchCnt)
+ throw new RuntimeException("Unexpected count of intrinsic " + prefixWithId + " expected:" + expectedCount + ", matched: " + fullMatchCnt + ", suspected: " + suspectCnt);
+ }
+}
--- a/hotspot/test/compiler/jsr292/ConcurrentClassLoadingTest.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/jsr292/ConcurrentClassLoadingTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -159,34 +159,18 @@
}
final static String[] classNames = {
- "java.lang.invoke.AbstractValidatingLambdaMetafactory",
- "java.lang.invoke.BoundMethodHandle",
"java.lang.invoke.CallSite",
"java.lang.invoke.ConstantCallSite",
- "java.lang.invoke.DirectMethodHandle",
- "java.lang.invoke.InnerClassLambdaMetafactory",
- "java.lang.invoke.InvokeDynamic",
- "java.lang.invoke.InvokeGeneric",
- "java.lang.invoke.InvokerBytecodeGenerator",
- "java.lang.invoke.Invokers",
"java.lang.invoke.LambdaConversionException",
- "java.lang.invoke.LambdaForm",
"java.lang.invoke.LambdaMetafactory",
- "java.lang.invoke.MemberName",
"java.lang.invoke.MethodHandle",
- "java.lang.invoke.MethodHandleImpl",
"java.lang.invoke.MethodHandleInfo",
- "java.lang.invoke.MethodHandleNatives",
"java.lang.invoke.MethodHandleProxies",
"java.lang.invoke.MethodHandles",
- "java.lang.invoke.MethodHandleStatics",
"java.lang.invoke.MethodType",
- "java.lang.invoke.MethodTypeForm",
"java.lang.invoke.MutableCallSite",
"java.lang.invoke.SerializedLambda",
- "java.lang.invoke.SimpleMethodHandle",
"java.lang.invoke.SwitchPoint",
- "java.lang.invoke.TypeConvertingMethodAdapter",
"java.lang.invoke.VolatileCallSite",
"java.lang.invoke.WrongMethodTypeException"
};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/reflection/ArrayNewInstanceOfVoid.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8029366
+ * @summary ShouldNotReachHere error when creating an array with component type of void
+ */
+
+public class ArrayNewInstanceOfVoid {
+ public static void main(String[] args) {
+ for (int i = 0; i < 100_000; i++) {
+ test();
+ }
+ }
+
+ private static void test() {
+ try {
+ java.lang.reflect.Array.newInstance(void.class, 2);
+ } catch (IllegalArgumentException e) {
+ // expected
+ }
+ }
+}
--- a/hotspot/test/compiler/regalloc/C1ObjectSpillInLogicOp.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/regalloc/C1ObjectSpillInLogicOp.java Wed Jul 05 19:27:58 2017 +0200
@@ -34,8 +34,9 @@
*/
import java.util.concurrent.atomic.*;
-class C1ObjectSpillInLogicOp {
- static public void main(String[] args) {
+
+public class C1ObjectSpillInLogicOp {
+ public static void main(String[] args) {
AtomicReferenceArray<Integer> x = new AtomicReferenceArray(128);
Integer y = new Integer(0);
for (int i = 0; i < 50000; i++) {
--- a/hotspot/test/compiler/startup/SmallCodeCacheStartup.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/startup/SmallCodeCacheStartup.java Wed Jul 05 19:27:58 2017 +0200
@@ -37,7 +37,6 @@
pb = ProcessTools.createJavaProcessBuilder("-XX:ReservedCodeCacheSize=3m", "-XX:CICompilerCount=64", "-version");
out = new OutputAnalyzer(pb.start());
- out.shouldContain("no space to run compiler");
out.shouldHaveExitValue(0);
}
}
--- a/hotspot/test/compiler/tiered/NonTieredLevelsTest.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/tiered/NonTieredLevelsTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -30,7 +30,7 @@
* @run main ClassFileInstaller sun.hotspot.WhiteBox
* @run main/othervm -Xbootclasspath/a:. -XX:-TieredCompilation
* -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI
- * -XX:CompileCommand=compileonly,TestCase$Helper::*
+ * -XX:CompileCommand=compileonly,SimpleTestCase$Helper::*
* NonTieredLevelsTest
* @summary Verify that only one level can be used
* @author igor.ignatyev@oracle.com
@@ -59,9 +59,7 @@
+ "TieredCompilation. Skip test.");
return;
}
- for (TestCase test : TestCase.values()) {
- new NonTieredLevelsTest(test).runTest();
- }
+ CompilerWhiteBoxTest.main(NonTieredLevelsTest::new, args);
}
private NonTieredLevelsTest(TestCase testCase) {
@@ -80,7 +78,7 @@
checkLevel(AVAILABLE_COMP_LEVEL, compLevel);
int bci = WHITE_BOX.getMethodEntryBci(method);
deoptimize();
- if (!testCase.isOsr) {
+ if (!testCase.isOsr()) {
for (int level = 1; level <= COMP_LEVEL_MAX; ++level) {
if (IS_AVAILABLE_COMPLEVEL.test(level)) {
testAvailableLevel(level, bci);
@@ -94,3 +92,4 @@
}
}
}
+
--- a/hotspot/test/compiler/tiered/TieredLevelsTest.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/tiered/TieredLevelsTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -28,7 +28,7 @@
* @run main ClassFileInstaller sun.hotspot.WhiteBox
* @run main/othervm -Xbootclasspath/a:. -XX:+TieredCompilation
* -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI
- * -XX:CompileCommand=compileonly,TestCase$Helper::*
+ * -XX:CompileCommand=compileonly,SimpleTestCase$Helper::*
* TieredLevelsTest
* @summary Verify that all levels < 'TieredStopAtLevel' can be used
* @author igor.ignatyev@oracle.com
@@ -40,9 +40,7 @@
+ "TieredCompilation. Skip test.");
return;
}
- for (TestCase test : TestCase.values()) {
- new TieredLevelsTest(test).runTest();
- }
+ CompilerWhiteBoxTest.main(TieredLevelsTest::new, args);
}
private TieredLevelsTest(TestCase testCase) {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/types/TestMeetTopArrayExactConstantArray.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8027571
+ * @summary meet of TopPTR exact array with constant array is not symmetric
+ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:-UseOnStackReplacement -XX:TypeProfileLevel=222 -XX:+UnlockExperimentalVMOptions -XX:+UseTypeSpeculation -XX:-BackgroundCompilation TestMeetTopArrayExactConstantArray
+ *
+ */
+
+public class TestMeetTopArrayExactConstantArray {
+
+ static class A {
+ }
+
+ static class B {
+ }
+
+ static class C extends A {
+ }
+
+ static class D extends C {
+ }
+
+ final static B[] b = new B[10];
+
+ static void m0(Object[] o) {
+ if (o.getClass() == Object[].class) {
+ }
+ }
+
+ static void m1(Object[] o, boolean cond) {
+ if (cond) {
+ o = b;
+ }
+ m0(o);
+ }
+
+ static void m2(Object[] o, boolean cond1, boolean cond2) {
+ if (cond1) {
+ m1(o, cond2);
+ }
+ }
+
+ static void m3(C[] o, boolean cond1, boolean cond2, boolean cond3) {
+ if (cond1) {
+ m2(o, cond2, cond3);
+ }
+ }
+
+ static public void main(String[] args) {
+ A[] a = new A[10];
+ D[] d = new D[10];
+ Object[] o = new Object[10];
+ for (int i = 0; i < 5000; i++) {
+ // record in profiling that the if in m0 succeeds
+ m0(o);
+ // record some profiling for m2 and m1
+ m2(a, true, (i%2) == 0);
+ // record some profiling for m3 and conflicting profile for m2
+ m3(d, true, false, (i%2) == 0);
+ }
+
+ // get m3 compiled. The if in m0 will be optimized because of argument profiling in m3
+ C[] c = new C[10];
+ for (int i = 0; i < 20000; i++) {
+ m3(c, true, false, (i%2) == 0);
+ }
+ // make m3 not entrant and the if in m0 fail
+ m3(c, true, true, false);
+ m3(c, true, true, false);
+ m3(c, true, true, false);
+ m3(c, true, true, false);
+
+ // make m3 recompile, this time with if the not optimized
+ // on entry to m3, argument o is of type C[], profiled C[]
+ // on entry to m1, argument o is of type C[], speculative C[] exact, profiled A[]. Speculative becomes AnyNull
+ // after the if in m1, speculative type of o becomes constant from final field b
+ // the true if branch in m0 does a join between the type of o of speculative type constant from final field b and exact klass Object[]
+ for (int i = 0; i < 20000; i++) {
+ m3(c, true, false, (i%2) == 0);
+ }
+
+ System.out.println("TEST PASSED");
+ }
+}
--- a/hotspot/test/compiler/types/TypeSpeculation.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/types/TypeSpeculation.java Wed Jul 05 19:27:58 2017 +0200
@@ -25,7 +25,7 @@
* @test
* @bug 8024070
* @summary Test that type speculation doesn't cause incorrect execution
- * @run main/othervm -XX:-UseOnStackReplacement -XX:-BackgroundCompilation -XX:TypeProfileLevel=222 TypeSpeculation
+ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:-UseOnStackReplacement -XX:-BackgroundCompilation -XX:TypeProfileLevel=222 -XX:+UnlockExperimentalVMOptions -XX:+UseTypeSpeculation TypeSpeculation
*
*/
@@ -398,6 +398,133 @@
return true;
}
+ // java/lang/Object:AnyNull:exact *,iid=top
+ // meets
+ // stable:bottom[int:max..0]:NotNull *
+ static void test10_4(Object o) {
+ }
+
+ static void test10_3(Object o, boolean b) {
+ if (b) {
+ test10_4(o);
+ }
+ }
+
+ static void test10_2(Object o, boolean b1, boolean b2) {
+ if (b1) {
+ test10_3(o, b2);
+ }
+ }
+
+ static void test10_1(B[] b, boolean b1, boolean b2) {
+ test10_2(b, b1, b2);
+ }
+
+ static boolean test10() {
+ Object o = new Object();
+ A[] a = new A[10];
+ B[] b = new B[10];
+ B[] c = new C[10];
+ for (int i = 0; i < 20000; i++) {
+ test10_1(b, false, false);
+ test10_1(c, false, false);
+ test10_2(a, true, false);
+ test10_3(o, true);
+ }
+ return true;
+ }
+
+ // stable:TypeSpeculation$B:TopPTR *,iid=top[int:max..0]:TopPTR *,iid=top
+ // meets
+ // java/lang/Object:AnyNull:exact *,iid=top
+ static void test11_3(Object o) {
+ }
+
+ static void test11_2(Object o, boolean b) {
+ if (b) {
+ test11_3(o);
+ }
+ }
+
+ static void test11_1(B[] b, boolean bb) {
+ test11_2(b, bb);
+ }
+
+ static boolean test11() {
+ Object o = new Object();
+ B[] b = new B[10];
+ B[] c = new C[10];
+ for (int i = 0; i < 20000; i++) {
+ test11_1(b, false);
+ test11_1(c, false);
+ test11_2(o, true);
+ }
+ return true;
+ }
+
+ // TypeSpeculation$I *
+ // meets
+ // java/lang/Object:AnyNull *,iid=top
+ static void test12_3(Object o) {
+ }
+
+ static void test12_2(Object o, boolean b) {
+ if (b) {
+ test12_3(o);
+ }
+ }
+
+ static void test12_1(I i, boolean b) {
+ test12_2(i, b);
+ }
+
+ static boolean test12() {
+ Object o = new Object();
+ B b = new B();
+ C c = new C();
+ for (int i = 0; i < 20000; i++) {
+ test12_1(b, false);
+ test12_1(c, false);
+ test12_2(o, true);
+ }
+ return true;
+ }
+
+ // stable:bottom[int:max..0]:NotNull *
+ // meets
+ // stable:TypeSpeculation$A:TopPTR *,iid=top[int:max..0]:AnyNull:exact *,iid=top
+ static Object test13_3(Object o, boolean b) {
+ Object oo;
+ if (b) {
+ oo = o;
+ } else {
+ oo = new A[10];
+ }
+ return oo;
+ }
+
+ static void test13_2(Object o, boolean b1, boolean b2) {
+ if (b1) {
+ test13_3(o, b2);
+ }
+ }
+
+ static void test13_1(B[] b, boolean b1, boolean b2) {
+ test13_2(b, b1, b2);
+ }
+
+ static boolean test13() {
+ A[] a = new A[10];
+ B[] b = new B[10];
+ B[] c = new C[10];
+ for (int i = 0; i < 20000; i++) {
+ test13_1(b, false, false);
+ test13_1(c, false, false);
+ test13_2(a, true, (i%2) == 0);
+ }
+ return true;
+ }
+
static public void main(String[] args) {
boolean success = true;
@@ -419,6 +546,14 @@
success = test9() && success;
+ success = test10() && success;
+
+ success = test11() && success;
+
+ success = test12() && success;
+
+ success = test13() && success;
+
if (success) {
System.out.println("TEST PASSED");
} else {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/uncommontrap/StackOverflowGuardPagesOff.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,355 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8029383
+ * @summary stack overflow if callee is marked for deoptimization causes crash
+ * @run main/othervm -XX:TieredStopAtLevel=1 -XX:-BackgroundCompilation -XX:CompileCommand=dontinline,StackOverflowGuardPagesOff::m1 -XX:CompileCommand=exclude,StackOverflowGuardPagesOff::m2 -Xss256K -XX:-UseOnStackReplacement StackOverflowGuardPagesOff
+ *
+ */
+
+// This test calls m2 recursively until a stack overflow. Then calls
+// m3 that calls m1. m1 triggers B's class loading, as a result m1 and
+// m3 needs to be deoptimized. Deoptimization of m1 causes a stack
+// overflow exception to be thrown which is propagated to m3 in the
+// deopt blob. If the guard pages are no enabled, the stack bang in
+// the deopt blob triggers a crash.
+public class StackOverflowGuardPagesOff {
+
+ static class A {
+ void m() {}
+ }
+
+ static class B extends A {
+ void m() {}
+ }
+
+ static void m1(boolean deopt, A a) {
+ long l0, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12,
+ l13, l14, l15, l16, l17, l18, l19, l20, l21, l22, l23, l24,
+ l25, l26, l27, l28, l29, l30, l31, l32, l33, l34, l35, l36,
+ l37, l38, l39, l40, l41, l42, l43, l44, l45, l46, l47, l48,
+ l49, l50, l51, l52, l53, l54, l55, l56, l57, l58, l59, l60,
+ l61, l62, l63, l64, l65, l66, l67, l68, l69, l70, l71, l72,
+ l73, l74, l75, l76, l77, l78, l79, l80, l81, l82, l83, l84,
+ l85, l86, l87, l88, l89, l90, l91, l92, l93, l94, l95, l96,
+ l97, l98, l99, l100, l101, l102, l103, l104, l105, l106, l107,
+ l108, l109, l110, l111, l112, l113, l114, l115, l116, l117,
+ l118, l119, l120, l121, l122, l123, l124, l125, l126, l127,
+ l128, l129, l130, l131, l132, l133, l134, l135, l136, l137,
+ l138, l139, l140, l141, l142, l143, l144, l145, l146, l147,
+ l148, l149, l150, l151, l152, l153, l154, l155, l156, l157,
+ l158, l159, l160, l161, l162, l163, l164, l165, l166, l167,
+ l168, l169, l170, l171, l172, l173, l174, l175, l176, l177,
+ l178, l179, l180, l181, l182, l183, l184, l185, l186, l187,
+ l188, l189, l190, l191, l192, l193, l194, l195, l196, l197,
+ l198, l199, l200, l201, l202, l203, l204, l205, l206, l207,
+ l208, l209, l210, l211, l212, l213, l214, l215, l216, l217,
+ l218, l219, l220, l221, l222, l223, l224, l225, l226, l227,
+ l228, l229, l230, l231, l232, l233, l234, l235, l236, l237,
+ l238, l239, l240, l241, l242, l243, l244, l245, l246, l247,
+ l248, l249, l250, l251, l252, l253, l254, l255, l256, l257,
+ l258, l259, l260, l261, l262, l263, l264, l265, l266, l267,
+ l268, l269, l270, l271, l272, l273, l274, l275, l276, l277,
+ l278, l279, l280, l281, l282, l283, l284, l285, l286, l287,
+ l288, l289, l290, l291, l292, l293, l294, l295, l296, l297,
+ l298, l299, l300, l301, l302, l303, l304, l305, l306, l307,
+ l308, l309, l310, l311, l312, l313, l314, l315, l316, l317,
+ l318, l319, l320, l321, l322, l323, l324, l325, l326, l327,
+ l328, l329, l330, l331, l332, l333, l334, l335, l336, l337,
+ l338, l339, l340, l341, l342, l343, l344, l345, l346, l347,
+ l348, l349, l350, l351, l352, l353, l354, l355, l356, l357,
+ l358, l359, l360, l361, l362, l363, l364, l365, l366, l367,
+ l368, l369, l370, l371, l372, l373, l374, l375, l376, l377,
+ l378, l379, l380, l381, l382, l383, l384, l385, l386, l387,
+ l388, l389, l390, l391, l392, l393, l394, l395, l396, l397,
+ l398, l399, l400, l401, l402, l403, l404, l405, l406, l407,
+ l408, l409, l410, l411, l412, l413, l414, l415, l416, l417,
+ l418, l419, l420, l421, l422, l423, l424, l425, l426, l427,
+ l428, l429, l430, l431, l432, l433, l434, l435, l436, l437,
+ l438, l439, l440, l441, l442, l443, l444, l445, l446, l447,
+ l448, l449, l450, l451, l452, l453, l454, l455, l456, l457,
+ l458, l459, l460, l461, l462, l463, l464, l465, l466, l467,
+ l468, l469, l470, l471, l472, l473, l474, l475, l476, l477,
+ l478, l479, l480, l481, l482, l483, l484, l485, l486, l487,
+ l488, l489, l490, l491, l492, l493, l494, l495, l496, l497,
+ l498, l499, l500, l501, l502, l503, l504, l505, l506, l507,
+ l508, l509, l510, l511;
+
+ long ll0, ll1, ll2, ll3, ll4, ll5, ll6, ll7, ll8, ll9, ll10, ll11, ll12,
+ ll13, ll14, ll15, ll16, ll17, ll18, ll19, ll20, ll21, ll22, ll23, ll24,
+ ll25, ll26, ll27, ll28, ll29, ll30, ll31, ll32, ll33, ll34, ll35, ll36,
+ ll37, ll38, ll39, ll40, ll41, ll42, ll43, ll44, ll45, ll46, ll47, ll48,
+ ll49, ll50, ll51, ll52, ll53, ll54, ll55, ll56, ll57, ll58, ll59, ll60,
+ ll61, ll62, ll63, ll64, ll65, ll66, ll67, ll68, ll69, ll70, ll71, ll72,
+ ll73, ll74, ll75, ll76, ll77, ll78, ll79, ll80, ll81, ll82, ll83, ll84,
+ ll85, ll86, ll87, ll88, ll89, ll90, ll91, ll92, ll93, ll94, ll95, ll96,
+ ll97, ll98, ll99, ll100, ll101, ll102, ll103, ll104, ll105, ll106, ll107,
+ ll108, ll109, ll110, ll111, ll112, ll113, ll114, ll115, ll116, ll117,
+ ll118, ll119, ll120, ll121, ll122, ll123, ll124, ll125, ll126, ll127,
+ ll128, ll129, ll130, ll131, ll132, ll133, ll134, ll135, ll136, ll137,
+ ll138, ll139, ll140, ll141, ll142, ll143, ll144, ll145, ll146, ll147,
+ ll148, ll149, ll150, ll151, ll152, ll153, ll154, ll155, ll156, ll157,
+ ll158, ll159, ll160, ll161, ll162, ll163, ll164, ll165, ll166, ll167,
+ ll168, ll169, ll170, ll171, ll172, ll173, ll174, ll175, ll176, ll177,
+ ll178, ll179, ll180, ll181, ll182, ll183, ll184, ll185, ll186, ll187,
+ ll188, ll189, ll190, ll191, ll192, ll193, ll194, ll195, ll196, ll197,
+ ll198, ll199, ll200, ll201, ll202, ll203, ll204, ll205, ll206, ll207,
+ ll208, ll209, ll210, ll211, ll212, ll213, ll214, ll215, ll216, ll217,
+ ll218, ll219, ll220, ll221, ll222, ll223, ll224, ll225, ll226, ll227,
+ ll228, ll229, ll230, ll231, ll232, ll233, ll234, ll235, ll236, ll237,
+ ll238, ll239, ll240, ll241, ll242, ll243, ll244, ll245, ll246, ll247,
+ ll248, ll249, ll250, ll251, ll252, ll253, ll254, ll255, ll256, ll257,
+ ll258, ll259, ll260, ll261, ll262, ll263, ll264, ll265, ll266, ll267,
+ ll268, ll269, ll270, ll271, ll272, ll273, ll274, ll275, ll276, ll277,
+ ll278, ll279, ll280, ll281, ll282, ll283, ll284, ll285, ll286, ll287,
+ ll288, ll289, ll290, ll291, ll292, ll293, ll294, ll295, ll296, ll297,
+ ll298, ll299, ll300, ll301, ll302, ll303, ll304, ll305, ll306, ll307,
+ ll308, ll309, ll310, ll311, ll312, ll313, ll314, ll315, ll316, ll317,
+ ll318, ll319, ll320, ll321, ll322, ll323, ll324, ll325, ll326, ll327,
+ ll328, ll329, ll330, ll331, ll332, ll333, ll334, ll335, ll336, ll337,
+ ll338, ll339, ll340, ll341, ll342, ll343, ll344, ll345, ll346, ll347,
+ ll348, ll349, ll350, ll351, ll352, ll353, ll354, ll355, ll356, ll357,
+ ll358, ll359, ll360, ll361, ll362, ll363, ll364, ll365, ll366, ll367,
+ ll368, ll369, ll370, ll371, ll372, ll373, ll374, ll375, ll376, ll377,
+ ll378, ll379, ll380, ll381, ll382, ll383, ll384, ll385, ll386, ll387,
+ ll388, ll389, ll390, ll391, ll392, ll393, ll394, ll395, ll396, ll397,
+ ll398, ll399, ll400, ll401, ll402, ll403, ll404, ll405, ll406, ll407,
+ ll408, ll409, ll410, ll411, ll412, ll413, ll414, ll415, ll416, ll417,
+ ll418, ll419, ll420, ll421, ll422, ll423, ll424, ll425, ll426, ll427,
+ ll428, ll429, ll430, ll431, ll432, ll433, ll434, ll435, ll436, ll437,
+ ll438, ll439, ll440, ll441, ll442, ll443, ll444, ll445, ll446, ll447,
+ ll448, ll449, ll450, ll451, ll452, ll453, ll454, ll455, ll456, ll457,
+ ll458, ll459, ll460, ll461, ll462, ll463, ll464, ll465, ll466, ll467,
+ ll468, ll469, ll470, ll471, ll472, ll473, ll474, ll475, ll476, ll477,
+ ll478, ll479, ll480, ll481, ll482, ll483, ll484, ll485, ll486, ll487,
+ ll488, ll489, ll490, ll491, ll492, ll493, ll494, ll495, ll496, ll497,
+ ll498, ll499, ll500, ll501, ll502, ll503, ll504, ll505, ll506, ll507,
+ ll508, ll509, ll510, ll511;
+
+ a.m();
+
+ if (deopt) {
+ do_load = true;
+ while (!load_done);
+ }
+ }
+
+ static void m2(boolean deopt, A a) {
+ long l0, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12,
+ l13, l14, l15, l16, l17, l18, l19, l20, l21, l22, l23, l24,
+ l25, l26, l27, l28, l29, l30, l31, l32, l33, l34, l35, l36,
+ l37, l38, l39, l40, l41, l42, l43, l44, l45, l46, l47, l48,
+ l49, l50, l51, l52, l53, l54, l55, l56, l57, l58, l59, l60,
+ l61, l62, l63, l64, l65, l66, l67, l68, l69, l70, l71, l72,
+ l73, l74, l75, l76, l77, l78, l79, l80, l81, l82, l83, l84,
+ l85, l86, l87, l88, l89, l90, l91, l92, l93, l94, l95, l96,
+ l97, l98, l99, l100, l101, l102, l103, l104, l105, l106, l107,
+ l108, l109, l110, l111, l112, l113, l114, l115, l116, l117,
+ l118, l119, l120, l121, l122, l123, l124, l125, l126, l127,
+ l128, l129, l130, l131, l132, l133, l134, l135, l136, l137,
+ l138, l139, l140, l141, l142, l143, l144, l145, l146, l147,
+ l148, l149, l150, l151, l152, l153, l154, l155, l156, l157,
+ l158, l159, l160, l161, l162, l163, l164, l165, l166, l167,
+ l168, l169, l170, l171, l172, l173, l174, l175, l176, l177,
+ l178, l179, l180, l181, l182, l183, l184, l185, l186, l187,
+ l188, l189, l190, l191, l192, l193, l194, l195, l196, l197,
+ l198, l199, l200, l201, l202, l203, l204, l205, l206, l207,
+ l208, l209, l210, l211, l212, l213, l214, l215, l216, l217,
+ l218, l219, l220, l221, l222, l223, l224, l225, l226, l227,
+ l228, l229, l230, l231, l232, l233, l234, l235, l236, l237,
+ l238, l239, l240, l241, l242, l243, l244, l245, l246, l247,
+ l248, l249, l250, l251, l252, l253, l254, l255, l256, l257,
+ l258, l259, l260, l261, l262, l263, l264, l265, l266, l267,
+ l268, l269, l270, l271, l272, l273, l274, l275, l276, l277,
+ l278, l279, l280, l281, l282, l283, l284, l285, l286, l287,
+ l288, l289, l290, l291, l292, l293, l294, l295, l296, l297,
+ l298, l299, l300, l301, l302, l303, l304, l305, l306, l307,
+ l308, l309, l310, l311, l312, l313, l314, l315, l316, l317,
+ l318, l319, l320, l321, l322, l323, l324, l325, l326, l327,
+ l328, l329, l330, l331, l332, l333, l334, l335, l336, l337,
+ l338, l339, l340, l341, l342, l343, l344, l345, l346, l347,
+ l348, l349, l350, l351, l352, l353, l354, l355, l356, l357,
+ l358, l359, l360, l361, l362, l363, l364, l365, l366, l367,
+ l368, l369, l370, l371, l372, l373, l374, l375, l376, l377,
+ l378, l379, l380, l381, l382, l383, l384, l385, l386, l387,
+ l388, l389, l390, l391, l392, l393, l394, l395, l396, l397,
+ l398, l399, l400, l401, l402, l403, l404, l405, l406, l407,
+ l408, l409, l410, l411, l412, l413, l414, l415, l416, l417,
+ l418, l419, l420, l421, l422, l423, l424, l425, l426, l427,
+ l428, l429, l430, l431, l432, l433, l434, l435, l436, l437,
+ l438, l439, l440, l441, l442, l443, l444, l445, l446, l447,
+ l448, l449, l450, l451, l452, l453, l454, l455, l456, l457,
+ l458, l459, l460, l461, l462, l463, l464, l465, l466, l467,
+ l468, l469, l470, l471, l472, l473, l474, l475, l476, l477,
+ l478, l479, l480, l481, l482, l483, l484, l485, l486, l487,
+ l488, l489, l490, l491, l492, l493, l494, l495, l496, l497,
+ l498, l499, l500, l501, l502, l503, l504, l505, l506, l507,
+ l508, l509, l510, l511;
+
+ try {
+ m2(deopt, a);
+ } catch (StackOverflowError e) {
+ m3(deopt, a);
+ }
+ }
+
+ static void m3(boolean deopt, A a) {
+ long l0, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12,
+ l13, l14, l15, l16, l17, l18, l19, l20, l21, l22, l23, l24,
+ l25, l26, l27, l28, l29, l30, l31, l32, l33, l34, l35, l36,
+ l37, l38, l39, l40, l41, l42, l43, l44, l45, l46, l47, l48,
+ l49, l50, l51, l52, l53, l54, l55, l56, l57, l58, l59, l60,
+ l61, l62, l63, l64, l65, l66, l67, l68, l69, l70, l71, l72,
+ l73, l74, l75, l76, l77, l78, l79, l80, l81, l82, l83, l84,
+ l85, l86, l87, l88, l89, l90, l91, l92, l93, l94, l95, l96,
+ l97, l98, l99, l100, l101, l102, l103, l104, l105, l106, l107,
+ l108, l109, l110, l111, l112, l113, l114, l115, l116, l117,
+ l118, l119, l120, l121, l122, l123, l124, l125, l126, l127,
+ l128, l129, l130, l131, l132, l133, l134, l135, l136, l137,
+ l138, l139, l140, l141, l142, l143, l144, l145, l146, l147,
+ l148, l149, l150, l151, l152, l153, l154, l155, l156, l157,
+ l158, l159, l160, l161, l162, l163, l164, l165, l166, l167,
+ l168, l169, l170, l171, l172, l173, l174, l175, l176, l177,
+ l178, l179, l180, l181, l182, l183, l184, l185, l186, l187,
+ l188, l189, l190, l191, l192, l193, l194, l195, l196, l197,
+ l198, l199, l200, l201, l202, l203, l204, l205, l206, l207,
+ l208, l209, l210, l211, l212, l213, l214, l215, l216, l217,
+ l218, l219, l220, l221, l222, l223, l224, l225, l226, l227,
+ l228, l229, l230, l231, l232, l233, l234, l235, l236, l237,
+ l238, l239, l240, l241, l242, l243, l244, l245, l246, l247,
+ l248, l249, l250, l251, l252, l253, l254, l255, l256, l257,
+ l258, l259, l260, l261, l262, l263, l264, l265, l266, l267,
+ l268, l269, l270, l271, l272, l273, l274, l275, l276, l277,
+ l278, l279, l280, l281, l282, l283, l284, l285, l286, l287,
+ l288, l289, l290, l291, l292, l293, l294, l295, l296, l297,
+ l298, l299, l300, l301, l302, l303, l304, l305, l306, l307,
+ l308, l309, l310, l311, l312, l313, l314, l315, l316, l317,
+ l318, l319, l320, l321, l322, l323, l324, l325, l326, l327,
+ l328, l329, l330, l331, l332, l333, l334, l335, l336, l337,
+ l338, l339, l340, l341, l342, l343, l344, l345, l346, l347,
+ l348, l349, l350, l351, l352, l353, l354, l355, l356, l357,
+ l358, l359, l360, l361, l362, l363, l364, l365, l366, l367,
+ l368, l369, l370, l371, l372, l373, l374, l375, l376, l377,
+ l378, l379, l380, l381, l382, l383, l384, l385, l386, l387,
+ l388, l389, l390, l391, l392, l393, l394, l395, l396, l397,
+ l398, l399, l400, l401, l402, l403, l404, l405, l406, l407,
+ l408, l409, l410, l411, l412, l413, l414, l415, l416, l417,
+ l418, l419, l420, l421, l422, l423, l424, l425, l426, l427,
+ l428, l429, l430, l431, l432, l433, l434, l435, l436, l437,
+ l438, l439, l440, l441, l442, l443, l444, l445, l446, l447,
+ l448, l449, l450, l451, l452, l453, l454, l455, l456, l457,
+ l458, l459, l460, l461, l462, l463, l464, l465, l466, l467,
+ l468, l469, l470, l471, l472, l473, l474, l475, l476, l477,
+ l478, l479, l480, l481, l482, l483, l484, l485, l486, l487,
+ l488, l489, l490, l491, l492, l493, l494, l495, l496, l497,
+ l498, l499, l500, l501, l502, l503, l504, l505, l506, l507,
+ l508, l509, l510, l511;
+
+ long ll0, ll1, ll2, ll3, ll4, ll5, ll6, ll7, ll8, ll9, ll10, ll11, ll12,
+ ll13, ll14, ll15, ll16, ll17, ll18, ll19, ll20, ll21, ll22, ll23, ll24,
+ ll25, ll26, ll27, ll28, ll29, ll30, ll31, ll32, ll33, ll34, ll35, ll36,
+ ll37, ll38, ll39, ll40, ll41, ll42, ll43, ll44, ll45, ll46, ll47, ll48,
+ ll49, ll50, ll51, ll52, ll53, ll54, ll55, ll56, ll57, ll58, ll59, ll60,
+ ll61, ll62, ll63, ll64, ll65, ll66, ll67, ll68, ll69, ll70, ll71, ll72,
+ ll73, ll74, ll75, ll76, ll77, ll78, ll79, ll80, ll81, ll82, ll83, ll84,
+ ll85, ll86, ll87, ll88, ll89, ll90, ll91, ll92, ll93, ll94, ll95, ll96,
+ ll97, ll98, ll99, ll100, ll101, ll102, ll103, ll104, ll105, ll106, ll107,
+ ll108, ll109, ll110, ll111, ll112, ll113, ll114, ll115, ll116, ll117,
+ ll118, ll119, ll120, ll121, ll122, ll123, ll124, ll125, ll126, ll127,
+ ll128, ll129, ll130, ll131, ll132, ll133, ll134, ll135, ll136, ll137,
+ ll138, ll139, ll140, ll141, ll142, ll143, ll144, ll145, ll146, ll147,
+ ll148, ll149, ll150, ll151, ll152, ll153, ll154, ll155, ll156, ll157,
+ ll158, ll159, ll160, ll161, ll162, ll163, ll164, ll165, ll166, ll167,
+ ll168, ll169, ll170, ll171, ll172, ll173, ll174, ll175, ll176, ll177,
+ ll178, ll179, ll180, ll181, ll182, ll183, ll184, ll185, ll186, ll187,
+ ll188, ll189, ll190, ll191, ll192, ll193, ll194, ll195, ll196, ll197,
+ ll198, ll199, ll200, ll201, ll202, ll203, ll204, ll205, ll206, ll207,
+ ll208, ll209, ll210, ll211, ll212, ll213, ll214, ll215, ll216, ll217,
+ ll218, ll219, ll220, ll221, ll222, ll223, ll224, ll225, ll226, ll227,
+ ll228, ll229, ll230, ll231, ll232, ll233, ll234, ll235, ll236, ll237,
+ ll238, ll239, ll240, ll241, ll242, ll243, ll244, ll245, ll246, ll247,
+ ll248, ll249, ll250, ll251, ll252, ll253, ll254, ll255, ll256, ll257,
+ ll258, ll259, ll260, ll261, ll262, ll263, ll264, ll265, ll266, ll267,
+ ll268, ll269, ll270, ll271, ll272, ll273, ll274, ll275, ll276, ll277,
+ ll278, ll279, ll280, ll281, ll282, ll283, ll284, ll285, ll286, ll287,
+ ll288, ll289, ll290, ll291, ll292, ll293, ll294, ll295, ll296, ll297,
+ ll298, ll299, ll300, ll301, ll302, ll303, ll304, ll305, ll306, ll307,
+ ll308, ll309, ll310, ll311, ll312, ll313, ll314, ll315, ll316, ll317,
+ ll318, ll319, ll320, ll321, ll322, ll323, ll324, ll325, ll326, ll327,
+ ll328, ll329, ll330, ll331, ll332, ll333, ll334, ll335, ll336, ll337,
+ ll338, ll339, ll340, ll341, ll342, ll343, ll344, ll345, ll346, ll347,
+ ll348, ll349, ll350, ll351, ll352, ll353, ll354, ll355, ll356, ll357,
+ ll358, ll359, ll360, ll361, ll362, ll363, ll364, ll365, ll366, ll367,
+ ll368, ll369, ll370, ll371, ll372, ll373, ll374, ll375, ll376, ll377,
+ ll378, ll379, ll380, ll381, ll382, ll383, ll384, ll385, ll386, ll387,
+ ll388, ll389, ll390, ll391, ll392, ll393, ll394, ll395, ll396, ll397,
+ ll398, ll399, ll400, ll401, ll402, ll403, ll404, ll405, ll406, ll407,
+ ll408, ll409, ll410, ll411, ll412, ll413, ll414, ll415, ll416, ll417,
+ ll418, ll419, ll420, ll421, ll422, ll423, ll424, ll425, ll426, ll427,
+ ll428, ll429, ll430, ll431, ll432, ll433, ll434, ll435, ll436, ll437,
+ ll438, ll439, ll440, ll441, ll442, ll443, ll444, ll445, ll446, ll447,
+ ll448, ll449, ll450, ll451, ll452, ll453, ll454, ll455, ll456, ll457,
+ ll458, ll459, ll460, ll461, ll462, ll463, ll464, ll465, ll466, ll467,
+ ll468, ll469, ll470, ll471, ll472, ll473, ll474, ll475, ll476, ll477,
+ ll478, ll479, ll480, ll481, ll482, ll483, ll484, ll485, ll486, ll487,
+ ll488, ll489, ll490, ll491, ll492, ll493, ll494, ll495, ll496, ll497,
+ ll498, ll499, ll500, ll501, ll502, ll503, ll504, ll505, ll506, ll507,
+ ll508, ll509, ll510, ll511;
+
+ a.m();
+
+ m1(deopt, a);
+ }
+
+ // Used for synchronization betwen main thread and thread
+ // responsible for class loading
+ static volatile boolean thread_started = false;
+ static volatile boolean do_load = false;
+ static volatile boolean load_done = false;
+
+ static public void main(String[] args) {
+ // This thread does the loading of B. If m1 does it, the class
+ // loading can cause stack overflows.
+ Thread thread = new Thread() {
+ public void run() {
+ thread_started = true;
+ while(!do_load);
+ new B();
+ load_done = true;
+ }
+ };
+ thread.start();
+ while(!thread_started);
+ // get m3 and m1 compiled
+ A a = new A();
+ for (int i = 0; i < 5000; i++) {
+ m3(false, a);
+ m1(false, a);
+ }
+ m2(true, a);
+
+ System.out.println("TEST PASSED");
+ }
+}
--- a/hotspot/test/compiler/whitebox/ClearMethodStateTest.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/whitebox/ClearMethodStateTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -21,25 +21,25 @@
* questions.
*/
+import java.util.function.Function;
+
/*
* @test ClearMethodStateTest
* @bug 8006683 8007288 8022832
* @library /testlibrary /testlibrary/whitebox
* @build ClearMethodStateTest
* @run main ClassFileInstaller sun.hotspot.WhiteBox
- * @run main/othervm -Xbootclasspath/a:. -Xmixed -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,TestCase$Helper::* ClearMethodStateTest
+ * @run main/othervm -Xbootclasspath/a:. -Xmixed -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,SimpleTestCase$Helper::* ClearMethodStateTest
* @summary testing of WB::clearMethodState()
* @author igor.ignatyev@oracle.com
*/
public class ClearMethodStateTest extends CompilerWhiteBoxTest {
public static void main(String[] args) throws Exception {
- for (TestCase test : TestCase.values()) {
- new ClearMethodStateTest(test).runTest();
- }
+ CompilerWhiteBoxTest.main(ClearMethodStateTest::new, args);
}
- public ClearMethodStateTest(TestCase testCase) {
+ private ClearMethodStateTest(TestCase testCase) {
super(testCase);
// to prevent inlining of #method
WHITE_BOX.testSetDontInlineMethod(method, true);
@@ -63,7 +63,7 @@
deoptimize();
checkNotCompiled();
- if (testCase.isOsr) {
+ if (testCase.isOsr()) {
// part test isn't applicable for OSR test case
return;
}
--- a/hotspot/test/compiler/whitebox/CompilerWhiteBoxTest.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/whitebox/CompilerWhiteBoxTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -31,6 +31,7 @@
import java.lang.reflect.Method;
import java.util.Objects;
import java.util.concurrent.Callable;
+import java.util.function.Function;
/**
* Abstract class for WhiteBox testing of JIT.
@@ -50,7 +51,7 @@
protected static int COMP_LEVEL_FULL_PROFILE = 3;
/** {@code CompLevel::CompLevel_full_optimization} -- C2 or Shark */
protected static int COMP_LEVEL_FULL_OPTIMIZATION = 4;
- /** Maximal value for CompLeveL */
+ /** Maximal value for CompLevel */
protected static int COMP_LEVEL_MAX = COMP_LEVEL_FULL_OPTIMIZATION;
/** Instance of WhiteBox */
@@ -75,8 +76,7 @@
/** count of invocation to triger OSR compilation */
protected static final long BACKEDGE_THRESHOLD;
/** Value of {@code java.vm.info} (interpreted|mixed|comp mode) */
- protected static final String MODE
- = System.getProperty("java.vm.info");
+ protected static final String MODE = System.getProperty("java.vm.info");
static {
if (TIERED_COMPILATION) {
@@ -133,6 +133,20 @@
return compLevel == COMP_LEVEL_FULL_OPTIMIZATION;
}
+ protected static void main(
+ Function<TestCase, CompilerWhiteBoxTest> constructor,
+ String[] args) {
+ if (args.length == 0) {
+ for (TestCase test : SimpleTestCase.values()) {
+ constructor.apply(test).runTest();
+ }
+ } else {
+ for (String name : args) {
+ constructor.apply(SimpleTestCase.valueOf(name)).runTest();
+ }
+ }
+ }
+
/** tested method */
protected final Executable method;
protected final TestCase testCase;
@@ -145,7 +159,7 @@
protected CompilerWhiteBoxTest(TestCase testCase) {
Objects.requireNonNull(testCase);
System.out.println("TEST CASE:" + testCase.name());
- method = testCase.executable;
+ method = testCase.getExecutable();
this.testCase = testCase;
}
@@ -204,7 +218,7 @@
if (WHITE_BOX.getMethodCompilationLevel(method, true) != 0) {
throw new RuntimeException(method + " osr_comp_level must be == 0");
}
- }
+ }
/**
* Checks, that {@linkplain #method} is compiled.
@@ -221,44 +235,46 @@
method, System.currentTimeMillis() - start);
return;
}
- if (!WHITE_BOX.isMethodCompiled(method, testCase.isOsr)) {
+ if (!WHITE_BOX.isMethodCompiled(method, testCase.isOsr())) {
throw new RuntimeException(method + " must be "
- + (testCase.isOsr ? "osr_" : "") + "compiled");
+ + (testCase.isOsr() ? "osr_" : "") + "compiled");
}
- if (WHITE_BOX.getMethodCompilationLevel(method, testCase.isOsr) == 0) {
+ if (WHITE_BOX.getMethodCompilationLevel(method, testCase.isOsr())
+ == 0) {
throw new RuntimeException(method
- + (testCase.isOsr ? " osr_" : " ")
+ + (testCase.isOsr() ? " osr_" : " ")
+ "comp_level must be != 0");
}
}
protected final void deoptimize() {
- WHITE_BOX.deoptimizeMethod(method, testCase.isOsr);
- if (testCase.isOsr) {
+ WHITE_BOX.deoptimizeMethod(method, testCase.isOsr());
+ if (testCase.isOsr()) {
WHITE_BOX.deoptimizeMethod(method, false);
}
}
protected final int getCompLevel() {
- return WHITE_BOX.getMethodCompilationLevel(method, testCase.isOsr);
+ return WHITE_BOX.getMethodCompilationLevel(method, testCase.isOsr());
}
protected final boolean isCompilable() {
return WHITE_BOX.isMethodCompilable(method, COMP_LEVEL_ANY,
- testCase.isOsr);
+ testCase.isOsr());
}
protected final boolean isCompilable(int compLevel) {
- return WHITE_BOX.isMethodCompilable(method, compLevel, testCase.isOsr);
+ return WHITE_BOX
+ .isMethodCompilable(method, compLevel, testCase.isOsr());
}
protected final void makeNotCompilable() {
WHITE_BOX.makeMethodNotCompilable(method, COMP_LEVEL_ANY,
- testCase.isOsr);
+ testCase.isOsr());
}
protected final void makeNotCompilable(int compLevel) {
- WHITE_BOX.makeMethodNotCompilable(method, compLevel, testCase.isOsr);
+ WHITE_BOX.makeMethodNotCompilable(method, compLevel, testCase.isOsr());
}
/**
@@ -298,7 +314,7 @@
WHITE_BOX.isMethodCompiled(method, true));
System.out.printf("\tosr_comp_level:\t%d%n",
WHITE_BOX.getMethodCompilationLevel(method, true));
- System.out.printf("\tin_queue:\t%b%n",
+ System.out.printf("\tin_queue:\t%b%n",
WHITE_BOX.isMethodQueuedForCompilation(method));
System.out.printf("compile_queues_size:\t%d%n%n",
WHITE_BOX.getCompileQueuesSize());
@@ -311,13 +327,13 @@
/**
* Tries to trigger compilation of {@linkplain #method} by call
- * {@linkplain #testCase.callable} enough times.
+ * {@linkplain TestCase#getCallable()} enough times.
*
* @return accumulated result
* @see #compile(int)
*/
protected final int compile() {
- if (testCase.isOsr) {
+ if (testCase.isOsr()) {
return compile(1);
} else {
return compile(THRESHOLD);
@@ -326,7 +342,7 @@
/**
* Tries to trigger compilation of {@linkplain #method} by call
- * {@linkplain #testCase.callable} specified times.
+ * {@linkplain TestCase#getCallable()} specified times.
*
* @param count invocation count
* @return accumulated result
@@ -336,7 +352,7 @@
Integer tmp;
for (int i = 0; i < count; ++i) {
try {
- tmp = testCase.callable.call();
+ tmp = testCase.getCallable().call();
} catch (Exception e) {
tmp = null;
}
@@ -347,19 +363,32 @@
}
return result;
}
+
+ /**
+ * Utility interface provides tested method and object to invoke it.
+ */
+ public interface TestCase {
+ /** the name of test case */
+ String name();
+
+ /** tested method */
+ Executable getExecutable();
+
+ /** object to invoke {@linkplain #getExecutable()} */
+ Callable<Integer> getCallable();
+
+ /** flag for OSR test case */
+ boolean isOsr();
+ }
}
-/**
- * Utility structure containing tested method and object to invoke it.
- */
-enum TestCase {
+enum SimpleTestCase implements CompilerWhiteBoxTest.TestCase {
/** constructor test case */
CONSTRUCTOR_TEST(Helper.CONSTRUCTOR, Helper.CONSTRUCTOR_CALLABLE, false),
/** method test case */
METOD_TEST(Helper.METHOD, Helper.METHOD_CALLABLE, false),
/** static method test case */
STATIC_TEST(Helper.STATIC, Helper.STATIC_CALLABLE, false),
-
/** OSR constructor test case */
OSR_CONSTRUCTOR_TEST(Helper.OSR_CONSTRUCTOR,
Helper.OSR_CONSTRUCTOR_CALLABLE, true),
@@ -368,20 +397,32 @@
/** OSR static method test case */
OSR_STATIC_TEST(Helper.OSR_STATIC, Helper.OSR_STATIC_CALLABLE, true);
- /** tested method */
- final Executable executable;
- /** object to invoke {@linkplain #executable} */
- final Callable<Integer> callable;
- /** flag for OSR test case */
- final boolean isOsr;
+ private final Executable executable;
+ private final Callable<Integer> callable;
+ private final boolean isOsr;
- private TestCase(Executable executable, Callable<Integer> callable,
+ private SimpleTestCase(Executable executable, Callable<Integer> callable,
boolean isOsr) {
this.executable = executable;
this.callable = callable;
this.isOsr = isOsr;
}
+ @Override
+ public Executable getExecutable() {
+ return executable;
+ }
+
+ @Override
+ public Callable<Integer> getCallable() {
+ return callable;
+ }
+
+ @Override
+ public boolean isOsr() {
+ return isOsr;
+ }
+
private static class Helper {
private static final Callable<Integer> CONSTRUCTOR_CALLABLE
@@ -436,7 +477,6 @@
}
};
-
private static final Constructor CONSTRUCTOR;
private static final Constructor OSR_CONSTRUCTOR;
private static final Method METHOD;
--- a/hotspot/test/compiler/whitebox/DeoptimizeAllTest.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/whitebox/DeoptimizeAllTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -27,19 +27,17 @@
* @library /testlibrary /testlibrary/whitebox
* @build DeoptimizeAllTest
* @run main ClassFileInstaller sun.hotspot.WhiteBox
- * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,TestCase$Helper::* DeoptimizeAllTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,SimpleTestCase$Helper::* DeoptimizeAllTest
* @summary testing of WB::deoptimizeAll()
* @author igor.ignatyev@oracle.com
*/
public class DeoptimizeAllTest extends CompilerWhiteBoxTest {
public static void main(String[] args) throws Exception {
- for (TestCase test : TestCase.values()) {
- new DeoptimizeAllTest(test).runTest();
- }
+ CompilerWhiteBoxTest.main(DeoptimizeAllTest::new, args);
}
- public DeoptimizeAllTest(TestCase testCase) {
+ private DeoptimizeAllTest(TestCase testCase) {
super(testCase);
// to prevent inlining of #method
WHITE_BOX.testSetDontInlineMethod(method, true);
@@ -53,7 +51,7 @@
*/
@Override
protected void test() throws Exception {
- if (testCase.isOsr && CompilerWhiteBoxTest.MODE.startsWith(
+ if (testCase.isOsr() && CompilerWhiteBoxTest.MODE.startsWith(
"compiled ")) {
System.err.printf("Warning: %s is not applicable in %s%n",
testCase.name(), CompilerWhiteBoxTest.MODE);
--- a/hotspot/test/compiler/whitebox/DeoptimizeMethodTest.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/whitebox/DeoptimizeMethodTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -27,19 +27,17 @@
* @library /testlibrary /testlibrary/whitebox
* @build DeoptimizeMethodTest
* @run main ClassFileInstaller sun.hotspot.WhiteBox
- * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,TestCase$Helper::* DeoptimizeMethodTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,SimpleTestCase$Helper::* DeoptimizeMethodTest
* @summary testing of WB::deoptimizeMethod()
* @author igor.ignatyev@oracle.com
*/
public class DeoptimizeMethodTest extends CompilerWhiteBoxTest {
public static void main(String[] args) throws Exception {
- for (TestCase test : TestCase.values()) {
- new DeoptimizeMethodTest(test).runTest();
- }
+ CompilerWhiteBoxTest.main(DeoptimizeMethodTest::new, args);
}
- public DeoptimizeMethodTest(TestCase testCase) {
+ private DeoptimizeMethodTest(TestCase testCase) {
super(testCase);
// to prevent inlining of #method
WHITE_BOX.testSetDontInlineMethod(method, true);
@@ -53,7 +51,7 @@
*/
@Override
protected void test() throws Exception {
- if (testCase.isOsr && CompilerWhiteBoxTest.MODE.startsWith(
+ if (testCase.isOsr() && CompilerWhiteBoxTest.MODE.startsWith(
"compiled ")) {
System.err.printf("Warning: %s is not applicable in %s%n",
testCase.name(), CompilerWhiteBoxTest.MODE);
--- a/hotspot/test/compiler/whitebox/EnqueueMethodForCompilationTest.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/whitebox/EnqueueMethodForCompilationTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -27,19 +27,17 @@
* @library /testlibrary /testlibrary/whitebox
* @build EnqueueMethodForCompilationTest
* @run main ClassFileInstaller sun.hotspot.WhiteBox
- * @run main/othervm/timeout=600 -Xbootclasspath/a:. -Xmixed -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,TestCase$Helper::* EnqueueMethodForCompilationTest
+ * @run main/othervm/timeout=600 -Xbootclasspath/a:. -Xmixed -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,SimpleTestCase$Helper::* EnqueueMethodForCompilationTest
* @summary testing of WB::enqueueMethodForCompilation()
* @author igor.ignatyev@oracle.com
*/
public class EnqueueMethodForCompilationTest extends CompilerWhiteBoxTest {
public static void main(String[] args) throws Exception {
- for (TestCase test : TestCase.values()) {
- new EnqueueMethodForCompilationTest(test).runTest();
- }
+ CompilerWhiteBoxTest.main(EnqueueMethodForCompilationTest::new, args);
}
- public EnqueueMethodForCompilationTest(TestCase testCase) {
+ private EnqueueMethodForCompilationTest(TestCase testCase) {
super(testCase);
// to prevent inlining of #method
WHITE_BOX.testSetDontInlineMethod(method, true);
--- a/hotspot/test/compiler/whitebox/IsMethodCompilableTest.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/whitebox/IsMethodCompilableTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -27,7 +27,7 @@
* @library /testlibrary /testlibrary/whitebox
* @build IsMethodCompilableTest
* @run main ClassFileInstaller sun.hotspot.WhiteBox
- * @run main/othervm/timeout=2400 -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,TestCase$Helper::* IsMethodCompilableTest
+ * @run main/othervm/timeout=2400 -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,SimpleTestCase$Helper::* IsMethodCompilableTest
* @summary testing of WB::isMethodCompilable()
* @author igor.ignatyev@oracle.com
*/
@@ -48,12 +48,10 @@
}
public static void main(String[] args) throws Exception {
- for (TestCase test : TestCase.values()) {
- new IsMethodCompilableTest(test).runTest();
- }
+ CompilerWhiteBoxTest.main(IsMethodCompilableTest::new, args);
}
- public IsMethodCompilableTest(TestCase testCase) {
+ private IsMethodCompilableTest(TestCase testCase) {
super(testCase);
// to prevent inlining of #method
WHITE_BOX.testSetDontInlineMethod(method, true);
@@ -68,7 +66,7 @@
*/
@Override
protected void test() throws Exception {
- if (testCase.isOsr && CompilerWhiteBoxTest.MODE.startsWith(
+ if (testCase.isOsr() && CompilerWhiteBoxTest.MODE.startsWith(
"compiled ")) {
System.err.printf("Warning: %s is not applicable in %s%n",
testCase.name(), CompilerWhiteBoxTest.MODE);
@@ -89,7 +87,7 @@
for (long i = 0L, n = PER_METHOD_RECOMPILATION_CUTOFF - 1; i < n; ++i) {
compileAndDeoptimize();
}
- if (!testCase.isOsr && !isCompilable()) {
+ if (!testCase.isOsr() && !isCompilable()) {
// in osr test case count of deopt maybe more than iterations
throw new RuntimeException(method + " is not compilable after "
+ (PER_METHOD_RECOMPILATION_CUTOFF - 1) + " iterations");
@@ -102,7 +100,7 @@
&& isCompilable(); ++i) {
compileAndDeoptimize();
}
- if (!testCase.isOsr && i != PER_METHOD_RECOMPILATION_CUTOFF) {
+ if (!testCase.isOsr() && i != PER_METHOD_RECOMPILATION_CUTOFF) {
// in osr test case count of deopt maybe more than iterations
throw new RuntimeException(method + " is not compilable after "
+ i + " iterations, but must only after "
--- a/hotspot/test/compiler/whitebox/MakeMethodNotCompilableTest.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/whitebox/MakeMethodNotCompilableTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -27,26 +27,17 @@
* @library /testlibrary /testlibrary/whitebox
* @build MakeMethodNotCompilableTest
* @run main ClassFileInstaller sun.hotspot.WhiteBox
- * @run main/othervm/timeout=2400 -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,TestCase$Helper::* MakeMethodNotCompilableTest
+ * @run main/othervm/timeout=2400 -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,SimpleTestCase$Helper::* MakeMethodNotCompilableTest
* @summary testing of WB::makeMethodNotCompilable()
* @author igor.ignatyev@oracle.com
*/
public class MakeMethodNotCompilableTest extends CompilerWhiteBoxTest {
private int bci;
public static void main(String[] args) throws Exception {
- if (args.length == 0) {
- for (TestCase test : TestCase.values()) {
- new MakeMethodNotCompilableTest(test).runTest();
- }
- } else {
- for (String name : args) {
- new MakeMethodNotCompilableTest(
- TestCase.valueOf(name)).runTest();
- }
- }
+ CompilerWhiteBoxTest.main(MakeMethodNotCompilableTest::new, args);
}
- public MakeMethodNotCompilableTest(TestCase testCase) {
+ private MakeMethodNotCompilableTest(TestCase testCase) {
super(testCase);
// to prevent inlining of #method
WHITE_BOX.testSetDontInlineMethod(method, true);
@@ -62,7 +53,7 @@
*/
@Override
protected void test() throws Exception {
- if (testCase.isOsr && CompilerWhiteBoxTest.MODE.startsWith(
+ if (testCase.isOsr() && CompilerWhiteBoxTest.MODE.startsWith(
"compiled ")) {
System.err.printf("Warning: %s is not applicable in %s%n",
testCase.name(), CompilerWhiteBoxTest.MODE);
--- a/hotspot/test/compiler/whitebox/SetDontInlineMethodTest.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/whitebox/SetDontInlineMethodTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -27,19 +27,17 @@
* @library /testlibrary /testlibrary/whitebox
* @build SetDontInlineMethodTest
* @run main ClassFileInstaller sun.hotspot.WhiteBox
- * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,TestCase$Helper::* SetDontInlineMethodTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,SimpleTestCase$Helper::* SetDontInlineMethodTest
* @summary testing of WB::testSetDontInlineMethod()
* @author igor.ignatyev@oracle.com
*/
public class SetDontInlineMethodTest extends CompilerWhiteBoxTest {
public static void main(String[] args) throws Exception {
- for (TestCase test : TestCase.values()) {
- new SetDontInlineMethodTest(test).runTest();
- }
+ CompilerWhiteBoxTest.main(SetDontInlineMethodTest::new, args);
}
- public SetDontInlineMethodTest(TestCase testCase) {
+ private SetDontInlineMethodTest(TestCase testCase) {
super(testCase);
}
--- a/hotspot/test/compiler/whitebox/SetForceInlineMethodTest.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/compiler/whitebox/SetForceInlineMethodTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -27,19 +27,17 @@
* @library /testlibrary /testlibrary/whitebox
* @build SetForceInlineMethodTest
* @run main ClassFileInstaller sun.hotspot.WhiteBox
- * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,TestCase$Helper::* SetForceInlineMethodTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,SimpleTestCase$Helper::* SetForceInlineMethodTest
* @summary testing of WB::testSetForceInlineMethod()
* @author igor.ignatyev@oracle.com
*/
public class SetForceInlineMethodTest extends CompilerWhiteBoxTest {
public static void main(String[] args) throws Exception {
- for (TestCase test : TestCase.values()) {
- new SetForceInlineMethodTest(test).runTest();
- }
+ CompilerWhiteBoxTest.main(SetForceInlineMethodTest::new, args);
}
- public SetForceInlineMethodTest(TestCase testCase) {
+ private SetForceInlineMethodTest(TestCase testCase) {
super(testCase);
}
--- a/hotspot/test/gc/6941923/Test6941923.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/gc/6941923/Test6941923.java Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/gc/defnew/HeapChangeLogging.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test HeapChangeLogging.java
+ * @bug 8027440
+ * @library /testlibrary
+ * @build HeapChangeLogging
+ * @summary Allocate to get a promotion failure and verify that that heap change logging is present.
+ * @run main HeapChangeLogging
+ *
+ * Test the output of G1SummarizeRSetStats in conjunction with G1SummarizeRSetStatsPeriod.
+ */
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import com.oracle.java.testlibrary.*;
+
+public class HeapChangeLogging {
+ public static void main(String[] args) throws Exception {
+ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-Xmx128m", "-Xmn100m", "-XX:+UseSerialGC", "-XX:+PrintGC", "HeapFiller");
+ OutputAnalyzer output = new OutputAnalyzer(pb.start());
+ String stdout = output.getStdout();
+ System.out.println(stdout);
+ Matcher stdoutMatcher = Pattern.compile("\\[GC .Allocation Failure.*K->.*K\\(.*K\\), .* secs\\]", Pattern.MULTILINE).matcher(stdout);
+ if (!stdoutMatcher.find()) {
+ throw new RuntimeException("No proper GC log line found");
+ }
+ output.shouldHaveExitValue(0);
+ }
+}
+
+class HeapFiller {
+ public static Entry root;
+ private static final int PAYLOAD_SIZE = 1000;
+
+ public static void main(String[] args) {
+ root = new Entry(PAYLOAD_SIZE, null);
+ Entry current = root;
+ try {
+ while (true) {
+ Entry newEntry = new Entry(PAYLOAD_SIZE, current);
+ current = newEntry;
+ }
+ } catch (OutOfMemoryError e) {
+ root = null;
+ }
+
+ }
+}
+
+class Entry {
+ public Entry previous;
+ public byte[] payload;
+
+ Entry(int payloadSize, Entry previous) {
+ payload = new byte[payloadSize];
+ this.previous = previous;
+ }
+}
\ No newline at end of file
--- a/hotspot/test/gc/g1/TestHumongousAllocInitialMark.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/gc/g1/TestHumongousAllocInitialMark.java Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/test/runtime/6626217/Test6626217.sh Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/runtime/6626217/Test6626217.sh Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 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
--- a/hotspot/test/runtime/7110720/Test7110720.sh Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/runtime/7110720/Test7110720.sh Wed Jul 05 19:27:58 2017 +0200
@@ -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.
#
--- a/hotspot/test/runtime/7162488/Test7162488.sh Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/runtime/7162488/Test7162488.sh Wed Jul 05 19:27:58 2017 +0200
@@ -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
--- a/hotspot/test/runtime/8024804/RegisterNatives.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/runtime/8024804/RegisterNatives.java Wed Jul 05 19:27:58 2017 +0200
@@ -22,10 +22,10 @@
*/
/*
- * @ignore 8028741
* @test
* @bug 8024804
- * @summary registerNatives() interface resolution should receive IAE
+ * @bug 8028741
+ * @summary interface method resolution should skip finding j.l.Object's registerNatives() and succeed in selecting class B's registerNatives()
* @run main RegisterNatives
*/
public class RegisterNatives {
@@ -38,10 +38,10 @@
try {
val.registerNatives();
} catch (IllegalAccessError e) {
- System.out.println("TEST PASSES - according to current JVM spec, IAE expected\n");
- return;
+ System.out.println("TEST FAILS - JDK 8 JVMS, static and non-public methods of j.l.Object should be ignored during interface method resolution\n");
+ e.printStackTrace();
+ throw e;
}
- System.out.println("TEST FAILS - no IAE resulted\n");
- System.exit(1);
+ System.out.println("TEST PASSES - no IAE resulted\n");
}
}
--- a/hotspot/test/runtime/NMT/CommandLineDetail.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/runtime/NMT/CommandLineDetail.java Wed Jul 05 19:27:58 2017 +0200
@@ -24,7 +24,7 @@
/*
* @test
* @key nmt
- * @summary Running with NMT detail should not result in an error or warning
+ * @summary Running with NMT detail should not result in an error
* @library /testlibrary
*/
@@ -39,7 +39,6 @@
"-version");
OutputAnalyzer output = new OutputAnalyzer(pb.start());
output.shouldNotContain("error");
- output.shouldNotContain("warning");
output.shouldHaveExitValue(0);
}
}
--- a/hotspot/test/runtime/NMT/CommandLineSummary.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/runtime/NMT/CommandLineSummary.java Wed Jul 05 19:27:58 2017 +0200
@@ -24,7 +24,7 @@
/*
* @test
* @key nmt
- * @summary Running with NMT summary should not result in an error or warning
+ * @summary Running with NMT summary should not result in an error
* @library /testlibrary
*/
@@ -39,7 +39,6 @@
"-version");
OutputAnalyzer output = new OutputAnalyzer(pb.start());
output.shouldNotContain("error");
- output.shouldNotContain("warning");
output.shouldHaveExitValue(0);
}
}
--- a/hotspot/test/runtime/NMT/CommandLineTurnOffNMT.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/runtime/NMT/CommandLineTurnOffNMT.java Wed Jul 05 19:27:58 2017 +0200
@@ -24,7 +24,7 @@
/*
* @test
* @key nmt
- * @summary Turning off NMT should not result in an error or warning
+ * @summary Turning off NMT should not result in an error
* @library /testlibrary
*/
@@ -38,7 +38,6 @@
"-version");
OutputAnalyzer output = new OutputAnalyzer(pb.start());
output.shouldNotContain("error");
- output.shouldNotContain("warning");
output.shouldHaveExitValue(0);
}
}
--- a/hotspot/test/runtime/NMT/PrintNMTStatistics.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/runtime/NMT/PrintNMTStatistics.java Wed Jul 05 19:27:58 2017 +0200
@@ -64,7 +64,6 @@
OutputAnalyzer output = new OutputAnalyzer(pb.start());
output.shouldContain("Java Heap (reserved=");
output.shouldNotContain("error");
- output.shouldNotContain("warning");
output.shouldHaveExitValue(0);
}
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/runtime/PerfMemDestroy/PerfMemDestroy.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8030955
+ * @summary Allow multiple calls to PerfMemory::destroy() without asserting.
+ * @library /testlibrary
+ * @run main PerfMemDestroy
+ */
+
+import java.io.File;
+import java.util.Map;
+import com.oracle.java.testlibrary.*;
+
+public class PerfMemDestroy {
+ public static void main(String args[]) throws Throwable {
+ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-XX:+PerfAllowAtExitRegistration", "-version");
+ OutputAnalyzer output = new OutputAnalyzer(pb.start());
+ output.shouldHaveExitValue(0);
+ }
+}
--- a/hotspot/test/runtime/RedefineObject/Agent.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/runtime/RedefineObject/Agent.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 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
--- a/hotspot/test/runtime/RedefineObject/TestRedefineObject.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/runtime/RedefineObject/TestRedefineObject.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 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
--- a/hotspot/test/runtime/XCheckJniJsig/XCheckJSig.java Mon Jan 27 21:01:55 2014 -0800
+++ b/hotspot/test/runtime/XCheckJniJsig/XCheckJSig.java Wed Jul 05 19:27:58 2017 +0200
@@ -22,7 +22,6 @@
*/
/*
- * @ignore 8023735
* @test
* @bug 7051189 8023393
* @summary Need to suppress info message if -Xcheck:jni is used with libjsig.so
@@ -30,7 +29,8 @@
* @run main XCheckJSig
*/
-import java.util.*;
+import java.io.File;
+import java.util.Map;
import com.oracle.java.testlibrary.*;
public class XCheckJSig {
@@ -47,33 +47,36 @@
String libjsig;
String env_var;
if (Platform.isOSX()) {
- libjsig = jdk_path + "/jre/lib/server/libjsig.dylib";
env_var = "DYLD_INSERT_LIBRARIES";
+ libjsig = jdk_path + "/jre/lib/libjsig.dylib"; // jdk location
+ if (!(new File(libjsig).exists())) {
+ libjsig = jdk_path + "/lib/libjsig.dylib"; // jre location
+ }
} else {
- libjsig = jdk_path + "/jre/lib/" + os_arch + "/libjsig.so";
env_var = "LD_PRELOAD";
- }
- String java_program;
- if (Platform.isSolaris()) {
- // On Solaris, need to call the 64-bit Java directly in order for
- // LD_PRELOAD to work because libjsig.so is 64-bit.
- java_program = jdk_path + "/jre/bin/" + os_arch + "/java";
- } else {
- java_program = JDKToolFinder.getJDKTool("java");
+ libjsig = jdk_path + "/jre/lib/" + os_arch + "/libjsig.so"; // jdk location
+ if (!(new File(libjsig).exists())) {
+ libjsig = jdk_path + "/lib/" + os_arch + "/libjsig.so"; // jre location
+ }
}
// If this test fails, these might be useful to know.
System.out.println("libjsig: " + libjsig);
System.out.println("osArch: " + os_arch);
- System.out.println("java_program: " + java_program);
- ProcessBuilder pb = new ProcessBuilder(java_program, "-Xcheck:jni", "-version");
+ // Make sure the libjsig file exists.
+ if (!(new File(libjsig).exists())) {
+ System.out.println("File " + libjsig + " not found, skipping");
+ return;
+ }
+
+ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-Xcheck:jni", "-version");
Map<String, String> env = pb.environment();
env.put(env_var, libjsig);
OutputAnalyzer output = new OutputAnalyzer(pb.start());
output.shouldNotContain("libjsig is activated");
output.shouldHaveExitValue(0);
- pb = new ProcessBuilder(java_program, "-Xcheck:jni", "-verbose:jni", "-version");
+ pb = ProcessTools.createJavaProcessBuilder("-Xcheck:jni", "-verbose:jni", "-version");
env = pb.environment();
env.put(env_var, libjsig);
output = new OutputAnalyzer(pb.start());
--- a/jdk/.hgtags Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/.hgtags Wed Jul 05 19:27:58 2017 +0200
@@ -243,3 +243,4 @@
e4499a6529e8c3e762ba86f45cdd774c92a8e7bc jdk8-b119
d31cd980e1da31fa496a359caaf1a165aeb5791a jdk8-b120
27b384262cba51dd0fe3e3534820189b46abc8cb jdk9-b00
+3b4ac8d1b76fc6bec9815f0ab714f15b552e4c7b jdk9-b01
--- a/jdk/make/CompileJavaClasses.gmk Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/make/CompileJavaClasses.gmk Wed Jul 05 19:27:58 2017 +0200
@@ -274,11 +274,6 @@
$(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/SctpMultiChannelImpl.java \
$(JDK_TOPDIR)/src/solaris/classes/sun/nio/ch/sctp/SctpServerChannelImpl.java
- # JObjC.jar contains 1.5 byte-code...so skip it here :-(
- # MACOSX_SRC_DIRS += $(JDK_TOPDIR)/src/macosx/native/jobjc/src
- # EXCLUDES += tests/java/com/apple/jobjc
-
- EXCLUDES += com/apple/jobjc
endif
# The security classes should not end up in the classes directory as that will prevent them
@@ -354,44 +349,6 @@
##########################################################################################
-ifeq ($(OPENJDK_TARGET_OS), macosx)
- #
- # JObjC.jar is compiled with BOOT_JAVAC which (may) not support the "-h" flag.
- # so we first compile classes with BOOT_JAVAC and then with JDK_JAVAC :-(
- #
- $(eval $(call SetupJavaCompiler,GENERATE_15BYTECODE, \
- JAVAC := $(JAVAC), \
- FLAGS := -source 1.5 -target 1.5 -g -bootclasspath $(BOOT_RTJAR) -cp $(JDK_OUTPUTDIR)/../langtools/dist/lib/classes.jar $(DISABLE_WARNINGS), \
- SERVER_DIR := $(SJAVAC_SERVER_DIR), \
- SERVER_JVM := $(SJAVAC_SERVER_JAVA)))
-
- $(eval $(call SetupJavaCompilation,BUILD_JOBJC, \
- SETUP := GENERATE_15BYTECODE, \
- DISABLE_SJAVAC := true, \
- SRC := $(JDK_TOPDIR)/src/macosx/native/jobjc/src/core/java \
- $(JDK_TOPDIR)/src/macosx/native/jobjc/src/runtime-additions/java \
- $(JDK_OUTPUTDIR)/gensrc_jobjc/src, \
- INCLUDES := com/apple/jobjc, \
- EXCLUDES := tests/java/com/apple/jobjc, \
- BIN := $(JDK_OUTPUTDIR)/jobjc_classes, \
- JAR := $(JDK_OUTPUTDIR)/lib/JObjC.jar, \
- JARINDEX := true))
-
- $(BUILD_JOBJC): $(BUILD_JDK)
-
- $(eval $(call SetupJavaCompilation,BUILD_JOBJC_HEADERS, \
- SETUP := GENERATE_JDKBYTECODE, \
- SRC := $(JDK_TOPDIR)/src/macosx/native/jobjc/src/core/java \
- $(JDK_TOPDIR)/src/macosx/native/jobjc/src/runtime-additions/java \
- $(JDK_OUTPUTDIR)/gensrc_jobjc/src, \
- INCLUDES := com/apple/jobjc, \
- EXCLUDES := tests/java/com/apple/jobjc, \
- BIN := $(JDK_OUTPUTDIR)/jobjc_classes_headers, \
- HEADERS := $(JDK_OUTPUTDIR)/gensrc_headers_jobjc))
-
-$(BUILD_JOBJC_HEADERS): $(BUILD_JDK)
-
-endif
##########################################################################################
--- a/jdk/make/CompileLaunchers.gmk Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/make/CompileLaunchers.gmk Wed Jul 05 19:27:58 2017 +0200
@@ -437,6 +437,7 @@
ifeq ($(OPENJDK_TARGET_OS), solaris)
UNPACKEXE_LANG := C++
endif
+UNPACKEXE_DEBUG_SYMBOLS := true
# On windows, unpack200 is linked completely differently to all other
# executables, using the compiler with the compiler arguments.
# It's also linked incrementally, producing a .ilk file that needs to
@@ -445,6 +446,9 @@
BUILD_UNPACKEXE_LDEXE := $(CC)
EXE_OUT_OPTION_save := $(EXE_OUT_OPTION)
EXE_OUT_OPTION := -Fe
+ # With the current way unpack200 is built, debug symbols aren't supported
+ # anyway.
+ UNPACKEXE_DEBUG_SYMBOLS :=
endif
$(eval $(call SetupNativeCompilation,BUILD_UNPACKEXE, \
SRC := $(JDK_TOPDIR)/src/share/native/com/sun/java/util/jar/pack, \
@@ -474,7 +478,7 @@
-D "JDK_FNAME=unpack200.exe" \
-D "JDK_INTERNAL_NAME=unpack200" \
-D "JDK_FTYPE=0x1L", \
- DEBUG_SYMBOLS := true, \
+ DEBUG_SYMBOLS := $(UNPACKEXE_DEBUG_SYMBOLS), \
MANIFEST := $(JDK_TOPDIR)/src/windows/resource/unpack200_proto.exe.manifest))
ifeq ($(OPENJDK_TARGET_OS), windows)
--- a/jdk/make/CreateJars.gmk Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/make/CreateJars.gmk Wed Jul 05 19:27:58 2017 +0200
@@ -668,13 +668,6 @@
##########################################################################################
-ifeq ($(OPENJDK_TARGET_OS), macosx)
- $(eval $(call SetupArchive,BUILD_JOBJC_JAR, , \
- SRCS := $(JDK_OUTPUTDIR)/jobjc_classes, \
- JAR := $(IMAGES_OUTPUTDIR)/lib/JObjC.jar, \
- JARINDEX := true))
-endif
-
# This file is imported from hotspot in Import.gmk. Copying it into images/lib so that
# all jars can be found in one place when creating images in Images.gmk. It needs to be
# done here so that clean targets can be simple and accurate.
--- a/jdk/make/GenerateSources.gmk Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/make/GenerateSources.gmk Wed Jul 05 19:27:58 2017 +0200
@@ -85,11 +85,6 @@
include gensrc/GensrcSwing.gmk
GENSRC += $(GENSRC_SWING_BEANINFO) $(GENSRC_SWING_NIMBUS)
-ifeq ($(OPENJDK_TARGET_OS), macosx)
- include gensrc/GensrcJObjC.gmk
- GENSRC += $(GENSRC_JOBJC)
-endif
-
$(GENSRC): $(BUILD_TOOLS)
all: $(GENSRC)
--- a/jdk/make/Images.gmk Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/make/Images.gmk Wed Jul 05 19:27:58 2017 +0200
@@ -283,14 +283,13 @@
$(ECHO) $(LOG_INFO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
$(MKDIR) -p $@
-# In the old build, JObjC.jar is not part of the meta-index
$(JRE_IMAGE_DIR)/lib/meta-index: $(JRE_LIB_TARGETS)
$(ECHO) $(LOG_INFO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
- $(CD) $(@D) && $(TOOL_BUILDMETAINDEX) -o meta-index `$(LS) *.jar | $(SED) 's/JObjC\.jar//g'`
+ $(CD) $(@D) && $(TOOL_BUILDMETAINDEX) -o meta-index *.jar
$(JDK_IMAGE_DIR)/jre/lib/meta-index: $(JDKJRE_LIB_TARGETS)
$(ECHO) $(LOG_INFO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
- $(CD) $(@D) && $(TOOL_BUILDMETAINDEX) -o meta-index `$(LS) *.jar | $(SED) 's/JObjC\.jar//g'`
+ $(CD) $(@D) && $(TOOL_BUILDMETAINDEX) -o meta-index *.jar
$(JRE_IMAGE_DIR)/lib/ext/meta-index: $(JRE_LIB_TARGETS)
$(ECHO) $(LOG_INFO) Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
--- a/jdk/make/Profiles.gmk Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/make/Profiles.gmk Wed Jul 05 19:27:58 2017 +0200
@@ -105,10 +105,6 @@
ALL_JARS += $(IMAGES_OUTPUTDIR)/lib/ext/sunmscapi.jar
endif
-ifeq ($(OPENJDK_TARGET_OS), macosx)
- ALL_JARS += $(IMAGES_OUTPUTDIR)/lib/JObjC.jar
-endif
-
ifeq ($(PROFILE), profile_1)
PROFILE_JARS := $(PROFILE_1_JARS)
else ifeq ($(PROFILE), profile_2)
--- a/jdk/make/Setup.gmk Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/make/Setup.gmk Wed Jul 05 19:27:58 2017 +0200
@@ -27,7 +27,7 @@
# To build with all warnings enabled, do the following:
# make JAVAC_WARNINGS="-Xlint:all -Xmaxwarns 10000"
-JAVAC_WARNINGS := -Xlint:-unchecked,-deprecation,-overrides,auxiliaryclass,classfile,dep-ann,divzero,empty,try,varargs -Werror
+JAVAC_WARNINGS := -Xlint:-unchecked,-deprecation,-overrides,auxiliaryclass,classfile,dep-ann,divzero,empty,overloads,try,varargs -Werror
# Any java code executed during a JDK build to build other parts of the JDK must be
# executed by the bootstrap JDK (probably with -Xbootclasspath/p: ) and for this
--- a/jdk/make/data/mainmanifest/manifest.mf Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/make/data/mainmanifest/manifest.mf Wed Jul 05 19:27:58 2017 +0200
@@ -1,6 +1,6 @@
Manifest-Version: 1.0
Specification-Title: Java Platform API Specification
-Specification-Version: 1.8
+Specification-Version: 1.9
Specification-Vendor: Oracle Corporation
Implementation-Title: Java Runtime Environment
Implementation-Version: @@RELEASE@@
--- a/jdk/make/gensrc/GensrcSwing.gmk Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/make/gensrc/GensrcSwing.gmk Wed Jul 05 19:27:58 2017 +0200
@@ -77,7 +77,7 @@
$(ECHO) Generating beaninfo
$(MKDIR) -p $(JDK_OUTPUTDIR)/gensrc_no_srczip/javax/swing
$(JAVA) -Djava.awt.headless=true $(NEW_JAVADOC) \
- -sourcepath "$(JDK_TOPDIR)/src/share/classes$(PATH_SEP)$(JDK_OUTPUTDIR)/gensrc" \
+ -sourcepath "$(JDK_TOPDIR)/src/share/classes$(PATH_SEP)$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/classes$(PATH_SEP)$(JDK_OUTPUTDIR)/gensrc" \
-doclet build.tools.swingbeaninfo.GenDocletBeanInfo \
-x $(SWINGBEAN_DEBUG_FLAG) -d $(JDK_OUTPUTDIR)/gensrc_no_srczip/javax/swing \
-t $(DOCLET_DATA_DIR)/SwingBeanInfo.template -docletpath $(JDK_OUTPUTDIR)/btclasses \
--- a/jdk/make/lib/CoreLibraries.gmk Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/make/lib/CoreLibraries.gmk Wed Jul 05 19:27:58 2017 +0200
@@ -310,16 +310,6 @@
BUILD_LIBRARIES += $(BUILD_LIBUNPACK)
-ifeq ($(OPENJDK_TARGET_OS), windows)
- $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)unpack.map: $(BUILD_LIBUNPACK)
- $(ECHO) Copying $(@F)
- $(CP) $(patsubst %$(SHARED_LIBRARY_SUFFIX), %.map, $<) $@
-
- $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)unpack.pdb: $(BUILD_LIBUNPACK)
- $(ECHO) Copying $(@F)
- $(CP) $(patsubst %$(SHARED_LIBRARY_SUFFIX), %.pdb, $<) $@
-endif
-
##########################################################################################
BUILD_LIBJLI_SRC_DIRS := $(JDK_TOPDIR)/src/share/bin $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/bin
--- a/jdk/make/lib/NetworkingLibraries.gmk Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/make/lib/NetworkingLibraries.gmk Wed Jul 05 19:27:58 2017 +0200
@@ -25,6 +25,7 @@
LIBNET_SRC_DIRS := $(JDK_TOPDIR)/src/share/native/java/net \
$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/java/net \
+ $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/net/ \
$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/net/dns \
$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/net/spi
--- a/jdk/make/lib/PlatformLibraries.gmk Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/make/lib/PlatformLibraries.gmk Wed Jul 05 19:27:58 2017 +0200
@@ -136,64 +136,6 @@
##########################################################################################
-ifeq ($(OPENJDK_TARGET_OS), macosx)
-
- $(eval $(call SetupNativeCompilation,BUILD_LIBJOBJC32, \
- LIBRARY := JObjC, \
- OUTPUT_DIR := $(JDK_OUTPUTDIR)/objs/libjobjc32, \
- SRC := $(JDK_TOPDIR)/src/macosx/native/jobjc/src/core/native \
- $(JDK_TOPDIR)/src/macosx/native/jobjc/src/runtime-additions/native, \
- LANG := C, \
- OPTIMIZATION := LOW, \
- CFLAGS := -fpascal-strings \
- -fobjc-gc \
- -gdwarf-2 \
- $(CFLAGS_JDKLIB) -I$(JDK_OUTPUTDIR)/gensrc_headers_jobjc \
- -F/System/Library/Frameworks/JavaVM.framework/Frameworks \
- -m32, \
- LDFLAGS := $(LDFLAGS_JDKLIB) \
- -m32, \
- LDFLAGS_SUFFIX := -framework Foundation -framework JavaVM \
- -F/System/Library/Frameworks/JavaVM.framework/Frameworks \
- -framework JavaNativeFoundation \
- -lffi, \
- OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjobjc32, \
- DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
-
- $(eval $(call SetupNativeCompilation,BUILD_LIBJOBJC64, \
- LIBRARY := JObjC, \
- OUTPUT_DIR := $(JDK_OUTPUTDIR)/objs/libjobjc64, \
- SRC := $(JDK_TOPDIR)/src/macosx/native/jobjc/src/core/native \
- $(JDK_TOPDIR)/src/macosx/native/jobjc/src/runtime-additions/native, \
- LANG := C, \
- OPTIMIZATION := LOW, \
- CFLAGS := -fpascal-strings \
- -fobjc-gc \
- -gdwarf-2 \
- $(CFLAGS_JDKLIB) -I$(JDK_OUTPUTDIR)/gensrc_headers_jobjc \
- -F/System/Library/Frameworks/JavaVM.framework/Frameworks \
- , \
- LDFLAGS := -fpascal-strings \
- -fobjc-gc \
- -gdwarf-2 \
- $(LDFLAGS_JDKLIB) \
- $(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX := -framework Foundation -framework JavaVM \
- -F/System/Library/Frameworks/JavaVM.framework/Frameworks \
- -framework JavaNativeFoundation \
- -lffi, \
- OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjobjc64, \
- DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
-
- $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)JObjC$(SHARED_LIBRARY_SUFFIX): $(BUILD_LIBJOBJC32) $(BUILD_LIBJOBJC64)
- $(LIPO) -create -output $@ $(BUILD_LIBJOBJC32) $(BUILD_LIBJOBJC64)
-
- BUILD_LIBRARIES += $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)JObjC$(SHARED_LIBRARY_SUFFIX)
-
-endif
-
-##########################################################################################
-
ifndef OPENJDK
ifeq ($(OPENJDK_TARGET_OS), windows)
--- a/jdk/make/mapfiles/libjava/mapfile-vers Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/make/mapfiles/libjava/mapfile-vers Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -273,7 +273,6 @@
Java_sun_misc_Version_getJdkSpecialVersion;
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/jdk/make/mapfiles/libnet/mapfile-vers Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/make/mapfiles/libnet/mapfile-vers Wed Jul 05 19:27:58 2017 +0200
@@ -86,6 +86,8 @@
Java_java_net_PlainSocketImpl_socketConnect;
Java_java_net_PlainDatagramSocketImpl_getTimeToLive;
Java_java_net_PlainDatagramSocketImpl_setTimeToLive;
+ Java_sun_net_PortConfig_getUpper0;
+ Java_sun_net_PortConfig_getLower0;
Java_sun_net_dns_ResolverConfigurationImpl_localDomain0;
Java_sun_net_dns_ResolverConfigurationImpl_fallbackDomain0;
Java_sun_net_sdp_SdpSupport_convert0;
--- a/jdk/src/macosx/native/sun/awt/splashscreen/splashscreen_sys.m Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/macosx/native/sun/awt/splashscreen/splashscreen_sys.m Wed Jul 05 19:27:58 2017 +0200
@@ -290,8 +290,8 @@
SplashUnlock(splash);
rc = poll(pfd, 1, timeout);
SplashLock(splash);
- if (splash->isVisible>0 && SplashTime() >= splash->time +
- splash->frames[splash->currentFrame].delay) {
+ if (splash->isVisible > 0 && splash->currentFrame >= 0 &&
+ SplashTime() >= splash->time + splash->frames[splash->currentFrame].delay) {
SplashNextFrame(splash);
SplashRedrawWindow(splash);
}
--- a/jdk/src/share/bin/java.c Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/bin/java.c Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -345,6 +345,13 @@
} \
} while (JNI_FALSE)
+#define CHECK_EXCEPTION_RETURN(CER_return_value) \
+ do { \
+ if ((*env)->ExceptionOccurred(env)) { \
+ return CER_return_value; \
+ } \
+ } while (JNI_FALSE)
+
int JNICALL
JavaMain(void * _args)
{
@@ -1233,8 +1240,9 @@
"checkAndLoadMain",
"(ZILjava/lang/String;)Ljava/lang/Class;"));
- str = NewPlatformString(env, name);
- result = (*env)->CallStaticObjectMethod(env, cls, mid, USE_STDERR, mode, str);
+ NULL_CHECK0(str = NewPlatformString(env, name));
+ NULL_CHECK0(result = (*env)->CallStaticObjectMethod(env, cls, mid,
+ USE_STDERR, mode, str));
if (JLI_IsTraceLauncher()) {
end = CounterGet();
@@ -1480,7 +1488,7 @@
NULL_CHECK(cls);
NULL_CHECK(showSettingsID = (*env)->GetStaticMethodID(env, cls,
"showSettings", "(ZLjava/lang/String;JJJZ)V"));
- joptString = (*env)->NewStringUTF(env, optString);
+ NULL_CHECK(joptString = (*env)->NewStringUTF(env, optString));
(*env)->CallStaticVoidMethod(env, cls, showSettingsID,
USE_STDERR,
joptString,
@@ -1521,31 +1529,35 @@
NULL_CHECK(printHelp = (*env)->GetStaticMethodID(env, cls,
"printHelpMessage", "(Z)V"));
- jprogname = (*env)->NewStringUTF(env, _program_name);
+ NULL_CHECK(jprogname = (*env)->NewStringUTF(env, _program_name));
/* Initialize the usage message with the usual preamble */
(*env)->CallStaticVoidMethod(env, cls, initHelp, jprogname);
+ CHECK_EXCEPTION_RETURN();
/* Assemble the other variant part of the usage */
if ((knownVMs[0].flag == VM_KNOWN) ||
(knownVMs[0].flag == VM_IF_SERVER_CLASS)) {
- vm1 = (*env)->NewStringUTF(env, knownVMs[0].name);
- vm2 = (*env)->NewStringUTF(env, knownVMs[0].name+1);
+ NULL_CHECK(vm1 = (*env)->NewStringUTF(env, knownVMs[0].name));
+ NULL_CHECK(vm2 = (*env)->NewStringUTF(env, knownVMs[0].name+1));
(*env)->CallStaticVoidMethod(env, cls, vmSelect, vm1, vm2);
+ CHECK_EXCEPTION_RETURN();
}
for (i=1; i<knownVMsCount; i++) {
if (knownVMs[i].flag == VM_KNOWN) {
- vm1 = (*env)->NewStringUTF(env, knownVMs[i].name);
- vm2 = (*env)->NewStringUTF(env, knownVMs[i].name+1);
+ NULL_CHECK(vm1 = (*env)->NewStringUTF(env, knownVMs[i].name));
+ NULL_CHECK(vm2 = (*env)->NewStringUTF(env, knownVMs[i].name+1));
(*env)->CallStaticVoidMethod(env, cls, vmSelect, vm1, vm2);
+ CHECK_EXCEPTION_RETURN();
}
}
for (i=1; i<knownVMsCount; i++) {
if (knownVMs[i].flag == VM_ALIASED_TO) {
- vm1 = (*env)->NewStringUTF(env, knownVMs[i].name);
- vm2 = (*env)->NewStringUTF(env, knownVMs[i].alias+1);
+ NULL_CHECK(vm1 = (*env)->NewStringUTF(env, knownVMs[i].name));
+ NULL_CHECK(vm2 = (*env)->NewStringUTF(env, knownVMs[i].alias+1));
(*env)->CallStaticVoidMethod(env, cls, vmSynonym, vm1, vm2);
+ CHECK_EXCEPTION_RETURN();
}
}
@@ -1558,8 +1570,9 @@
defaultVM = knownVMs[0].server_class+1;
}
- vm1 = (*env)->NewStringUTF(env, defaultVM);
+ NULL_CHECK(vm1 = (*env)->NewStringUTF(env, defaultVM));
(*env)->CallStaticVoidMethod(env, cls, vmErgo, isServerClassMachine, vm1);
+ CHECK_EXCEPTION_RETURN();
}
/* Complete the usage message and print to stderr*/
--- a/jdk/src/share/classes/com/sun/beans/decoder/DocumentHandler.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/com/sun/beans/decoder/DocumentHandler.java Wed Jul 05 19:27:58 2017 +0200
@@ -29,6 +29,7 @@
import java.beans.ExceptionListener;
import java.io.IOException;
+import java.io.StringReader;
import java.lang.ref.Reference;
import java.lang.ref.WeakReference;
@@ -246,6 +247,14 @@
}
/**
+ * Disables any external entities.
+ */
+ @Override
+ public InputSource resolveEntity(String publicId, String systemId) {
+ return new InputSource(new StringReader(""));
+ }
+
+ /**
* Prepares this handler to read objects from XML document.
*/
@Override
--- a/jdk/src/share/classes/com/sun/crypto/provider/TlsRsaPremasterSecretGenerator.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/com/sun/crypto/provider/TlsRsaPremasterSecretGenerator.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -72,13 +72,17 @@
throw new IllegalStateException(
"TlsRsaPremasterSecretGenerator must be initialized");
}
- if (random == null) {
- random = new SecureRandom();
+ byte[] b = spec.getEncodedSecret();
+ if (b == null) {
+ if (random == null) {
+ random = new SecureRandom();
+ }
+ b = new byte[48];
+ random.nextBytes(b);
+ b[0] = (byte)spec.getMajorVersion();
+ b[1] = (byte)spec.getMinorVersion();
}
- byte[] b = new byte[48];
- random.nextBytes(b);
- b[0] = (byte)spec.getMajorVersion();
- b[1] = (byte)spec.getMinorVersion();
+
return new SecretKeySpec(b, "TlsRsaPremasterSecret");
}
--- a/jdk/src/share/classes/com/sun/jmx/snmp/agent/SnmpMibEntry.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/snmp/agent/SnmpMibEntry.java Wed Jul 05 19:27:58 2017 +0200
@@ -27,17 +27,9 @@
// java imports
//
+import com.sun.jmx.snmp.SnmpDefinitions;
import java.io.Serializable;
-import java.util.Hashtable;
-import java.util.Enumeration;
-
-// jmx imports
-//
-import com.sun.jmx.snmp.SnmpValue;
-import com.sun.jmx.snmp.SnmpVarBind;
import com.sun.jmx.snmp.SnmpStatusException;
-import com.sun.jmx.snmp.agent.SnmpMibOid;
-import com.sun.jmx.snmp.agent.SnmpMibNode;
/**
* Represents a node in an SNMP MIB which corresponds to a table entry
@@ -99,7 +91,9 @@
*/
public void validateVarId(long arc, Object userData)
throws SnmpStatusException {
- if (isVariable(arc) == false) throw noSuchNameException;
+ if (isVariable(arc) == false) {
+ throw new SnmpStatusException(SnmpDefinitions.snmpRspNoSuchName);
+ }
}
/**
--- a/jdk/src/share/classes/com/sun/jmx/snmp/agent/SnmpMibGroup.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/snmp/agent/SnmpMibGroup.java Wed Jul 05 19:27:58 2017 +0200
@@ -108,8 +108,9 @@
*/
public void validateVarId(long arc, Object userData)
throws SnmpStatusException {
- if (isVariable(arc) == false)
- throw noSuchObjectException;
+ if (isVariable(arc) == false) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
}
@@ -360,17 +361,20 @@
validateVarId(arc, data);
// The trailing .0 is missing in the OID
- if (depth+2 > length)
- throw noSuchInstanceException;
+ if (depth+2 > length) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchInstance);
+ }
// There are too many arcs left in the OID (there should remain
// a single trailing .0)
- if (depth+2 < length)
- throw noSuchInstanceException;
+ if (depth+2 < length) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchInstance);
+ }
// The last trailing arc is not .0
- if (oid[depth+1] != 0L)
- throw noSuchInstanceException;
+ if (oid[depth+1] != 0L) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchInstance);
+ }
// It's one of our variable, register this node.
handlers.add(this,depth,varbind);
@@ -389,12 +393,13 @@
int length = oid.length;
SnmpMibNode node = null;
- if (handlers == null)
+ if (handlers == null) {
// This should be considered as a genErr, but we do not want to
// abort the whole request, so we're going to throw
// a noSuchObject...
//
- throw noSuchObjectException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
final Object data = handlers.getUserData();
final int pduVersion = handlers.getRequestPduVersion();
@@ -430,7 +435,7 @@
depth+1,handlers,
checker);
}catch(SnmpStatusException ex) {
- throw noSuchObjectException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
} finally {
checker.remove(depth);
}
@@ -455,7 +460,7 @@
try {
checker.checkCurrentOid();
} catch(SnmpStatusException e) {
- throw noSuchObjectException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
} finally {
checker.remove(depth,2);
}
@@ -500,7 +505,7 @@
// The oid is not valid, we will throw an exception in order
// to try with the next valid identifier...
//
- throw noSuchObjectException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
} catch (SnmpStatusException e) {
// We didn't find anything at the given arc, so we're going
--- a/jdk/src/share/classes/com/sun/jmx/snmp/agent/SnmpMibNode.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/snmp/agent/SnmpMibNode.java Wed Jul 05 19:27:58 2017 +0200
@@ -155,7 +155,7 @@
long[] oid, int depth,
SnmpRequestTree handlers)
throws SnmpStatusException {
- throw noSuchObjectException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
}
/**
@@ -183,7 +183,7 @@
long[] oid, int pos, int depth,
SnmpRequestTree handlers, AcmChecker checker)
throws SnmpStatusException {
- throw noSuchObjectException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
}
/**
@@ -346,8 +346,9 @@
final int[] a = table;
final int val= (int) value;
- if (a == null)
- throw noSuchObjectException;
+ if (a == null) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
int low= 0;
int max= a.length;
@@ -356,11 +357,13 @@
// Basic check
//
- if (max < 1)
- throw noSuchObjectException;
+ if (max < 1) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
- if (a[max-1] <= val)
- throw noSuchObjectException;
+ if (a[max-1] <= val) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
while (low <= max) {
elmt= a[curr];
@@ -400,15 +403,4 @@
* Contains the list of variable identifiers.
*/
protected int[] varList;
-
- /**
- * Contains a predefined exception that is often fired when an
- * object is not found in the MIB.
- */
- static final protected SnmpStatusException noSuchInstanceException =
- new SnmpStatusException(SnmpStatusException.noSuchInstance);
- static final protected SnmpStatusException noSuchObjectException =
- new SnmpStatusException(SnmpStatusException.noSuchObject);
- static final protected SnmpStatusException noSuchNameException =
- new SnmpStatusException(SnmpDefinitions.snmpRspNoSuchName);
}
--- a/jdk/src/share/classes/com/sun/jmx/snmp/agent/SnmpMibOid.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/snmp/agent/SnmpMibOid.java Wed Jul 05 19:27:58 2017 +0200
@@ -160,12 +160,10 @@
if (depth > length) {
// Nothing is left... the oid is not valid
- throw noSuchObjectException;
-
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
} else if (depth == length) {
// The oid is not complete...
- throw noSuchInstanceException;
-
+ throw new SnmpStatusException(SnmpStatusException.noSuchInstance);
} else {
// Some children variable or subobject is being querried
// getChild() will raise an exception if no child is found.
@@ -205,12 +203,13 @@
final int length = oid.length;
SnmpMibNode node = null;
long[] result = null;
- if (handlers == null)
+ if (handlers == null) {
// This should be considered as a genErr, but we do not want to
// abort the whole request, so we're going to throw
// a noSuchObject...
//
- throw noSuchObjectException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
final Object data = handlers.getUserData();
final int pduVersion = handlers.getRequestPduVersion();
@@ -235,7 +234,7 @@
// SnmpOid result = null;
if (child == null) {
// shouldn't happen
- throw noSuchObjectException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
// validateVarId(index);
// handlers.add(this,varbind,depth);
// result = new SnmpOid(0);
@@ -444,11 +443,13 @@
// first we need to retrieve the identifier in the list of children
//
final int pos= getInsertAt(id);
- if (pos >= nbChildren)
- throw noSuchObjectException;
+ if (pos >= nbChildren) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
- if (varList[pos] != (int) id)
- throw noSuchObjectException;
+ if (varList[pos] != (int) id) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
// Access the node
//
@@ -456,10 +457,11 @@
try {
child = children.elementAtNonSync(pos);
} catch(ArrayIndexOutOfBoundsException e) {
- throw noSuchObjectException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
}
- if (child == null)
- throw noSuchInstanceException;
+ if (child == null) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchInstance);
+ }
return child;
}
--- a/jdk/src/share/classes/com/sun/jmx/snmp/agent/SnmpMibTable.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/snmp/agent/SnmpMibTable.java Wed Jul 05 19:27:58 2017 +0200
@@ -280,7 +280,7 @@
SnmpVarBind var;
for (Enumeration<SnmpVarBind> e= r.getElements(); e.hasMoreElements();) {
var = e.nextElement();
- r.registerGetException(var,noSuchInstanceException);
+ r.registerGetException(var,new SnmpStatusException(SnmpStatusException.noSuchInstance));
}
}
@@ -1607,8 +1607,9 @@
protected SnmpOid getNextOid(SnmpOid oid, Object userData)
throws SnmpStatusException {
- if (size == 0)
- throw noSuchInstanceException;
+ if (size == 0) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchInstance);
+ }
final SnmpOid resOid = oid;
@@ -1619,7 +1620,7 @@
if (last.equals(resOid)) {
// Last element of the table ...
//
- throw noSuchInstanceException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchInstance);
}
// First find the oid. This will allow to speed up retrieval process
@@ -1641,12 +1642,12 @@
// XX last = (SnmpOid) oids.elementAt(newPos);
last = tableoids[newPos];
} catch(ArrayIndexOutOfBoundsException e) {
- throw noSuchInstanceException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchInstance);
}
} else {
// We are dealing with the last element of the table ..
//
- throw noSuchInstanceException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchInstance);
}
@@ -1668,8 +1669,9 @@
*/
protected SnmpOid getNextOid(Object userData)
throws SnmpStatusException {
- if (size == 0)
- throw noSuchInstanceException;
+ if (size == 0) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchInstance);
+ }
// XX return (SnmpOid) oids.firstElement();
return tableoids[0];
}
@@ -1875,10 +1877,10 @@
// not support creation.
// We know that the entry does not exists if (isentry == false).
if (!hasEntry) {
- if (!handlers.isCreationAllowed())
+ if (!handlers.isCreationAllowed()) {
// we're not doing a set
- throw noSuchInstanceException;
- else if (!isCreationEnabled())
+ throw new SnmpStatusException(SnmpStatusException.noSuchInstance);
+ } else if (!isCreationEnabled())
// we're doing a set but creation is disabled.
throw new
SnmpStatusException(SnmpStatusException.snmpRspNoAccess);
@@ -1922,12 +1924,13 @@
int length = oid.length;
- if (handlers == null)
- // This should be considered as a genErr, but we do not want to
- // abort the whole request, so we're going to throw
- // a noSuchObject...
- //
- throw noSuchObjectException;
+ if (handlers == null) {
+ // This should be considered as a genErr, but we do not want to
+ // abort the whole request, so we're going to throw
+ // a noSuchObject...
+ //
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
final Object data = handlers.getUserData();
final int pduVersion = handlers.getRequestPduVersion();
@@ -1961,7 +1964,7 @@
// so we won't find the next element in this table... (any
// element in this table will have a smaller OID)
//
- throw noSuchObjectException;
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
} else if (oid[pos] < nodeId) {
// we must return the first leaf under the first columnar
// object, so we are back to our first case where pos was
@@ -2051,8 +2054,9 @@
// in tables can't be properly supported (all rows
// must have the same holes)
//
- if (skipEntryVariable(entryoid,var,data,pduVersion))
- throw noSuchObjectException;
+ if (skipEntryVariable(entryoid,var,data,pduVersion)) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
} catch(SnmpStatusException se) {
entryoid = getNextOid(data);
var = getNextVarEntryId(entryoid,var,data,pduVersion);
@@ -2085,8 +2089,9 @@
// So we throw the exception.
// => will skip to next node in the MIB tree.
//
- if (entryoid == null || var == -1 ) throw noSuchObjectException;
-
+ if (entryoid == null || var == -1 ) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
// So here we know both the row (entryoid) and the column (var)
//
@@ -2097,8 +2102,9 @@
// for this specific entry, it is not readable for any
// other entry => skip to next column.
//
- if (!isReadableEntryId(entryoid,var,data))
- throw noSuchObjectException;
+ if (!isReadableEntryId(entryoid,var,data)) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
// Prepare the result and the ACM checker.
//
@@ -2161,8 +2167,9 @@
// No need to continue, we throw an exception.
// => will skip to next node in the MIB tree.
//
- if (entryoid == null || var == -1 )
- throw noSuchObjectException;
+ if (entryoid == null || var == -1 ) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
}
}
@@ -2182,14 +2189,15 @@
// Control the length of the oid
//
- if (pos +2 >= length)
- throw noSuchInstanceException;
+ if (pos +2 >= length) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchInstance);
+ }
// Check that the entry identifier is specified
//
- if (oid[pos] != nodeId)
- throw noSuchObjectException;
-
+ if (oid[pos] != nodeId) {
+ throw new SnmpStatusException(SnmpStatusException.noSuchObject);
+ }
}
// ----------------------------------------------------------------------
--- a/jdk/src/share/classes/com/sun/jmx/snmp/daemon/SnmpRequestHandler.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/snmp/daemon/SnmpRequestHandler.java Wed Jul 05 19:27:58 2017 +0200
@@ -1146,7 +1146,4 @@
static final private String InterruptSysCallMsg =
"Interrupted system call";
-
- static final private SnmpStatusException noSuchNameException =
- new SnmpStatusException(SnmpDefinitions.snmpRspNoSuchName) ;
}
--- a/jdk/src/share/classes/com/sun/management/VMOption.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/com/sun/management/VMOption.java Wed Jul 05 19:27:58 2017 +0200
@@ -97,6 +97,11 @@
*/
ERGONOMIC,
/**
+ * The VM option was set using the attach framework.
+ * @since 1.9
+ */
+ ATTACH_ON_DEMAND,
+ /**
* The VM option was set via some other mechanism.
*/
OTHER
--- a/jdk/src/share/classes/com/sun/naming/internal/FactoryEnumeration.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/com/sun/naming/internal/FactoryEnumeration.java Wed Jul 05 19:27:58 2017 +0200
@@ -56,9 +56,12 @@
* references so as not to prevent GC of the class loader. Each
* weak reference is tagged with the factory's class name so the
* class can be reloaded if the reference is cleared.
-
+ *
* @param factories A non-null list
* @param loader The class loader of the list's contents
+ *
+ * This internal method is used with Thread Context Class Loader (TCCL),
+ * please don't expose this method as public.
*/
FactoryEnumeration(List<NamedWeakReference<Object>> factories,
ClassLoader loader) {
@@ -79,7 +82,8 @@
try {
if (answer == null) { // reload class if weak ref cleared
- answer = Class.forName(className, true, loader);
+ Class<?> cls = Class.forName(className, true, loader);
+ answer = cls;
}
// Instantiate Class to get factory
answer = ((Class) answer).newInstance();
--- a/jdk/src/share/classes/com/sun/naming/internal/VersionHelper12.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/com/sun/naming/internal/VersionHelper12.java Wed Jul 05 19:27:58 2017 +0200
@@ -53,21 +53,24 @@
final class VersionHelper12 extends VersionHelper {
- private boolean getSystemPropsFailed = false;
-
- VersionHelper12() {} // Disallow external from creating one of these.
+ // Disallow external from creating one of these.
+ VersionHelper12() {
+ }
public Class<?> loadClass(String className) throws ClassNotFoundException {
- ClassLoader cl = getContextClassLoader();
- return Class.forName(className, true, cl);
+ return loadClass(className, getContextClassLoader());
}
/**
- * Package private.
- */
+ * Package private.
+ *
+ * This internal method is used with Thread Context Class Loader (TCCL),
+ * please don't expose this method as public.
+ */
Class<?> loadClass(String className, ClassLoader cl)
throws ClassNotFoundException {
- return Class.forName(className, true, cl);
+ Class<?> cls = Class.forName(className, true, cl);
+ return cls;
}
/**
@@ -75,13 +78,13 @@
* @param codebase A non-null, space-separated list of URL strings.
*/
public Class<?> loadClass(String className, String codebase)
- throws ClassNotFoundException, MalformedURLException {
- ClassLoader cl;
+ throws ClassNotFoundException, MalformedURLException {
ClassLoader parent = getContextClassLoader();
- cl = URLClassLoader.newInstance(getUrlArray(codebase), parent);
+ ClassLoader cl =
+ URLClassLoader.newInstance(getUrlArray(codebase), parent);
- return Class.forName(className, true, cl);
+ return loadClass(className, cl);
}
String getJndiProperty(final int i) {
@@ -99,16 +102,12 @@
}
String[] getJndiProperties() {
- if (getSystemPropsFailed) {
- return null; // after one failure, don't bother trying again
- }
Properties sysProps = AccessController.doPrivileged(
new PrivilegedAction<Properties>() {
public Properties run() {
try {
return System.getProperties();
} catch (SecurityException e) {
- getSystemPropsFailed = true;
return null;
}
}
@@ -173,17 +172,32 @@
return new InputStreamEnumeration(urls);
}
+ /**
+ * Package private.
+ *
+ * This internal method returns Thread Context Class Loader (TCCL),
+ * if null, returns the system Class Loader.
+ *
+ * Please don't expose this method as public.
+ */
ClassLoader getContextClassLoader() {
+
return AccessController.doPrivileged(
new PrivilegedAction<ClassLoader>() {
public ClassLoader run() {
- return Thread.currentThread().getContextClassLoader();
+ ClassLoader loader =
+ Thread.currentThread().getContextClassLoader();
+ if (loader == null) {
+ // Don't use bootstrap class loader directly!
+ loader = ClassLoader.getSystemClassLoader();
+ }
+
+ return loader;
}
}
);
}
-
/**
* Given an enumeration of URLs, an instance of this class represents
* an enumeration of their InputStreams. Each operation on the URL
--- a/jdk/src/share/classes/com/sun/nio/sctp/SctpChannel.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/com/sun/nio/sctp/SctpChannel.java Wed Jul 05 19:27:58 2017 +0200
@@ -276,6 +276,11 @@
*
* @throws IOException
* If some other I/O error occurs
+ *
+ * @throws SecurityException
+ * If a security manager has been installed and its
+ * {@link SecurityManager#checkListen checkListen} method denies
+ * the operation
*/
public abstract SctpChannel bind(SocketAddress local)
throws IOException;
--- a/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer11.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer11.java Wed Jul 05 19:27:58 2017 +0200
@@ -382,7 +382,8 @@
} else if (!isVisible(xmlns)) {
//There is a definition but the xmlns is not selected by the xpath.
//then xmlns=""
- n = ns.addMappingAndRender(XMLNS, "", nullNode);
+ n = ns.addMappingAndRender(
+ XMLNS, "", getNullNode(xmlns.getOwnerDocument()));
}
//output the xmlns def if needed.
if (n != null) {
--- a/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer20010315.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer20010315.java Wed Jul 05 19:27:58 2017 +0200
@@ -327,7 +327,8 @@
} else if (!isVisible(xmlns)) {
//There is a definition but the xmlns is not selected by the xpath.
//then xmlns=""
- n = ns.addMappingAndRender(XMLNS, "", nullNode);
+ n = ns.addMappingAndRender(
+ XMLNS, "", getNullNode(xmlns.getOwnerDocument()));
}
//output the xmlns def if needed.
if (n != null) {
--- a/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer20010315Excl.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer20010315Excl.java Wed Jul 05 19:27:58 2017 +0200
@@ -292,7 +292,7 @@
if (xmlns != null && !isVisible(xmlns)) {
// There is a definition but the xmlns is not selected by the
// xpath. then xmlns=""
- ns.addMapping(XMLNS, "", nullNode);
+ ns.addMapping(XMLNS, "", getNullNode(xmlns.getOwnerDocument()));
}
String prefix = null;
--- a/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/CanonicalizerBase.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/c14n/implementations/CanonicalizerBase.java Wed Jul 05 19:27:58 2017 +0200
@@ -34,8 +34,6 @@
import java.util.Map;
import java.util.Set;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import com.sun.org.apache.xml.internal.security.c14n.CanonicalizationException;
@@ -49,6 +47,7 @@
import org.w3c.dom.Attr;
import org.w3c.dom.Comment;
import org.w3c.dom.Element;
+import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.ProcessingInstruction;
@@ -64,8 +63,9 @@
public static final String XMLNS = "xmlns";
protected static final AttrCompare COMPARE = new AttrCompare();
- protected static final Attr nullNode;
+ // Make sure you clone the following mutable arrays before passing to
+ // potentially untrusted objects such as OutputStreams.
private static final byte[] END_PI = {'?','>'};
private static final byte[] BEGIN_PI = {'<','?'};
private static final byte[] END_COMM = {'-','-','>'};
@@ -78,27 +78,17 @@
private static final byte[] LT = {'&','l','t',';'};
private static final byte[] END_TAG = {'<','/'};
private static final byte[] AMP = {'&','a','m','p',';'};
- private static final byte[] equalsStr = {'=','\"'};
+ private static final byte[] EQUALS_STR = {'=','\"'};
protected static final int NODE_BEFORE_DOCUMENT_ELEMENT = -1;
protected static final int NODE_NOT_BEFORE_OR_AFTER_DOCUMENT_ELEMENT = 0;
protected static final int NODE_AFTER_DOCUMENT_ELEMENT = 1;
- static {
- // The null xmlns definition.
- try {
- DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
- nullNode = documentBuilder.newDocument().createAttributeNS(Constants.NamespaceSpecNS, XMLNS);
- nullNode.setValue("");
- } catch (Exception e) {
- throw new RuntimeException("Unable to create nullNode: " + e);
- }
- }
-
private List<NodeFilter> nodeFilter;
private boolean includeComments;
private Set<Node> xpathNodeSet;
+
/**
* The node to be skipped/excluded from the DOM tree
* in subtree canonicalizations.
@@ -107,6 +97,11 @@
private OutputStream writer = new ByteArrayOutputStream();
/**
+ * The null xmlns definition.
+ */
+ private Attr nullNode;
+
+ /**
* Constructor CanonicalizerBase
*
* @param includeComments
@@ -310,7 +305,7 @@
writer.write('>');
sibling = currentNode.getFirstChild();
if (sibling == null) {
- writer.write(END_TAG);
+ writer.write(END_TAG.clone());
UtfHelpper.writeStringToUtf8(name, writer);
writer.write('>');
//We finished with this level, pop to the previous definitions.
@@ -328,7 +323,7 @@
break;
}
while (sibling == null && parentNode != null) {
- writer.write(END_TAG);
+ writer.write(END_TAG.clone());
UtfHelpper.writeByte(((Element)parentNode).getTagName(), writer, cache);
writer.write('>');
//We finished with this level, pop to the previous definitions.
@@ -488,7 +483,7 @@
if (sibling == null) {
if (currentNodeIsVisible) {
- writer.write(END_TAG);
+ writer.write(END_TAG.clone());
UtfHelpper.writeByte(name, writer, cache);
writer.write('>');
//We finished with this level, pop to the previous definitions.
@@ -510,7 +505,7 @@
}
while (sibling == null && parentNode != null) {
if (isVisible(parentNode)) {
- writer.write(END_TAG);
+ writer.write(END_TAG.clone());
UtfHelpper.writeByte(((Element)parentNode).getTagName(), writer, cache);
writer.write('>');
//We finished with this level, pop to the previous definitions.
@@ -641,8 +636,9 @@
parents.clear();
Attr nsprefix;
if (((nsprefix = ns.getMappingWithoutRendered(XMLNS)) != null)
- && "".equals(nsprefix.getValue())) {
- ns.addMappingAndRender(XMLNS, "", nullNode);
+ && "".equals(nsprefix.getValue())) {
+ ns.addMappingAndRender(
+ XMLNS, "", getNullNode(nsprefix.getOwnerDocument()));
}
}
@@ -696,7 +692,7 @@
) throws IOException {
writer.write(' ');
UtfHelpper.writeByte(name, writer, cache);
- writer.write(equalsStr);
+ writer.write(EQUALS_STR.clone());
byte[] toWrite;
final int length = value.length();
int i = 0;
@@ -706,27 +702,27 @@
switch (c) {
case '&' :
- toWrite = AMP;
+ toWrite = AMP.clone();
break;
case '<' :
- toWrite = LT;
+ toWrite = LT.clone();
break;
case '"' :
- toWrite = QUOT;
+ toWrite = QUOT.clone();
break;
case 0x09 : // '\t'
- toWrite = X9;
+ toWrite = X9.clone();
break;
case 0x0A : // '\n'
- toWrite = XA;
+ toWrite = XA.clone();
break;
case 0x0D : // '\r'
- toWrite = XD;
+ toWrite = XD.clone();
break;
default :
@@ -756,7 +752,7 @@
if (position == NODE_AFTER_DOCUMENT_ELEMENT) {
writer.write('\n');
}
- writer.write(BEGIN_PI);
+ writer.write(BEGIN_PI.clone());
final String target = currentPI.getTarget();
int length = target.length();
@@ -764,7 +760,7 @@
for (int i = 0; i < length; i++) {
char c = target.charAt(i);
if (c == 0x0D) {
- writer.write(XD);
+ writer.write(XD.clone());
} else {
if (c < 0x80) {
writer.write(c);
@@ -784,14 +780,14 @@
for (int i = 0; i < length; i++) {
char c = data.charAt(i);
if (c == 0x0D) {
- writer.write(XD);
+ writer.write(XD.clone());
} else {
UtfHelpper.writeCharToUtf8(c, writer);
}
}
}
- writer.write(END_PI);
+ writer.write(END_PI.clone());
if (position == NODE_BEFORE_DOCUMENT_ELEMENT) {
writer.write('\n');
}
@@ -810,7 +806,7 @@
if (position == NODE_AFTER_DOCUMENT_ELEMENT) {
writer.write('\n');
}
- writer.write(BEGIN_COMM);
+ writer.write(BEGIN_COMM.clone());
final String data = currentComment.getData();
final int length = data.length();
@@ -818,7 +814,7 @@
for (int i = 0; i < length; i++) {
char c = data.charAt(i);
if (c == 0x0D) {
- writer.write(XD);
+ writer.write(XD.clone());
} else {
if (c < 0x80) {
writer.write(c);
@@ -828,7 +824,7 @@
}
}
- writer.write(END_COMM);
+ writer.write(END_COMM.clone());
if (position == NODE_BEFORE_DOCUMENT_ELEMENT) {
writer.write('\n');
}
@@ -852,19 +848,19 @@
switch (c) {
case '&' :
- toWrite = AMP;
+ toWrite = AMP.clone();
break;
case '<' :
- toWrite = LT;
+ toWrite = LT.clone();
break;
case '>' :
- toWrite = GT;
+ toWrite = GT.clone();
break;
case 0xD :
- toWrite = XD;
+ toWrite = XD.clone();
break;
default :
@@ -879,4 +875,18 @@
}
}
+ // The null xmlns definition.
+ protected Attr getNullNode(Document ownerDocument) {
+ if (nullNode == null) {
+ try {
+ nullNode = ownerDocument.createAttributeNS(
+ Constants.NamespaceSpecNS, XMLNS);
+ nullNode.setValue("");
+ } catch (Exception e) {
+ throw new RuntimeException("Unable to create nullNode: " + e);
+ }
+ }
+ return nullNode;
+ }
+
}
--- a/jdk/src/share/classes/com/sun/rowset/internal/XmlReaderContentHandler.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/com/sun/rowset/internal/XmlReaderContentHandler.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -660,7 +660,7 @@
//Added the handling for Class tags to take care of maps
//Makes an entry into the map upon end of class tag
try{
- typeMap.put(Key_map,Class.forName(Value_map));
+ typeMap.put(Key_map,sun.reflect.misc.ReflectUtil.forName(Value_map));
}catch(ClassNotFoundException ex) {
throw new SAXException(MessageFormat.format(resBundle.handleGetObject("xmlrch.errmap").toString(), ex.getMessage()));
--- a/jdk/src/share/classes/java/awt/AWTEventMulticaster.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/AWTEventMulticaster.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -609,6 +609,7 @@
* @param b window-state-listener-b
* @since 1.4
*/
+ @SuppressWarnings("overloads")
public static WindowStateListener add(WindowStateListener a,
WindowStateListener b) {
return (WindowStateListener)addInternal(a, b);
@@ -632,6 +633,7 @@
* @param a action-listener-a
* @param b action-listener-b
*/
+ @SuppressWarnings("overloads")
public static ActionListener add(ActionListener a, ActionListener b) {
return (ActionListener)addInternal(a, b);
}
@@ -642,6 +644,7 @@
* @param a item-listener-a
* @param b item-listener-b
*/
+ @SuppressWarnings("overloads")
public static ItemListener add(ItemListener a, ItemListener b) {
return (ItemListener)addInternal(a, b);
}
@@ -652,9 +655,11 @@
* @param a adjustment-listener-a
* @param b adjustment-listener-b
*/
+ @SuppressWarnings("overloads")
public static AdjustmentListener add(AdjustmentListener a, AdjustmentListener b) {
return (AdjustmentListener)addInternal(a, b);
}
+ @SuppressWarnings("overloads")
public static TextListener add(TextListener a, TextListener b) {
return (TextListener)addInternal(a, b);
}
@@ -676,6 +681,7 @@
* @param b hierarchy-listener-b
* @since 1.3
*/
+ @SuppressWarnings("overloads")
public static HierarchyListener add(HierarchyListener a, HierarchyListener b) {
return (HierarchyListener)addInternal(a, b);
}
@@ -698,6 +704,7 @@
* @param b mouse-wheel-listener-b
* @since 1.4
*/
+ @SuppressWarnings("overloads")
public static MouseWheelListener add(MouseWheelListener a,
MouseWheelListener b) {
return (MouseWheelListener)addInternal(a, b);
@@ -780,6 +787,7 @@
* @param oldl the window-state-listener being removed
* @since 1.4
*/
+ @SuppressWarnings("overloads")
public static WindowStateListener remove(WindowStateListener l,
WindowStateListener oldl) {
return (WindowStateListener) removeInternal(l, oldl);
@@ -803,6 +811,7 @@
* @param l action-listener-l
* @param oldl the action-listener being removed
*/
+ @SuppressWarnings("overloads")
public static ActionListener remove(ActionListener l, ActionListener oldl) {
return (ActionListener) removeInternal(l, oldl);
}
@@ -813,6 +822,7 @@
* @param l item-listener-l
* @param oldl the item-listener being removed
*/
+ @SuppressWarnings("overloads")
public static ItemListener remove(ItemListener l, ItemListener oldl) {
return (ItemListener) removeInternal(l, oldl);
}
@@ -823,9 +833,11 @@
* @param l adjustment-listener-l
* @param oldl the adjustment-listener being removed
*/
+ @SuppressWarnings("overloads")
public static AdjustmentListener remove(AdjustmentListener l, AdjustmentListener oldl) {
return (AdjustmentListener) removeInternal(l, oldl);
}
+ @SuppressWarnings("overloads")
public static TextListener remove(TextListener l, TextListener oldl) {
return (TextListener) removeInternal(l, oldl);
}
@@ -847,6 +859,7 @@
* @param oldl the hierarchy-listener being removed
* @since 1.3
*/
+ @SuppressWarnings("overloads")
public static HierarchyListener remove(HierarchyListener l, HierarchyListener oldl) {
return (HierarchyListener) removeInternal(l, oldl);
}
@@ -870,6 +883,7 @@
* @param oldl the mouse-wheel-listener being removed
* @since 1.4
*/
+ @SuppressWarnings("overloads")
public static MouseWheelListener remove(MouseWheelListener l,
MouseWheelListener oldl) {
return (MouseWheelListener) removeInternal(l, oldl);
--- a/jdk/src/share/classes/java/awt/Graphics2D.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/Graphics2D.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 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
@@ -44,7 +44,7 @@
* control over geometry, coordinate transformations, color management,
* and text layout. This is the fundamental class for rendering
* 2-dimensional shapes, text and images on the Java(tm) platform.
- * <p>
+ *
* <h2>Coordinate Spaces</h2>
* All coordinates passed to a <code>Graphics2D</code> object are specified
* in a device-independent coordinate system called User Space, which is
@@ -229,7 +229,7 @@
*
* <h2>Default Rendering Attributes</h2>
* The default values for the <code>Graphics2D</code> rendering attributes are:
- * <dl compact>
+ * <dl>
* <dt><i><code>Paint</code></i>
* <dd>The color of the <code>Component</code>.
* <dt><i><code>Font</code></i>
@@ -351,7 +351,7 @@
* fill(new Rectangle(x, y, w, h));
* </pre>
* is called.
- * <p>
+ *
* <li>
* Similarly, for draw operations, including <code>drawLine</code>,
* <code>drawRect</code>, <code>drawRoundRect</code>,
@@ -363,7 +363,7 @@
* draw(new Rectangle(x, y, w, h));
* </pre>
* is called.
- * <p>
+ *
* <li>
* The <code>draw3DRect</code> and <code>fill3DRect</code> methods were
* implemented in terms of the <code>drawLine</code> and
--- a/jdk/src/share/classes/java/awt/MediaTracker.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/MediaTracker.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 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
@@ -65,7 +65,7 @@
*
* <p>
* Here is an example of using <code>MediaTracker</code>:
- * <p>
+ *
* <hr><blockquote><pre>{@code
* import java.applet.Applet;
* import java.awt.Color;
--- a/jdk/src/share/classes/java/awt/Toolkit.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/Toolkit.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -2299,6 +2299,7 @@
super(a, b);
}
+ @SuppressWarnings("overloads")
static AWTEventListener add(AWTEventListener a,
AWTEventListener b) {
if (a == null) return b;
@@ -2306,6 +2307,7 @@
return new ToolkitEventMulticaster(a, b);
}
+ @SuppressWarnings("overloads")
static AWTEventListener remove(AWTEventListener l,
AWTEventListener oldl) {
return (AWTEventListener) removeInternal(l, oldl);
--- a/jdk/src/share/classes/java/awt/datatransfer/Clipboard.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/datatransfer/Clipboard.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -54,7 +54,13 @@
String name;
+ /**
+ * The owner of the clipboard.
+ */
protected ClipboardOwner owner;
+ /**
+ * Contents of the clipboard.
+ */
protected Transferable contents;
/**
@@ -75,7 +81,7 @@
/**
* Creates a clipboard object.
- *
+ * @param name for the clipboard
* @see java.awt.Toolkit#getSystemClipboard
*/
public Clipboard(String name) {
@@ -84,6 +90,7 @@
/**
* Returns the name of this clipboard object.
+ * @return the name of this clipboard object
*
* @see java.awt.Toolkit#getSystemClipboard
*/
--- a/jdk/src/share/classes/java/awt/datatransfer/DataFlavor.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/datatransfer/DataFlavor.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -1184,16 +1184,24 @@
/**
* Does the <code>DataFlavor</code> represent a serialized object?
+ * @return whether or not a serialized object is represented
*/
-
public boolean isMimeTypeSerializedObject() {
return isMimeTypeEqual(javaSerializedObjectMimeType);
}
+ /**
+ * Returns the default representation class.
+ * @return the default representation class
+ */
public final Class<?> getDefaultRepresentationClass() {
return ioInputStreamClass;
}
+ /**
+ * Returns the name of the default representation class.
+ * @return the name of the default representation class
+ */
public final String getDefaultRepresentationClassAsString() {
return getDefaultRepresentationClass().getName();
}
@@ -1201,8 +1209,9 @@
/**
* Does the <code>DataFlavor</code> represent a
* <code>java.io.InputStream</code>?
+ * @return whether or not this {@code DataFlavor} represent a
+ * {@code java.io.InputStream}
*/
-
public boolean isRepresentationClassInputStream() {
return ioInputStreamClass.isAssignableFrom(representationClass);
}
@@ -1211,6 +1220,9 @@
* Returns whether the representation class for this
* <code>DataFlavor</code> is <code>java.io.Reader</code> or a subclass
* thereof.
+ * @return whether or not the representation class for this
+ * {@code DataFlavor} is {@code java.io.Reader} or a subclass
+ * thereof
*
* @since 1.4
*/
@@ -1222,6 +1234,9 @@
* Returns whether the representation class for this
* <code>DataFlavor</code> is <code>java.nio.CharBuffer</code> or a
* subclass thereof.
+ * @return whether or not the representation class for this
+ * {@code DataFlavor} is {@code java.nio.CharBuffer} or a subclass
+ * thereof
*
* @since 1.4
*/
@@ -1233,6 +1248,9 @@
* Returns whether the representation class for this
* <code>DataFlavor</code> is <code>java.nio.ByteBuffer</code> or a
* subclass thereof.
+ * @return whether or not the representation class for this
+ * {@code DataFlavor} is {@code java.nio.ByteBuffer} or a subclass
+ * thereof
*
* @since 1.4
*/
@@ -1408,6 +1426,9 @@
*
* This method is never invoked by this implementation from 1.1 onwards.
*
+ * @param parameterName the parameter name
+ * @param parameterValue the parameter value
+ * @return the parameter value
* @deprecated
*/
@Deprecated
@@ -1424,6 +1445,8 @@
*
* This method is never invoked by this implementation from 1.1 onwards.
*
+ * @param mimeType the mime type
+ * @return the mime type
* @deprecated
*/
@Deprecated
--- a/jdk/src/share/classes/java/awt/datatransfer/StringSelection.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/datatransfer/StringSelection.java Wed Jul 05 19:27:58 2017 +0200
@@ -57,6 +57,7 @@
/**
* Creates a <code>Transferable</code> capable of transferring
* the specified <code>String</code>.
+ * @param data the string to be transferred
*/
public StringSelection(String data) {
this.data = data;
--- a/jdk/src/share/classes/java/awt/datatransfer/SystemFlavorMap.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/datatransfer/SystemFlavorMap.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -181,6 +181,7 @@
/**
* Returns the default FlavorMap for this thread's ClassLoader.
+ * @return the default FlavorMap for this thread's ClassLoader
*/
public static FlavorMap getDefaultFlavorMap() {
ClassLoader contextClassLoader =
@@ -1309,6 +1310,8 @@
* @param nat the <code>String</code> to decode
* @return the decoded <code>DataFlavor</code>, or <code>null</code> if
* nat is not an encoded <code>String</code> native
+ * @throws ClassNotFoundException if the class of the data flavor
+ * is not loaded
*/
public static DataFlavor decodeDataFlavor(String nat)
throws ClassNotFoundException
--- a/jdk/src/share/classes/java/awt/datatransfer/Transferable.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/datatransfer/Transferable.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -62,6 +62,7 @@
* of the object returned is defined by the representation class of the flavor.
*
* @param flavor the requested flavor for the data
+ * @return an object which represents the data to be transferred
* @see DataFlavor#getRepresentationClass
* @exception IOException if the data is no longer available
* in the requested flavor.
--- a/jdk/src/share/classes/java/awt/dnd/DnDEventMulticaster.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/dnd/DnDEventMulticaster.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -141,6 +141,7 @@
* @param a drag-source-motion-listener-a
* @param b drag-source-motion-listener-b
*/
+ @SuppressWarnings("overloads")
public static DragSourceMotionListener add(DragSourceMotionListener a,
DragSourceMotionListener b) {
return (DragSourceMotionListener)addInternal(a, b);
@@ -166,6 +167,7 @@
* @param l drag-source-motion-listener-l
* @param ol the drag-source-motion-listener being removed
*/
+ @SuppressWarnings("overloads")
public static DragSourceMotionListener remove(DragSourceMotionListener l,
DragSourceMotionListener ol) {
return (DragSourceMotionListener)removeInternal(l, ol);
--- a/jdk/src/share/classes/java/awt/dnd/DragSource.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/dnd/DragSource.java Wed Jul 05 19:27:58 2017 +0200
@@ -495,6 +495,7 @@
* and <code>DragGestureListener</code> on
* the newly created object.
* <P>
+ * @param <T> the type of {@code DragGestureRecognizer} to create
* @param recognizerAbstractClass the requested abstract type
* @param actions the permitted source drag actions
* @param c the <code>Component</code> target
@@ -669,6 +670,7 @@
* <code><em>Foo</em>Listener</code>s are registered using the
* <code>add<em>Foo</em>Listener</code> method.
*
+ * @param <T> the type of listener objects
* @param listenerType the type of listeners requested; this parameter
* should specify an interface that descends from
* <code>java.util.EventListener</code>
--- a/jdk/src/share/classes/java/awt/dnd/DropTarget.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/dnd/DropTarget.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -566,6 +566,7 @@
* DropTargetContextPeer as a drag operation encounters this
* DropTarget. Accessing the Context while no Drag is current
* has undefined results.
+ * @return the DropTargetContext associated with this DropTarget
*/
protected DropTargetContext createDropTargetContext() {
@@ -766,9 +767,10 @@
/**
* create an embedded autoscroller
- * <P>
+ *
* @param c the <code>Component</code>
* @param p the <code>Point</code>
+ * @return an embedded autoscroller
*/
protected DropTargetAutoScroller createDropTargetAutoScroller(Component c, Point p) {
--- a/jdk/src/share/classes/java/awt/dnd/peer/DragSourceContextPeer.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/dnd/peer/DragSourceContextPeer.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -47,18 +47,24 @@
/**
* start a drag
+ * @param dsc the DragSourceContext
+ * @param c the cursor
+ * @param dragImage the image to be dragged
+ * @param imageOffset the offset
*/
void startDrag(DragSourceContext dsc, Cursor c, Image dragImage, Point imageOffset) throws InvalidDnDOperationException;
/**
* return the current drag cursor
+ * @return the current drag cursor
*/
Cursor getCursor();
/**
* set the current drag cursor
+ * @param c the cursor
*/
void setCursor(Cursor c) throws InvalidDnDOperationException;
--- a/jdk/src/share/classes/java/awt/dnd/peer/DropTargetContextPeer.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/dnd/peer/DropTargetContextPeer.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -44,35 +44,42 @@
/**
* update the peer's notion of the Target's actions
+ * @param actions the actions
*/
void setTargetActions(int actions);
/**
* get the current Target actions
+ * @return the current Target actions
*/
int getTargetActions();
/**
* get the DropTarget associated with this peer
+ * @return the DropTarget associated with this peer
*/
DropTarget getDropTarget();
/**
* get the (remote) DataFlavors from the peer
+ * @return the (remote) DataFlavors from the peer
*/
DataFlavor[] getTransferDataFlavors();
/**
* get an input stream to the remote data
+ * @return an input stream to the remote data
*/
Transferable getTransferable() throws InvalidDnDOperationException;
/**
+ * Return whether or not the DragSource Transferable is in the
+ * same JVM as the Target.
* @return if the DragSource Transferable is in the same JVM as the Target
*/
@@ -80,6 +87,7 @@
/**
* accept the Drag
+ * @param dragAction the drag action
*/
void acceptDrag(int dragAction);
@@ -92,6 +100,7 @@
/**
* accept the Drop
+ * @param dropAction the drop action
*/
void acceptDrop(int dropAction);
@@ -104,6 +113,7 @@
/**
* signal complete
+ * @param success the signal
*/
void dropComplete(boolean success);
--- a/jdk/src/share/classes/java/awt/event/AWTEventListener.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/AWTEventListener.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -56,6 +56,7 @@
/**
* Invoked when an event is dispatched in the AWT.
+ * @param event the event to be processed
*/
public void eventDispatched(AWTEvent event);
--- a/jdk/src/share/classes/java/awt/event/ActionListener.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/ActionListener.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 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
@@ -46,6 +46,7 @@
/**
* Invoked when an action occurs.
+ * @param e the event to be processed
*/
public void actionPerformed(ActionEvent e);
--- a/jdk/src/share/classes/java/awt/event/AdjustmentListener.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/AdjustmentListener.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 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,6 +37,7 @@
/**
* Invoked when the value of the adjustable has changed.
+ * @param e the event to be processed
*/
public void adjustmentValueChanged(AdjustmentEvent e);
--- a/jdk/src/share/classes/java/awt/event/ComponentListener.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/ComponentListener.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 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
@@ -54,21 +54,25 @@
public interface ComponentListener extends EventListener {
/**
* Invoked when the component's size changes.
+ * @param e the event to be processed
*/
public void componentResized(ComponentEvent e);
/**
* Invoked when the component's position changes.
+ * @param e the event to be processed
*/
public void componentMoved(ComponentEvent e);
/**
* Invoked when the component has been made visible.
+ * @param e the event to be processed
*/
public void componentShown(ComponentEvent e);
/**
* Invoked when the component has been made invisible.
+ * @param e the event to be processed
*/
public void componentHidden(ComponentEvent e);
}
--- a/jdk/src/share/classes/java/awt/event/ContainerListener.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/ContainerListener.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 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
@@ -55,11 +55,13 @@
public interface ContainerListener extends EventListener {
/**
* Invoked when a component has been added to the container.
+ * @param e the event to be processed
*/
public void componentAdded(ContainerEvent e);
/**
* Invoked when a component has been removed from the container.
+ * @param e the event to be processed
*/
public void componentRemoved(ContainerEvent e);
--- a/jdk/src/share/classes/java/awt/event/FocusListener.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/FocusListener.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 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
@@ -51,11 +51,13 @@
/**
* Invoked when a component gains the keyboard focus.
+ * @param e the event to be processed
*/
public void focusGained(FocusEvent e);
/**
* Invoked when a component loses the keyboard focus.
+ * @param e the event to be processed
*/
public void focusLost(FocusEvent e);
}
--- a/jdk/src/share/classes/java/awt/event/HierarchyBoundsListener.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/HierarchyBoundsListener.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 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
@@ -52,11 +52,13 @@
public interface HierarchyBoundsListener extends EventListener {
/**
* Called when an ancestor of the source is moved.
+ * @param e the event to be processed
*/
public void ancestorMoved(HierarchyEvent e);
/**
* Called when an ancestor of the source is resized.
+ * @param e the event to be processed
*/
public void ancestorResized(HierarchyEvent e);
}
--- a/jdk/src/share/classes/java/awt/event/HierarchyListener.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/HierarchyListener.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 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
@@ -51,6 +51,7 @@
* Called when the hierarchy has been changed. To discern the actual
* type of change, call <code>HierarchyEvent.getChangeFlags()</code>.
*
+ * @param e the event to be processed
* @see HierarchyEvent#getChangeFlags()
*/
public void hierarchyChanged(HierarchyEvent e);
--- a/jdk/src/share/classes/java/awt/event/InputEvent.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/InputEvent.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 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
@@ -233,7 +233,8 @@
* This limit is defined by the relevant number
* of buttons that may hypothetically exist on the mouse but it is greater than the
* {@link java.awt.MouseInfo#getNumberOfButtons() MouseInfo.getNumberOfButtons()}.
- * <p>
+ *
+ * @return a mask for an existing mouse button.
* @throws IllegalArgumentException if {@code button} is less than zero or greater than the number
* of button masks reserved for buttons
* @since 7.0
@@ -368,6 +369,7 @@
/**
* Returns whether or not the Shift modifier is down on this event.
+ * @return whether or not the Shift modifier is down on this event
*/
public boolean isShiftDown() {
return (modifiers & SHIFT_MASK) != 0;
@@ -375,6 +377,7 @@
/**
* Returns whether or not the Control modifier is down on this event.
+ * @return whether or not the Control modifier is down on this event
*/
public boolean isControlDown() {
return (modifiers & CTRL_MASK) != 0;
@@ -382,6 +385,7 @@
/**
* Returns whether or not the Meta modifier is down on this event.
+ * @return whether or not the Meta modifier is down on this event
*/
public boolean isMetaDown() {
return (modifiers & META_MASK) != 0;
@@ -389,6 +393,7 @@
/**
* Returns whether or not the Alt modifier is down on this event.
+ * @return whether or not the Alt modifier is down on this event
*/
public boolean isAltDown() {
return (modifiers & ALT_MASK) != 0;
@@ -396,6 +401,7 @@
/**
* Returns whether or not the AltGraph modifier is down on this event.
+ * @return whether or not the AltGraph modifier is down on this event
*/
public boolean isAltGraphDown() {
return (modifiers & ALT_GRAPH_MASK) != 0;
@@ -404,6 +410,7 @@
/**
* Returns the difference in milliseconds between the timestamp of when this event occurred and
* midnight, January 1, 1970 UTC.
+ * @return the difference in milliseconds between the timestamp and midnight, January 1, 1970 UTC
*/
public long getWhen() {
return when;
@@ -411,6 +418,7 @@
/**
* Returns the modifier mask for this event.
+ * @return the modifier mask for this event
*/
public int getModifiers() {
return modifiers & (JDK_1_3_MODIFIERS | HIGH_MODIFIERS);
@@ -451,6 +459,7 @@
* </PRE>
* The above code will work even if new modifiers are added.
*
+ * @return the extended modifier mask for this event
* @since 1.4
*/
public int getModifiersEx() {
@@ -467,6 +476,7 @@
/**
* Returns whether or not this event has been consumed.
+ * @return whether or not this event has been consumed
* @see #consume
*/
public boolean isConsumed() {
@@ -487,6 +497,9 @@
* Zero parameter means that no modifiers were passed and will
* cause the returning an empty string.
*
+ * @return a String describing the extended modifier keys and
+ * mouse buttons
+ *
* @param modifiers a modifier mask describing the extended
* modifier keys and mouse buttons for the event
* @return a text description of the combination of extended
--- a/jdk/src/share/classes/java/awt/event/InputMethodEvent.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/InputMethodEvent.java Wed Jul 05 19:27:58 2017 +0200
@@ -277,6 +277,7 @@
/**
* Gets the number of committed characters in the text.
+ * @return the number of committed characters in the text
*/
public int getCommittedCharacterCount() {
return committedCharacterCount;
--- a/jdk/src/share/classes/java/awt/event/InputMethodListener.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/InputMethodListener.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -40,17 +40,17 @@
* @see java.awt.im.InputMethodRequests
* @since 1.2
*/
-
public interface InputMethodListener extends EventListener {
/**
* Invoked when the text entered through an input method has changed.
+ * @param event the event to be processed
*/
void inputMethodTextChanged(InputMethodEvent event);
/**
* Invoked when the caret within composed text has changed.
+ * @param event the event to be processed
*/
void caretPositionChanged(InputMethodEvent event);
-
}
--- a/jdk/src/share/classes/java/awt/event/ItemListener.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/ItemListener.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 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
@@ -50,6 +50,7 @@
* Invoked when an item has been selected or deselected by the user.
* The code written for this method performs the operations
* that need to occur when an item is selected (or deselected).
+ * @param e the event to be processed
*/
void itemStateChanged(ItemEvent e);
--- a/jdk/src/share/classes/java/awt/event/KeyEvent.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/KeyEvent.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 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
@@ -132,7 +132,7 @@
* <p>
* WARNING: Aside from those keys that are defined by the Java language
* (VK_ENTER, VK_BACK_SPACE, and VK_TAB), do not rely on the values of the VK_
- * constants. Sun reserves the right to change these values as needed
+ * constants. The platform steward reserves the right to change these values as needed
* to accommodate a wider range of keyboards in the future.
* <p>
* An unspecified behavior will be caused if the {@code id} parameter
@@ -194,21 +194,52 @@
/* Virtual key codes. */
+ /** Constant for the ENTER virtual key. */
public static final int VK_ENTER = '\n';
+
+ /** Constant for the BACK_SPACE virtual key. */
public static final int VK_BACK_SPACE = '\b';
+
+ /** Constant for the TAB virtual key. */
public static final int VK_TAB = '\t';
+
+ /** Constant for the CANCEL virtual key. */
public static final int VK_CANCEL = 0x03;
+
+ /** Constant for the CLEAR virtual key. */
public static final int VK_CLEAR = 0x0C;
+
+ /** Constant for the SHIFT virtual key. */
public static final int VK_SHIFT = 0x10;
+
+ /** Constant for the CONTROL virtual key. */
public static final int VK_CONTROL = 0x11;
+
+ /** Constant for the ALT virtual key. */
public static final int VK_ALT = 0x12;
+
+ /** Constant for the PAUSE virtual key. */
public static final int VK_PAUSE = 0x13;
+
+ /** Constant for the CAPS_LOCK virtual key. */
public static final int VK_CAPS_LOCK = 0x14;
+
+ /** Constant for the ESCAPE virtual key. */
public static final int VK_ESCAPE = 0x1B;
+
+ /** Constant for the SPACE virtual key. */
public static final int VK_SPACE = 0x20;
+
+ /** Constant for the PAGE_UP virtual key. */
public static final int VK_PAGE_UP = 0x21;
+
+ /** Constant for the PAGE_DOWN virtual key. */
public static final int VK_PAGE_DOWN = 0x22;
+
+ /** Constant for the END virtual key. */
public static final int VK_END = 0x23;
+
+ /** Constant for the HOME virtual key. */
public static final int VK_HOME = 0x24;
/**
@@ -257,15 +288,35 @@
public static final int VK_SLASH = 0x2F;
/** VK_0 thru VK_9 are the same as ASCII '0' thru '9' (0x30 - 0x39) */
+
+ /** Constant for the "0" key. */
public static final int VK_0 = 0x30;
+
+ /** Constant for the "1" key. */
public static final int VK_1 = 0x31;
+
+ /** Constant for the "2" key. */
public static final int VK_2 = 0x32;
+
+ /** Constant for the "3" key. */
public static final int VK_3 = 0x33;
+
+ /** Constant for the "4" key. */
public static final int VK_4 = 0x34;
+
+ /** Constant for the "5" key. */
public static final int VK_5 = 0x35;
+
+ /** Constant for the "6" key. */
public static final int VK_6 = 0x36;
+
+ /** Constant for the "7" key. */
public static final int VK_7 = 0x37;
+
+ /** Constant for the "8" key. */
public static final int VK_8 = 0x38;
+
+ /** Constant for the "9" key. */
public static final int VK_9 = 0x39;
/**
@@ -279,31 +330,83 @@
public static final int VK_EQUALS = 0x3D;
/** VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' (0x41 - 0x5A) */
+
+ /** Constant for the "A" key. */
public static final int VK_A = 0x41;
+
+ /** Constant for the "B" key. */
public static final int VK_B = 0x42;
+
+ /** Constant for the "C" key. */
public static final int VK_C = 0x43;
+
+ /** Constant for the "D" key. */
public static final int VK_D = 0x44;
+
+ /** Constant for the "E" key. */
public static final int VK_E = 0x45;
+
+ /** Constant for the "F" key. */
public static final int VK_F = 0x46;
+
+ /** Constant for the "G" key. */
public static final int VK_G = 0x47;
+
+ /** Constant for the "H" key. */
public static final int VK_H = 0x48;
+
+ /** Constant for the "I" key. */
public static final int VK_I = 0x49;
+
+ /** Constant for the "J" key. */
public static final int VK_J = 0x4A;
+
+ /** Constant for the "K" key. */
public static final int VK_K = 0x4B;
+
+ /** Constant for the "L" key. */
public static final int VK_L = 0x4C;
+
+ /** Constant for the "M" key. */
public static final int VK_M = 0x4D;
+
+ /** Constant for the "N" key. */
public static final int VK_N = 0x4E;
+
+ /** Constant for the "O" key. */
public static final int VK_O = 0x4F;
+
+ /** Constant for the "P" key. */
public static final int VK_P = 0x50;
+
+ /** Constant for the "Q" key. */
public static final int VK_Q = 0x51;
+
+ /** Constant for the "R" key. */
public static final int VK_R = 0x52;
+
+ /** Constant for the "S" key. */
public static final int VK_S = 0x53;
+
+ /** Constant for the "T" key. */
public static final int VK_T = 0x54;
+
+ /** Constant for the "U" key. */
public static final int VK_U = 0x55;
+
+ /** Constant for the "V" key. */
public static final int VK_V = 0x56;
+
+ /** Constant for the "W" key. */
public static final int VK_W = 0x57;
+
+ /** Constant for the "X" key. */
public static final int VK_X = 0x58;
+
+ /** Constant for the "Y" key. */
public static final int VK_Y = 0x59;
+
+ /** Constant for the "Z" key. */
public static final int VK_Z = 0x5A;
/**
@@ -321,17 +424,40 @@
*/
public static final int VK_CLOSE_BRACKET = 0x5D;
+ /** Constant for the number pad "0" key. */
public static final int VK_NUMPAD0 = 0x60;
+
+ /** Constant for the number pad "1" key. */
public static final int VK_NUMPAD1 = 0x61;
+
+ /** Constant for the number pad "2" key. */
public static final int VK_NUMPAD2 = 0x62;
+
+ /** Constant for the number pad "3" key. */
public static final int VK_NUMPAD3 = 0x63;
+
+ /** Constant for the number pad "4" key. */
public static final int VK_NUMPAD4 = 0x64;
+
+ /** Constant for the number pad "5" key. */
public static final int VK_NUMPAD5 = 0x65;
+
+ /** Constant for the number pad "6" key. */
public static final int VK_NUMPAD6 = 0x66;
+
+ /** Constant for the number pad "7" key. */
public static final int VK_NUMPAD7 = 0x67;
+
+ /** Constant for the number pad "8" key. */
public static final int VK_NUMPAD8 = 0x68;
+
+ /** Constant for the number pad "9" key. */
public static final int VK_NUMPAD9 = 0x69;
+
+ /** Constant for the number pad multiply key. */
public static final int VK_MULTIPLY = 0x6A;
+
+ /** Constant for the number pad add key. */
public static final int VK_ADD = 0x6B;
/**
@@ -347,11 +473,22 @@
*/
public static final int VK_SEPARATOR = VK_SEPARATER;
+ /** Constant for the number pad subtract key. */
public static final int VK_SUBTRACT = 0x6D;
+
+ /** Constant for the number pad decimal point key. */
public static final int VK_DECIMAL = 0x6E;
+
+ /** Constant for the number pad divide key. */
public static final int VK_DIVIDE = 0x6F;
+
+ /** Constant for the delete key. */
public static final int VK_DELETE = 0x7F; /* ASCII DEL */
+
+ /** Constant for the NUM_LOCK key. */
public static final int VK_NUM_LOCK = 0x90;
+
+ /** Constant for the SCROLL_LOCK key. */
public static final int VK_SCROLL_LOCK = 0x91;
/** Constant for the F1 function key. */
@@ -463,12 +600,22 @@
*/
public static final int VK_F24 = 0xF00B;
+ /** Constant for the PRINTSCREEN key. */
public static final int VK_PRINTSCREEN = 0x9A;
+
+ /** Constant for the INSERT key. */
public static final int VK_INSERT = 0x9B;
+
+ /** Constant for the HELP key. */
public static final int VK_HELP = 0x9C;
+
+ /** Constant for the META key. */
public static final int VK_META = 0x9D;
+ /** Constant for the BACK_QUOTE key. */
public static final int VK_BACK_QUOTE = 0xC0;
+
+ /** Constant for the QUOTE key. */
public static final int VK_QUOTE = 0xDE;
/**
@@ -638,6 +785,7 @@
/* for input method support on Asian Keyboards */
/* not clear what this means - listed in Microsoft Windows API */
+ /** Constant for the FINAL key. */
public static final int VK_FINAL = 0x0018;
/** Constant for the Convert function key. */
@@ -653,14 +801,23 @@
public static final int VK_ACCEPT = 0x001E;
/* not clear what this means - listed in Microsoft Windows API */
+ /** Constant for the MODECHANGE key. */
public static final int VK_MODECHANGE = 0x001F;
/* replaced by VK_KANA_LOCK for Microsoft Windows and Solaris;
might still be used on other platforms */
+ /**
+ * Constant for the KANA lock key.
+ * @see #VK_KANA_LOCK
+ **/
public static final int VK_KANA = 0x0015;
/* replaced by VK_INPUT_METHOD_ON_OFF for Microsoft Windows and Solaris;
might still be used for other platforms */
+ /**
+ * Constant for KANJI.
+ * @see #VK_INPUT_METHOD_ON_OFF
+ */
public static final int VK_KANJI = 0x0019;
/**
@@ -1085,7 +1242,25 @@
}
/**
- * @deprecated as of JDK1.1
+ * @deprecated as of JDK1.1; use {@link #KeyEvent(Component, int, long, int, int, char)} instead
+ * @param source The <code>Component</code> that originated the event
+ * @param id An integer indicating the type of event.
+ * For information on allowable values, see
+ * the class description for {@link KeyEvent}
+ * @param when A long integer that specifies the time the event
+ * occurred.
+ * Passing negative or zero value
+ * is not recommended
+ * @param modifiers The modifier keys down during event (shift, ctrl,
+ * alt, meta).
+ * Passing negative value
+ * is not recommended.
+ * Zero value means that no modifiers were passed.
+ * Use either an extended _DOWN_MASK or old _MASK modifiers,
+ * however do not mix models in the one event.
+ * The extended modifiers are preferred for using
+ * @param keyCode The integer code for an actual key, or VK_UNDEFINED
+ * (for a key-typed event)
*/
@Deprecated
public KeyEvent(Component source, int id, long when, int modifiers,
@@ -1184,6 +1359,7 @@
* Returns a String describing the keyCode, such as "HOME", "F1" or "A".
* These strings can be localized by changing the awt.properties file.
*
+ * @param keyCode the key whose description is to be returned
* @return a string containing a text description for a physical key,
* identified by its keyCode
*/
@@ -1376,6 +1552,7 @@
* <code>InputEvent.BUTTON3_MASK</code> have the same value,
* so the string "Meta" is returned for both modifiers.
*
+ * @param modifiers the modifier mask to be processed
* @return string a text description of the combination of modifier
* keys that were held down during the event
* @see InputEvent#getModifiersExText(int)
@@ -1612,8 +1789,8 @@
* Pressing the same key in a regular Russian layout gives another code, unique for the
* letter "Cyrillic I short".
*
+ * @return an extended key code for the event
* @since 1.7
- *
*/
public int getExtendedKeyCode() {
return (int)extendedKeyCode;
@@ -1621,6 +1798,7 @@
/**
* Returns an extended key code for a unicode character.
*
+ * @param c the unicode character to be processed
* @return for a unicode character with a corresponding {@code VK_} constant -- this
* {@code VK_} constant; for a character appearing on the primary
* level of a known keyboard layout -- a unique integer.
@@ -1628,7 +1806,6 @@
* {@code VK_UNDEFINED} is returned.
*
* @since 1.7
- *
*/
public static int getExtendedKeyCodeForChar(int c) {
// Return a keycode (if any) associated with a character.
--- a/jdk/src/share/classes/java/awt/event/KeyListener.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/KeyListener.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 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
@@ -54,6 +54,7 @@
* Invoked when a key has been typed.
* See the class description for {@link KeyEvent} for a definition of
* a key typed event.
+ * @param e the event to be processed
*/
public void keyTyped(KeyEvent e);
@@ -61,6 +62,7 @@
* Invoked when a key has been pressed.
* See the class description for {@link KeyEvent} for a definition of
* a key pressed event.
+ * @param e the event to be processed
*/
public void keyPressed(KeyEvent e);
@@ -68,6 +70,7 @@
* Invoked when a key has been released.
* See the class description for {@link KeyEvent} for a definition of
* a key released event.
+ * @param e the event to be processed
*/
public void keyReleased(KeyEvent e);
}
--- a/jdk/src/share/classes/java/awt/event/MouseListener.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/MouseListener.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 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
@@ -59,26 +59,31 @@
/**
* Invoked when the mouse button has been clicked (pressed
* and released) on a component.
+ * @param e the event to be processed
*/
public void mouseClicked(MouseEvent e);
/**
* Invoked when a mouse button has been pressed on a component.
+ * @param e the event to be processed
*/
public void mousePressed(MouseEvent e);
/**
* Invoked when a mouse button has been released on a component.
+ * @param e the event to be processed
*/
public void mouseReleased(MouseEvent e);
/**
* Invoked when the mouse enters a component.
+ * @param e the event to be processed
*/
public void mouseEntered(MouseEvent e);
/**
* Invoked when the mouse exits a component.
+ * @param e the event to be processed
*/
public void mouseExited(MouseEvent e);
}
--- a/jdk/src/share/classes/java/awt/event/MouseMotionListener.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/MouseMotionListener.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 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
@@ -63,12 +63,14 @@
* Due to platform-dependent Drag&Drop implementations,
* <code>MOUSE_DRAGGED</code> events may not be delivered during a native
* Drag&Drop operation.
+ * @param e the event to be processed
*/
public void mouseDragged(MouseEvent e);
/**
* Invoked when the mouse cursor has been moved onto a component
* but no buttons have been pushed.
+ * @param e the event to be processed
*/
public void mouseMoved(MouseEvent e);
--- a/jdk/src/share/classes/java/awt/event/MouseWheelListener.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/MouseWheelListener.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -52,6 +52,7 @@
/**
* Invoked when the mouse wheel is rotated.
+ * @param e the event to be processed
* @see MouseWheelEvent
*/
public void mouseWheelMoved(MouseWheelEvent e);
--- a/jdk/src/share/classes/java/awt/event/PaintEvent.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/PaintEvent.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 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
@@ -108,6 +108,8 @@
/**
* Returns the rectangle representing the area which needs to be
* repainted in response to this event.
+ * @return the rectangle representing the area which needs to be
+ * repainted in response to this event
*/
public Rectangle getUpdateRect() {
return updateRect;
--- a/jdk/src/share/classes/java/awt/event/TextListener.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/TextListener.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 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
@@ -49,6 +49,8 @@
* Invoked when the value of the text has changed.
* The code written for this method performs the operations
* that need to occur when text changes.
+ *
+ * @param e the event to be processed
*/
public void textValueChanged(TextEvent e);
--- a/jdk/src/share/classes/java/awt/event/WindowFocusListener.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/WindowFocusListener.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -57,6 +57,7 @@
* Invoked when the Window is set to be the focused Window, which means
* that the Window, or one of its subcomponents, will receive keyboard
* events.
+ * @param e the event to be processed
*/
public void windowGainedFocus(WindowEvent e);
@@ -64,6 +65,7 @@
* Invoked when the Window is no longer the focused Window, which means
* that keyboard events will no longer be delivered to the Window or any of
* its subcomponents.
+ * @param e the event to be processed
*/
public void windowLostFocus(WindowEvent e);
}
--- a/jdk/src/share/classes/java/awt/event/WindowListener.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/WindowListener.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 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
@@ -51,18 +51,21 @@
public interface WindowListener extends EventListener {
/**
* Invoked the first time a window is made visible.
+ * @param e the event to be processed
*/
public void windowOpened(WindowEvent e);
/**
* Invoked when the user attempts to close the window
* from the window's system menu.
+ * @param e the event to be processed
*/
public void windowClosing(WindowEvent e);
/**
* Invoked when a window has been closed as the result
* of calling dispose on the window.
+ * @param e the event to be processed
*/
public void windowClosed(WindowEvent e);
@@ -71,6 +74,7 @@
* minimized state. For many platforms, a minimized window
* is displayed as the icon specified in the window's
* iconImage property.
+ * @param e the event to be processed
* @see java.awt.Frame#setIconImage
*/
public void windowIconified(WindowEvent e);
@@ -78,6 +82,7 @@
/**
* Invoked when a window is changed from a minimized
* to a normal state.
+ * @param e the event to be processed
*/
public void windowDeiconified(WindowEvent e);
@@ -88,6 +93,7 @@
* as a highlighted title bar. The active Window is always either the
* focused Window, or the first Frame or Dialog that is an owner of the
* focused Window.
+ * @param e the event to be processed
*/
public void windowActivated(WindowEvent e);
@@ -98,6 +104,7 @@
* highlighted title bar. The active Window is always either the focused
* Window, or the first Frame or Dialog that is an owner of the focused
* Window.
+ * @param e the event to be processed
*/
public void windowDeactivated(WindowEvent e);
}
--- a/jdk/src/share/classes/java/awt/event/WindowStateListener.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/event/WindowStateListener.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -50,6 +50,7 @@
public interface WindowStateListener extends EventListener {
/**
* Invoked when window state is changed.
+ * @param e the event to be processed
*/
public void windowStateChanged(WindowEvent e);
}
--- a/jdk/src/share/classes/java/awt/font/TextAttribute.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/font/TextAttribute.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -65,7 +65,7 @@
* <LI>the valid values if there are limitations
* <LI>a description of the effect.
* </UL>
- * <p>
+ *
* <H3>Values</H3>
* <UL>
* <LI>The values of attributes must always be immutable.
@@ -95,7 +95,6 @@
* </UL>
*
* <h4>Summary of attributes</h4>
- * <p>
* <table style="float:center" border="0" cellspacing="0" cellpadding="2" width="%95"
* summary="Key, value type, principal constants, and default value
* behavior of all TextAttributes">
--- a/jdk/src/share/classes/java/awt/peer/ComponentPeer.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/peer/ComponentPeer.java Wed Jul 05 19:27:58 2017 +0200
@@ -457,8 +457,6 @@
* @param caps the buffer capabilities
*
* @throws AWTException if flip buffering is not supported
- *
- * @see Component.FlipBufferStrategy#createBuffers
*/
void createBuffers(int numBuffers, BufferCapabilities caps)
throws AWTException;
@@ -467,8 +465,6 @@
* Returns the back buffer as image.
*
* @return the back buffer as image
- *
- * @see Component.FlipBufferStrategy#getBackBuffer
*/
Image getBackBuffer();
@@ -480,15 +476,11 @@
* @param x2 the area to be flipped, lower right X coordinate
* @param y2 the area to be flipped, lower right Y coordinate
* @param flipAction the flip action to perform
- *
- * @see Component.FlipBufferStrategy#flip
*/
void flip(int x1, int y1, int x2, int y2, BufferCapabilities.FlipContents flipAction);
/**
* Destroys all created buffers.
- *
- * @see Component.FlipBufferStrategy#destroyBuffers
*/
void destroyBuffers();
--- a/jdk/src/share/classes/java/awt/peer/DialogPeer.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/peer/DialogPeer.java Wed Jul 05 19:27:58 2017 +0200
@@ -64,7 +64,6 @@
* @param windows the windows to block
*
* @see Dialog#modalShow()
- * @see Dialog#blockWindows()
*/
void blockWindows(java.util.List<Window> windows);
}
--- a/jdk/src/share/classes/java/awt/peer/KeyboardFocusManagerPeer.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/peer/KeyboardFocusManagerPeer.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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,6 +26,7 @@
package java.awt.peer;
import java.awt.Component;
+import java.awt.KeyboardFocusManager;
import java.awt.Window;
/**
@@ -71,7 +72,7 @@
/**
* Clears the current global focus owner.
*
- * @param activeWindow
+ * @param activeWindow the active window
*
* @see KeyboardFocusManager#clearGlobalFocusOwner()
*/
--- a/jdk/src/share/classes/java/awt/peer/MouseInfoPeer.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/peer/MouseInfoPeer.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -29,8 +29,8 @@
import java.awt.Point;
/**
- * Peer interface for {@link MouseInfo}. This is used to get some additional
- * information about the mouse.
+ * Peer interface for {@link java.awt.MouseInfo}. This is used to get
+ * some additional information about the mouse.
*
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
--- a/jdk/src/share/classes/java/awt/peer/PanelPeer.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/peer/PanelPeer.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 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,7 +25,7 @@
package java.awt.peer;
/**
- * The peer interface for {@link Panel}. This is a subinterface of
+ * The peer interface for {@link java.awt.Panel}. This is a subinterface of
* ContainerPeer and does not declare any additional methods because a Panel
* is just that, a concrete Container.
*
--- a/jdk/src/share/classes/java/awt/peer/TextAreaPeer.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/peer/TextAreaPeer.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 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
@@ -28,7 +28,7 @@
import java.awt.TextArea;
/**
- * The peer interface for {@link TexTArea}.
+ * The peer interface for {@link TextArea}.
*
* The peer interfaces are intended only for use in porting
* the AWT. They are not intended for use by application
--- a/jdk/src/share/classes/java/awt/peer/WindowPeer.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/peer/WindowPeer.java Wed Jul 05 19:27:58 2017 +0200
@@ -57,7 +57,7 @@
* Sets if the window should always stay
* on top of all other windows or not.
*
- * @see Window#getAlwaysOnTop()
+ * @see Window#isAlwaysOnTop()
* @see Window#setAlwaysOnTop(boolean)
*/
void updateAlwaysOnTopState();
--- a/jdk/src/share/classes/java/awt/print/Paper.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/print/Paper.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -36,7 +36,6 @@
* are compatible. For example, if the paper size is changed from
* 11 x 17 to 8.5 x 11, the application might need to reduce the
* imageable area so that whatever is printed fits on the page.
- * <p>
* @see #setSize(double, double)
* @see #setImageableArea(double, double, double, double)
*/
--- a/jdk/src/share/classes/java/awt/print/Printable.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/awt/print/Printable.java Wed Jul 05 19:27:58 2017 +0200
@@ -94,7 +94,6 @@
* <code>Pageable</code> then the client may provide different PageFormats
* for each page index. Calculations of page breaks must account for this.
* </ul>
- * <p>
* @see java.awt.print.Pageable
* @see java.awt.print.PageFormat
* @see java.awt.print.PrinterJob
--- a/jdk/src/share/classes/java/beans/XMLEncoder.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/beans/XMLEncoder.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -150,7 +150,6 @@
* Although all object graphs may be written using just these three
* tags, the following definitions are included so that common
* data structures can be expressed more concisely:
- * <p>
* <ul>
* <li>
* The default method name is "new".
--- a/jdk/src/share/classes/java/beans/beancontext/BeanContextSupport.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/beans/beancontext/BeanContextSupport.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -351,7 +351,8 @@
* methods that add children to the set.
* </p>
* @param targetChild the child to create the Child on behalf of
- * @param peer the peer if the tragetChild and the peer are related by an implementation of BeanContextProxy * @return Subtype-specific subclass of Child without overriding collection methods
+ * @param peer the peer if the tragetChild and the peer are related by an implementation of BeanContextProxy
+ * @return Subtype-specific subclass of Child without overriding collection methods
*/
protected BCSChild createBCSChild(Object targetChild, Object peer) {
--- a/jdk/src/share/classes/java/lang/Double.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/lang/Double.java Wed Jul 05 19:27:58 2017 +0200
@@ -833,14 +833,10 @@
* @return the bits that represent the floating-point number.
*/
public static long doubleToLongBits(double value) {
- long result = doubleToRawLongBits(value);
- // Check for NaN based on values of bit fields, maximum
- // exponent and nonzero significand.
- if ( ((result & DoubleConsts.EXP_BIT_MASK) ==
- DoubleConsts.EXP_BIT_MASK) &&
- (result & DoubleConsts.SIGNIF_BIT_MASK) != 0L)
- result = 0x7ff8000000000000L;
- return result;
+ if (!isNaN(value)) {
+ return doubleToRawLongBits(value);
+ }
+ return 0x7ff8000000000000L;
}
/**
--- a/jdk/src/share/classes/java/lang/Float.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/lang/Float.java Wed Jul 05 19:27:58 2017 +0200
@@ -741,14 +741,10 @@
* @return the bits that represent the floating-point number.
*/
public static int floatToIntBits(float value) {
- int result = floatToRawIntBits(value);
- // Check for NaN based on values of bit fields, maximum
- // exponent and nonzero significand.
- if ( ((result & FloatConsts.EXP_BIT_MASK) ==
- FloatConsts.EXP_BIT_MASK) &&
- (result & FloatConsts.SIGNIF_BIT_MASK) != 0)
- result = 0x7fc00000;
- return result;
+ if (!isNaN(value)) {
+ return floatToRawIntBits(value);
+ }
+ return 0x7fc00000;
}
/**
--- a/jdk/src/share/classes/java/lang/Long.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/lang/Long.java Wed Jul 05 19:27:58 2017 +0200
@@ -700,21 +700,58 @@
throw new NumberFormatException("Bad digit at end of " + s);
}
long result = first * radix + second;
- if (compareUnsigned(result, first) < 0) {
+
+ /*
+ * Test leftmost bits of multiprecision extension of first*radix
+ * for overflow. The number of bits needed is defined by
+ * GUARD_BIT = ceil(log2(Character.MAX_RADIX)) + 1 = 7. Then
+ * int guard = radix*(int)(first >>> (64 - GUARD_BIT)) and
+ * overflow is tested by splitting guard in the ranges
+ * guard < 92, 92 <= guard < 128, and 128 <= guard, where
+ * 92 = 128 - Character.MAX_RADIX. Note that guard cannot take
+ * on a value which does not include a prime factor in the legal
+ * radix range.
+ */
+ int guard = radix * (int) (first >>> 57);
+ if (guard >= 128 ||
+ (result >= 0 && guard >= 128 - Character.MAX_RADIX)) {
/*
- * The maximum unsigned value, (2^64)-1, takes at
- * most one more digit to represent than the
- * maximum signed value, (2^63)-1. Therefore,
- * parsing (len - 1) digits will be appropriately
- * in-range of the signed parsing. In other
- * words, if parsing (len -1) digits overflows
- * signed parsing, parsing len digits will
- * certainly overflow unsigned parsing.
+ * For purposes of exposition, the programmatic statements
+ * below should be taken to be multi-precision, i.e., not
+ * subject to overflow.
+ *
+ * A) Condition guard >= 128:
+ * If guard >= 128 then first*radix >= 2^7 * 2^57 = 2^64
+ * hence always overflow.
+ *
+ * B) Condition guard < 92:
+ * Define left7 = first >>> 57.
+ * Given first = (left7 * 2^57) + (first & (2^57 - 1)) then
+ * result <= (radix*left7)*2^57 + radix*(2^57 - 1) + second.
+ * Thus if radix*left7 < 92, radix <= 36, and second < 36,
+ * then result < 92*2^57 + 36*(2^57 - 1) + 36 = 2^64 hence
+ * never overflow.
*
- * The compareUnsigned check above catches
- * situations where an unsigned overflow occurs
- * incorporating the contribution of the final
- * digit.
+ * C) Condition 92 <= guard < 128:
+ * first*radix + second >= radix*left7*2^57 + second
+ * so that first*radix + second >= 92*2^57 + 0 > 2^63
+ *
+ * D) Condition guard < 128:
+ * radix*first <= (radix*left7) * 2^57 + radix*(2^57 - 1)
+ * so
+ * radix*first + second <= (radix*left7) * 2^57 + radix*(2^57 - 1) + 36
+ * thus
+ * radix*first + second < 128 * 2^57 + 36*2^57 - radix + 36
+ * whence
+ * radix*first + second < 2^64 + 2^6*2^57 = 2^64 + 2^63
+ *
+ * E) Conditions C, D, and result >= 0:
+ * C and D combined imply the mathematical result
+ * 2^63 < first*radix + second < 2^64 + 2^63. The lower
+ * bound is therefore negative as a signed long, but the
+ * upper bound is too small to overflow again after the
+ * signed long overflows to positive above 2^64 - 1. Hence
+ * result >= 0 implies overflow given C and D.
*/
throw new NumberFormatException(String.format("String value %s exceeds " +
"range of unsigned long.", s));
--- a/jdk/src/share/classes/java/lang/SecurityManager.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/lang/SecurityManager.java Wed Jul 05 19:27:58 2017 +0200
@@ -1106,11 +1106,8 @@
* calling thread is not allowed to wait for a connection request on
* the specified local port number.
* <p>
- * If port is not 0, this method calls
- * <code>checkPermission</code> with the
+ * This method calls <code>checkPermission</code> with the
* <code>SocketPermission("localhost:"+port,"listen")</code>.
- * If port is zero, this method calls <code>checkPermission</code>
- * with <code>SocketPermission("localhost:1024-","listen").</code>
* <p>
* If you override this method, then you should make a call to
* <code>super.checkListen</code>
@@ -1123,12 +1120,8 @@
* @see #checkPermission(java.security.Permission) checkPermission
*/
public void checkListen(int port) {
- if (port == 0) {
- checkPermission(SecurityConstants.LOCAL_LISTEN_PERMISSION);
- } else {
- checkPermission(new SocketPermission("localhost:"+port,
- SecurityConstants.SOCKET_LISTEN_ACTION));
- }
+ checkPermission(new SocketPermission("localhost:"+port,
+ SecurityConstants.SOCKET_LISTEN_ACTION));
}
/**
--- a/jdk/src/share/classes/java/lang/invoke/BoundMethodHandle.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/lang/invoke/BoundMethodHandle.java Wed Jul 05 19:27:58 2017 +0200
@@ -611,7 +611,7 @@
mv.visitVarInsn(ALOAD, 1);
mv.visitVarInsn(ALOAD, 2);
- mv.visitMethodInsn(INVOKESPECIAL, BMH, "<init>", makeSignature("", true));
+ mv.visitMethodInsn(INVOKESPECIAL, BMH, "<init>", makeSignature("", true), false);
for (int i = 0, j = 0; i < types.length(); ++i, ++j) {
// i counts the arguments, j counts corresponding argument slots
@@ -662,7 +662,7 @@
// put fields on the stack
emitPushFields(types, className, mv);
// finally, invoke the constructor and return
- mv.visitMethodInsn(INVOKEVIRTUAL, MH, "invokeBasic", makeSignature(types, false));
+ mv.visitMethodInsn(INVOKEVIRTUAL, MH, "invokeBasic", makeSignature(types, false), false);
mv.visitInsn(ARETURN);
mv.visitMaxs(0, 0);
mv.visitEnd();
@@ -678,7 +678,7 @@
int iconstInsn = ICONST_0 + extensionIndex(t);
assert(iconstInsn <= ICONST_5);
mv.visitInsn(iconstInsn);
- mv.visitMethodInsn(INVOKEVIRTUAL, SPECIES_DATA, "extendWithIndex", BMHSPECIES_DATA_EWI_SIG);
+ mv.visitMethodInsn(INVOKEVIRTUAL, SPECIES_DATA, "extendWithIndex", BMHSPECIES_DATA_EWI_SIG, false);
mv.visitFieldInsn(GETFIELD, SPECIES_DATA, "constructor", "[" + MH_SIG);
mv.visitInsn(ICONST_0);
mv.visitInsn(AALOAD);
@@ -690,7 +690,7 @@
// put narg on stack
mv.visitVarInsn(typeLoadOp(t), 3);
// finally, invoke the constructor and return
- mv.visitMethodInsn(INVOKEVIRTUAL, MH, "invokeBasic", makeSignature(types + t, false));
+ mv.visitMethodInsn(INVOKEVIRTUAL, MH, "invokeBasic", makeSignature(types + t, false), false);
mv.visitInsn(ARETURN);
mv.visitMaxs(0, 0);
mv.visitEnd();
@@ -701,7 +701,7 @@
mv.visitCode();
mv.visitLdcInsn(types);
mv.visitLdcInsn(Type.getObjectType(className));
- mv.visitMethodInsn(INVOKESTATIC, SPECIES_DATA, "getForClass", BMHSPECIES_DATA_GFC_SIG);
+ mv.visitMethodInsn(INVOKESTATIC, SPECIES_DATA, "getForClass", BMHSPECIES_DATA_GFC_SIG, false);
mv.visitFieldInsn(PUTSTATIC, className, "SPECIES_DATA", SPECIES_DATA_SIG);
mv.visitInsn(RETURN);
mv.visitMaxs(0, 0);
--- a/jdk/src/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java Wed Jul 05 19:27:58 2017 +0200
@@ -193,10 +193,10 @@
CallSite buildCallSite() throws LambdaConversionException {
final Class<?> innerClass = spinInnerClass();
if (invokedType.parameterCount() == 0) {
- final Constructor[] ctrs = AccessController.doPrivileged(
- new PrivilegedAction<Constructor[]>() {
+ final Constructor<?>[] ctrs = AccessController.doPrivileged(
+ new PrivilegedAction<Constructor<?>[]>() {
@Override
- public Constructor[] run() {
+ public Constructor<?>[] run() {
Constructor<?>[] ctrs = innerClass.getDeclaredConstructors();
if (ctrs.length == 1) {
// The lambda implementing inner class constructor is private, set
@@ -338,7 +338,7 @@
m.visitVarInsn(getLoadOpcode(argType), varIndex);
varIndex += getParameterSize(argType);
}
- m.visitMethodInsn(INVOKESPECIAL, lambdaClassName, NAME_CTOR, constructorType.toMethodDescriptorString());
+ m.visitMethodInsn(INVOKESPECIAL, lambdaClassName, NAME_CTOR, constructorType.toMethodDescriptorString(), false);
m.visitInsn(ARETURN);
m.visitMaxs(-1, -1);
m.visitEnd();
@@ -354,7 +354,7 @@
ctor.visitCode();
ctor.visitVarInsn(ALOAD, 0);
ctor.visitMethodInsn(INVOKESPECIAL, JAVA_LANG_OBJECT, NAME_CTOR,
- METHOD_DESCRIPTOR_VOID);
+ METHOD_DESCRIPTOR_VOID, false);
int parameterCount = invokedType.parameterCount();
for (int i = 0, lvIndex = 0; i < parameterCount; i++) {
ctor.visitVarInsn(ALOAD, 0);
@@ -402,7 +402,7 @@
mv.visitInsn(AASTORE);
}
mv.visitMethodInsn(INVOKESPECIAL, NAME_SERIALIZED_LAMBDA, NAME_CTOR,
- DESCR_CTOR_SERIALIZED_LAMBDA);
+ DESCR_CTOR_SERIALIZED_LAMBDA, false);
mv.visitInsn(ARETURN);
// Maxs computed by ClassWriter.COMPUTE_MAXS, these arguments ignored
mv.visitMaxs(-1, -1);
@@ -421,7 +421,7 @@
mv.visitInsn(DUP);
mv.visitLdcInsn("Non-serializable lambda");
mv.visitMethodInsn(INVOKESPECIAL, NAME_NOT_SERIALIZABLE_EXCEPTION, NAME_CTOR,
- DESCR_CTOR_NOT_SERIALIZABLE_EXCEPTION);
+ DESCR_CTOR_NOT_SERIALIZABLE_EXCEPTION, false);
mv.visitInsn(ATHROW);
mv.visitMaxs(-1, -1);
mv.visitEnd();
@@ -434,7 +434,7 @@
mv.visitInsn(DUP);
mv.visitLdcInsn("Non-serializable lambda");
mv.visitMethodInsn(INVOKESPECIAL, NAME_NOT_SERIALIZABLE_EXCEPTION, NAME_CTOR,
- DESCR_CTOR_NOT_SERIALIZABLE_EXCEPTION);
+ DESCR_CTOR_NOT_SERIALIZABLE_EXCEPTION, false);
mv.visitInsn(ATHROW);
mv.visitMaxs(-1, -1);
mv.visitEnd();
--- a/jdk/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java Wed Jul 05 19:27:58 2017 +0200
@@ -403,7 +403,7 @@
String owner = "java/lang/" + wrapper.wrapperType().getSimpleName();
String name = "valueOf";
String desc = "(" + wrapper.basicTypeChar() + ")L" + owner + ";";
- mv.visitMethodInsn(Opcodes.INVOKESTATIC, owner, name, desc);
+ mv.visitMethodInsn(Opcodes.INVOKESTATIC, owner, name, desc, false);
}
/**
@@ -417,7 +417,7 @@
String name = wrapper.primitiveSimpleName() + "Value";
String desc = "()" + wrapper.basicTypeChar();
mv.visitTypeInsn(Opcodes.CHECKCAST, owner);
- mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, owner, name, desc);
+ mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, owner, name, desc, false);
}
/**
@@ -437,7 +437,7 @@
mv.visitLdcInsn(constantPlaceholder(pclass));
mv.visitTypeInsn(Opcodes.CHECKCAST, CLS);
mv.visitInsn(Opcodes.SWAP);
- mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, CLS, "cast", LL_SIG);
+ mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, CLS, "cast", LL_SIG, false);
if (pclass.isArray())
mv.visitTypeInsn(Opcodes.CHECKCAST, OBJARY);
}
@@ -570,7 +570,7 @@
// invocation
MethodType type = name.function.methodType();
- mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, MH, "invokeBasic", type.basicType().toMethodDescriptorString());
+ mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, MH, "invokeBasic", type.basicType().toMethodDescriptorString(), false);
}
static private Class<?>[] STATICALLY_INVOCABLE_PACKAGES = {
@@ -638,6 +638,12 @@
refKind = REF_invokeVirtual;
}
+ if (member.getDeclaringClass().isInterface() && refKind == REF_invokeVirtual) {
+ // Methods from Object declared in an interface can be resolved by JVM to invokevirtual kind.
+ // Need to convert it back to invokeinterface to pass verification and make the invocation works as expected.
+ refKind = REF_invokeInterface;
+ }
+
// push arguments
for (int i = 0; i < name.arguments.length; i++) {
emitPushArgument(name, i);
@@ -938,7 +944,7 @@
emitAloadInsn(0);
mv.visitFieldInsn(Opcodes.GETFIELD, MH, "form", "Ljava/lang/invoke/LambdaForm;");
mv.visitInsn(Opcodes.SWAP); // swap form and array; avoid local variable
- mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, LF, "interpretWithArguments", "([Ljava/lang/Object;)Ljava/lang/Object;");
+ mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, LF, "interpretWithArguments", "([Ljava/lang/Object;)Ljava/lang/Object;", false);
// maybe unbox
Class<?> rtype = invokerType.returnType();
@@ -1001,7 +1007,7 @@
// Invoke
String targetDesc = dstType.basicType().toMethodDescriptorString();
- mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, MH, "invokeBasic", targetDesc);
+ mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, MH, "invokeBasic", targetDesc, false);
// Box primitive types
Class<?> rtype = dstType.returnType();
--- a/jdk/src/share/classes/java/lang/invoke/TypeConvertingMethodAdapter.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/lang/invoke/TypeConvertingMethodAdapter.java Wed Jul 05 19:27:58 2017 +0200
@@ -158,19 +158,19 @@
visitMethodInsn(Opcodes.INVOKESTATIC,
wrapperName(w),
NAME_BOX_METHOD,
- boxingDescriptor(w));
+ boxingDescriptor(w), false);
}
/**
* Convert types by unboxing. The source type is known to be a primitive wrapper.
- * @param ws A primitive wrapper corresponding to wrapped reference source type
+ * @param sname A primitive wrapper corresponding to wrapped reference source type
* @param wt A primitive wrapper being converted to
*/
void unbox(String sname, Wrapper wt) {
visitMethodInsn(Opcodes.INVOKEVIRTUAL,
sname,
unboxMethod(wt),
- unboxingDescriptor(wt));
+ unboxingDescriptor(wt), false);
}
private String descriptorToName(String desc) {
--- a/jdk/src/share/classes/java/net/Socket.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/net/Socket.java Wed Jul 05 19:27:58 2017 +0200
@@ -272,7 +272,9 @@
* {@code zero} for a system selected free port.
* @exception IOException if an I/O error occurs when creating the socket.
* @exception SecurityException if a security manager exists and its
- * {@code checkConnect} method doesn't allow the operation.
+ * {@code checkConnect} method doesn't allow the connection
+ * to the destination, or if its {@code checkListen} method
+ * doesn't allow the bind to the local port.
* @exception IllegalArgumentException if the port parameter or localPort
* parameter is outside the specified range of valid port values,
* which is between 0 and 65535, inclusive.
@@ -311,7 +313,9 @@
* {@code zero} for a system selected free port.
* @exception IOException if an I/O error occurs when creating the socket.
* @exception SecurityException if a security manager exists and its
- * {@code checkConnect} method doesn't allow the operation.
+ * {@code checkConnect} method doesn't allow the connection
+ * to the destination, or if its {@code checkListen} method
+ * doesn't allow the bind to the local port.
* @exception IllegalArgumentException if the port parameter or localPort
* parameter is outside the specified range of valid port values,
* which is between 0 and 65535, inclusive.
@@ -609,6 +613,9 @@
* is already bound.
* @throws IllegalArgumentException if bindpoint is a
* SocketAddress subclass not supported by this socket
+ * @throws SecurityException if a security manager exists and its
+ * {@code checkListen} method doesn't allow the bind
+ * to the local port.
*
* @since 1.4
* @see #isBound
@@ -630,6 +637,10 @@
InetAddress addr = epoint.getAddress();
int port = epoint.getPort();
checkAddress (addr, "bind");
+ SecurityManager security = System.getSecurityManager();
+ if (security != null) {
+ security.checkListen(port);
+ }
getImpl().bind (addr, port);
bound = true;
}
--- a/jdk/src/share/classes/java/net/SocketPermission.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/net/SocketPermission.java Wed Jul 05 19:27:58 2017 +0200
@@ -34,6 +34,9 @@
import java.net.InetAddress;
import java.security.Permission;
import java.security.PermissionCollection;
+import java.security.PrivilegedAction;
+import java.security.AccessController;
+import java.security.Security;
import java.io.Serializable;
import java.io.ObjectStreamField;
import java.io.ObjectOutputStream;
@@ -41,6 +44,7 @@
import java.io.IOException;
import sun.net.util.IPAddressUtil;
import sun.net.RegisteredDomain;
+import sun.net.PortConfig;
import sun.security.util.SecurityConstants;
import sun.security.util.Debug;
@@ -89,6 +93,9 @@
* form "N-", where <i>N</i> is a port number, signifies all ports
* numbered <i>N</i> and above, while a specification of the
* form "-N" indicates all ports numbered <i>N</i> and below.
+ * The special port value {@code 0} refers to the entire <i>ephemeral</i>
+ * port range. This is a fixed range of ports a system may use to
+ * allocate dynamic ports from. The actual range may be system dependent.
* <p>
* The possible ways to connect to the host are
* <pre>
@@ -97,7 +104,8 @@
* listen
* resolve
* </pre>
- * The "listen" action is only meaningful when used with "localhost".
+ * The "listen" action is only meaningful when used with "localhost" and
+ * means the ability to bind to a specified port.
* The "resolve" action is implied when any of the other actions are present.
* The action "resolve" refers to host/ip name service lookups.
* <P>
@@ -176,6 +184,7 @@
private static final int PORT_MIN = 0;
private static final int PORT_MAX = 65535;
private static final int PRIV_PORT_MAX = 1023;
+ private static final int DEF_EPH_LOW = 49152;
// the actions mask
private transient int mask;
@@ -226,6 +235,14 @@
private static Debug debug = null;
private static boolean debugInit = false;
+ // ephemeral port range for this system
+ private static final int ephemeralLow = initEphemeralPorts(
+ "low", DEF_EPH_LOW
+ );
+ private static final int ephemeralHigh = initEphemeralPorts(
+ "high", PORT_MAX
+ );
+
static {
Boolean tmp = java.security.AccessController.doPrivileged(
new sun.security.action.GetBooleanAction("sun.net.trustNameService"));
@@ -360,6 +377,14 @@
}
/**
+ * Returns true if the permission has specified zero
+ * as its value (or lower bound) signifying the ephemeral range
+ */
+ private boolean includesEphemerals() {
+ return portrange[0] == 0;
+ }
+
+ /**
* Initialize the SocketPermission object. We don't do any DNS lookups
* as this point, instead we hold off until the implies method is
* called.
@@ -850,10 +875,21 @@
int i,j;
if ((that.mask & RESOLVE) != that.mask) {
- // check port range
+
+ // check simple port range
if ((that.portrange[0] < this.portrange[0]) ||
(that.portrange[1] > this.portrange[1])) {
+
+ // if either includes the ephemeral range, do full check
+ if (this.includesEphemerals() || that.includesEphemerals()) {
+ if (!inRange(this.portrange[0], this.portrange[1],
+ that.portrange[0], that.portrange[1]))
+ {
+ return false;
+ }
+ } else {
return false;
+ }
}
}
@@ -1168,6 +1204,75 @@
init(getName(),getMask(actions));
}
+ /**
+ * Check the system/security property for the ephemeral port range
+ * for this system. The suffix is either "high" or "low"
+ */
+ private static int initEphemeralPorts(String suffix, int defval) {
+ return AccessController.doPrivileged(
+ new PrivilegedAction<Integer>(){
+ public Integer run() {
+ int val = Integer.getInteger(
+ "jdk.net.ephemeralPortRange."+suffix, -1
+ );
+ if (val != -1) {
+ return val;
+ } else {
+ return suffix.equals("low") ?
+ PortConfig.getLower() : PortConfig.getUpper();
+ }
+ }
+ }
+ );
+ }
+
+ /**
+ * Check if the target range is within the policy range
+ * together with the ephemeral range for this platform
+ * (if policy includes ephemeral range)
+ */
+ private static boolean inRange(
+ int policyLow, int policyHigh, int targetLow, int targetHigh
+ )
+ {
+ if (targetLow == 0) {
+ // check policy includes ephemeral range
+ if (!inRange(policyLow, policyHigh, ephemeralLow, ephemeralHigh)) {
+ return false;
+ }
+ if (targetHigh == 0) {
+ // nothing left to do
+ return true;
+ }
+ // continue check with first real port number
+ targetLow = 1;
+ }
+
+ if (policyLow == 0 && policyHigh == 0) {
+ // ephemeral range only
+ return targetLow >= ephemeralLow && targetHigh <= ephemeralHigh;
+ }
+
+ if (policyLow != 0) {
+ // simple check of policy only
+ return targetLow >= policyLow && targetHigh <= policyHigh;
+ }
+
+ // policyLow == 0 which means possibly two ranges to check
+
+ // first check if policy and ephem range overlap/contiguous
+
+ if (policyHigh >= ephemeralLow - 1) {
+ return targetHigh <= ephemeralHigh;
+ }
+
+ // policy and ephem range do not overlap
+
+ // target range must lie entirely inside policy range or eph range
+
+ return (targetLow <= policyHigh && targetHigh <= policyHigh) ||
+ (targetLow >= ephemeralLow && targetHigh <= ephemeralHigh);
+ }
/*
public String toString()
{
--- a/jdk/src/share/classes/java/net/SocksSocketImpl.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/net/SocksSocketImpl.java Wed Jul 05 19:27:58 2017 +0200
@@ -118,7 +118,7 @@
private int readSocksReply(InputStream in, byte[] data, long deadlineMillis) throws IOException {
int len = data.length;
int received = 0;
- for (int attempts = 0; received < len && attempts < 3; attempts++) {
+ while (received < len) {
int count;
try {
count = ((SocketInputStream)in).read(data, received, len - received, remainingMillis(deadlineMillis));
@@ -521,7 +521,11 @@
throw new SocketException("Reply from SOCKS server badly formatted");
break;
case DOMAIN_NAME:
- len = data[1];
+ byte[] lenByte = new byte[1];
+ i = readSocksReply(in, lenByte, deadlineMillis);
+ if (i != 1)
+ throw new SocketException("Reply from SOCKS server badly formatted");
+ len = lenByte[0] & 0xFF;
byte[] host = new byte[len];
i = readSocksReply(in, host, deadlineMillis);
if (i != len)
@@ -532,7 +536,7 @@
throw new SocketException("Reply from SOCKS server badly formatted");
break;
case IPV6:
- len = data[1];
+ len = 16;
addr = new byte[len];
i = readSocksReply(in, addr, deadlineMillis);
if (i != len)
--- a/jdk/src/share/classes/java/nio/channels/AsynchronousSocketChannel.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/nio/channels/AsynchronousSocketChannel.java Wed Jul 05 19:27:58 2017 +0200
@@ -200,6 +200,10 @@
* @throws UnsupportedAddressTypeException {@inheritDoc}
* @throws ClosedChannelException {@inheritDoc}
* @throws IOException {@inheritDoc}
+ * @throws SecurityException
+ * If a security manager has been installed and its
+ * {@link SecurityManager#checkListen checkListen} method denies
+ * the operation
*/
@Override
public abstract AsynchronousSocketChannel bind(SocketAddress local)
--- a/jdk/src/share/classes/java/nio/channels/SocketChannel.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/nio/channels/SocketChannel.java Wed Jul 05 19:27:58 2017 +0200
@@ -227,6 +227,10 @@
* @throws UnsupportedAddressTypeException {@inheritDoc}
* @throws ClosedChannelException {@inheritDoc}
* @throws IOException {@inheritDoc}
+ * @throws SecurityException
+ * If a security manager has been installed and its
+ * {@link SecurityManager#checkListen checkListen} method denies
+ * the operation
*
* @since 1.7
*/
--- a/jdk/src/share/classes/java/nio/file/Files.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/nio/file/Files.java Wed Jul 05 19:27:58 2017 +0200
@@ -752,9 +752,12 @@
}
if (parent == null) {
// unable to find existing parent
- if (se != null)
+ if (se == null) {
+ throw new FileSystemException(dir.toString(), null,
+ "Unable to determine if root directory exists");
+ } else {
throw se;
- throw new IOException("Root directory does not exist");
+ }
}
// create directories
--- a/jdk/src/share/classes/java/util/Arrays.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/util/Arrays.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -1427,12 +1427,14 @@
* found to violate the {@link Comparator} contract
*/
public static <T> void sort(T[] a, Comparator<? super T> c) {
- if (c == null)
- c = NaturalOrder.INSTANCE;
- if (LegacyMergeSort.userRequested)
- legacyMergeSort(a, c);
- else
- TimSort.sort(a, 0, a.length, c, null, 0, 0);
+ if (c == null) {
+ sort(a);
+ } else {
+ if (LegacyMergeSort.userRequested)
+ legacyMergeSort(a, c);
+ else
+ TimSort.sort(a, 0, a.length, c, null, 0, 0);
+ }
}
/** To be removed in a future release. */
@@ -1498,13 +1500,15 @@
*/
public static <T> void sort(T[] a, int fromIndex, int toIndex,
Comparator<? super T> c) {
- if (c == null)
- c = NaturalOrder.INSTANCE;
- rangeCheck(a.length, fromIndex, toIndex);
- if (LegacyMergeSort.userRequested)
- legacyMergeSort(a, fromIndex, toIndex, c);
- else
- TimSort.sort(a, fromIndex, toIndex, c, null, 0, 0);
+ if (c == null) {
+ sort(a, fromIndex, toIndex);
+ } else {
+ rangeCheck(a.length, fromIndex, toIndex);
+ if (LegacyMergeSort.userRequested)
+ legacyMergeSort(a, fromIndex, toIndex, c);
+ else
+ TimSort.sort(a, fromIndex, toIndex, c, null, 0, 0);
+ }
}
/** To be removed in a future release. */
--- a/jdk/src/share/classes/java/util/Collections.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/util/Collections.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -121,34 +121,9 @@
*
* <p>The specified list must be modifiable, but need not be resizable.
*
- * <p>Implementation note: This implementation is a stable, adaptive,
- * iterative mergesort that requires far fewer than n lg(n) comparisons
- * when the input array is partially sorted, while offering the
- * performance of a traditional mergesort when the input array is
- * randomly ordered. If the input array is nearly sorted, the
- * implementation requires approximately n comparisons. Temporary
- * storage requirements vary from a small constant for nearly sorted
- * input arrays to n/2 object references for randomly ordered input
- * arrays.
- *
- * <p>The implementation takes equal advantage of ascending and
- * descending order in its input array, and can take advantage of
- * ascending and descending order in different parts of the same
- * input array. It is well-suited to merging two or more sorted arrays:
- * simply concatenate the arrays and sort the resulting array.
- *
- * <p>The implementation was adapted from Tim Peters's list sort for Python
- * (<a href="http://svn.python.org/projects/python/trunk/Objects/listsort.txt">
- * TimSort</a>). It uses techniques from Peter McIlroy's "Optimistic
- * Sorting and Information Theoretic Complexity", in Proceedings of the
- * Fourth Annual ACM-SIAM Symposium on Discrete Algorithms, pp 467-474,
- * January 1993.
- *
- * <p>This implementation dumps the specified list into an array, sorts
- * the array, and iterates over the list resetting each element
- * from the corresponding position in the array. This avoids the
- * n<sup>2</sup> log(n) performance that would result from attempting
- * to sort a linked list in place.
+ * @implNote
+ * This implementation defers to the {@link List#sort(Comparator)}
+ * method using the specified list and a {@code null} comparator.
*
* @param <T> the class of the objects in the list
* @param list the list to be sorted.
@@ -159,16 +134,11 @@
* @throws IllegalArgumentException (optional) if the implementation
* detects that the natural ordering of the list elements is
* found to violate the {@link Comparable} contract
+ * @see List#sort(Comparator)
*/
@SuppressWarnings("unchecked")
public static <T extends Comparable<? super T>> void sort(List<T> list) {
- Object[] a = list.toArray();
- Arrays.sort(a);
- ListIterator<T> i = list.listIterator();
- for (Object e : a) {
- i.next();
- i.set((T) e);
- }
+ list.sort(null);
}
/**
@@ -183,34 +153,9 @@
*
* <p>The specified list must be modifiable, but need not be resizable.
*
- * <p>Implementation note: This implementation is a stable, adaptive,
- * iterative mergesort that requires far fewer than n lg(n) comparisons
- * when the input array is partially sorted, while offering the
- * performance of a traditional mergesort when the input array is
- * randomly ordered. If the input array is nearly sorted, the
- * implementation requires approximately n comparisons. Temporary
- * storage requirements vary from a small constant for nearly sorted
- * input arrays to n/2 object references for randomly ordered input
- * arrays.
- *
- * <p>The implementation takes equal advantage of ascending and
- * descending order in its input array, and can take advantage of
- * ascending and descending order in different parts of the same
- * input array. It is well-suited to merging two or more sorted arrays:
- * simply concatenate the arrays and sort the resulting array.
- *
- * <p>The implementation was adapted from Tim Peters's list sort for Python
- * (<a href="http://svn.python.org/projects/python/trunk/Objects/listsort.txt">
- * TimSort</a>). It uses techniques from Peter McIlroy's "Optimistic
- * Sorting and Information Theoretic Complexity", in Proceedings of the
- * Fourth Annual ACM-SIAM Symposium on Discrete Algorithms, pp 467-474,
- * January 1993.
- *
- * <p>This implementation dumps the specified list into an array, sorts
- * the array, and iterates over the list resetting each element
- * from the corresponding position in the array. This avoids the
- * n<sup>2</sup> log(n) performance that would result from attempting
- * to sort a linked list in place.
+ * @implNote
+ * This implementation defers to the {@link List#sort(Comparator)}
+ * method using the specified list and comparator.
*
* @param <T> the class of the objects in the list
* @param list the list to be sorted.
@@ -223,16 +168,11 @@
* list-iterator does not support the {@code set} operation.
* @throws IllegalArgumentException (optional) if the comparator is
* found to violate the {@link Comparator} contract
+ * @see List#sort(Comparator)
*/
@SuppressWarnings({"unchecked", "rawtypes"})
public static <T> void sort(List<T> list, Comparator<? super T> c) {
- Object[] a = list.toArray();
- Arrays.sort(a, (Comparator)c);
- ListIterator<T> i = list.listIterator();
- for (Object e : a) {
- i.next();
- i.set((T) e);
- }
+ list.sort(c);
}
@@ -4464,10 +4404,12 @@
* <pre>
* List<String> s = Collections.emptyList();
* </pre>
- * Implementation note: Implementations of this method need not
- * create a separate <tt>List</tt> object for each call. Using this
- * method is likely to have comparable cost to using the like-named
- * field. (Unlike this method, the field does not provide type safety.)
+ *
+ * @implNote
+ * Implementations of this method need not create a separate <tt>List</tt>
+ * object for each call. Using this method is likely to have comparable
+ * cost to using the like-named field. (Unlike this method, the field does
+ * not provide type safety.)
*
* @param <T> type of elements, if there were any, in the list
* @return an empty immutable list
--- a/jdk/src/share/classes/java/util/List.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/util/List.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -415,11 +415,49 @@
}
/**
- * Sorts this list using the supplied {@code Comparator} to compare elements.
+ * Sorts this list according to the order induced by the specified
+ * {@link Comparator}.
+ *
+ * <p>All elements in this list must be <i>mutually comparable</i> using the
+ * specified comparator (that is, {@code c.compare(e1, e2)} must not throw
+ * a {@code ClassCastException} for any elements {@code e1} and {@code e2}
+ * in the list).
+ *
+ * <p>If the specified comparator is {@code null} then all elements in this
+ * list must implement the {@link Comparable} interface and the elements'
+ * {@linkplain Comparable natural ordering} should be used.
+ *
+ * <p>This list must be modifiable, but need not be resizable.
*
* @implSpec
- * The default implementation is equivalent to, for this {@code list}:
- * <pre>Collections.sort(list, c)</pre>
+ * The default implementation obtains an array containing all elements in
+ * this list, sorts the array, and iterates over this list resetting each
+ * element from the corresponding position in the array. (This avoids the
+ * n<sup>2</sup> log(n) performance that would result from attempting
+ * to sort a linked list in place.)
+ *
+ * @implNote
+ * This implementation is a stable, adaptive, iterative mergesort that
+ * requires far fewer than n lg(n) comparisons when the input array is
+ * partially sorted, while offering the performance of a traditional
+ * mergesort when the input array is randomly ordered. If the input array
+ * is nearly sorted, the implementation requires approximately n
+ * comparisons. Temporary storage requirements vary from a small constant
+ * for nearly sorted input arrays to n/2 object references for randomly
+ * ordered input arrays.
+ *
+ * <p>The implementation takes equal advantage of ascending and
+ * descending order in its input array, and can take advantage of
+ * ascending and descending order in different parts of the same
+ * input array. It is well-suited to merging two or more sorted arrays:
+ * simply concatenate the arrays and sort the resulting array.
+ *
+ * <p>The implementation was adapted from Tim Peters's list sort for Python
+ * (<a href="http://svn.python.org/projects/python/trunk/Objects/listsort.txt">
+ * TimSort</a>). It uses techniques from Peter McIlroy's "Optimistic
+ * Sorting and Information Theoretic Complexity", in Proceedings of the
+ * Fourth Annual ACM-SIAM Symposium on Discrete Algorithms, pp 467-474,
+ * January 1993.
*
* @param c the {@code Comparator} used to compare list elements.
* A {@code null} value indicates that the elements'
@@ -434,8 +472,15 @@
* contract
* @since 1.8
*/
+ @SuppressWarnings({"unchecked", "rawtypes"})
default void sort(Comparator<? super E> c) {
- Collections.sort(this, c);
+ Object[] a = this.toArray();
+ Arrays.sort(a, (Comparator) c);
+ ListIterator<E> i = this.listIterator();
+ for (Object e : a) {
+ i.next();
+ i.set((E) e);
+ }
}
/**
--- a/jdk/src/share/classes/java/util/jar/JarFile.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/util/jar/JarFile.java Wed Jul 05 19:27:58 2017 +0200
@@ -53,6 +53,13 @@
* or method in this class will cause a {@link NullPointerException} to be
* thrown.
*
+ * If the verify flag is on when opening a signed jar file, the content of the
+ * file is verified against its signature embedded inside the file. Please note
+ * that the verification process does not include validating the signer's
+ * certificate. A caller should inspect the return value of
+ * {@link JarEntry#getCodeSigners()} to further determine if the signature
+ * can be trusted.
+ *
* @author David Connelly
* @see Manifest
* @see java.util.zip.ZipFile
--- a/jdk/src/share/classes/java/util/jar/JarVerifier.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/util/jar/JarVerifier.java Wed Jul 05 19:27:58 2017 +0200
@@ -179,7 +179,9 @@
name = name.substring(1);
// only set the jev object for entries that have a signature
- if (sigFileSigners.get(name) != null) {
+ // (either verified or not)
+ if (sigFileSigners.get(name) != null ||
+ verifiedSigners.get(name) != null) {
mev.setEntry(name, je);
return;
}
--- a/jdk/src/share/classes/java/util/logging/LogManager.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/util/logging/LogManager.java Wed Jul 05 19:27:58 2017 +0200
@@ -240,6 +240,11 @@
* retrieved by calling LogManager.getLogManager.
*/
protected LogManager() {
+ this(checkSubclassPermissions());
+ }
+
+ private LogManager(Void checked) {
+
// Add a shutdown hook to close the global handlers.
try {
Runtime.getRuntime().addShutdownHook(new Cleaner());
@@ -249,6 +254,19 @@
}
}
+ private static Void checkSubclassPermissions() {
+ final SecurityManager sm = System.getSecurityManager();
+ if (sm != null) {
+ // These permission will be checked in the LogManager constructor,
+ // in order to register the Cleaner() thread as a shutdown hook.
+ // Check them here to avoid the penalty of constructing the object
+ // etc...
+ sm.checkPermission(new RuntimePermission("shutdownHooks"));
+ sm.checkPermission(new RuntimePermission("setContextClassLoader"));
+ }
+ return null;
+ }
+
/**
* Lazy initialization: if this instance of manager is the global
* manager then this method will read the initial configuration and
--- a/jdk/src/share/classes/java/util/stream/DoubleStream.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/util/stream/DoubleStream.java Wed Jul 05 19:27:58 2017 +0200
@@ -150,10 +150,11 @@
/**
* Returns a stream consisting of the results of replacing each element of
- * this stream with the contents of the stream produced by applying the
- * provided mapping function to each element. (If the result of the mapping
- * function is {@code null}, this is treated as if the result was an empty
- * stream.)
+ * this stream with the contents of a mapped stream produced by applying
+ * the provided mapping function to each element. Each mapped stream is
+ * {@link java.util.stream.BaseStream#close() closed} after its contents
+ * have been placed into this stream. (If a mapped stream is {@code null}
+ * an empty stream is used, instead.)
*
* <p>This is an <a href="package-summary.html#StreamOps">intermediate
* operation</a>.
--- a/jdk/src/share/classes/java/util/stream/ForEachOps.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/util/stream/ForEachOps.java Wed Jul 05 19:27:58 2017 +0200
@@ -32,6 +32,7 @@
import java.util.function.Consumer;
import java.util.function.DoubleConsumer;
import java.util.function.IntConsumer;
+import java.util.function.IntFunction;
import java.util.function.LongConsumer;
/**
@@ -317,12 +318,55 @@
*/
@SuppressWarnings("serial")
static final class ForEachOrderedTask<S, T> extends CountedCompleter<Void> {
+ /*
+ * Our goal is to ensure that the elements associated with a task are
+ * processed according to an in-order traversal of the computation tree.
+ * We use completion counts for representing these dependencies, so that
+ * a task does not complete until all the tasks preceding it in this
+ * order complete. We use the "completion map" to associate the next
+ * task in this order for any left child. We increase the pending count
+ * of any node on the right side of such a mapping by one to indicate
+ * its dependency, and when a node on the left side of such a mapping
+ * completes, it decrements the pending count of its corresponding right
+ * side. As the computation tree is expanded by splitting, we must
+ * atomically update the mappings to maintain the invariant that the
+ * completion map maps left children to the next node in the in-order
+ * traversal.
+ *
+ * Take, for example, the following computation tree of tasks:
+ *
+ * a
+ * / \
+ * b c
+ * / \ / \
+ * d e f g
+ *
+ * The complete map will contain (not necessarily all at the same time)
+ * the following associations:
+ *
+ * d -> e
+ * b -> f
+ * f -> g
+ *
+ * Tasks e, f, g will have their pending counts increased by 1.
+ *
+ * The following relationships hold:
+ *
+ * - completion of d "happens-before" e;
+ * - completion of d and e "happens-before b;
+ * - completion of b "happens-before" f; and
+ * - completion of f "happens-before" g
+ *
+ * Thus overall the "happens-before" relationship holds for the
+ * reporting of elements, covered by tasks d, e, f and g, as specified
+ * by the forEachOrdered operation.
+ */
+
private final PipelineHelper<T> helper;
private Spliterator<S> spliterator;
private final long targetSize;
private final ConcurrentHashMap<ForEachOrderedTask<S, T>, ForEachOrderedTask<S, T>> completionMap;
private final Sink<T> action;
- private final Object lock;
private final ForEachOrderedTask<S, T> leftPredecessor;
private Node<T> node;
@@ -333,9 +377,9 @@
this.helper = helper;
this.spliterator = spliterator;
this.targetSize = AbstractTask.suggestTargetSize(spliterator.estimateSize());
- this.completionMap = new ConcurrentHashMap<>();
+ // Size map to avoid concurrent re-sizes
+ this.completionMap = new ConcurrentHashMap<>(Math.max(16, AbstractTask.LEAF_TARGET << 1));
this.action = action;
- this.lock = new Object();
this.leftPredecessor = null;
}
@@ -348,7 +392,6 @@
this.targetSize = parent.targetSize;
this.completionMap = parent.completionMap;
this.action = parent.action;
- this.lock = parent.lock;
this.leftPredecessor = leftPredecessor;
}
@@ -367,16 +410,42 @@
new ForEachOrderedTask<>(task, leftSplit, task.leftPredecessor);
ForEachOrderedTask<S, T> rightChild =
new ForEachOrderedTask<>(task, rightSplit, leftChild);
+
+ // Fork the parent task
+ // Completion of the left and right children "happens-before"
+ // completion of the parent
+ task.addToPendingCount(1);
+ // Completion of the left child "happens-before" completion of
+ // the right child
+ rightChild.addToPendingCount(1);
task.completionMap.put(leftChild, rightChild);
- task.addToPendingCount(1); // forking
- rightChild.addToPendingCount(1); // right pending on left child
+
+ // If task is not on the left spine
if (task.leftPredecessor != null) {
- leftChild.addToPendingCount(1); // left pending on previous subtree, except left spine
- if (task.completionMap.replace(task.leftPredecessor, task, leftChild))
- task.addToPendingCount(-1); // transfer my "right child" count to my left child
- else
- leftChild.addToPendingCount(-1); // left child is ready to go when ready
+ /*
+ * Completion of left-predecessor, or left subtree,
+ * "happens-before" completion of left-most leaf node of
+ * right subtree.
+ * The left child's pending count needs to be updated before
+ * it is associated in the completion map, otherwise the
+ * left child can complete prematurely and violate the
+ * "happens-before" constraint.
+ */
+ leftChild.addToPendingCount(1);
+ // Update association of left-predecessor to left-most
+ // leaf node of right subtree
+ if (task.completionMap.replace(task.leftPredecessor, task, leftChild)) {
+ // If replaced, adjust the pending count of the parent
+ // to complete when its children complete
+ task.addToPendingCount(-1);
+ } else {
+ // Left-predecessor has already completed, parent's
+ // pending count is adjusted by left-predecessor;
+ // left child is ready to complete
+ leftChild.addToPendingCount(-1);
+ }
}
+
ForEachOrderedTask<S, T> taskToFork;
if (forkRight) {
forkRight = false;
@@ -391,31 +460,49 @@
}
taskToFork.fork();
}
- if (task.getPendingCount() == 0) {
- task.helper.wrapAndCopyInto(task.action, rightSplit);
- }
- else {
+
+ /*
+ * Task's pending count is either 0 or 1. If 1 then the completion
+ * map will contain a value that is task, and two calls to
+ * tryComplete are required for completion, one below and one
+ * triggered by the completion of task's left-predecessor in
+ * onCompletion. Therefore there is no data race within the if
+ * block.
+ */
+ if (task.getPendingCount() > 0) {
+ // Cannot complete just yet so buffer elements into a Node
+ // for use when completion occurs
+ @SuppressWarnings("unchecked")
+ IntFunction<T[]> generator = size -> (T[]) new Object[size];
Node.Builder<T> nb = task.helper.makeNodeBuilder(
- task.helper.exactOutputSizeIfKnown(rightSplit),
- size -> (T[]) new Object[size]);
+ task.helper.exactOutputSizeIfKnown(rightSplit),
+ generator);
task.node = task.helper.wrapAndCopyInto(nb, rightSplit).build();
+ task.spliterator = null;
}
task.tryComplete();
}
@Override
public void onCompletion(CountedCompleter<?> caller) {
- spliterator = null;
if (node != null) {
- // Dump any data from this leaf into the sink
- synchronized (lock) {
- node.forEach(action);
- }
+ // Dump buffered elements from this leaf into the sink
+ node.forEach(action);
node = null;
}
- ForEachOrderedTask<S, T> victim = completionMap.remove(this);
- if (victim != null)
- victim.tryComplete();
+ else if (spliterator != null) {
+ // Dump elements output from this leaf's pipeline into the sink
+ helper.wrapAndCopyInto(action, spliterator);
+ spliterator = null;
+ }
+
+ // The completion of this task *and* the dumping of elements
+ // "happens-before" completion of the associated left-most leaf task
+ // of right subtree (if any, which can be this task's right sibling)
+ //
+ ForEachOrderedTask<S, T> leftDescendant = completionMap.remove(this);
+ if (leftDescendant != null)
+ leftDescendant.tryComplete();
}
}
}
--- a/jdk/src/share/classes/java/util/stream/IntStream.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/util/stream/IntStream.java Wed Jul 05 19:27:58 2017 +0200
@@ -146,10 +146,11 @@
/**
* Returns a stream consisting of the results of replacing each element of
- * this stream with the contents of the stream produced by applying the
- * provided mapping function to each element. (If the result of the mapping
- * function is {@code null}, this is treated as if the result was an empty
- * stream.)
+ * this stream with the contents of a mapped stream produced by applying
+ * the provided mapping function to each element. Each mapped stream is
+ * {@link java.util.stream.BaseStream#close() closed} after its contents
+ * have been placed into this stream. (If a mapped stream is {@code null}
+ * an empty stream is used, instead.)
*
* <p>This is an <a href="package-summary.html#StreamOps">intermediate
* operation</a>.
--- a/jdk/src/share/classes/java/util/stream/LongStream.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/util/stream/LongStream.java Wed Jul 05 19:27:58 2017 +0200
@@ -151,10 +151,11 @@
/**
* Returns a stream consisting of the results of replacing each element of
- * this stream with the contents of the stream produced by applying the
- * provided mapping function to each element. (If the result of the mapping
- * function is {@code null}, this is treated as if the result was an empty
- * stream.)
+ * this stream with the contents of a mapped stream produced by applying
+ * the provided mapping function to each element. Each mapped stream is
+ * {@link java.util.stream.BaseStream#close() closed} after its contents
+ * have been placed into this stream. (If a mapped stream is {@code null}
+ * an empty stream is used, instead.)
*
* <p>This is an <a href="package-summary.html#StreamOps">intermediate
* operation</a>.
--- a/jdk/src/share/classes/java/util/stream/Nodes.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/util/stream/Nodes.java Wed Jul 05 19:27:58 2017 +0200
@@ -63,7 +63,7 @@
// IllegalArgumentException messages
static final String BAD_SIZE = "Stream size exceeds max array size";
- @SuppressWarnings("raw")
+ @SuppressWarnings("rawtypes")
private static final Node EMPTY_NODE = new EmptyNode.OfRef();
private static final Node.OfInt EMPTY_INT_NODE = new EmptyNode.OfInt();
private static final Node.OfLong EMPTY_LONG_NODE = new EmptyNode.OfLong();
@@ -956,6 +956,7 @@
* Initiate a stack containing, in left-to-right order, the child nodes
* covered by this spliterator
*/
+ @SuppressWarnings("unchecked")
protected final Deque<N> initStack() {
// Bias size to the case where leaf nodes are close to this node
// 8 is the minimum initial capacity for the ArrayDeque implementation
@@ -969,6 +970,7 @@
* Depth first search, in left-to-right order, of the node tree, using
* an explicit stack, to find the next non-empty leaf node.
*/
+ @SuppressWarnings("unchecked")
protected final N findNextLeafNode(Deque<N> stack) {
N n = null;
while ((n = stack.pollFirst()) != null) {
@@ -984,6 +986,7 @@
return null;
}
+ @SuppressWarnings("unchecked")
protected final boolean initTryAdvance() {
if (curNode == null)
return false;
@@ -1870,6 +1873,7 @@
}
assert task.offset + task.length < MAX_ARRAY_SIZE;
+ @SuppressWarnings("unchecked")
T_SINK sink = (T_SINK) task;
task.helper.wrapAndCopyInto(sink, rightSplit);
task.propagateCompletion();
@@ -2173,6 +2177,7 @@
}
@Override
+ @SuppressWarnings("unchecked")
protected T_NODE doLeaf() {
T_BUILDER builder = builderFactory.apply(helper.exactOutputSizeIfKnown(spliterator));
return (T_NODE) helper.wrapAndCopyInto(builder, spliterator).build();
--- a/jdk/src/share/classes/java/util/stream/SortedOps.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/util/stream/SortedOps.java Wed Jul 05 19:27:58 2017 +0200
@@ -29,7 +29,6 @@
import java.util.Comparator;
import java.util.Objects;
import java.util.Spliterator;
-import java.util.concurrent.ForkJoinTask;
import java.util.function.IntFunction;
@@ -113,7 +112,9 @@
StreamOpFlag.IS_ORDERED | StreamOpFlag.IS_SORTED);
this.isNaturalSort = true;
// Will throw CCE when we try to sort if T is not Comparable
- this.comparator = (Comparator<? super T>) Comparator.naturalOrder();
+ @SuppressWarnings("unchecked")
+ Comparator<? super T> comp = (Comparator<? super T>) Comparator.naturalOrder();
+ this.comparator = comp;
}
/**
@@ -170,7 +171,7 @@
}
@Override
- public Sink<Integer> opWrapSink(int flags, Sink sink) {
+ public Sink<Integer> opWrapSink(int flags, Sink<Integer> sink) {
Objects.requireNonNull(sink);
if (StreamOpFlag.SORTED.isKnown(flags))
@@ -291,6 +292,7 @@
}
@Override
+ @SuppressWarnings("unchecked")
public void begin(long size) {
if (size >= Nodes.MAX_ARRAY_SIZE)
throw new IllegalArgumentException(Nodes.BAD_SIZE);
--- a/jdk/src/share/classes/java/util/stream/SpinedBuffer.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/util/stream/SpinedBuffer.java Wed Jul 05 19:27:58 2017 +0200
@@ -92,6 +92,7 @@
* @throws IllegalArgumentException if the specified initial capacity
* is negative
*/
+ @SuppressWarnings("unchecked")
SpinedBuffer(int initialCapacity) {
super(initialCapacity);
curChunk = (E[]) new Object[1 << initialChunkPower];
@@ -100,6 +101,7 @@
/**
* Constructs an empty list with an initial capacity of sixteen.
*/
+ @SuppressWarnings("unchecked")
SpinedBuffer() {
super();
curChunk = (E[]) new Object[1 << initialChunkPower];
@@ -114,6 +116,7 @@
: priorElementCount[spineIndex] + spine[spineIndex].length;
}
+ @SuppressWarnings("unchecked")
private void inflateSpine() {
if (spine == null) {
spine = (E[][]) new Object[MIN_SPINE_SIZE][];
@@ -125,6 +128,7 @@
/**
* Ensure that the buffer has at least capacity to hold the target size
*/
+ @SuppressWarnings("unchecked")
protected final void ensureCapacity(long targetSize) {
long capacity = capacity();
if (targetSize > capacity) {
--- a/jdk/src/share/classes/java/util/stream/Stream.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/util/stream/Stream.java Wed Jul 05 19:27:58 2017 +0200
@@ -227,10 +227,11 @@
/**
* Returns a stream consisting of the results of replacing each element of
- * this stream with the contents of the stream produced by applying the
- * provided mapping function to each element. (If the result of the mapping
- * function is {@code null}, this is treated as if the result was an empty
- * stream.)
+ * this stream with the contents of a mapped stream produced by applying
+ * the provided mapping function to each element. Each mapped stream is
+ * {@link java.util.stream.BaseStream#close() closed} after its contents
+ * have been placed into this stream. (If a mapped stream is {@code null}
+ * an empty stream is used, instead.)
*
* <p>This is an <a href="package-summary.html#StreamOps">intermediate
* operation</a>.
@@ -270,10 +271,11 @@
/**
* Returns an {@code IntStream} consisting of the results of replacing each
- * element of this stream with the contents of the stream produced by
- * applying the provided mapping function to each element. (If the result
- * of the mapping function is {@code null}, this is treated as if the result
- * was an empty stream.)
+ * element of this stream with the contents of a mapped stream produced by
+ * applying the provided mapping function to each element. Each mapped
+ * stream is {@link java.util.stream.BaseStream#close() closed} after its
+ * contents have been placed into this stream. (If a mapped stream is
+ * {@code null} an empty stream is used, instead.)
*
* <p>This is an <a href="package-summary.html#StreamOps">intermediate
* operation</a>.
@@ -288,11 +290,12 @@
IntStream flatMapToInt(Function<? super T, ? extends IntStream> mapper);
/**
- * Returns a {@code LongStream} consisting of the results of replacing each
- * element of this stream with the contents of the stream produced
- * by applying the provided mapping function to each element. (If the result
- * of the mapping function is {@code null}, this is treated as if the result
- * was an empty stream.)
+ * Returns an {@code LongStream} consisting of the results of replacing each
+ * element of this stream with the contents of a mapped stream produced by
+ * applying the provided mapping function to each element. Each mapped
+ * stream is {@link java.util.stream.BaseStream#close() closed} after its
+ * contents have been placed into this stream. (If a mapped stream is
+ * {@code null} an empty stream is used, instead.)
*
* <p>This is an <a href="package-summary.html#StreamOps">intermediate
* operation</a>.
@@ -307,11 +310,12 @@
LongStream flatMapToLong(Function<? super T, ? extends LongStream> mapper);
/**
- * Returns a {@code DoubleStream} consisting of the results of replacing each
- * element of this stream with the contents of the stream produced
- * by applying the provided mapping function to each element. (If the result
- * of the mapping function is {@code null}, this is treated as if the result
- * was an empty stream.)
+ * Returns an {@code DoubleStream} consisting of the results of replacing
+ * each element of this stream with the contents of a mapped stream produced
+ * by applying the provided mapping function to each element. Each mapped
+ * stream is {@link java.util.stream.BaseStream#close() closed} after its
+ * contents have placed been into this stream. (If a mapped stream is
+ * {@code null} an empty stream is used, instead.)
*
* <p>This is an <a href="package-summary.html#StreamOps">intermediate
* operation</a>.
--- a/jdk/src/share/classes/java/util/stream/StreamSpliterators.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/util/stream/StreamSpliterators.java Wed Jul 05 19:27:58 2017 +0200
@@ -516,6 +516,7 @@
}
@Override
+ @SuppressWarnings("unchecked")
public T_SPLITR trySplit() {
return (T_SPLITR) get().trySplit();
}
@@ -643,6 +644,7 @@
// existing and additionally created F/J tasks that perform
// redundant work on no elements.
while (true) {
+ @SuppressWarnings("unchecked")
T_SPLITR leftSplit = (T_SPLITR) s.trySplit();
if (leftSplit == null)
return null;
@@ -970,6 +972,7 @@
// Stop splitting when there are no more limit permits
if (permits.get() == 0)
return null;
+ @SuppressWarnings("unchecked")
T_SPLITR split = (T_SPLITR) s.trySplit();
return split == null ? null : makeSpliterator(split);
}
@@ -1068,16 +1071,18 @@
super(s, skip, limit);
}
- OfPrimitive(T_SPLITR s, UnorderedSliceSpliterator.OfPrimitive parent) {
+ OfPrimitive(T_SPLITR s, UnorderedSliceSpliterator.OfPrimitive<T, T_CONS, T_BUFF, T_SPLITR> parent) {
super(s, parent);
}
@Override
public boolean tryAdvance(T_CONS action) {
Objects.requireNonNull(action);
+ @SuppressWarnings("unchecked")
+ T_CONS consumer = (T_CONS) this;
while (permitStatus() != PermitStatus.NO_MORE) {
- if (!s.tryAdvance((T_CONS) this))
+ if (!s.tryAdvance(consumer))
return false;
else if (acquirePermits(1) == 1) {
acceptConsumed(action);
@@ -1316,7 +1321,7 @@
* estimate size is 0.
*
* <p>The {@code forEachRemaining} method if invoked will never terminate.
- * The {@coe tryAdvance} method always returns true.
+ * The {@code tryAdvance} method always returns true.
*
*/
static abstract class InfiniteSupplyingSpliterator<T> implements Spliterator<T> {
--- a/jdk/src/share/classes/java/util/stream/StreamSupport.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/util/stream/StreamSupport.java Wed Jul 05 19:27:58 2017 +0200
@@ -54,7 +54,7 @@
* <a href="../Spliterator.html#binding">late-binding</a>. Otherwise,
* {@link #stream(java.util.function.Supplier, int, boolean)} should be used
* to reduce the scope of potential interference with the source. See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
+ * <a href="package-summary.html#NonInterference">Non-Interference</a> for
* more details.
*
* @param <T> the type of stream elements
@@ -89,7 +89,7 @@
* source. Since the supplier is only invoked after the terminal operation
* commences, any modifications to the source up to the start of the
* terminal operation are reflected in the stream result. See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
+ * <a href="package-summary.html#NonInterference">Non-Interference</a> for
* more details.
*
* @param <T> the type of stream elements
@@ -125,7 +125,7 @@
* <a href="../Spliterator.html#binding">late-binding</a>. Otherwise,
* {@link #intStream(java.util.function.Supplier, int, boolean)} should be
* used to reduce the scope of potential interference with the source. See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
+ * <a href="package-summary.html#NonInterference">Non-Interference</a> for
* more details.
*
* @param spliterator a {@code Spliterator.OfInt} describing the stream elements
@@ -158,7 +158,7 @@
* source. Since the supplier is only invoked after the terminal operation
* commences, any modifications to the source up to the start of the
* terminal operation are reflected in the stream result. See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
+ * <a href="package-summary.html#NonInterference">Non-Interference</a> for
* more details.
*
* @param supplier a {@code Supplier} of a {@code Spliterator.OfInt}
@@ -192,7 +192,7 @@
* <a href="../Spliterator.html#binding">late-binding</a>. Otherwise,
* {@link #longStream(java.util.function.Supplier, int, boolean)} should be
* used to reduce the scope of potential interference with the source. See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
+ * <a href="package-summary.html#NonInterference">Non-Interference</a> for
* more details.
*
* @param spliterator a {@code Spliterator.OfLong} describing the stream elements
@@ -226,7 +226,7 @@
* source. Since the supplier is only invoked after the terminal operation
* commences, any modifications to the source up to the start of the
* terminal operation are reflected in the stream result. See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
+ * <a href="package-summary.html#NonInterference">Non-Interference</a> for
* more details.
*
* @param supplier a {@code Supplier} of a {@code Spliterator.OfLong}
@@ -260,7 +260,7 @@
* <a href="../Spliterator.html#binding">late-binding</a>. Otherwise,
* {@link #doubleStream(java.util.function.Supplier, int, boolean)} should
* be used to reduce the scope of potential interference with the source. See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
+ * <a href="package-summary.html#NonInterference">Non-Interference</a> for
* more details.
*
* @param spliterator A {@code Spliterator.OfDouble} describing the stream elements
@@ -294,7 +294,7 @@
* source. Since the supplier is only invoked after the terminal operation
* commences, any modifications to the source up to the start of the
* terminal operation are reflected in the stream result. See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a> for
+ * <a href="package-summary.html#NonInterference">Non-Interference</a> for
* more details.
*
* @param supplier A {@code Supplier} of a {@code Spliterator.OfDouble}
--- a/jdk/src/share/classes/java/util/stream/Streams.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/util/stream/Streams.java Wed Jul 05 19:27:58 2017 +0200
@@ -715,6 +715,7 @@
@Override
public T_SPLITR trySplit() {
+ @SuppressWarnings("unchecked")
T_SPLITR ret = beforeSplit ? aSpliterator : (T_SPLITR) bSpliterator.trySplit();
beforeSplit = false;
return ret;
--- a/jdk/src/share/classes/java/util/stream/package-info.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/java/util/stream/package-info.java Wed Jul 05 19:27:58 2017 +0200
@@ -206,7 +206,7 @@
* as {@link java.util.function.Function}, and are often lambda expressions or
* method references.
*
- * <h3><a name="Non-Interference">Non-interference</a></h3>
+ * <h3><a name="NonInterference">Non-interference</a></h3>
*
* Streams enable you to execute possibly-parallel aggregate operations over a
* variety of data sources, including even non-thread-safe collections such as
@@ -729,7 +729,7 @@
* modifications of the data source prior to commencement of the terminal
* operation (provided the behavioral parameters to the stream operations meet
* the required criteria for non-interference and statelessness). See
- * <a href="package-summary.html#Non-Interference">Non-Interference</a>
+ * <a href="package-summary.html#NonInterference">Non-Interference</a>
* for more details.
*
* @since 1.8
--- a/jdk/src/share/classes/javax/accessibility/AccessibleContext.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/accessibility/AccessibleContext.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -39,7 +39,7 @@
* obtaining more specific accessibility information about a component.
* If the component supports them, these methods will return an object that
* implements one or more of the following interfaces:
- * <P><ul>
+ * <ul>
* <li>{@link AccessibleAction} - the object can perform one or more actions.
* This interface provides the standard mechanism for an assistive
* technology to determine what those actions are and tell the object
--- a/jdk/src/share/classes/javax/imageio/ImageWriter.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/imageio/ImageWriter.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2006, 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
@@ -53,8 +53,6 @@
* which uses them for format recognition and presentation of
* available format readers and writers.
*
- * <p>
- *
* @see ImageReader
* @see ImageWriteParam
* @see javax.imageio.spi.IIORegistry
--- a/jdk/src/share/classes/javax/imageio/plugins/bmp/BMPImageWriteParam.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/imageio/plugins/bmp/BMPImageWriteParam.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -54,7 +54,7 @@
* listed in the following
* table:
*
- * <p><table border=1>
+ * <table border=1>
* <caption><b>Compression Types</b></caption>
* <tr><th>Type String</th> <th>Description</th> <th>Image Types</th></tr>
* <tr><td>BI_RGB</td> <td>Uncompressed RLE</td> <td>{@literal <= } 8-bits/sample</td></tr>
--- a/jdk/src/share/classes/javax/imageio/stream/ImageInputStream.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/imageio/stream/ImageInputStream.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, 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
@@ -446,7 +446,7 @@
* <code>UTFDataFormatException</code> is thrown. Otherwise, the
* group is converted to the character:
*
- * <p> <pre><code>
+ * <pre><code>
* (char)(((a& 0x1F) << 6) | (b & 0x3F))
* </code></pre>
*
@@ -460,7 +460,7 @@
* <code>UTFDataFormatException</code> is thrown. Otherwise, the
* group is converted to the character:
*
- * <p> <pre><code>
+ * <pre><code>
* (char)(((a & 0x0F) << 12) | ((b & 0x3F) << 6) | (c & 0x3F))
* </code></pre>
*
--- a/jdk/src/share/classes/javax/imageio/stream/ImageOutputStream.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/imageio/stream/ImageOutputStream.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -379,7 +379,7 @@
* <code>\u0001</code> through <code>\u007f</code>, it is
* represented by one byte:
*
- * <p><pre>
+ * <pre>
* (byte)c
* </pre>
*
@@ -388,7 +388,7 @@
* <code>\u07ff</code>, then it is represented by two bytes,
* to be written in the order shown:
*
- * <p> <pre><code>
+ * <pre><code>
* (byte)(0xc0 | (0x1f & (c >> 6)))
* (byte)(0x80 | (0x3f & c))
* </code></pre>
@@ -397,7 +397,7 @@
* <code>\u0800</code> through <code>uffff</code>, then it is
* represented by three bytes, to be written in the order shown:
*
- * <p> <pre><code>
+ * <pre><code>
* (byte)(0xe0 | (0x0f & (c >> 12)))
* (byte)(0x80 | (0x3f & (c >> 6)))
* (byte)(0x80 | (0x3f & c))
--- a/jdk/src/share/classes/javax/print/Doc.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/Doc.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -44,12 +44,12 @@
* in which the print data is available. A doc flavor designates the print
* data format (a MIME type) and the representation class of the object
* from which the print data comes.
- * <P>
+ *
* <LI>
* Obtain the print data representation object, which is an instance of the
* doc flavor's representation class. The Print Job can then obtain the actual
* print data from the representation object.
- * <P>
+ *
* <LI>
* Obtain the printing attributes that specify additional characteristics of
* the doc or that specify processing instructions to be applied to the doc.
@@ -104,7 +104,6 @@
* a stream does not mean that it will, with the implications that Doc
* implementors which rely on the service to close them should create such
* streams only in response to a request from the service.
- * <P>
* <HR>
*/
public interface Doc {
--- a/jdk/src/share/classes/javax/print/DocFlavor.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/DocFlavor.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -49,7 +49,7 @@
* See <a href="../../java/lang/package-summary.html#charenc">
* character encodings</a> for more information on the character encodings
* supported on the Java platform.
- * <P>
+ *
* <LI>
* <B>Representation class name.</B> This specifies the fully-qualified name of
* the class of the object from which the actual print data comes, as returned
@@ -64,7 +64,7 @@
* also lets the <code>DocPrintJob</code> obtain an instance of the doc flavor's
* representation class, from which the <code>DocPrintJob</code> then obtains
* the actual print data.
- * <P>
+ *
* <HR>
* <H3>Client Formatted Print Data</H3>
* There are two broad categories of print data, client formatted print data
@@ -96,22 +96,22 @@
* <LI>
* Character array (<CODE>char[]</CODE>) -- The print data consists of the
* Unicode characters in the array.
- * <P>
+ *
* <LI>
* <code>String</code> --
* The print data consists of the Unicode characters in the string.
- * <P>
+ *
* <LI>
* Character stream ({@link java.io.Reader java.io.Reader})
* -- The print data consists of the Unicode characters read from the stream
* up to the end-of-stream.
- * <P>
+ *
* <LI>
* Byte array (<CODE>byte[]</CODE>) -- The print data consists of the bytes in
* the array. The bytes are encoded in the character set specified by the doc
* flavor's MIME type. If the MIME type does not specify a character set, the
* default character set is US-ASCII.
- * <P>
+ *
* <LI>
* Byte stream ({@link java.io.InputStream java.io.InputStream}) --
* The print data consists of the bytes read from the stream up to the
@@ -139,7 +139,7 @@
* To print such documents, let the client open an input stream on the URL
* or file and use an input stream data flavor.
* </UL>
- * <p>
+ *
* <HR>
* <h3>Default and Platform Encodings</h3>
* <P>
@@ -179,11 +179,9 @@
* understood by this VM.
* For common flavors, the pre-defined *HOST DocFlavors may be used.
* <p>
- * <p>
* See <a href="../../java/lang/package-summary.html#charenc">
* character encodings</a> for more information on the character encodings
* supported on the Java platform.
- * <p>
* <HR>
* <h3>Recommended DocFlavors</h3>
* <P>
@@ -196,7 +194,6 @@
* constructor can be used to create an arbitrary doc flavor.
* <UL>
* <LI>Preformatted text
- * <P>
* <TABLE BORDER=1 CELLPADDING=0 CELLSPACING=0 SUMMARY="MIME-Types and their descriptions">
* <TR>
* <TH>MIME-Type</TH><TH>Description</TH>
@@ -222,9 +219,9 @@
* In general, preformatted text print data is provided either in a character
* oriented representation class (character array, String, Reader) or in a
* byte oriented representation class (byte array, InputStream, URL).
- * <P>
+ *
* <LI>Preformatted page description language (PDL) documents
- *<P>
+ *
* <TABLE BORDER=1 CELLPADDING=0 CELLSPACING=0 SUMMARY="MIME-Types and their descriptions">
* <TR>
* <TH>MIME-Type</TH><TH>Description</TH>
@@ -245,9 +242,9 @@
* <P>
* In general, preformatted PDL print data is provided in a byte oriented
* representation class (byte array, InputStream, URL).
- * <P>
+ *
* <LI>Preformatted images
- *<P>
+ *
* <TABLE BORDER=1 CELLPADDING=0 CELLSPACING=0 SUMMARY="MIME-Types and their descriptions">
* <TR>
* <TH>MIME-Type</TH><TH>Description</TH>
@@ -269,9 +266,9 @@
* <P>
* In general, preformatted image print data is provided in a byte oriented
* representation class (byte array, InputStream, URL).
- * <P>
+ *
* <LI>Preformatted autosense print data
- * <P>
+ *
* <TABLE BORDER=1 CELLPADDING=0 CELLSPACING=0 SUMMARY="MIME-Types and their descriptions">
* <TR>
* <TH>MIME-Type</TH><TH>Description</TH>
@@ -287,7 +284,7 @@
* autosense print data is provided in a byte oriented representation class
* (byte array, InputStream, URL).
* </UL>
- * <P>
+ *
* <HR>
* <H3>Service Formatted Print Data</H3>
* <P>
@@ -315,7 +312,7 @@
* {@link java.awt.image.renderable.RenderableImage RenderableImage}. The
* printer calls methods
* in that interface to obtain the image to be printed.
- * <P>
+ *
* <LI>
* Printable object -- The client supplies an object that implements interface
* {@link java.awt.print.Printable Printable}.
@@ -323,7 +320,7 @@
* printed, one by one.
* For each page, the printer supplies a graphics context, and whatever the
* client draws in that graphics context gets printed.
- * <P>
+ *
* <LI>
* Pageable object -- The client supplies an object that implements interface
* {@link java.awt.print.Pageable Pageable}. The printer calls
@@ -331,9 +328,9 @@
* For each page, the printer supplies a graphics context, and whatever
* the client draws in that graphics context gets printed.
* </UL>
- * <P>
+ *
* <HR>
- * <P>
+ *
* <HR>
* <H3>Pre-defined Doc Flavors</H3>
* A Java Print Service instance is not <B><I>required</I></B> to support the
@@ -354,7 +351,7 @@
* <CODE>("text/plain; charset=us-ascii", "java.io.InputStream")</CODE>
* <BR>·
* <CODE>("text/plain; charset=utf-8", "java.io.InputStream")</CODE>
- * <P>
+ *
* <LI>
* Renderable image objects. Specifically, the following doc flavor is
* recommended to be supported:
@@ -389,7 +386,7 @@
* <P>
* The client must itself perform all plain text print data formatting not
* addressed by the above requirements.
- * <P>
+ *
* <H3>Design Rationale</H3>
* <P>
* Class DocFlavor in package javax.print.data is similar to class
@@ -403,13 +400,13 @@
* <LI>
* The JPS API is designed to be used in Java profiles which do not support
* AWT.
- * <P>
+ *
* <LI>
* The implementation of class <code>java.awt.datatransfer.DataFlavor</code>
* does not guarantee that equivalent data flavors will have the same
* serialized representation. DocFlavor does, and can be used in services
* which need this.
- * <P>
+ *
* <LI>
* The implementation of class <code>java.awt.datatransfer.DataFlavor</code>
* includes a human presentable name as part of the serialized representation.
--- a/jdk/src/share/classes/javax/print/MultiDoc.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/MultiDoc.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -67,7 +67,7 @@
* data from the print data representation object. Get the next multidoc from
* the current multidoc, and repeat until there are no more. (The code example
* above uses the interleaved pattern.)
- * <P>
+ *
* <LI>
* The <B>all-at-once</B> pattern: Get the doc from the current multidoc, and
* save the doc in a list. Get the next multidoc from the current multidoc, and
--- a/jdk/src/share/classes/javax/print/MultiDocPrintJob.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/MultiDocPrintJob.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -32,7 +32,6 @@
* Obtained from a MultiDocPrintService, a MultiDocPrintJob can print a
* specified collection of documents as a single print job with a set of
* job attributes.
- * <P>
*/
public interface MultiDocPrintJob extends DocPrintJob {
--- a/jdk/src/share/classes/javax/print/PrintService.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/PrintService.java Wed Jul 05 19:27:58 2017 +0200
@@ -119,6 +119,7 @@
* Gets the value of the single specified service attribute.
* This may be useful to clients which only need the value of one
* attribute and want to minimize overhead.
+ * @param <T> the type of the specified service attribute
* @param category the category of a PrintServiceAttribute supported
* by this service - may not be null.
* @return the value of the supported attribute or null if the
--- a/jdk/src/share/classes/javax/print/ServiceUI.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/ServiceUI.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -52,7 +52,6 @@
*for a user as well as allowing the user to select the print service to use
*and specify choices such as paper size and number of copies.
* <p>
- * <p>
* The dialogs are designed to work with pluggable print services though the
* public APIs of those print services.
* <p>
--- a/jdk/src/share/classes/javax/print/SimpleDoc.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/SimpleDoc.java Wed Jul 05 19:27:58 2017 +0200
@@ -91,7 +91,10 @@
Class repClass = null;
try {
- repClass = Class.forName(flavor.getRepresentationClassName());
+ String className = flavor.getRepresentationClassName();
+ sun.reflect.misc.ReflectUtil.checkPackageAccess(className);
+ repClass = Class.forName(className, false,
+ Thread.currentThread().getContextClassLoader());
} catch (Throwable e) {
throw new IllegalArgumentException("unknown representation class");
}
--- a/jdk/src/share/classes/javax/print/StreamPrintServiceFactory.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/StreamPrintServiceFactory.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -45,7 +45,7 @@
* <p>
* This class is implemented by a service and located by the
* implementation using the
- * <a href="../../../technotes/guides/jar/jar.html#Service Provider">
+ * <a href="../../../technotes/guides/jar/jar.html#Service%20Provider">
* SPI JAR File specification</a>.
* <p>
* Applications locate instances of this class by calling the
--- a/jdk/src/share/classes/javax/print/attribute/AttributeSet.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/AttributeSet.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -69,17 +69,17 @@
* A {@link DocAttributeSet DocAttributeSet}, containing {@link DocAttribute
* DocAttribute}s, specifies the characteristics of an individual doc and the
* print job settings to be applied to an individual doc.
- * <P>
+ *
* <LI>
* A {@link PrintRequestAttributeSet PrintRequestAttributeSet}, containing
* {@link PrintRequestAttribute PrintRequestAttribute}s, specifies the
* settings
* to be applied to a whole print job and to all the docs in the print job.
- * <P>
+ *
* <LI>
* A {@link PrintJobAttributeSet PrintJobAttributeSet}, containing {@link
* PrintJobAttribute PrintJobAttribute}s, reports the status of a print job.
- * <P>
+ *
* <LI>
* A {@link PrintServiceAttributeSet PrintServiceAttributeSet}, containing
* {@link PrintServiceAttribute PrintServiceAttribute}s, reports the status of
@@ -103,7 +103,6 @@
* HashPrintRequestAttributeSet}, {@link HashPrintJobAttributeSet
* HashPrintJobAttributeSet}, and {@link HashPrintServiceAttributeSet
* HashPrintServiceAttributeSet}.
- * <P>
*
* @author Alan Kaminsky
*/
--- a/jdk/src/share/classes/javax/print/attribute/standard/Chromaticity.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/Chromaticity.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,6 +1,5 @@
-
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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,7 +41,7 @@
* The table below shows the effects of specifying a Chromaticity attribute of
* {@link #MONOCHROME MONOCHROME} or {@link #COLOR COLOR}
* for a monochrome or color document.
- * <P>
+ *
* <TABLE BORDER=1 CELLPADDING=2 CELLSPACING=1 SUMMARY="Shows effects of specifying MONOCHROME or COLOR Chromaticity attributes">
* <TR>
* <TH>
@@ -79,9 +78,7 @@
* </TR>
* </TABLE>
* <P>
- * <P>
* <B>IPP Compatibility:</B> Chromaticity is not an IPP attribute at present.
- * <P>
*
* @author Alan Kaminsky
*/
--- a/jdk/src/share/classes/javax/print/attribute/standard/Copies.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/Copies.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -44,17 +44,17 @@
* <LI>
* SINGLE_DOCUMENT -- The result will be <I>n</I> copies of a single output
* document comprising all the input docs.
- * <P>
+ *
* <LI>
* SINGLE_DOCUMENT_NEW_SHEET -- The result will be <I>n</I> copies of a single
* output document comprising all the input docs, and the first impression of
* each input doc will always start on a new media sheet.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- The result will be <I>n</I> copies of
* the first input document, followed by <I>n</I> copies of the second input
* document, . . . followed by <I>n</I> copies of the last input document.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_COLLATED_COPIES -- The result will be the first input
* document, the second input document, . . . the last input document, the group
@@ -64,7 +64,6 @@
* <B>IPP Compatibility:</B> The integer value gives the IPP integer value. The
* category name returned by <CODE>getName()</CODE> gives the IPP attribute
* name.
- * <P>
*
* @author David Mendenhall
* @author Alan Kamihensky
--- a/jdk/src/share/classes/javax/print/attribute/standard/Fidelity.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/Fidelity.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -46,7 +46,6 @@
* returns the IPP string representation of the attribute value.
* See <a href="http://www.ietf.org/rfc/rfc2911.txt">RFC 2911</a> Section 15.1 for
* a fuller description of the IPP fidelity attribute.
- * <P>
*
*/
public final class Fidelity extends EnumSyntax
--- a/jdk/src/share/classes/javax/print/attribute/standard/Finishings.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/Finishings.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -178,21 +178,21 @@
* <LI>
* SINGLE_DOCUMENT -- All the input docs will be bound together as one output
* document with the specified binding.
- * <P>
+ *
* <LI>
* SINGLE_DOCUMENT_NEW_SHEET -- All the input docs will be bound together as one
* output document with the specified binding, and the first impression of each
* input doc will always start on a new media sheet.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- Each input doc will be bound
* separately with the specified binding.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_COLLATED_COPIES -- Each input doc will be bound separately
* with the specified binding.
* </UL>
- * <P>
+ *
* <LI>
* If different docs have different bindings specified, then only two values of
* {@link MultipleDocumentHandling MultipleDocumentHandling} make sense, and the
@@ -202,7 +202,7 @@
* <LI>
* SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- Each input doc will be bound
* separately with its own specified binding.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_COLLATED_COPIES -- Each input doc will be bound separately
* with its own specified binding.
--- a/jdk/src/share/classes/javax/print/attribute/standard/JobKOctets.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/JobKOctets.java Wed Jul 05 19:27:58 2017 +0200
@@ -65,7 +65,7 @@
* The size of a doc is computed based on the print data representation class as
* specified by the doc's {@link javax.print.DocFlavor DocFlavor}, as
* shown in the table below.
- * <P>
+ *
* <TABLE BORDER=1 CELLPADDING=2 CELLSPACING=1 SUMMARY="Table showing computation of doc sizes">
* <TR>
* <TH>Representation Class</TH>
--- a/jdk/src/share/classes/javax/print/attribute/standard/JobState.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/JobState.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -76,12 +76,12 @@
* <LI>
* The job is using, or is attempting to use, one or more purely software
* processes that are analyzing, creating, or interpreting a PDL, etc.
- * <P>
+ *
* <LI>
* The job is using, or is attempting to use, one or more hardware
* devices that are interpreting a PDL, making marks on a medium, and/or
* performing finishing, such as stapling, etc.
- * <P>
+ *
* <LI>
* The printer has made the job ready for printing, but the output
* device is not yet printing it, either because the job hasn't reached the
--- a/jdk/src/share/classes/javax/print/attribute/standard/MediaName.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/MediaName.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -40,7 +40,6 @@
* <P>
* <B>IPP Compatibility:</B> MediaName is a representation class for
* values of the IPP "media" attribute which names media.
- * <P>
*
*/
public class MediaName extends Media implements Attribute {
--- a/jdk/src/share/classes/javax/print/attribute/standard/MediaSize.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/MediaSize.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -288,7 +288,6 @@
/**
* Class MediaSize.ISO includes {@link MediaSize MediaSize} values for ISO
* media.
- * <P>
*/
public final static class ISO {
/**
--- a/jdk/src/share/classes/javax/print/attribute/standard/MediaSizeName.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/MediaSizeName.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -41,7 +41,6 @@
* values of the IPP "media" attribute which names media sizes.
* The names of the media sizes correspond to those in the IPP 1.1 RFC
* <a HREF="http://www.ietf.org/rfc/rfc2911.txt">RFC 2911</a>
- * <P>
*
*/
public class MediaSizeName extends Media {
--- a/jdk/src/share/classes/javax/print/attribute/standard/MediaTray.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/MediaTray.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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,8 +42,6 @@
* <P>
* <B>IPP Compatibility:</B> MediaTray is a representation class for
* values of the IPP "media" attribute which name paper trays.
- * <P>
- *
*/
public class MediaTray extends Media implements Attribute {
--- a/jdk/src/share/classes/javax/print/attribute/standard/MultipleDocumentHandling.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/MultipleDocumentHandling.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -51,7 +51,7 @@
* single output document to produce. The MultipleDocumentHandling values
* SINGLE_DOCUMENT and SINGLE_DOCUMENT_NEW_SHEET specify two variations of
* this possibility.
- * <P>
+ *
* <LI>
* The multiple input documents remain separate output documents. Finishing
* operations ({@link Finishings Finishings}),
@@ -83,7 +83,7 @@
* sheets resulting from processing the document data must be
* <CODE>a(*),b(*),a(*),b(*),...</CODE>, and the printer object must force
* each copy (<CODE>a(*),b(*)</CODE>) to start on a new media sheet.
- * <P>
+ *
* <LI>
* <A NAME="sducfi">{@link #SEPARATE_DOCUMENTS_UNCOLLATED_COPIES
* <B>SEPARATE_DOCUMENTS_UNCOLLATED_COPIES</B>}</A>. If a print job
@@ -96,7 +96,7 @@
* If more than one copy is made, the ordering of the sets of media sheets
* resulting from processing the document data must be
* <CODE>a(*),a(*),...,b(*),b(*)...</CODE>.
- * <P>
+ *
* <LI>
* <A NAME="sdccfi">{@link #SEPARATE_DOCUMENTS_COLLATED_COPIES
* <B>SEPARATE_DOCUMENTS_COLLATED_COPIES</B>}</A>. If a print job
@@ -109,7 +109,7 @@
* If more than one copy is made, the ordering of the sets of media sheets
* resulting from processing the document data must be
* <CODE>a(*),b(*),a(*),b(*),...</CODE>.
- * <P>
+ *
* <LI>
* <A NAME="sdnsfi">{@link #SINGLE_DOCUMENT_NEW_SHEET
* <B>SINGLE_DOCUMENT_NEW_SHEET</B>}</A>. Same as SINGLE_DOCUMENT,
@@ -132,12 +132,12 @@
* <LI>
* With SINGLE_DOCUMENT, documents <CODE>a</CODE> and <CODE>b</CODE> are
* stapled together as a single document with no regard to new sheets.
- * <P>
+ *
* <LI>
* With SINGLE_DOCUMENT_NEW_SHEET, documents <CODE>a</CODE> and <CODE>b</CODE>
* are stapled together as a single document, but document <CODE>b</CODE>
* starts on a new sheet.
- * <P>
+ *
* <LI>
* With SEPARATE_DOCUMENTS_UNCOLLATED_COPIES and
* SEPARATE_DOCUMENTS_COLLATED_COPIES, documents <CODE>a</CODE> and
--- a/jdk/src/share/classes/javax/print/attribute/standard/NumberUp.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/NumberUp.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -56,7 +56,7 @@
* SINGLE_DOCUMENT -- All the input docs will be combined together into one
* output document. Each media impression will consist of <I>n</I>m
* print-stream pages from the output document.
- * <P>
+ *
* <LI>
* SINGLE_DOCUMENT_NEW_SHEET -- All the input docs will be combined together
* into one output document. Each media impression will consist of <I>n</I>
@@ -64,7 +64,7 @@
* each input doc will always start on a new media sheet; this means the last
* impression of an input doc may have fewer than <I>n</I> print-stream pages
* on it.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- The input docs will remain separate.
* Each media impression will consist of <I>n</I> print-stream pages from the
@@ -72,7 +72,7 @@
* input doc will always start on a new media sheet; this means the last
* impression of an input doc may have fewer than <I>n</I> print-stream pages on
* it.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_COLLATED_COPIES -- The input docs will remain separate.
* Each media impression will consist of <I>n</I> print-stream pages from the
@@ -91,7 +91,7 @@
* the first print-stream page of the next input doc goes at the start of the
* next media impression, possibly leaving fewer than the full number of
* print-stream pages on the previous media impression.
- * <P>
+ *
* <LI>
* SINGLE_DOCUMENT_NEW_SHEET -- All the input docs will be combined together
* into one output document. Each media impression will consist of <I>n</I>
@@ -99,7 +99,7 @@
* each input doc will always start on a new media sheet; this means the last
* impression of an input doc may have fewer than <I>n</I> print-stream pages
* on it.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- The input docs will remain separate.
* For input doc <I>i,</I> each media impression will consist of
@@ -107,7 +107,7 @@
* docs are separate, the first impression of each input doc will always start
* on a new media sheet; this means the last impression of an input doc may have
* fewer than <I>n<SUB>i</SUB></I> print-stream pages on it.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_COLLATED_COPIES -- The input docs will remain separate.
* For input doc <I>i,</I> each media impression will consist of
@@ -120,7 +120,6 @@
* <B>IPP Compatibility:</B> The integer value gives the IPP integer value.
* The category name returned by <CODE>getName()</CODE> gives the IPP
* attribute name.
- * <P>
*
* @author Alan Kaminsky
*/
--- a/jdk/src/share/classes/javax/print/attribute/standard/PageRanges.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/PageRanges.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -68,17 +68,17 @@
* SINGLE_DOCUMENT -- All the input docs will be combined together into one
* output document. The specified page ranges of that output document will be
* printed.
- * <P>
+ *
* <LI>
* SINGLE_DOCUMENT_NEW_SHEET -- All the input docs will be combined together
* into one output document, and the first impression of each input doc will
* always start on a new media sheet. The specified page ranges of that output
* document will be printed.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- For each separate input doc, the
* specified page ranges will be printed.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_COLLATED_COPIES -- For each separate input doc, the
* specified page ranges will be printed.
@@ -87,7 +87,7 @@
* <LI>
* SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- For each separate input doc, its own
* specified page ranges will be printed..
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_COLLATED_COPIES -- For each separate input doc, its own
* specified page ranges will be printed..
@@ -100,7 +100,6 @@
* javax.print.attribute.SetOfIntegerSyntax SetOfIntegerSyntax} for an
* explanation of canonical array form. The category name returned by
* <CODE>getName()</CODE> gives the IPP attribute name.
- * <P>
*
* @author David Mendenhall
* @author Alan Kaminsky
--- a/jdk/src/share/classes/javax/print/attribute/standard/PrinterMoreInfoManufacturer.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/PrinterMoreInfoManufacturer.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -45,7 +45,6 @@
* to find out more information about this specific printer rather than this
* general kind of printer.
* <P>
- * <P>
* <B>IPP Compatibility:</B> The string form returned by
* <CODE>toString()</CODE> gives the IPP uri value.
* The category name returned by <CODE>getName()</CODE>
--- a/jdk/src/share/classes/javax/print/attribute/standard/PrinterResolution.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/PrinterResolution.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -44,7 +44,7 @@
* an instance of class PrinterResolution indicating the exact resolution the
* client wants. Only printers supporting that exact resolution will match the
* search.
- * <P>
+ *
* <LI>
* When a client needs to print a job using the client's desired resolution
* exactly (no more, no less), the client specifies an instance of class
@@ -60,7 +60,6 @@
* In some cases this may be more simply achieved by specifying a
* PrintQuality attribute which often controls resolution.
* <P>
- * <P>
* <B>IPP Compatibility:</B> The information needed to construct an IPP
* <CODE>"printer-resolution"</CODE> attribute can be obtained by calling
* methods on the PrinterResolution object. The category name returned by
--- a/jdk/src/share/classes/javax/print/attribute/standard/SheetCollate.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/SheetCollate.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -77,7 +77,7 @@
* combined into one output document. Multiple copies of the output document
* will be produced with pages in collated order, i.e. pages 1, 2, 3, . . .,
* 1, 2, 3, . . .
- * <P>
+ *
* <LI>
* SheetCollate = COLLATED, {@link MultipleDocumentHandling
* MultipleDocumentHandling} = SINGLE_DOCUMENT_NEW_SHEET -- All the input docs
@@ -85,7 +85,7 @@
* input doc will always start on a new media sheet. Multiple copies of the
* output document will be produced with pages in collated order, i.e. pages
* 1, 2, 3, . . ., 1, 2, 3, . . .
- * <P>
+ *
* <LI>
* SheetCollate = COLLATED, {@link MultipleDocumentHandling
* MultipleDocumentHandling} = SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- Each
@@ -94,7 +94,7 @@
* pages in collated order, but the documents themselves in uncollated order,
* i.e. pages A1, A2, A3, . . ., A1, A2, A3, . . ., B1, B2, B3, . . ., B1, B2,
* B3, . . .
- * <P>
+ *
* <LI>
* SheetCollate = COLLATED, {@link MultipleDocumentHandling
* MultipleDocumentHandling} = SEPARATE_DOCUMENTS_COLLATED_COPIES -- Each input
@@ -103,14 +103,14 @@
* in collated order, with the documents themselves also in collated order, i.e.
* pages A1, A2, A3, . . ., B1, B2, B3, . . ., A1, A2, A3, . . ., B1, B2, B3,
* . . .
- * <P>
+ *
* <LI>
* SheetCollate = UNCOLLATED, {@link MultipleDocumentHandling
* MultipleDocumentHandling} = SINGLE_DOCUMENT -- All the input docs will be
* combined into one output document. Multiple copies of the output document
* will be produced with pages in uncollated order, i.e. pages 1, 1, . . .,
* 2, 2, . . ., 3, 3, . . .
- * <P>
+ *
* <LI>
* SheetCollate = UNCOLLATED, {@link MultipleDocumentHandling
* MultipleDocumentHandling} = SINGLE_DOCUMENT_NEW_SHEET -- All the input docs
@@ -118,7 +118,7 @@
* input doc will always start on a new media sheet. Multiple copies of the
* output document will be produced with pages in uncollated order, i.e. pages
* 1, 1, . . ., 2, 2, . . ., 3, 3, . . .
- * <P>
+ *
* <LI>
* SheetCollate = UNCOLLATED, {@link MultipleDocumentHandling
* MultipleDocumentHandling} = SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- Each
@@ -128,7 +128,7 @@
* order, i.e. pages A1, A1, . . ., A2, A2, . . ., A3, A3, . . ., B1, B1, . . .,
* B2, B2, . . ., B3, B3, . . .
* </UL>
- * <P>
+ *
* <LI>
* If different docs have different sheet collations specified, then only one
* value of {@link MultipleDocumentHandling MultipleDocumentHandling} is
--- a/jdk/src/share/classes/javax/print/attribute/standard/Sides.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/print/attribute/standard/Sides.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -51,21 +51,21 @@
* SINGLE_DOCUMENT -- All the input docs will be combined together into one
* output document. Each media sheet will consist of <I>n</I> impressions from
* the output document.
- * <P>
+ *
* <LI>
* SINGLE_DOCUMENT_NEW_SHEET -- All the input docs will be combined together
* into one output document. Each media sheet will consist of <I>n</I>
* impressions from the output document. However, the first impression of each
* input doc will always start on a new media sheet; this means the last media
* sheet of an input doc may have only one impression on it.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- The input docs will remain separate.
* Each media sheet will consist of <I>n</I> impressions from the input doc.
* Since the input docs are separate, the first impression of each input doc
* will always start on a new media sheet; this means the last media sheet of
* an input doc may have only one impression on it.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_COLLATED_COPIES -- The input docs will remain separate.
* Each media sheet will consist of <I>n</I> impressions from the input doc.
@@ -73,7 +73,7 @@
* will always start on a new media sheet; this means the last media sheet of
* an input doc may have only one impression on it.
* </UL>
- * <P>
+ *
* <UL>
* <LI>
* SINGLE_DOCUMENT -- All the input docs will be combined together into one
@@ -83,14 +83,14 @@
* input doc has a different sides value from the previous input doc, the first
* print-stream page of the next input doc goes at the start of the next media
* sheet, possibly leaving only one impression on the previous media sheet.
- * <P>
+ *
* <LI>
* SINGLE_DOCUMENT_NEW_SHEET -- All the input docs will be combined together
* into one output document. Each media sheet will consist of <I>n</I>
* impressions from the output document. However, the first impression of each
* input doc will always start on a new media sheet; this means the last
* impression of an input doc may have only one impression on it.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- The input docs will remain separate.
* For input doc <I>i,</I> each media sheet will consist of <I>n<SUB>i</SUB></I>
@@ -98,7 +98,7 @@
* impression of each input doc will always start on a new media sheet; this
* means the last media sheet of an input doc may have only one impression on
* it.
- * <P>
+ *
* <LI>
* SEPARATE_DOCUMENTS_COLLATED_COPIES -- The input docs will remain separate.
* For input doc <I>i,</I> each media sheet will consist of <I>n<SUB>i</SUB></I>
@@ -113,7 +113,6 @@
* <CODE>getName()</CODE> is the IPP attribute name. The enumeration's
* integer value is the IPP enum value. The <code>toString()</code> method
* returns the IPP string representation of the attribute value.
- * <P>
*
* @author Alan Kaminsky
*/
--- a/jdk/src/share/classes/javax/security/auth/Policy.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/security/auth/Policy.java Wed Jul 05 19:27:58 2017 +0200
@@ -26,6 +26,10 @@
package javax.security.auth;
import java.security.Security;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.security.PrivilegedExceptionAction;
+import java.util.Objects;
import sun.security.util.Debug;
/**
@@ -155,22 +159,15 @@
public abstract class Policy {
private static Policy policy;
- private static ClassLoader contextClassLoader;
private final static String AUTH_POLICY =
"sun.security.provider.AuthPolicyFile";
+ private final java.security.AccessControlContext acc =
+ java.security.AccessController.getContext();
+
// true if a custom (not AUTH_POLICY) system-wide policy object is set
private static boolean isCustomPolicy;
- static {
- contextClassLoader = java.security.AccessController.doPrivileged
- (new java.security.PrivilegedAction<ClassLoader>() {
- public ClassLoader run() {
- return Thread.currentThread().getContextClassLoader();
- }
- });
- };
-
/**
* Sole constructor. (For invocation by subclass constructors, typically
* implicit.)
@@ -213,8 +210,8 @@
if (policy == null) {
String policy_class = null;
- policy_class = java.security.AccessController.doPrivileged
- (new java.security.PrivilegedAction<String>() {
+ policy_class = AccessController.doPrivileged
+ (new PrivilegedAction<String>() {
public String run() {
return java.security.Security.getProperty
("auth.policy.provider");
@@ -226,18 +223,28 @@
try {
final String finalClass = policy_class;
- policy = java.security.AccessController.doPrivileged
- (new java.security.PrivilegedExceptionAction<Policy>() {
- public Policy run() throws ClassNotFoundException,
- InstantiationException,
- IllegalAccessException {
- return (Policy) Class.forName
- (finalClass,
- true,
- contextClassLoader).newInstance();
- }
- });
- isCustomPolicy = !finalClass.equals(AUTH_POLICY);
+
+ Policy untrustedImpl = AccessController.doPrivileged(
+ new PrivilegedExceptionAction<Policy>() {
+ public Policy run() throws ClassNotFoundException,
+ InstantiationException,
+ IllegalAccessException {
+ Class<? extends Policy> implClass = Class.forName(
+ finalClass, false,
+ Thread.currentThread().getContextClassLoader()
+ ).asSubclass(Policy.class);
+ return implClass.newInstance();
+ }
+ });
+ AccessController.doPrivileged(
+ new PrivilegedExceptionAction<Void>() {
+ public Void run() {
+ setPolicy(untrustedImpl);
+ isCustomPolicy = !finalClass.equals(AUTH_POLICY);
+ return null;
+ }
+ }, Objects.requireNonNull(untrustedImpl.acc)
+ );
} catch (Exception e) {
throw new SecurityException
(sun.security.util.ResourcesMgr.getString
--- a/jdk/src/share/classes/javax/security/auth/Subject.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/security/auth/Subject.java Wed Jul 05 19:27:58 2017 +0200
@@ -964,6 +964,10 @@
s.defaultReadObject();
+ // Rewrap the principals into a SecureSet
+ principals = Collections.synchronizedSet(new SecureSet<Principal>
+ (this, PRINCIPAL_SET, principals));
+
// The Credential {@code Set} is not serialized, but we do not
// want the default deserialization routine to set it to null.
this.pubCredentials = Collections.synchronizedSet
--- a/jdk/src/share/classes/javax/security/auth/login/Configuration.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/security/auth/login/Configuration.java Wed Jul 05 19:27:58 2017 +0200
@@ -27,9 +27,6 @@
import javax.security.auth.AuthPermission;
-import java.io.*;
-import java.util.*;
-import java.net.URI;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.PrivilegedExceptionAction;
@@ -38,7 +35,7 @@
import java.security.NoSuchProviderException;
import java.security.Provider;
import java.security.Security;
-import java.security.SecurityPermission;
+import java.util.Objects;
import sun.security.jca.GetInstance;
@@ -191,16 +188,9 @@
public abstract class Configuration {
private static Configuration configuration;
- private static ClassLoader contextClassLoader;
- static {
- contextClassLoader = AccessController.doPrivileged
- (new PrivilegedAction<ClassLoader>() {
- public ClassLoader run() {
- return Thread.currentThread().getContextClassLoader();
- }
- });
- };
+ private final java.security.AccessControlContext acc =
+ java.security.AccessController.getContext();
private static void checkPermission(String type) {
SecurityManager sm = System.getSecurityManager();
@@ -253,17 +243,26 @@
try {
final String finalClass = config_class;
- configuration = AccessController.doPrivileged
- (new PrivilegedExceptionAction<Configuration>() {
- public Configuration run() throws ClassNotFoundException,
- InstantiationException,
- IllegalAccessException {
- return (Configuration)Class.forName
- (finalClass,
- true,
- contextClassLoader).newInstance();
- }
- });
+ Configuration untrustedImpl = AccessController.doPrivileged(
+ new PrivilegedExceptionAction<Configuration>() {
+ public Configuration run() throws ClassNotFoundException,
+ InstantiationException,
+ IllegalAccessException {
+ Class<? extends Configuration> implClass = Class.forName(
+ finalClass, false,
+ Thread.currentThread().getContextClassLoader()
+ ).asSubclass(Configuration.class);
+ return implClass.newInstance();
+ }
+ });
+ AccessController.doPrivileged(
+ new PrivilegedExceptionAction<Void>() {
+ public Void run() {
+ setConfiguration(untrustedImpl);
+ return null;
+ }
+ }, Objects.requireNonNull(untrustedImpl.acc)
+ );
} catch (PrivilegedActionException e) {
Exception ee = e.getException();
if (ee instanceof InstantiationException) {
--- a/jdk/src/share/classes/javax/security/auth/login/LoginContext.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/security/auth/login/LoginContext.java Wed Jul 05 19:27:58 2017 +0200
@@ -209,8 +209,7 @@
private Map<String,?> state = new HashMap<String,Object>();
private Configuration config;
- private boolean configProvided = false;
- private AccessControlContext creatorAcc = null;
+ private AccessControlContext creatorAcc = null; // customized config only
private ModuleInfo[] moduleStack;
private ClassLoader contextClassLoader = null;
private static final Class<?>[] PARAMS = { };
@@ -229,7 +228,7 @@
private void init(String name) throws LoginException {
SecurityManager sm = System.getSecurityManager();
- if (sm != null && !configProvided) {
+ if (sm != null && creatorAcc == null) {
sm.checkPermission(new AuthPermission
("createLoginContext." + name));
}
@@ -252,7 +251,7 @@
AppConfigurationEntry[] entries = config.getAppConfigurationEntry(name);
if (entries == null) {
- if (sm != null && !configProvided) {
+ if (sm != null && creatorAcc == null) {
sm.checkPermission(new AuthPermission
("createLoginContext." + OTHER));
}
@@ -279,7 +278,15 @@
contextClassLoader = java.security.AccessController.doPrivileged
(new java.security.PrivilegedAction<ClassLoader>() {
public ClassLoader run() {
- return Thread.currentThread().getContextClassLoader();
+ ClassLoader loader =
+ Thread.currentThread().getContextClassLoader();
+ if (loader == null) {
+ // Don't use bootstrap class loader directly to ensure
+ // proper package access control!
+ loader = ClassLoader.getSystemClassLoader();
+ }
+
+ return loader;
}
});
}
@@ -298,10 +305,10 @@
(DEFAULT_HANDLER);
if (defaultHandler == null || defaultHandler.length() == 0)
return null;
- Class<?> c = Class.forName(defaultHandler,
- true,
- finalLoader);
- return (CallbackHandler)c.newInstance();
+ Class<? extends CallbackHandler> c = Class.forName(
+ defaultHandler, true,
+ finalLoader).asSubclass(CallbackHandler.class);
+ return c.newInstance();
}
});
} catch (java.security.PrivilegedActionException pae) {
@@ -309,7 +316,7 @@
}
// secure it with the caller's ACC
- if (this.callbackHandler != null && !configProvided) {
+ if (this.callbackHandler != null && creatorAcc == null) {
this.callbackHandler = new SecureCallbackHandler
(java.security.AccessController.getContext(),
this.callbackHandler);
@@ -498,8 +505,7 @@
CallbackHandler callbackHandler,
Configuration config) throws LoginException {
this.config = config;
- configProvided = (config != null) ? true : false;
- if (configProvided) {
+ if (config != null) {
creatorAcc = java.security.AccessController.getContext();
}
@@ -510,7 +516,7 @@
}
if (callbackHandler == null) {
loadDefaultCallbackHandler();
- } else if (!configProvided) {
+ } else if (creatorAcc == null) {
this.callbackHandler = new SecureCallbackHandler
(java.security.AccessController.getContext(),
callbackHandler);
@@ -577,23 +583,13 @@
}
try {
- if (configProvided) {
- // module invoked in doPrivileged with creatorAcc
- invokeCreatorPriv(LOGIN_METHOD);
- invokeCreatorPriv(COMMIT_METHOD);
- } else {
- // module invoked in doPrivileged
- invokePriv(LOGIN_METHOD);
- invokePriv(COMMIT_METHOD);
- }
+ // module invoked in doPrivileged
+ invokePriv(LOGIN_METHOD);
+ invokePriv(COMMIT_METHOD);
loginSucceeded = true;
} catch (LoginException le) {
try {
- if (configProvided) {
- invokeCreatorPriv(ABORT_METHOD);
- } else {
- invokePriv(ABORT_METHOD);
- }
+ invokePriv(ABORT_METHOD);
} catch (LoginException le2) {
throw le;
}
@@ -628,13 +624,8 @@
("null.subject.logout.called.before.login"));
}
- if (configProvided) {
- // module invoked in doPrivileged with creatorAcc
- invokeCreatorPriv(LOGOUT_METHOD);
- } else {
- // module invoked in doPrivileged
- invokePriv(LOGOUT_METHOD);
- }
+ // module invoked in doPrivileged
+ invokePriv(LOGOUT_METHOD);
}
/**
@@ -677,7 +668,8 @@
/**
* Invokes the login, commit, and logout methods
- * from a LoginModule inside a doPrivileged block.
+ * from a LoginModule inside a doPrivileged block restricted
+ * by creatorAcc (may be null).
*
* This version is called if the caller did not instantiate
* the LoginContext with a Configuration object.
@@ -690,29 +682,6 @@
invoke(methodName);
return null;
}
- });
- } catch (java.security.PrivilegedActionException pae) {
- throw (LoginException)pae.getException();
- }
- }
-
- /**
- * Invokes the login, commit, and logout methods
- * from a LoginModule inside a doPrivileged block restricted
- * by creatorAcc
- *
- * This version is called if the caller instantiated
- * the LoginContext with a Configuration object.
- */
- private void invokeCreatorPriv(final String methodName)
- throws LoginException {
- try {
- java.security.AccessController.doPrivileged
- (new java.security.PrivilegedExceptionAction<Void>() {
- public Void run() throws LoginException {
- invoke(methodName);
- return null;
- }
}, creatorAcc);
} catch (java.security.PrivilegedActionException pae) {
throw (LoginException)pae.getException();
@@ -735,24 +704,24 @@
} else {
// instantiate the LoginModule
- Class<?> c = Class.forName
- (moduleStack[i].entry.getLoginModuleName(),
+ //
+ // Allow any object to be a LoginModule as long as it
+ // conforms to the interface.
+ Class<?> c = Class.forName(
+ moduleStack[i].entry.getLoginModuleName(),
true,
contextClassLoader);
Constructor<?> constructor = c.getConstructor(PARAMS);
Object[] args = { };
-
- // allow any object to be a LoginModule
- // as long as it conforms to the interface
moduleStack[i].module = constructor.newInstance(args);
+ // call the LoginModule's initialize method
methods = moduleStack[i].module.getClass().getMethods();
-
- // call the LoginModule's initialize method
for (mIndex = 0; mIndex < methods.length; mIndex++) {
- if (methods[mIndex].getName().equals(INIT_METHOD))
+ if (methods[mIndex].getName().equals(INIT_METHOD)) {
break;
+ }
}
Object[] initArgs = {subject,
@@ -760,19 +729,28 @@
state,
moduleStack[i].entry.getOptions() };
// invoke the LoginModule initialize method
+ //
+ // Throws ArrayIndexOutOfBoundsException if no such
+ // method defined. May improve to use LoginException in
+ // the future.
methods[mIndex].invoke(moduleStack[i].module, initArgs);
}
// find the requested method in the LoginModule
for (mIndex = 0; mIndex < methods.length; mIndex++) {
- if (methods[mIndex].getName().equals(methodName))
+ if (methods[mIndex].getName().equals(methodName)) {
break;
+ }
}
// set up the arguments to be passed to the LoginModule method
Object[] args = { };
// invoke the LoginModule method
+ //
+ // Throws ArrayIndexOutOfBoundsException if no such
+ // method defined. May improve to use LoginException in
+ // the future.
boolean status = ((Boolean)methods[mIndex].invoke
(moduleStack[i].module, args)).booleanValue();
--- a/jdk/src/share/classes/javax/sound/sampled/AudioInputStream.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/sound/sampled/AudioInputStream.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2005, 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
@@ -193,7 +193,6 @@
* @see #read(byte[], int, int)
* @see #read(byte[])
* @see #available
- * <p>
*/
public int read() throws IOException {
if( frameSize != 1 ) {
--- a/jdk/src/share/classes/javax/sound/sampled/AudioPermission.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/sound/sampled/AudioPermission.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2002, 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
@@ -40,7 +40,7 @@
* The following table lists the possible <code>AudioPermission</code> target names.
* For each name, the table provides a description of exactly what that permission
* allows, as well as a discussion of the risks of granting code the permission.
- * <p>
+ *
*
* <table border=1 cellpadding=5 summary="permission target name, what the permission allows, and associated risks">
* <tr>
--- a/jdk/src/share/classes/javax/sound/sampled/ReverbType.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/sound/sampled/ReverbType.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2003, 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
@@ -77,7 +77,7 @@
* <p>
*
* <b>Reverberation Types and Parameters</b>
- * <p>
+ *
* <table border=1 cellpadding=5 summary="reverb types and params: decay time, late intensity, late delay, early intensity, and early delay">
*
* <tr>
--- a/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java Wed Jul 05 19:27:58 2017 +0200
@@ -35,6 +35,8 @@
import java.io.InputStream;
import java.io.IOException;
import java.io.FileNotFoundException;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import javax.naming.*;
@@ -348,7 +350,17 @@
/*
* Dependent on application
*/
- String strRowsetProperties = System.getProperty("rowset.properties");
+ String strRowsetProperties;
+ try {
+ strRowsetProperties = AccessController.doPrivileged(new PrivilegedAction<String>() {
+ public String run() {
+ return System.getProperty("rowset.properties");
+ }
+ }, null, new PropertyPermission("rowset.properties","read"));
+ } catch (Exception ex) {
+ strRowsetProperties = null;
+ }
+
if (strRowsetProperties != null) {
// Load user's implementation of SyncProvider
// here. -Drowset.properties=/abc/def/pqr.txt
@@ -393,7 +405,16 @@
* load additional properties from -D command line
*/
properties.clear();
- String providerImpls = System.getProperty(ROWSET_SYNC_PROVIDER);
+ String providerImpls;
+ try {
+ providerImpls = AccessController.doPrivileged(new PrivilegedAction<String>() {
+ public String run() {
+ return System.getProperty(ROWSET_SYNC_PROVIDER);
+ }
+ }, null, new PropertyPermission(ROWSET_SYNC_PROVIDER,"read"));
+ } catch (Exception ex) {
+ providerImpls = null;
+ }
if (providerImpls != null) {
int i = 0;
--- a/jdk/src/share/classes/javax/swing/DefaultComboBoxModel.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/DefaultComboBoxModel.java Wed Jul 05 19:27:58 2017 +0200
@@ -115,7 +115,7 @@
/**
* Returns the index-position of the specified object in the list.
*
- * @param anObject
+ * @param anObject the object to return the index of
* @return an int representing the index position, where 0 is
* the first position
*/
--- a/jdk/src/share/classes/javax/swing/JComboBox.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/JComboBox.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -675,7 +675,7 @@
* the model and its preferred size obtained, which can be
* relatively expensive.
*
- * @param prototypeDisplayValue
+ * @param prototypeDisplayValue the prototype display value
* @see #getPrototypeDisplayValue
* @since 1.4
* @beaninfo
--- a/jdk/src/share/classes/javax/swing/JEditorPane.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/JEditorPane.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -160,9 +160,9 @@
* the character set specified in the <code>ChangedCharSetException</code>
* (which is an <code>IOException</code>).
* </ol>
- * <p>
+ *
* <dl>
- * <dt><b><font size=+1>Newlines</font></b>
+ * <dt><b>Newlines</b>
* <dd>
* For a discussion on how newlines are handled, see
* <a href="text/DefaultEditorKit.html">DefaultEditorKit</a>.
--- a/jdk/src/share/classes/javax/swing/JLabel.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/JLabel.java Wed Jul 05 19:27:58 2017 +0200
@@ -855,7 +855,6 @@
* <code>RIGHT</code>,
* <code>LEADING</code>, or
* <code>TRAILING</code> (the default).
- * @exception IllegalArgumentException
*
* @see SwingConstants
* @beaninfo
--- a/jdk/src/share/classes/javax/swing/JLayeredPane.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/JLayeredPane.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -58,20 +58,20 @@
* layers makes it easy to ensure that components overlap properly,
* without having to worry about specifying numbers for specific depths:
* <DL>
- * <DT><FONT SIZE="2">DEFAULT_LAYER</FONT></DT>
+ * <DT>DEFAULT_LAYER</DT>
* <DD>The standard layer, where most components go. This the bottommost
* layer.
- * <DT><FONT SIZE="2">PALETTE_LAYER</FONT></DT>
+ * <DT>PALETTE_LAYER</DT>
* <DD>The palette layer sits over the default layer. Useful for floating
* toolbars and palettes, so they can be positioned above other components.
- * <DT><FONT SIZE="2">MODAL_LAYER</FONT></DT>
+ * <DT>MODAL_LAYER</DT>
* <DD>The layer used for modal dialogs. They will appear on top of any
* toolbars, palettes, or standard components in the container.
- * <DT><FONT SIZE="2">POPUP_LAYER</FONT></DT>
+ * <DT>POPUP_LAYER</DT>
* <DD>The popup layer displays above dialogs. That way, the popup windows
* associated with combo boxes, tooltips, and other help text will appear
* above the component, palette, or dialog that generated them.
- * <DT><FONT SIZE="2">DRAG_LAYER</FONT></DT>
+ * <DT>DRAG_LAYER</DT>
* <DD>When dragging a component, reassigning it to the drag layer ensures
* that it is positioned over every other component in the container. When
* finished dragging, it can be reassigned to its normal layer.
--- a/jdk/src/share/classes/javax/swing/JOptionPane.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/JOptionPane.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -131,7 +131,7 @@
* <b>Parameters:</b><br>
* The parameters to these methods follow consistent patterns:
* <blockquote>
- * <dl compact>
+ * <dl>
* <dt>parentComponent<dd>
* Defines the <code>Component</code> that is to be the parent of this
* dialog box.
@@ -149,7 +149,7 @@
* <code>String</code> constant.
* However, the type of this parameter is actually <code>Object</code>. Its
* interpretation depends on its type:
- * <dl compact>
+ * <dl>
* <dt>Object[]<dd>An array of objects is interpreted as a series of
* messages (one per object) arranged in a vertical stack.
* The interpretation is recursive -- each object in the
@@ -187,7 +187,7 @@
* <code>String</code>s. But
* the parameter type is an array of <code>Objects</code>.
* A button is created for each object depending on its type:
- * <dl compact>
+ * <dl>
* <dt>Component<dd>The component is added to the button row directly.
* <dt>Icon<dd>A <code>JButton</code> is created with this as its label.
* <dt>other<dd>The <code>Object</code> is converted to a string using its
--- a/jdk/src/share/classes/javax/swing/JTextArea.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/JTextArea.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -95,7 +95,7 @@
* </pre>
*
* <dl>
- * <dt><b><font size=+1>Newlines</font></b>
+ * <dt><b>Newlines</b>
* <dd>
* For a discussion on how newlines are handled, see
* <a href="text/DefaultEditorKit.html">DefaultEditorKit</a>.
--- a/jdk/src/share/classes/javax/swing/JTextPane.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/JTextPane.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -51,7 +51,7 @@
* be embedded in the flow of text.
*
* <dl>
- * <dt><b><font size=+1>Newlines</font></b>
+ * <dt><b>Newlines</b>
* <dd>
* For a discussion on how newlines are handled, see
* <a href="text/DefaultEditorKit.html">DefaultEditorKit</a>.
--- a/jdk/src/share/classes/javax/swing/SwingUtilities.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/SwingUtilities.java Wed Jul 05 19:27:58 2017 +0200
@@ -24,6 +24,7 @@
*/
package javax.swing;
+import sun.reflect.misc.ReflectUtil;
import sun.swing.SwingUtilities2;
import sun.swing.UIAction;
@@ -33,9 +34,6 @@
import java.awt.event.*;
import java.awt.dnd.DropTarget;
-import java.util.Vector;
-import java.util.Hashtable;
-
import java.lang.reflect.*;
import javax.accessibility.*;
@@ -1872,6 +1870,7 @@
static Class<?> loadSystemClass(String className) throws ClassNotFoundException {
+ ReflectUtil.checkPackageAccess(className);
return Class.forName(className, true, Thread.currentThread().
getContextClassLoader());
}
--- a/jdk/src/share/classes/javax/swing/event/EventListenerList.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/event/EventListenerList.java Wed Jul 05 19:27:58 2017 +0200
@@ -27,6 +27,7 @@
import java.io.*;
import java.util.*;
import java.lang.reflect.Array;
+import sun.reflect.misc.ReflectUtil;
/**
* A class that holds a list of EventListeners. A single instance
@@ -271,7 +272,9 @@
while (null != (listenerTypeOrNull = s.readObject())) {
ClassLoader cl = Thread.currentThread().getContextClassLoader();
EventListener l = (EventListener)s.readObject();
- add((Class<EventListener>)Class.forName((String)listenerTypeOrNull, true, cl), l);
+ String name = (String) listenerTypeOrNull;
+ ReflectUtil.checkPackageAccess(name);
+ add((Class<EventListener>)Class.forName(name, true, cl), l);
}
}
--- a/jdk/src/share/classes/javax/swing/plaf/TextUI.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/TextUI.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -105,7 +105,7 @@
* @param biasRet an array to contain the bias for the returned position
* @return the location within the model that best represents the next
* location visual position
- * @exception BadLocationException
+ * @exception BadLocationException for a bad location within a document model
* @exception IllegalArgumentException for an invalid direction
*/
public abstract int getNextVisualPositionFrom(JTextComponent t,
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -1199,7 +1199,7 @@
* can be traversed to determine how the model is being
* represented spatially.
* <p>
- * <font color=red><b>NOTE:</b>The View hierarchy can
+ * <font style="color: red;"><b>NOTE:</b>The View hierarchy can
* be traversed from the root view, and other things
* can be done as well. Things done in this way cannot
* be protected like simple method calls through the TextUI.
--- a/jdk/src/share/classes/javax/swing/plaf/nimbus/AbstractRegionPainter.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/AbstractRegionPainter.java Wed Jul 05 19:27:58 2017 +0200
@@ -356,12 +356,12 @@
* end points are equal. In such a case, the end y point is slightly
* increased to avoid the overlap.
*
- * @param x1
- * @param y1
- * @param x2
- * @param y2
- * @param midpoints
- * @param colors
+ * @param x1 x1
+ * @param y1 y1
+ * @param x2 x2
+ * @param y2 y2
+ * @param midpoints the midpoints
+ * @param colors the colors
* @return a valid LinearGradientPaint. This method never returns null.
* @throws NullPointerException
* if {@code midpoints} array is null,
@@ -387,11 +387,11 @@
* is non-positive. In such a case, the radius is just slightly
* increased to avoid 0.
*
- * @param x
- * @param y
- * @param r
- * @param midpoints
- * @param colors
+ * @param x x-coordinate
+ * @param y y-coordinate
+ * @param r radius
+ * @param midpoints the midpoints
+ * @param colors the colors
* @return a valid RadialGradientPaint. This method never returns null.
* @throws NullPointerException
* if {@code midpoints} array is null,
--- a/jdk/src/share/classes/javax/swing/plaf/nimbus/NimbusStyle.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/NimbusStyle.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -645,7 +645,7 @@
* passed to the NimbusStyle constructor. In either case, it looks for
* "background".</p>
*
- * @param ctx
+ * @param ctx SynthContext identifying requester
* @param key must not be null
*/
@Override public Object get(SynthContext ctx, Object key) {
--- a/jdk/src/share/classes/javax/swing/text/CompositeView.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/text/CompositeView.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -713,7 +713,7 @@
* @param biasRet an array containing the bias that was checked
* @return the location within the model that best represents the next
* north or south location
- * @exception BadLocationException
+ * @exception BadLocationException for a bad location within a document model
* @exception IllegalArgumentException if <code>direction</code> is invalid
* @see #getNextVisualPositionFrom
*
@@ -745,7 +745,7 @@
* @param biasRet an array containing the bias that was checked
* @return the location within the model that best represents the next
* west or east location
- * @exception BadLocationException
+ * @exception BadLocationException for a bad location within a document model
* @exception IllegalArgumentException if <code>direction</code> is invalid
* @see #getNextVisualPositionFrom
*/
--- a/jdk/src/share/classes/javax/swing/text/DefaultEditorKit.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/text/DefaultEditorKit.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -43,7 +43,7 @@
* provides a minimal set of actions for a simple editor.
*
* <dl>
- * <dt><b><font size=+1>Newlines</font></b>
+ * <dt><b>Newlines</b>
* <dd>
* There are two properties which deal with newlines. The
* system property, <code>line.separator</code>, is defined to be
--- a/jdk/src/share/classes/javax/swing/text/Document.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/text/Document.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -33,7 +33,7 @@
* interface is to scale from very simple needs (a plain text textfield)
* to complex needs (an HTML or XML document, for example).
*
- * <p><b><font size=+1>Content</font></b>
+ * <p><b>Content</b>
* <p>
* At the simplest level, text can be
* modeled as a linear sequence of characters. To support
@@ -62,7 +62,7 @@
* <li>{@link #getText(int, int)}
* <li>{@link #getText(int, int, javax.swing.text.Segment)}
* </ul>
- * <p><b><font size=+1>Structure</font></b>
+ * <p><b>Structure</b>
* <p>
* Text is rarely represented simply as featureless content. Rather,
* text typically has some sort of structure associated with it.
@@ -83,7 +83,7 @@
* <li>{@link #getRootElements()}
* </ul>
*
- * <p><b><font size=+1>Mutations</font></b>
+ * <p><b>Mutations</b>
* <p>
* All documents need to be able to add and remove simple text.
* Typically, text is inserted and removed via gestures from
@@ -98,7 +98,7 @@
* <li>{@link #createPosition(int)}
* </ul>
*
- * <p><b><font size=+1>Notification</font></b>
+ * <p><b>Notification</b>
* <p>
* Mutations to the <code>Document</code> must be communicated to
* interested observers. The notification of change follows the event model
@@ -152,7 +152,7 @@
* <li><a href="#removeUndoableEditListener(javax.swing.event.UndoableEditListener)">removeUndoableEditListener(UndoableEditListener)</a>
* </ul>
*
- * <p><b><font size=+1>Properties</font></b>
+ * <p><b>Properties</b>
* <p>
* Document implementations will generally have some set of properties
* associated with them at runtime. Two well known properties are the
--- a/jdk/src/share/classes/javax/swing/text/GlyphView.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/text/GlyphView.java Wed Jul 05 19:27:58 2017 +0200
@@ -1250,7 +1250,7 @@
* is returned as the zero-th element of this array
* @return the location within the model that best represents the next
* location visual position.
- * @exception BadLocationException
+ * @exception BadLocationException for a bad location within a document model
* @exception IllegalArgumentException for an invalid direction
*/
public int getNextVisualPositionFrom(GlyphView v, int pos, Position.Bias b, Shape a,
--- a/jdk/src/share/classes/javax/swing/text/JTextComponent.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/text/JTextComponent.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -88,7 +88,7 @@
* a section in <em>The Java Tutorial.</em>
*
* <dl>
- * <dt><b><font size=+1>Caret Changes</font></b>
+ * <dt><b>Caret Changes</b>
* <dd>
* The caret is a pluggable object in swing text components.
* Notification of changes to the caret position and the selection
@@ -107,7 +107,7 @@
* <b>Note</b>: Non-editable text components also have a caret though
* it may not be painted.
*
- * <dt><b><font size=+1>Commands</font></b>
+ * <dt><b>Commands</b>
* <dd>
* Text components provide a number of commands that can be used
* to manipulate the component. This is essentially the way that
@@ -118,7 +118,7 @@
* found with the {@link #getActions} method. These actions
* can be bound to key events, fired from buttons, etc.
*
- * <dt><b><font size=+1>Text Input</font></b>
+ * <dt><b>Text Input</b>
* <dd>
* The text components support flexible and internationalized text input, using
* keymaps and the input method framework, while maintaining compatibility with
@@ -203,7 +203,7 @@
* <li>caret movement forward and backward
* </ul>
*
- * <dt><b><font size=+1>Model/View Split</font></b>
+ * <dt><b>Model/View Split</b>
* <dd>
* The text components have a model-view split. A text component pulls
* together the objects used to represent the model, view, and controller.
@@ -227,13 +227,13 @@
* {@link DocumentListener}
* interface and registered interest with the model being observed.
*
- * <dt><b><font size=+1>Location Information</font></b>
+ * <dt><b>Location Information</b>
* <dd>
* The capability of determining the location of text in
* the view is provided. There are two methods, {@link #modelToView}
* and {@link #viewToModel} for determining this information.
*
- * <dt><b><font size=+1>Undo/Redo support</font></b>
+ * <dt><b>Undo/Redo support</b>
* <dd>
* Support for an edit history mechanism is provided to allow
* undo/redo operations. The text component does not itself
@@ -243,7 +243,7 @@
* The support is provided by the Document model, which allows
* one to attach UndoableEditListener implementations.
*
- * <dt><b><font size=+1>Thread Safety</font></b>
+ * <dt><b>Thread Safety</b>
* <dd>
* The swing text components provide some support of thread
* safe operations. Because of the high level of configurability
@@ -254,13 +254,13 @@
* The methods that are safe to call asynchronously are marked
* with comments.
*
- * <dt><b><font size=+1>Newlines</font></b>
+ * <dt><b>Newlines</b>
* <dd>
* For a discussion on how newlines are handled, see
* <a href="DefaultEditorKit.html">DefaultEditorKit</a>.
*
*
- * <dt><b><font size=+1>Printing support</font></b>
+ * <dt><b>Printing support</b>
* <dd>
* Several {@link #print print} methods are provided for basic
* document printing. If more advanced printing is needed, use the
--- a/jdk/src/share/classes/javax/swing/text/NavigationFilter.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/text/NavigationFilter.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -100,7 +100,7 @@
* @param biasRet Used to return resulting Bias of next position
* @return the location within the model that best represents the next
* location visual position
- * @exception BadLocationException
+ * @exception BadLocationException for a bad location within a document model
* @exception IllegalArgumentException if <code>direction</code>
* doesn't have one of the legal values above
*/
--- a/jdk/src/share/classes/javax/swing/text/html/HTMLDocument.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/text/html/HTMLDocument.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -183,7 +183,7 @@
* <p>The following table shows the example document and the results
* of various methods described above.</p>
*
- * <table border=1 cellspacing=0>
+ * <table border=1 cellspacing=0 summary="HTML Content of example above">
* <tr>
* <th>Example</th>
* <th><code>insertAfterStart</code></th>
@@ -994,16 +994,16 @@
*
* <p>Invoking <code>setInnerHTML(elem, "<ul><li>")</code>
* results in the following structure (new elements are <font
- * color="red">in red</font>).</p>
+ * style="color: red;">in red</font>).</p>
*
* <pre>
* <body>
* |
* <b><div></b>
* \
- * <font color="red"><ul></font>
+ * <font style="color: red;"><ul></font>
* \
- * <font color="red"><li></font>
+ * <font style="color: red;"><li></font>
* </pre>
*
* <p>Parameter <code>elem</code> must not be a leaf element,
@@ -1075,14 +1075,14 @@
*
* <p>Invoking <code>setOuterHTML(elem, "<ul><li>")</code>
* results in the following structure (new elements are <font
- * color="red">in red</font>).</p>
+ * style="color: red;">in red</font>).</p>
*
* <pre>
* <body>
* |
- * <font color="red"><ul></font>
+ * <font style="color: red;"><ul></font>
* \
- * <font color="red"><li></font>
+ * <font style="color: red;"><li></font>
* </pre>
*
* <p>If either <code>elem</code> or <code>htmlText</code>
@@ -1145,16 +1145,16 @@
*
* <p>Invoking <code>insertAfterStart(elem,
* "<ul><li>")</code> results in the following structure
- * (new elements are <font color="red">in red</font>).</p>
+ * (new elements are <font style="color: red;">in red</font>).</p>
*
* <pre>
* <body>
* |
* <b><div></b>
* / | \
- * <font color="red"><ul></font> <p> <p>
+ * <font style="color: red;"><ul></font> <p> <p>
* /
- * <font color="red"><li></font>
+ * <font style="color: red;"><li></font>
* </pre>
*
* <p>Unlike the <code>insertBeforeStart</code> method, new
@@ -1215,16 +1215,16 @@
*
* <p>Invoking <code>insertBeforeEnd(elem, "<ul><li>")</code>
* results in the following structure (new elements are <font
- * color="red">in red</font>).</p>
+ * style="color: red;">in red</font>).</p>
*
* <pre>
* <body>
* |
* <b><div></b>
* / | \
- * <p> <p> <font color="red"><ul></font>
+ * <p> <p> <font style="color: red;"><ul></font>
* \
- * <font color="red"><li></font>
+ * <font style="color: red;"><li></font>
* </pre>
*
* <p>Unlike the <code>insertAfterEnd</code> method, new elements
@@ -1282,14 +1282,14 @@
*
* <p>Invoking <code>insertBeforeStart(elem,
* "<ul><li>")</code> results in the following structure
- * (new elements are <font color="red">in red</font>).</p>
+ * (new elements are <font style="color: red;">in red</font>).</p>
*
* <pre>
* <body>
* / \
- * <font color="red"><ul></font> <b><div></b>
+ * <font style="color: red;"><ul></font> <b><div></b>
* / / \
- * <font color="red"><li></font> <p> <p>
+ * <font style="color: red;"><li></font> <p> <p>
* </pre>
*
* <p>Unlike the <code>insertAfterStart</code> method, new
@@ -1340,14 +1340,14 @@
*
* <p>Invoking <code>insertAfterEnd(elem, "<ul><li>")</code>
* results in the following structure (new elements are <font
- * color="red">in red</font>).</p>
+ * style="color: red;">in red</font>).</p>
*
* <pre>
* <body>
* / \
- * <b><div></b> <font color="red"><ul></font>
+ * <b><div></b> <font style="color: red;"><ul></font>
* / \ \
- * <p> <p> <font color="red"><li></font>
+ * <p> <p> <font style="color: red;"><li></font>
* </pre>
*
* <p>Unlike the <code>insertBeforeEnd</code> method, new elements
--- a/jdk/src/share/classes/javax/swing/text/html/StyleSheet.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/javax/swing/text/html/StyleSheet.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -117,10 +117,10 @@
* support are pseudo selectors, such as <code>A:link { color: red }</code>,
* and the <code>important</code> modifier.
* <p>
- * <font color="red">Note: This implementation is currently
+ * @implNote This implementation is currently
* incomplete. It can be replaced with alternative implementations
* that are complete. Future versions of this class will provide
- * better CSS support.</font>
+ * better CSS support.
*
* @author Timothy Prinzing
* @author Sunita Mani
--- a/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java Wed Jul 05 19:27:58 2017 +0200
@@ -541,9 +541,11 @@
* to last and last, respectively, in the case of a POST
* request.
*/
- if (!failedOnce)
+ if (!failedOnce) {
+ checkURLFile();
requests.prepend(method + " " + getRequestURI()+" " +
httpVersion, null);
+ }
if (!getUseCaches()) {
requests.setIfNotSet ("Cache-Control", "no-cache");
requests.setIfNotSet ("Pragma", "no-cache");
@@ -554,7 +556,12 @@
if (port != -1 && port != url.getDefaultPort()) {
host += ":" + String.valueOf(port);
}
- requests.setIfNotSet("Host", host);
+ String reqHost = requests.findValue("Host");
+ if (reqHost == null ||
+ (!reqHost.equalsIgnoreCase(host) && !checkSetHost()))
+ {
+ requests.set("Host", host);
+ }
requests.setIfNotSet("Accept", acceptString);
/*
@@ -671,6 +678,44 @@
}
}
+ private boolean checkSetHost() {
+ SecurityManager s = System.getSecurityManager();
+ if (s != null) {
+ String name = s.getClass().getName();
+ if (name.equals("sun.plugin2.applet.AWTAppletSecurityManager") ||
+ name.equals("sun.plugin2.applet.FXAppletSecurityManager") ||
+ name.equals("com.sun.javaws.security.JavaWebStartSecurity") ||
+ name.equals("sun.plugin.security.ActivatorSecurityManager"))
+ {
+ int CHECK_SET_HOST = -2;
+ try {
+ s.checkConnect(url.toExternalForm(), CHECK_SET_HOST);
+ } catch (SecurityException ex) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
+ private void checkURLFile() {
+ SecurityManager s = System.getSecurityManager();
+ if (s != null) {
+ String name = s.getClass().getName();
+ if (name.equals("sun.plugin2.applet.AWTAppletSecurityManager") ||
+ name.equals("sun.plugin2.applet.FXAppletSecurityManager") ||
+ name.equals("com.sun.javaws.security.JavaWebStartSecurity") ||
+ name.equals("sun.plugin.security.ActivatorSecurityManager"))
+ {
+ int CHECK_SUBPATH = -3;
+ try {
+ s.checkConnect(url.toExternalForm(), CHECK_SUBPATH);
+ } catch (SecurityException ex) {
+ throw new SecurityException("denied access outside a permitted URL subpath", ex);
+ }
+ }
+ }
+ }
/**
* Create a new HttpClient object, bypassing the cache of
--- a/jdk/src/share/classes/sun/nio/ch/AsynchronousSocketChannelImpl.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/nio/ch/AsynchronousSocketChannelImpl.java Wed Jul 05 19:27:58 2017 +0200
@@ -428,6 +428,10 @@
throw new AlreadyBoundException();
InetSocketAddress isa = (local == null) ?
new InetSocketAddress(0) : Net.checkAddress(local);
+ SecurityManager sm = System.getSecurityManager();
+ if (sm != null) {
+ sm.checkListen(isa.getPort());
+ }
NetHooks.beforeTcpBind(fd, isa.getAddress(), isa.getPort());
Net.bind(fd, isa.getAddress(), isa.getPort());
localAddress = Net.localAddress(fd);
--- a/jdk/src/share/classes/sun/nio/ch/SocketChannelImpl.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/nio/ch/SocketChannelImpl.java Wed Jul 05 19:27:58 2017 +0200
@@ -572,6 +572,10 @@
throw new AlreadyBoundException();
InetSocketAddress isa = (local == null) ?
new InetSocketAddress(0) : Net.checkAddress(local);
+ SecurityManager sm = System.getSecurityManager();
+ if (sm != null) {
+ sm.checkListen(isa.getPort());
+ }
NetHooks.beforeTcpBind(fd, isa.getAddress(), isa.getPort());
Net.bind(fd, isa.getAddress(), isa.getPort());
localAddress = Net.localAddress(fd);
--- a/jdk/src/share/classes/sun/reflect/generics/reflectiveObjects/TypeVariableImpl.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/reflect/generics/reflectiveObjects/TypeVariableImpl.java Wed Jul 05 19:27:58 2017 +0200
@@ -28,7 +28,10 @@
import java.lang.annotation.*;
import java.lang.reflect.AnnotatedType;
import java.lang.reflect.Array;
+import java.lang.reflect.Constructor;
import java.lang.reflect.GenericDeclaration;
+import java.lang.reflect.Member;
+import java.lang.reflect.Method;
import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;
import java.util.LinkedHashMap;
@@ -40,6 +43,7 @@
import sun.reflect.generics.factory.GenericsFactory;
import sun.reflect.generics.tree.FieldTypeSignature;
import sun.reflect.generics.visitor.Reifier;
+import sun.reflect.misc.ReflectUtil;
/**
* Implementation of <tt>java.lang.reflect.TypeVariable</tt> interface
@@ -95,6 +99,13 @@
TypeVariableImpl<T> make(T decl, String name,
FieldTypeSignature[] bs,
GenericsFactory f) {
+
+ if (!((decl instanceof Class) ||
+ (decl instanceof Method) ||
+ (decl instanceof Constructor))) {
+ throw new AssertionError("Unexpected kind of GenericDeclaration" +
+ decl.getClass().toString());
+ }
return new TypeVariableImpl<T>(decl, name, bs, f);
}
@@ -149,6 +160,13 @@
* @since 1.5
*/
public D getGenericDeclaration(){
+ if (genericDeclaration instanceof Class)
+ ReflectUtil.checkPackageAccess((Class)genericDeclaration);
+ else if ((genericDeclaration instanceof Method) ||
+ (genericDeclaration instanceof Constructor))
+ ReflectUtil.conservativeCheckMemberAccess((Member)genericDeclaration);
+ else
+ throw new AssertionError("Unexpected kind of GenericDeclaration");
return genericDeclaration;
}
@@ -164,7 +182,8 @@
@Override
public boolean equals(Object o) {
- if (o instanceof TypeVariable) {
+ if (o instanceof TypeVariable &&
+ o.getClass() == TypeVariableImpl.class) {
TypeVariable<?> that = (TypeVariable<?>) o;
GenericDeclaration thatDecl = that.getGenericDeclaration();
--- a/jdk/src/share/classes/sun/reflect/misc/ReflectUtil.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/reflect/misc/ReflectUtil.java Wed Jul 05 19:27:58 2017 +0200
@@ -26,11 +26,13 @@
package sun.reflect.misc;
+import java.lang.reflect.Member;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.lang.reflect.Proxy;
import java.util.Arrays;
import sun.reflect.Reflection;
+import sun.security.util.SecurityConstants;
public final class ReflectUtil {
@@ -118,6 +120,40 @@
}
/**
+ * Does a conservative approximation of member access check. Use this if
+ * you don't have an actual 'userland' caller Class/ClassLoader available.
+ * This might be more restrictive than a precise member access check where
+ * you have a caller, but should never allow a member access that is
+ * forbidden.
+ *
+ * @param m the {@code Member} about to be accessed
+ */
+ public static void conservativeCheckMemberAccess(Member m) throws SecurityException{
+ final SecurityManager sm = System.getSecurityManager();
+ if (sm == null)
+ return;
+
+ // Check for package access on the declaring class.
+ //
+ // In addition, unless the member and the declaring class are both
+ // public check for access declared member permissions.
+ //
+ // This is done regardless of ClassLoader relations between the {@code
+ // Member m} and any potential caller.
+
+ final Class<?> declaringClass = m.getDeclaringClass();
+
+ checkPackageAccess(declaringClass);
+
+ if (Modifier.isPublic(m.getModifiers()) &&
+ Modifier.isPublic(declaringClass.getModifiers()))
+ return;
+
+ // Check for declared member access.
+ sm.checkPermission(SecurityConstants.CHECK_MEMBER_ACCESS_PERMISSION);
+ }
+
+ /**
* Checks package access on the given class.
*
* If it is a {@link Proxy#isProxyClass(java.lang.Class)} that implements
--- a/jdk/src/share/classes/sun/rmi/registry/RegistryImpl.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/rmi/registry/RegistryImpl.java Wed Jul 05 19:27:58 2017 +0200
@@ -94,8 +94,23 @@
RMIServerSocketFactory ssf)
throws RemoteException
{
- LiveRef lref = new LiveRef(id, port, csf, ssf);
- setup(new UnicastServerRef2(lref));
+ if (port == Registry.REGISTRY_PORT && System.getSecurityManager() != null) {
+ // grant permission for default port only.
+ try {
+ AccessController.doPrivileged(new PrivilegedExceptionAction<Void>() {
+ public Void run() throws RemoteException {
+ LiveRef lref = new LiveRef(id, port, csf, ssf);
+ setup(new UnicastServerRef2(lref));
+ return null;
+ }
+ }, null, new SocketPermission("localhost:"+port, "listen,accept"));
+ } catch (PrivilegedActionException pae) {
+ throw (RemoteException)pae.getException();
+ }
+ } else {
+ LiveRef lref = new LiveRef(id, port, csf, ssf);
+ setup(new UnicastServerRef2(lref));
+ }
}
/**
@@ -104,8 +119,23 @@
public RegistryImpl(int port)
throws RemoteException
{
- LiveRef lref = new LiveRef(id, port);
- setup(new UnicastServerRef(lref));
+ if (port == Registry.REGISTRY_PORT && System.getSecurityManager() != null) {
+ // grant permission for default port only.
+ try {
+ AccessController.doPrivileged(new PrivilegedExceptionAction<Void>() {
+ public Void run() throws RemoteException {
+ LiveRef lref = new LiveRef(id, port);
+ setup(new UnicastServerRef(lref));
+ return null;
+ }
+ }, null, new SocketPermission("localhost:"+port, "listen,accept"));
+ } catch (PrivilegedActionException pae) {
+ throw (RemoteException)pae.getException();
+ }
+ } else {
+ LiveRef lref = new LiveRef(id, port);
+ setup(new UnicastServerRef(lref));
+ }
}
/*
@@ -352,7 +382,7 @@
public RegistryImpl run() throws RemoteException {
return new RegistryImpl(regPort);
}
- }, getAccessControlContext());
+ }, getAccessControlContext(regPort));
} catch (PrivilegedActionException ex) {
throw (RemoteException) ex.getException();
}
@@ -382,7 +412,7 @@
* The approach used here is taken from the similar method
* getAccessControlContext() in the sun.applet.AppletPanel class.
*/
- private static AccessControlContext getAccessControlContext() {
+ private static AccessControlContext getAccessControlContext(int port) {
// begin with permissions granted to all code in current policy
PermissionCollection perms = AccessController.doPrivileged(
new java.security.PrivilegedAction<PermissionCollection>() {
@@ -404,6 +434,7 @@
* related classes themselves are more tightly limited by RMI.
*/
perms.add(new SocketPermission("*", "connect,accept"));
+ perms.add(new SocketPermission("localhost:"+port, "listen,accept"));
perms.add(new RuntimePermission("accessClassInPackage.sun.jvmstat.*"));
perms.add(new RuntimePermission("accessClassInPackage.sun.jvm.hotspot.*"));
--- a/jdk/src/share/classes/sun/security/internal/spec/TlsRsaPremasterSecretParameterSpec.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/security/internal/spec/TlsRsaPremasterSecretParameterSpec.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -45,11 +45,12 @@
private final int majorVersion;
private final int minorVersion;
+ private final byte[] encodedSecret;
/**
* Constructs a new TlsRsaPremasterSecretParameterSpec.
- *
- * <p>The version numbers will be placed inside the premaster secret to
+ * <P>
+ * The version numbers will be placed inside the premaster secret to
* detect version rollbacks attacks as described in the TLS specification.
* Note that they do not indicate the protocol version negotiated for
* the handshake.
@@ -65,7 +66,42 @@
this.majorVersion =
TlsMasterSecretParameterSpec.checkVersion(majorVersion);
this.minorVersion =
- TlsMasterSecretParameterSpec.checkVersion(minorVersion); }
+ TlsMasterSecretParameterSpec.checkVersion(minorVersion);
+ this.encodedSecret = null;
+ }
+
+ /**
+ * Constructs a new TlsRsaPremasterSecretParameterSpec.
+ * <P>
+ * The version numbers will be placed inside the premaster secret to
+ * detect version rollbacks attacks as described in the TLS specification.
+ * Note that they do not indicate the protocol version negotiated for
+ * the handshake.
+ * <P>
+ * Usually, the encoded secret key is a random number that acts as
+ * dummy pre_master_secret to avoid vulnerabilities described by
+ * section 7.4.7.1, RFC 5246.
+ *
+ * @param majorVersion the major number of the protocol version
+ * @param minorVersion the minor number of the protocol version
+ * @param encodedSecret the encoded secret key
+ *
+ * @throws IllegalArgumentException if minorVersion or majorVersion are
+ * negative or larger than 255, or encodedSecret is not exactly 48 bytes.
+ */
+ public TlsRsaPremasterSecretParameterSpec(int majorVersion,
+ int minorVersion, byte[] encodedSecret) {
+ this.majorVersion =
+ TlsMasterSecretParameterSpec.checkVersion(majorVersion);
+ this.minorVersion =
+ TlsMasterSecretParameterSpec.checkVersion(minorVersion);
+
+ if (encodedSecret == null || encodedSecret.length != 48) {
+ throw new IllegalArgumentException(
+ "Encoded secret is not exactly 48 bytes");
+ }
+ this.encodedSecret = encodedSecret.clone();
+ }
/**
* Returns the major version.
@@ -84,4 +120,13 @@
public int getMinorVersion() {
return minorVersion;
}
+
+ /**
+ * Returns the encoded secret.
+ *
+ * @return the encoded secret, may be null if no encoded secret.
+ */
+ public byte[] getEncodedSecret() {
+ return encodedSecret == null ? null : encodedSecret.clone();
+ }
}
--- a/jdk/src/share/classes/sun/security/pkcs11/P11RSACipher.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/security/pkcs11/P11RSACipher.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -451,30 +451,7 @@
// see JCE spec
protected Key engineUnwrap(byte[] wrappedKey, String algorithm,
int type) throws InvalidKeyException, NoSuchAlgorithmException {
- if (algorithm.equals("TlsRsaPremasterSecret")) {
- // the instance variable "session" has been initialized for
- // decrypt mode, so use a local variable instead.
- Session s = null;
- try {
- s = token.getObjSession();
- long keyType = CKK_GENERIC_SECRET;
- CK_ATTRIBUTE[] attributes = new CK_ATTRIBUTE[] {
- new CK_ATTRIBUTE(CKA_CLASS, CKO_SECRET_KEY),
- new CK_ATTRIBUTE(CKA_KEY_TYPE, keyType),
- };
- attributes = token.getAttributes
- (O_IMPORT, CKO_SECRET_KEY, keyType, attributes);
- long keyID = token.p11.C_UnwrapKey(s.id(),
- new CK_MECHANISM(mechanism), p11Key.keyID, wrappedKey,
- attributes);
- return P11Key.secretKey(s, keyID, algorithm, 48 << 3,
- attributes);
- } catch (PKCS11Exception e) {
- throw new InvalidKeyException("unwrap() failed", e);
- } finally {
- token.releaseSession(s);
- }
- }
+
// XXX implement unwrap using C_Unwrap() for all keys
implInit(Cipher.DECRYPT_MODE, p11Key);
if (wrappedKey.length > maxInputSize) {
--- a/jdk/src/share/classes/sun/security/pkcs11/P11TlsRsaPremasterSecretGenerator.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/security/pkcs11/P11TlsRsaPremasterSecretGenerator.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -88,23 +88,33 @@
throw new IllegalStateException
("TlsRsaPremasterSecretGenerator must be initialized");
}
- CK_VERSION version =
- new CK_VERSION(spec.getMajorVersion(), spec.getMinorVersion());
- Session session = null;
- try {
- session = token.getObjSession();
- CK_ATTRIBUTE[] attributes = token.getAttributes
- (O_GENERATE, CKO_SECRET_KEY, CKK_GENERIC_SECRET, new CK_ATTRIBUTE[0]);
- long keyID = token.p11.C_GenerateKey
- (session.id(), new CK_MECHANISM(mechanism, version), attributes);
- SecretKey key = P11Key.secretKey
- (session, keyID, "TlsRsaPremasterSecret", 48 << 3, attributes);
- return key;
- } catch (PKCS11Exception e) {
- throw new ProviderException("Could not generate premaster secret", e);
- } finally {
- token.releaseSession(session);
+
+ byte[] b = spec.getEncodedSecret();
+ if (b == null) {
+ CK_VERSION version = new CK_VERSION(
+ spec.getMajorVersion(), spec.getMinorVersion());
+ Session session = null;
+ try {
+ session = token.getObjSession();
+ CK_ATTRIBUTE[] attributes = token.getAttributes(
+ O_GENERATE, CKO_SECRET_KEY,
+ CKK_GENERIC_SECRET, new CK_ATTRIBUTE[0]);
+ long keyID = token.p11.C_GenerateKey(session.id(),
+ new CK_MECHANISM(mechanism, version), attributes);
+ SecretKey key = P11Key.secretKey(session,
+ keyID, "TlsRsaPremasterSecret", 48 << 3, attributes);
+ return key;
+ } catch (PKCS11Exception e) {
+ throw new ProviderException(
+ "Could not generate premaster secret", e);
+ } finally {
+ token.releaseSession(session);
+ }
}
+
+ // Won't worry, the TlsRsaPremasterSecret will be soon converted to
+ // TlsMasterSecret.
+ return new SecretKeySpec(b, "TlsRsaPremasterSecret");
}
}
--- a/jdk/src/share/classes/sun/security/provider/ByteArrayAccess.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/security/provider/ByteArrayAccess.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -43,10 +43,8 @@
* These are the only platforms we currently support, but other optimized
* variants could be added as needed.
*
- * NOTE that because this code performs unchecked direct memory access, it
- * MUST be restricted to trusted code. It is imperative that the caller protects
- * against out of bounds memory access by performing the necessary bounds
- * checks before calling methods in this class.
+ * NOTE that ArrayIndexOutOfBoundsException will be thrown if the bounds checks
+ * failed.
*
* This class may also be helpful in improving the performance of the
* crypto code in the SunJCE provider. However, for now it is only accessible by
@@ -103,6 +101,10 @@
* byte[] to int[] conversion, little endian byte order.
*/
static void b2iLittle(byte[] in, int inOfs, int[] out, int outOfs, int len) {
+ if ((inOfs < 0) || ((in.length - inOfs) < len) ||
+ (outOfs < 0) || ((out.length - outOfs) < len/4)) {
+ throw new ArrayIndexOutOfBoundsException();
+ }
if (littleEndianUnaligned) {
inOfs += byteArrayOfs;
len += inOfs;
@@ -131,6 +133,10 @@
// Special optimization of b2iLittle(in, inOfs, out, 0, 64)
static void b2iLittle64(byte[] in, int inOfs, int[] out) {
+ if ((inOfs < 0) || ((in.length - inOfs) < 64) ||
+ (out.length < 16)) {
+ throw new ArrayIndexOutOfBoundsException();
+ }
if (littleEndianUnaligned) {
inOfs += byteArrayOfs;
out[ 0] = unsafe.getInt(in, (long)(inOfs ));
@@ -176,6 +182,10 @@
* int[] to byte[] conversion, little endian byte order.
*/
static void i2bLittle(int[] in, int inOfs, byte[] out, int outOfs, int len) {
+ if ((inOfs < 0) || ((in.length - inOfs) < len/4) ||
+ (outOfs < 0) || ((out.length - outOfs) < len)) {
+ throw new ArrayIndexOutOfBoundsException();
+ }
if (littleEndianUnaligned) {
outOfs += byteArrayOfs;
len += outOfs;
@@ -204,6 +214,9 @@
// Store one 32-bit value into out[outOfs..outOfs+3] in little endian order.
static void i2bLittle4(int val, byte[] out, int outOfs) {
+ if ((outOfs < 0) || ((out.length - outOfs) < 4)) {
+ throw new ArrayIndexOutOfBoundsException();
+ }
if (littleEndianUnaligned) {
unsafe.putInt(out, (long)(byteArrayOfs + outOfs), val);
} else if (bigEndian && ((outOfs & 3) == 0)) {
@@ -220,6 +233,10 @@
* byte[] to int[] conversion, big endian byte order.
*/
static void b2iBig(byte[] in, int inOfs, int[] out, int outOfs, int len) {
+ if ((inOfs < 0) || ((in.length - inOfs) < len) ||
+ (outOfs < 0) || ((out.length - outOfs) < len/4)) {
+ throw new ArrayIndexOutOfBoundsException();
+ }
if (littleEndianUnaligned) {
inOfs += byteArrayOfs;
len += inOfs;
@@ -248,6 +265,10 @@
// Special optimization of b2iBig(in, inOfs, out, 0, 64)
static void b2iBig64(byte[] in, int inOfs, int[] out) {
+ if ((inOfs < 0) || ((in.length - inOfs) < 64) ||
+ (out.length < 16)) {
+ throw new ArrayIndexOutOfBoundsException();
+ }
if (littleEndianUnaligned) {
inOfs += byteArrayOfs;
out[ 0] = reverseBytes(unsafe.getInt(in, (long)(inOfs )));
@@ -293,6 +314,10 @@
* int[] to byte[] conversion, big endian byte order.
*/
static void i2bBig(int[] in, int inOfs, byte[] out, int outOfs, int len) {
+ if ((inOfs < 0) || ((in.length - inOfs) < len/4) ||
+ (outOfs < 0) || ((out.length - outOfs) < len)) {
+ throw new ArrayIndexOutOfBoundsException();
+ }
if (littleEndianUnaligned) {
outOfs += byteArrayOfs;
len += outOfs;
@@ -321,6 +346,9 @@
// Store one 32-bit value into out[outOfs..outOfs+3] in big endian order.
static void i2bBig4(int val, byte[] out, int outOfs) {
+ if ((outOfs < 0) || ((out.length - outOfs) < 4)) {
+ throw new ArrayIndexOutOfBoundsException();
+ }
if (littleEndianUnaligned) {
unsafe.putInt(out, (long)(byteArrayOfs + outOfs), reverseBytes(val));
} else if (bigEndian && ((outOfs & 3) == 0)) {
@@ -337,6 +365,10 @@
* byte[] to long[] conversion, big endian byte order.
*/
static void b2lBig(byte[] in, int inOfs, long[] out, int outOfs, int len) {
+ if ((inOfs < 0) || ((in.length - inOfs) < len) ||
+ (outOfs < 0) || ((out.length - outOfs) < len/8)) {
+ throw new ArrayIndexOutOfBoundsException();
+ }
if (littleEndianUnaligned) {
inOfs += byteArrayOfs;
len += inOfs;
@@ -378,6 +410,10 @@
// Special optimization of b2lBig(in, inOfs, out, 0, 128)
static void b2lBig128(byte[] in, int inOfs, long[] out) {
+ if ((inOfs < 0) || ((in.length - inOfs) < 128) ||
+ (out.length < 16)) {
+ throw new ArrayIndexOutOfBoundsException();
+ }
if (littleEndianUnaligned) {
inOfs += byteArrayOfs;
out[ 0] = reverseBytes(unsafe.getLong(in, (long)(inOfs )));
@@ -406,6 +442,10 @@
* long[] to byte[] conversion, big endian byte order.
*/
static void l2bBig(long[] in, int inOfs, byte[] out, int outOfs, int len) {
+ if ((inOfs < 0) || ((in.length - inOfs) < len/8) ||
+ (outOfs < 0) || ((out.length - outOfs) < len)) {
+ throw new ArrayIndexOutOfBoundsException();
+ }
len += outOfs;
while (outOfs < len) {
long i = in[inOfs++];
@@ -419,5 +459,4 @@
out[outOfs++] = (byte)(i );
}
}
-
}
--- a/jdk/src/share/classes/sun/security/provider/certpath/OCSPResponse.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/security/provider/certpath/OCSPResponse.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -446,10 +446,28 @@
}
} else if (responderKeyId != null) {
for (X509CertImpl cert : certs) {
+ // Match responder's key identifier against the cert's SKID
+ // This will match if the SKID is encoded using the 160-bit
+ // SHA-1 hash method as defined in RFC 5280.
KeyIdentifier certKeyId = cert.getSubjectKeyId();
if (certKeyId != null && responderKeyId.equals(certKeyId)) {
signerCert = cert;
break;
+ } else {
+ // The certificate does not have a SKID or may have
+ // been using a different algorithm (ex: see RFC 7093).
+ // Check if the responder's key identifier matches
+ // against a newly generated key identifier of the
+ // cert's public key using the 160-bit SHA-1 method.
+ try {
+ certKeyId = new KeyIdentifier(cert.getPublicKey());
+ } catch (IOException e) {
+ // ignore
+ }
+ if (responderKeyId.equals(certKeyId)) {
+ signerCert = cert;
+ break;
+ }
}
}
}
--- a/jdk/src/share/classes/sun/security/rsa/RSAPadding.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/security/rsa/RSAPadding.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2013 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -318,33 +318,53 @@
/**
* PKCS#1 v1.5 unpadding (blocktype 1 and 2).
+ *
+ * Note that we want to make it a constant-time operation
*/
private byte[] unpadV15(byte[] padded) throws BadPaddingException {
int k = 0;
+ BadPaddingException bpe = null;
+
if (padded[k++] != 0) {
- throw new BadPaddingException("Data must start with zero");
+ bpe = new BadPaddingException("Data must start with zero");
}
- if (padded[k++] != type) {
- throw new BadPaddingException("Blocktype mismatch: " + padded[1]);
+ if (padded[k++] != type && bpe == null) {
+ bpe = new BadPaddingException("Blocktype mismatch: " + padded[1]);
}
- while (true) {
+ int p = 0;
+ while (k < padded.length) {
int b = padded[k++] & 0xff;
- if (b == 0) {
- break;
+ if (b == 0 && p == 0) {
+ p = k;
}
- if (k == padded.length) {
- throw new BadPaddingException("Padding string not terminated");
+ if (k == padded.length && p == 0 && bpe == null) {
+ bpe = new BadPaddingException("Padding string not terminated");
}
- if ((type == PAD_BLOCKTYPE_1) && (b != 0xff)) {
- throw new BadPaddingException("Padding byte not 0xff: " + b);
+ if ((type == PAD_BLOCKTYPE_1) && (b != 0xff) &&
+ p == 0 && bpe == null) {
+ bpe = new BadPaddingException("Padding byte not 0xff: " + b);
}
}
- int n = padded.length - k;
- if (n > maxDataSize) {
- throw new BadPaddingException("Padding string too short");
+ int n = padded.length - p;
+ if (n > maxDataSize && bpe == null) {
+ bpe = new BadPaddingException("Padding string too short");
}
+
+ // copy useless padding array for a constant-time method
+ //
+ // Is it necessary?
+ byte[] padding = new byte[p];
+ System.arraycopy(padded, 0, padding, 0, p);
+
byte[] data = new byte[n];
- System.arraycopy(padded, padded.length - n, data, 0, n);
+ System.arraycopy(padded, p, data, 0, n);
+
+ if (bpe == null) {
+ bpe = new BadPaddingException("Unused exception");
+ } else {
+ throw bpe;
+ }
+
return data;
}
--- a/jdk/src/share/classes/sun/security/ssl/CipherSuite.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/security/ssl/CipherSuite.java Wed Jul 05 19:27:58 2017 +0200
@@ -985,13 +985,45 @@
// ID Key Exchange Cipher A obs suprt PRF
// ====== ============ ========= = === ===== ========
-
- // Placeholder for cipher suites in GCM mode.
+ // Suite B compliant cipher suites, see RFC 6460.
//
- // For better compatibility and interoperability, we decrease the
- // priority of cipher suites in GCM mode for a while as GCM
- // technologies mature in the industry. Eventually we'll move
- // the GCM suites here.
+ // Note that, at present this provider is not Suite B compliant. The
+ // preference order of the GCM cipher suites does not follow the spec
+ // of RFC 6460. In this section, only two cipher suites are listed
+ // so that applications can make use of Suite-B compliant cipher
+ // suite firstly.
+ add("TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
+ 0xc02c, --p, K_ECDHE_ECDSA, B_AES_256_GCM, T, max, tls12, P_SHA384);
+ add("TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
+ 0xc02b, --p, K_ECDHE_ECDSA, B_AES_128_GCM, T, max, tls12, P_SHA256);
+
+ // AES_256(GCM)
+ add("TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
+ 0xc030, --p, K_ECDHE_RSA, B_AES_256_GCM, T, max, tls12, P_SHA384);
+ add("TLS_RSA_WITH_AES_256_GCM_SHA384",
+ 0x009d, --p, K_RSA, B_AES_256_GCM, T, max, tls12, P_SHA384);
+ add("TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384",
+ 0xc02e, --p, K_ECDH_ECDSA, B_AES_256_GCM, T, max, tls12, P_SHA384);
+ add("TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384",
+ 0xc032, --p, K_ECDH_RSA, B_AES_256_GCM, T, max, tls12, P_SHA384);
+ add("TLS_DHE_RSA_WITH_AES_256_GCM_SHA384",
+ 0x009f, --p, K_DHE_RSA, B_AES_256_GCM, T, max, tls12, P_SHA384);
+ add("TLS_DHE_DSS_WITH_AES_256_GCM_SHA384",
+ 0x00a3, --p, K_DHE_DSS, B_AES_256_GCM, T, max, tls12, P_SHA384);
+
+ // AES_128(GCM)
+ add("TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
+ 0xc02f, --p, K_ECDHE_RSA, B_AES_128_GCM, T, max, tls12, P_SHA256);
+ add("TLS_RSA_WITH_AES_128_GCM_SHA256",
+ 0x009c, --p, K_RSA, B_AES_128_GCM, T, max, tls12, P_SHA256);
+ add("TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256",
+ 0xc02d, --p, K_ECDH_ECDSA, B_AES_128_GCM, T, max, tls12, P_SHA256);
+ add("TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256",
+ 0xc031, --p, K_ECDH_RSA, B_AES_128_GCM, T, max, tls12, P_SHA256);
+ add("TLS_DHE_RSA_WITH_AES_128_GCM_SHA256",
+ 0x009e, --p, K_DHE_RSA, B_AES_128_GCM, T, max, tls12, P_SHA256);
+ add("TLS_DHE_DSS_WITH_AES_128_GCM_SHA256",
+ 0x00a2, --p, K_DHE_DSS, B_AES_128_GCM, T, max, tls12, P_SHA256);
// AES_256(CBC)
add("TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384",
@@ -1067,50 +1099,6 @@
add("TLS_ECDH_RSA_WITH_RC4_128_SHA",
0xC00C, --p, K_ECDH_RSA, B_RC4_128, N);
- // Cipher suites in GCM mode, see RFC 5288/5289.
- //
- // We may increase the priority of cipher suites in GCM mode when
- // GCM technologies become mature in the industry.
-
- // Suite B compliant cipher suites, see RFC 6460.
- //
- // Note that, at present this provider is not Suite B compliant. The
- // preference order of the GCM cipher suites does not follow the spec
- // of RFC 6460.
- add("TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
- 0xc02c, --p, K_ECDHE_ECDSA, B_AES_256_GCM, T, max, tls12, P_SHA384);
- add("TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
- 0xc02b, --p, K_ECDHE_ECDSA, B_AES_128_GCM, T, max, tls12, P_SHA256);
-
- // AES_256(GCM)
- add("TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
- 0xc030, --p, K_ECDHE_RSA, B_AES_256_GCM, T, max, tls12, P_SHA384);
- add("TLS_RSA_WITH_AES_256_GCM_SHA384",
- 0x009d, --p, K_RSA, B_AES_256_GCM, T, max, tls12, P_SHA384);
- add("TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384",
- 0xc02e, --p, K_ECDH_ECDSA, B_AES_256_GCM, T, max, tls12, P_SHA384);
- add("TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384",
- 0xc032, --p, K_ECDH_RSA, B_AES_256_GCM, T, max, tls12, P_SHA384);
- add("TLS_DHE_RSA_WITH_AES_256_GCM_SHA384",
- 0x009f, --p, K_DHE_RSA, B_AES_256_GCM, T, max, tls12, P_SHA384);
- add("TLS_DHE_DSS_WITH_AES_256_GCM_SHA384",
- 0x00a3, --p, K_DHE_DSS, B_AES_256_GCM, T, max, tls12, P_SHA384);
-
- // AES_128(GCM)
- add("TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
- 0xc02f, --p, K_ECDHE_RSA, B_AES_128_GCM, T, max, tls12, P_SHA256);
- add("TLS_RSA_WITH_AES_128_GCM_SHA256",
- 0x009c, --p, K_RSA, B_AES_128_GCM, T, max, tls12, P_SHA256);
- add("TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256",
- 0xc02d, --p, K_ECDH_ECDSA, B_AES_128_GCM, T, max, tls12, P_SHA256);
- add("TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256",
- 0xc031, --p, K_ECDH_RSA, B_AES_128_GCM, T, max, tls12, P_SHA256);
- add("TLS_DHE_RSA_WITH_AES_128_GCM_SHA256",
- 0x009e, --p, K_DHE_RSA, B_AES_128_GCM, T, max, tls12, P_SHA256);
- add("TLS_DHE_DSS_WITH_AES_128_GCM_SHA256",
- 0x00a2, --p, K_DHE_DSS, B_AES_128_GCM, T, max, tls12, P_SHA256);
- // End of cipher suites in GCM mode.
-
// 3DES_EDE
add("TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA",
0xC008, --p, K_ECDHE_ECDSA, B_3DES, T);
--- a/jdk/src/share/classes/sun/security/ssl/Handshaker.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/security/ssl/Handshaker.java Wed Jul 05 19:27:58 2017 +0200
@@ -1104,94 +1104,23 @@
clnt_random.random_bytes, svr_random.random_bytes,
prfHashAlg, prfHashLength, prfBlockSize);
- SecretKey masterSecret;
try {
KeyGenerator kg = JsseJce.getKeyGenerator(masterAlg);
kg.init(spec);
- masterSecret = kg.generateKey();
- } catch (GeneralSecurityException e) {
+ return kg.generateKey();
+ } catch (InvalidAlgorithmParameterException |
+ NoSuchAlgorithmException iae) {
+ // unlikely to happen, otherwise, must be a provider exception
+ //
// For RSA premaster secrets, do not signal a protocol error
// due to the Bleichenbacher attack. See comments further down.
- if (!preMasterSecret.getAlgorithm().equals(
- "TlsRsaPremasterSecret")) {
- throw new ProviderException(e);
- }
-
if (debug != null && Debug.isOn("handshake")) {
System.out.println("RSA master secret generation error:");
- e.printStackTrace(System.out);
- }
-
- if (requestedVersion != null) {
- preMasterSecret =
- RSAClientKeyExchange.generateDummySecret(requestedVersion);
- } else {
- preMasterSecret =
- RSAClientKeyExchange.generateDummySecret(protocolVersion);
+ iae.printStackTrace(System.out);
}
-
- // recursive call with new premaster secret
- return calculateMasterSecret(preMasterSecret, null);
- }
-
- // if no version check requested (client side handshake), or version
- // information is not available (not an RSA premaster secret),
- // return master secret immediately.
- if ((requestedVersion == null) ||
- !(masterSecret instanceof TlsMasterSecret)) {
- return masterSecret;
- }
-
- // we have checked the ClientKeyExchange message when reading TLS
- // record, the following check is necessary to ensure that
- // JCE provider does not ignore the checking, or the previous
- // checking process bypassed the premaster secret version checking.
- TlsMasterSecret tlsKey = (TlsMasterSecret)masterSecret;
- int major = tlsKey.getMajorVersion();
- int minor = tlsKey.getMinorVersion();
- if ((major < 0) || (minor < 0)) {
- return masterSecret;
- }
+ throw new ProviderException(iae);
- // check if the premaster secret version is ok
- // the specification says that it must be the maximum version supported
- // by the client from its ClientHello message. However, many
- // implementations send the negotiated version, so accept both
- // for SSL v3.0 and TLS v1.0.
- // NOTE that we may be comparing two unsupported version numbers, which
- // is why we cannot use object reference equality in this special case.
- ProtocolVersion premasterVersion =
- ProtocolVersion.valueOf(major, minor);
- boolean versionMismatch = (premasterVersion.v != requestedVersion.v);
-
- /*
- * we never checked the client_version in server side
- * for TLS v1.0 and SSL v3.0. For compatibility, we
- * maintain this behavior.
- */
- if (versionMismatch && requestedVersion.v <= ProtocolVersion.TLS10.v) {
- versionMismatch = (premasterVersion.v != protocolVersion.v);
}
-
- if (versionMismatch == false) {
- // check passed, return key
- return masterSecret;
- }
-
- // Due to the Bleichenbacher attack, do not signal a protocol error.
- // Generate a random premaster secret and continue with the handshake,
- // which will fail when verifying the finished messages.
- // For more information, see comments in PreMasterSecret.
- if (debug != null && Debug.isOn("handshake")) {
- System.out.println("RSA PreMasterSecret version error: expected"
- + protocolVersion + " or " + requestedVersion + ", decrypted: "
- + premasterVersion);
- }
- preMasterSecret =
- RSAClientKeyExchange.generateDummySecret(requestedVersion);
-
- // recursive call with new premaster secret
- return calculateMasterSecret(preMasterSecret, null);
}
/*
--- a/jdk/src/share/classes/sun/security/ssl/RSAClientKeyExchange.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/security/ssl/RSAClientKeyExchange.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 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
@@ -133,26 +133,37 @@
} else {
encrypted = new byte [messageSize];
if (input.read(encrypted) != messageSize) {
- throw new SSLProtocolException
- ("SSL: read PreMasterSecret: short read");
+ throw new SSLProtocolException(
+ "SSL: read PreMasterSecret: short read");
}
}
+ Exception failover = null;
+ byte[] encoded = null;
try {
Cipher cipher = JsseJce.getCipher(JsseJce.CIPHER_RSA_PKCS1);
- cipher.init(Cipher.UNWRAP_MODE, privateKey);
- preMaster = (SecretKey)cipher.unwrap(encrypted,
- "TlsRsaPremasterSecret", Cipher.SECRET_KEY);
+ // Cannot generate key here, please don't use Cipher.UNWRAP_MODE!
+ cipher.init(Cipher.DECRYPT_MODE, privateKey);
+ encoded = cipher.doFinal(encrypted);
+ } catch (BadPaddingException bpe) {
+ failover = bpe;
+ encoded = null;
+ } catch (IllegalBlockSizeException ibse) {
+ // the message it too big to process with RSA
+ throw new SSLProtocolException(
+ "Unable to process PreMasterSecret, may be too big");
+ } catch (Exception e) {
+ // unlikely to happen, otherwise, must be a provider exception
+ if (debug != null && Debug.isOn("handshake")) {
+ System.out.println("RSA premaster secret decryption error:");
+ e.printStackTrace(System.out);
+ }
+ throw new RuntimeException("Could not generate dummy secret", e);
+ }
- // polish the premaster secret
- preMaster = polishPreMasterSecretKey(currentVersion, maxVersion,
- generator, preMaster, null);
- } catch (Exception e) {
- // polish the premaster secret
- preMaster =
- polishPreMasterSecretKey(currentVersion, maxVersion,
- generator, null, e);
- }
+ // polish the premaster secret
+ preMaster = polishPreMasterSecretKey(
+ currentVersion, maxVersion, generator, encoded, failover);
}
/**
@@ -163,85 +174,74 @@
*
* RFC 5246 describes the approach as :
*
- * 1. Generate a string R of 46 random bytes
+ * 1. Generate a string R of 48 random bytes
*
* 2. Decrypt the message to recover the plaintext M
*
* 3. If the PKCS#1 padding is not correct, or the length of message
* M is not exactly 48 bytes:
- * pre_master_secret = ClientHello.client_version || R
+ * pre_master_secret = R
* else If ClientHello.client_version <= TLS 1.0, and version
* number check is explicitly disabled:
- * pre_master_secret = M
+ * premaster secret = M
+ * else If M[0..1] != ClientHello.client_version:
+ * premaster secret = R
* else:
- * pre_master_secret = ClientHello.client_version || M[2..47]
+ * premaster secret = M
+ *
+ * Note that #2 has completed before the call of this method.
*/
private SecretKey polishPreMasterSecretKey(ProtocolVersion currentVersion,
ProtocolVersion clientHelloVersion, SecureRandom generator,
- SecretKey secretKey, Exception failoverException) {
+ byte[] encoded, Exception failoverException) {
this.protocolVersion = clientHelloVersion;
+ if (generator == null) {
+ generator = new SecureRandom();
+ }
+ byte[] random = new byte[48];
+ generator.nextBytes(random);
- if (failoverException == null && secretKey != null) {
+ if (failoverException == null && encoded != null) {
// check the length
- byte[] encoded = secretKey.getEncoded();
- if (encoded == null) { // unable to get the encoded key
+ if (encoded.length != 48) {
if (debug != null && Debug.isOn("handshake")) {
System.out.println(
- "unable to get the plaintext of the premaster secret");
+ "incorrect length of premaster secret: " +
+ encoded.length);
}
- int keySize = KeyUtil.getKeySize(secretKey);
- if (keySize > 0 && keySize != 384) { // 384 = 48 * 8
- if (debug != null && Debug.isOn("handshake")) {
- System.out.println(
- "incorrect length of premaster secret: " +
- (keySize/8));
- }
-
- return generateDummySecret(clientHelloVersion);
- }
+ return generatePreMasterSecret(
+ clientHelloVersion, random, generator);
+ }
- // The key size is exactly 48 bytes or not accessible.
- //
- // Conservatively, pass the checking to master secret
- // calculation.
- return secretKey;
- } else if (encoded.length == 48) {
- // check the version
- if (clientHelloVersion.major == encoded[0] &&
- clientHelloVersion.minor == encoded[1]) {
+ if (clientHelloVersion.major != encoded[0] ||
+ clientHelloVersion.minor != encoded[1]) {
- return secretKey;
- } else if (clientHelloVersion.v <= ProtocolVersion.TLS10.v &&
- currentVersion.major == encoded[0] &&
- currentVersion.minor == encoded[1]) {
+ if (clientHelloVersion.v <= ProtocolVersion.TLS10.v &&
+ currentVersion.major == encoded[0] &&
+ currentVersion.minor == encoded[1]) {
/*
* For compatibility, we maintain the behavior that the
* version in pre_master_secret can be the negotiated
* version for TLS v1.0 and SSL v3.0.
*/
this.protocolVersion = currentVersion;
- return secretKey;
- }
-
- if (debug != null && Debug.isOn("handshake")) {
- System.out.println("Mismatching Protocol Versions, " +
- "ClientHello.client_version is " + clientHelloVersion +
- ", while PreMasterSecret.client_version is " +
- ProtocolVersion.valueOf(encoded[0], encoded[1]));
- }
+ } else {
+ if (debug != null && Debug.isOn("handshake")) {
+ System.out.println("Mismatching Protocol Versions, " +
+ "ClientHello.client_version is " +
+ clientHelloVersion +
+ ", while PreMasterSecret.client_version is " +
+ ProtocolVersion.valueOf(encoded[0], encoded[1]));
+ }
- return generateDummySecret(clientHelloVersion);
- } else {
- if (debug != null && Debug.isOn("handshake")) {
- System.out.println(
- "incorrect length of premaster secret: " +
- encoded.length);
+ encoded = random;
}
+ }
- return generateDummySecret(clientHelloVersion);
- }
+ return generatePreMasterSecret(
+ clientHelloVersion, encoded, generator);
}
if (debug != null && Debug.isOn("handshake") &&
@@ -250,11 +250,14 @@
failoverException.printStackTrace(System.out);
}
- return generateDummySecret(clientHelloVersion);
+ return generatePreMasterSecret(clientHelloVersion, random, generator);
}
// generate a premaster secret with the specified version number
- static SecretKey generateDummySecret(ProtocolVersion version) {
+ private static SecretKey generatePreMasterSecret(
+ ProtocolVersion version, byte[] encodedSecret,
+ SecureRandom generator) {
+
if (debug != null && Debug.isOn("handshake")) {
System.out.println("Generating a random fake premaster secret");
}
@@ -263,11 +266,17 @@
String s = ((version.v >= ProtocolVersion.TLS12.v) ?
"SunTls12RsaPremasterSecret" : "SunTlsRsaPremasterSecret");
KeyGenerator kg = JsseJce.getKeyGenerator(s);
- kg.init(new TlsRsaPremasterSecretParameterSpec
- (version.major, version.minor));
+ kg.init(new TlsRsaPremasterSecretParameterSpec(
+ version.major, version.minor, encodedSecret), generator);
return kg.generateKey();
- } catch (GeneralSecurityException e) {
- throw new RuntimeException("Could not generate dummy secret", e);
+ } catch (InvalidAlgorithmParameterException |
+ NoSuchAlgorithmException iae) {
+ // unlikely to happen, otherwise, must be a provider exception
+ if (debug != null && Debug.isOn("handshake")) {
+ System.out.println("RSA premaster secret generation error:");
+ iae.printStackTrace(System.out);
+ }
+ throw new RuntimeException("Could not generate dummy secret", iae);
}
}
--- a/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java Wed Jul 05 19:27:58 2017 +0200
@@ -158,8 +158,13 @@
private String altSignerClasspath = null;
private ZipFile zipFile = null;
+ // Informational warnings
+ private boolean hasExpiringCert = false;
+ private boolean noTimestamp = false;
+ private Date expireDate = new Date(0L); // used in noTimestamp warning
+
+ // Severe warnings
private boolean hasExpiredCert = false;
- private boolean hasExpiringCert = false;
private boolean notYetValidCert = false;
private boolean chainNotValidated = false;
private boolean notSignedByAlias = false;
@@ -258,9 +263,6 @@
if (strict) {
int exitCode = 0;
- if (hasExpiringCert) {
- exitCode |= 2;
- }
if (chainNotValidated || hasExpiredCert || notYetValidCert) {
exitCode |= 4;
}
@@ -754,14 +756,25 @@
System.out.println(rb.getString(
"jar.is.unsigned.signatures.missing.or.not.parsable."));
} else {
- System.out.println(rb.getString("jar.verified."));
- if (hasUnsignedEntry || hasExpiredCert || hasExpiringCert ||
- badKeyUsage || badExtendedKeyUsage || badNetscapeCertType ||
- notYetValidCert || chainNotValidated ||
- aliasNotInStore || notSignedByAlias) {
+ boolean warningAppeared = false;
+ boolean errorAppeared = false;
+ if (badKeyUsage || badExtendedKeyUsage || badNetscapeCertType ||
+ notYetValidCert || chainNotValidated || hasExpiredCert ||
+ hasUnsignedEntry ||
+ aliasNotInStore || notSignedByAlias) {
- System.out.println();
- System.out.println(rb.getString("Warning."));
+ if (strict) {
+ System.out.println(rb.getString("jar.verified.with.signer.errors."));
+ System.out.println();
+ System.out.println(rb.getString("Error."));
+ errorAppeared = true;
+ } else {
+ System.out.println(rb.getString("jar.verified."));
+ System.out.println();
+ System.out.println(rb.getString("Warning."));
+ warningAppeared = true;
+ }
+
if (badKeyUsage) {
System.out.println(
rb.getString("This.jar.contains.entries.whose.signer.certificate.s.KeyUsage.extension.doesn.t.allow.code.signing."));
@@ -785,10 +798,6 @@
System.out.println(rb.getString(
"This.jar.contains.entries.whose.signer.certificate.has.expired."));
}
- if (hasExpiringCert) {
- System.out.println(rb.getString(
- "This.jar.contains.entries.whose.signer.certificate.will.expire.within.six.months."));
- }
if (notYetValidCert) {
System.out.println(rb.getString(
"This.jar.contains.entries.whose.signer.certificate.is.not.yet.valid."));
@@ -807,10 +816,29 @@
if (aliasNotInStore) {
System.out.println(rb.getString("This.jar.contains.signed.entries.that.s.not.signed.by.alias.in.this.keystore."));
}
+ } else {
+ System.out.println(rb.getString("jar.verified."));
+ }
+ if (hasExpiringCert || noTimestamp) {
+ if (!warningAppeared) {
+ System.out.println();
+ System.out.println(rb.getString("Warning."));
+ warningAppeared = true;
+ }
+ if (hasExpiringCert) {
+ System.out.println(rb.getString(
+ "This.jar.contains.entries.whose.signer.certificate.will.expire.within.six.months."));
+ }
+ if (noTimestamp) {
+ System.out.println(
+ String.format(rb.getString("no.timestamp.verifying"), expireDate));
+ }
+ }
+ if (warningAppeared || errorAppeared) {
if (! (verbose != null && showcerts)) {
System.out.println();
System.out.println(rb.getString(
- "Re.run.with.the.verbose.and.certs.options.for.more.details."));
+ "Re.run.with.the.verbose.and.certs.options.for.more.details."));
}
}
}
@@ -870,6 +898,9 @@
try {
boolean printValidity = true;
if (timestamp == null) {
+ if (expireDate.getTime() == 0 || expireDate.after(notAfter)) {
+ expireDate = notAfter;
+ }
x509Cert.checkValidity();
// test if cert will expire within six months
if (notAfter.getTime() < System.currentTimeMillis() + SIX_MONTHS) {
@@ -1233,6 +1264,10 @@
tsaCert = getTsaCert(tsaAlias);
}
+ if (tsaUrl == null && tsaCert == null) {
+ noTimestamp = true;
+ }
+
SignatureFile.Block block = null;
try {
@@ -1380,12 +1415,20 @@
}
}
- if (hasExpiredCert || hasExpiringCert || notYetValidCert
- || badKeyUsage || badExtendedKeyUsage
- || badNetscapeCertType || chainNotValidated) {
- System.out.println();
+ boolean warningAppeared = false;
+ if (badKeyUsage || badExtendedKeyUsage || badNetscapeCertType ||
+ notYetValidCert || chainNotValidated || hasExpiredCert) {
+ if (strict) {
+ System.out.println(rb.getString("jar.signed.with.signer.errors."));
+ System.out.println();
+ System.out.println(rb.getString("Error."));
+ } else {
+ System.out.println(rb.getString("jar.signed."));
+ System.out.println();
+ System.out.println(rb.getString("Warning."));
+ warningAppeared = true;
+ }
- System.out.println(rb.getString("Warning."));
if (badKeyUsage) {
System.out.println(
rb.getString("The.signer.certificate.s.KeyUsage.extension.doesn.t.allow.code.signing."));
@@ -1404,9 +1447,6 @@
if (hasExpiredCert) {
System.out.println(
rb.getString("The.signer.certificate.has.expired."));
- } else if (hasExpiringCert) {
- System.out.println(
- rb.getString("The.signer.certificate.will.expire.within.six.months."));
} else if (notYetValidCert) {
System.out.println(
rb.getString("The.signer.certificate.is.not.yet.valid."));
@@ -1416,6 +1456,24 @@
System.out.println(
rb.getString("The.signer.s.certificate.chain.is.not.validated."));
}
+ } else {
+ System.out.println(rb.getString("jar.signed."));
+ }
+ if (hasExpiringCert || noTimestamp) {
+ if (!warningAppeared) {
+ System.out.println();
+ System.out.println(rb.getString("Warning."));
+ }
+
+ if (hasExpiringCert) {
+ System.out.println(
+ rb.getString("The.signer.certificate.will.expire.within.six.months."));
+ }
+
+ if (noTimestamp) {
+ System.out.println(
+ String.format(rb.getString("no.timestamp.signing"), expireDate));
+ }
}
// no IOException thrown in the above try clause, so disable
@@ -1502,6 +1560,7 @@
timestamp = ts.getTimestamp();
} else {
timestamp = null;
+ noTimestamp = true;
}
// display the certificate(s). The first one is end-entity cert and
// its KeyUsage should be checked.
--- a/jdk/src/share/classes/sun/security/tools/jarsigner/Resources.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/security/tools/jarsigner/Resources.java Wed Jul 05 19:27:58 2017 +0200
@@ -112,9 +112,9 @@
{"Please.specify.alias.name", "Please specify alias name"},
{"Only.one.alias.can.be.specified", "Only one alias can be specified"},
{"This.jar.contains.signed.entries.which.is.not.signed.by.the.specified.alias.es.",
- "This jar contains signed entries which is not signed by the specified alias(es)."},
+ "This jar contains signed entries which are not signed by the specified alias(es)."},
{"This.jar.contains.signed.entries.that.s.not.signed.by.alias.in.this.keystore.",
- "This jar contains signed entries that's not signed by alias in this keystore."},
+ "This jar contains signed entries that are not signed by alias in this keystore."},
{"s", "s"},
{"m", "m"},
{"k", "k"},
@@ -135,7 +135,10 @@
{".Unsigned.entries.", "(Unsigned entries)"},
{"jar.is.unsigned.signatures.missing.or.not.parsable.",
"jar is unsigned. (signatures missing or not parsable)"},
+ {"jar.signed.", "jar signed."},
+ {"jar.signed.with.signer.errors.", "jar signed, with signer errors."},
{"jar.verified.", "jar verified."},
+ {"jar.verified.with.signer.errors.", "jar verified, with signer errors."},
{"jarsigner.", "jarsigner: "},
{"signature.filename.must.consist.of.the.following.characters.A.Z.0.9.or.",
"signature filename must consist of the following characters: A-Z, 0-9, _ or -"},
@@ -193,6 +196,7 @@
"using an alternative signing mechanism"},
{"entry.was.signed.on", "entry was signed on {0}"},
{"Warning.", "Warning: "},
+ {"Error.", "Error: "},
{"This.jar.contains.unsigned.entries.which.have.not.been.integrity.checked.",
"This jar contains unsigned entries which have not been integrity-checked. "},
{"This.jar.contains.entries.whose.signer.certificate.has.expired.",
@@ -229,6 +233,10 @@
"The signer's certificate chain is not validated."},
{"This.jar.contains.entries.whose.certificate.chain.is.not.validated.",
"This jar contains entries whose certificate chain is not validated."},
+ {"no.timestamp.signing",
+ "No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date (%1$tY-%1$tm-%1$td) or after any future revocation date."},
+ {"no.timestamp.verifying",
+ "This jar contains signatures that does not include a timestamp. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date (%1$tY-%1$tm-%1$td) or after any future revocation date."},
{"Unknown.password.type.", "Unknown password type: "},
{"Cannot.find.environment.variable.",
"Cannot find environment variable: "},
--- a/jdk/src/share/classes/sun/security/util/SecurityConstants.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/security/util/SecurityConstants.java Wed Jul 05 19:27:58 2017 +0200
@@ -144,5 +144,5 @@
// java.lang.SecurityManager
public static final SocketPermission LOCAL_LISTEN_PERMISSION =
- new SocketPermission("localhost:1024-", SOCKET_LISTEN_ACTION);
+ new SocketPermission("localhost:0", SOCKET_LISTEN_ACTION);
}
--- a/jdk/src/share/classes/sun/util/resources/de/TimeZoneNames_de.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/util/resources/de/TimeZoneNames_de.java Wed Jul 05 19:27:58 2017 +0200
@@ -46,159 +46,235 @@
protected final Object[][] getContents() {
String ACT[] = new String[] {"Acre Normalzeit", "ACT",
- "Acre Sommerzeit", "ACST"};
+ "Acre Sommerzeit", "ACST",
+ "Acre Normalzeit", "ACT"};
String ADELAIDE[] = new String[] {"Zentrale Normalzeit (S\u00FCdaustralien)", "CST",
- "Zentrale Sommerzeit (S\u00FCdaustralien)", "CST"};
+ "Zentrale Sommerzeit (S\u00FCdaustralien)", "CST",
+ "Zentrale Zeitzone (S\u00FCdaustralien)", "CT"};
String AGT[] = new String[] {"Argentinische Zeit", "ART",
- "Argentinische Sommerzeit", "ARST"};
+ "Argentinische Sommerzeit", "ARST",
+ "Argentinische Zeit", "ART"};
String AKST[] = new String[] {"Alaska Normalzeit", "AKST",
- "Alaska Sommerzeit", "AKDT"};
+ "Alaska Sommerzeit", "AKDT",
+ "Zeitzone f\u00FCr Alaska", "AKT"};
String AMT[] = new String[] {"Amazonas Normalzeit", "AMT",
- "Amazonas Sommerzeit", "AMST"};
+ "Amazonas Sommerzeit", "AMST",
+ "Amazonas Normalzeit", "AMT"};
String ARAST[] = new String[] {"Arabische Normalzeit", "AST",
- "Arabische Sommerzeit", "ADT"};
+ "Arabische Sommerzeit", "ADT",
+ "Zeitzone f\u00FCr Arabische Halbinsel", "AT"};
String ARMT[] = new String[] {"Armenische Zeit", "AMT",
- "Armenische Sommerzeit", "AMST"};
+ "Armenische Sommerzeit", "AMST",
+ "Armenische Zeit", "AMT"};
String AST[] = new String[] {"Atlantik Normalzeit", "AST",
- "Atlantik Sommerzeit", "ADT"};
+ "Atlantik Sommerzeit", "ADT",
+ "Zeitzone Atlantik", "AT"};
String BDT[] = new String[] {"Bangladesch Zeit", "BDT",
- "Bangladesch Sommerzeit", "BDST"};
+ "Bangladesch Sommerzeit", "BDST",
+ "Bangladesch Zeit", "BDT"};
String BRISBANE[] = new String[] {"\u00D6stliche Normalzeit (Queensland)", "EST",
- "\u00D6stliche Sommerzeit (Queensland)", "EST"};
+ "\u00D6stliche Sommerzeit (Queensland)", "EST",
+ "\u00D6stliche Zeitzone (Queensland)", "ET"};
String BROKEN_HILL[] = new String[] {"Zentrale Normalzeit (S\u00FCdaustralien/New South Wales)", "CST",
- "Zentrale Sommerzeit (S\u00FCdaustralien/New South Wales)", "CST"};
+ "Zentrale Sommerzeit (S\u00FCdaustralien/New South Wales)", "CST",
+ "Zentrale Zeitzone (S\u00FCdaustralien/New South Wales)", "CT"};
String BRT[] = new String[] {"Brasilianische Zeit", "BRT",
- "Brasilianische Sommerzeit", "BRST"};
+ "Brasilianische Sommerzeit", "BRST",
+ "Brasilianische Zeit", "BRT"};
String BTT[] = new String[] {"Bhutanische Zeit", "BTT",
- "Bhutanische Sommerzeit", "BTST"};
+ "Bhutanische Sommerzeit", "BTST",
+ "Bhutanische Zeit", "BTT"};
String CAT[] = new String[] {"Zentralafrikanische Zeit", "CAT",
- "Zentralafrikanische Sommerzeit", "CAST"};
+ "Zentralafrikanische Sommerzeit", "CAST",
+ "Zentralafrikanische Zeit", "CAT"};
String CET[] = new String[] {"Mitteleurop\u00e4ische Zeit", "MEZ",
- "Mitteleurop\u00e4ische Sommerzeit", "MESZ"};
+ "Mitteleurop\u00e4ische Sommerzeit", "MESZ",
+ "Mitteleurop\u00E4ische Zeit", "MEZ"};
String CHAST[] = new String[] {"Chatham Normalzeit", "CHAST",
- "Chatham Sommerzeit", "CHADT"};
+ "Chatham Sommerzeit", "CHADT",
+ "Zeitzone f\u00FCr Chatham-Inseln", "CHAT"};
String CHUT[] = new String[] {"Chuuk Zeit", "CHUT",
- "Chuuk Sommerzeit", "CHUST"};
+ "Chuuk Sommerzeit", "CHUST",
+ "Chuuk Zeit", "CHUT"};
String CIT[] = new String[] {"Zentralindonesische Zeit", "WITA",
- "Zentralindonesische Sommerzeit", "CIST"};
+ "Zentralindonesische Sommerzeit", "CIST",
+ "Zentralindonesische Zeit", "WITA"};
String CLT[] = new String[] {"Chilenische Zeit", "CLT",
- "Chilenische Sommerzeit", "CLST"};
+ "Chilenische Sommerzeit", "CLST",
+ "Chilenische Zeit", "CLT"};
String CST[] = new String[] {"Zentrale Normalzeit", "CST",
- "Zentrale Sommerzeit", "CDT"};
+ "Zentrale Sommerzeit", "CDT",
+ "Zentrale Zeitzone", "CT"};
String CTT[] = new String[] {"Chinesische Normalzeit", "CST",
- "Chinesische Sommerzeit", "CDT"};
+ "Chinesische Sommerzeit", "CDT",
+ "Zeitzone f\u00FCr China", "CT"};
String CUBA[] = new String[] {"Kubanische Normalzeit", "CST",
- "Kubanische Sommerzeit", "CDT"};
- String DARWIN[] = new String[] {"Central Normalzeit (Northern Territory)", "CST",
- "Zentrale Sommerzeit (Northern Territory)", "CST"};
+ "Kubanische Sommerzeit", "CDT",
+ "Kubanische Normalzeit", "CT"};
+ String DARWIN[] = new String[] {"Zentrale Normalzeit (Northern Territory)", "CST",
+ "Zentrale Sommerzeit (Northern Territory)", "CST",
+ "Zentrale Zeitzone (Northern Territory)", "CT"};
String DUBLIN[] = new String[] {"Greenwich Zeit", "GMT",
- "Irische Sommerzeit", "IST"};
+ "Irische Sommerzeit", "IST",
+ "Irische Zeit", "IT"};
String EAT[] = new String[] {"Ostafrikanische Zeit", "EAT",
- "Ostafrikanische Sommerzeit", "EAST"};
+ "Ostafrikanische Sommerzeit", "EAST",
+ "Ostafrikanische Zeit", "EAT"};
String EASTER[] = new String[] {"Osterinseln Zeit", "EAST",
- "Osterinseln Sommerzeit", "EASST"};
+ "Osterinseln Sommerzeit", "EASST",
+ "Osterinseln Zeit", "EAST"};
String EET[] = new String[] {"Osteurop\u00e4ische Zeit", "OEZ",
- "Osteurop\u00e4ische Sommerzeit", "OESZ"};
+ "Osteurop\u00e4ische Sommerzeit", "OESZ",
+ "Osteurop\u00e4ische Zeit", "OEZ"};
String EGT[] = new String[] {"Ostgr\u00f6nl\u00e4ndische Zeit", "EGT",
- "Ostgr\u00f6nl\u00e4ndische Sommerzeit", "EGST"};
+ "Ostgr\u00f6nl\u00e4ndische Sommerzeit", "EGST",
+ "Ostgr\u00F6nl\u00E4ndische Zeit", "EGT"};
String EST[] = new String[] {"\u00d6stliche Normalzeit", "EST",
- "\u00d6stliche Sommerzeit", "EDT"};
- String EST_NSW[] = new String[] {"Eastern Normalzeit (Neus\u00FCdwales)", "EST",
- "\u00D6stliche Sommerzeit (New South Wales)", "EST"};
+ "\u00d6stliche Sommerzeit", "EDT",
+ "\u00D6stliche Zeitzone", "ET"};
+ String EST_NSW[] = new String[] {"\u00D6stliche Normalzeit (New South Wales)", "EST",
+ "\u00D6stliche Sommerzeit (New South Wales)", "EST",
+ "\u00D6stliche Zeitzone (New South Wales)", "ET"};
String FET[] = new String[] {"Kaliningrader Zeit", "FET",
- "Kaliningrader Sommerzeit", "FEST"};
+ "Kaliningrader Sommerzeit", "FEST",
+ "Kaliningrader Zeit", "FET"};
String GHMT[] = new String[] {"Ghanaische Normalzeit", "GMT",
- "Ghanaische Sommerzeit", "GHST"};
+ "Ghanaische Sommerzeit", "GHST",
+ "Ghanaische Normalzeit", "GMT"};
String GAMBIER[] = new String[] {"Gambier Zeit", "GAMT",
- "Gambier Sommerzeit", "GAMST"};
+ "Gambier Sommerzeit", "GAMST",
+ "Gambier Zeit", "GAMT"};
String GMT[] = new String[] {"Greenwich Zeit", "GMT",
+ "Greenwich Zeit", "GMT",
"Greenwich Zeit", "GMT"};
String GMTBST[] = new String[] {"Greenwich Zeit", "GMT",
- "Britische Sommerzeit", "BST"};
+ "Britische Sommerzeit", "BST",
+ "Britische Zeit", "BT"};
String GST[] = new String[] {"Golf Normalzeit", "GST",
- "Golf Sommerzeit", "GDT"};
+ "Golf Sommerzeit", "GDT",
+ "Zeitzone f\u00FCr Persischen Golf", "GT"};
String HAST[] = new String[] {"Hawaii-Aleutische Normalzeit", "HAST",
- "Hawaii-Aleutische Sommerzeit", "HADT"};
+ "Hawaii-Aleutische Sommerzeit", "HADT",
+ "Zeitzone f\u00FCr Hawaii und Al\u00EButen", "HAT"};
String HKT[] = new String[] {"Hongkong Zeit", "HKT",
- "Hongkong Sommerzeit", "HKST"};
+ "Hongkong Sommerzeit", "HKST",
+ "Hongkong Zeit", "HKT"};
String HST[] = new String[] {"Hawaii Normalzeit", "HST",
- "Hawaii Sommerzeit", "HDT"};
+ "Hawaii Sommerzeit", "HDT",
+ "Zeitzone f\u00FCr Hawaii", "HT"};
String ICT[] = new String[] {"Indochina Zeit", "ICT",
- "Indochina Sommerzeit", "ICST"};
+ "Indochina Sommerzeit", "ICST",
+ "Indochina Zeit", "ICT"};
String IRT[] = new String[] {"Iranische Normalzeit", "IRST",
- "Iranische Sommerzeit", "IRDT"};
+ "Iranische Sommerzeit", "IRDT",
+ "Iranische Zeit", "IRT"};
String ISRAEL[] = new String[] {"Israelische Normalzeit", "IST",
- "Israelische Sommerzeit", "IDT"};
+ "Israelische Sommerzeit", "IDT",
+ "Zeitzone f\u00FCr Israel", "IT"};
String IST[] = new String[] {"Indische Normalzeit", "IST",
- "Indische Sommerzeit", "IDT"};
+ "Indische Sommerzeit", "IDT",
+ "Zeitzone f\u00FCr Indien", "IT"};
String JST[] = new String[] {"Japanische Normalzeit", "JST",
- "Japanische Sommerzeit", "JDT"};
+ "Japanische Sommerzeit", "JDT",
+ "Zeitzone f\u00FCr Japan", "JT"};
String KST[] = new String[] {"Koreanische Normalzeit", "KST",
- "Koreanische Sommerzeit", "KDT"};
+ "Koreanische Sommerzeit", "KDT",
+ "Zeitzone f\u00FCr Korea", "KT"};
String LORD_HOWE[] = new String[] {"Lord Howe Normalzeit", "LHST",
- "Lord Howe Sommerzeit", "LHST"};
+ "Lord Howe Sommerzeit", "LHST",
+ "Lord-Howe Normalzeit", "LHT"};
String MHT[] = new String[] {"Marshallinseln Zeit", "MHT",
- "Marshallinseln Sommerzeit", "MHST"};
+ "Marshallinseln Sommerzeit", "MHST",
+ "Marshallinseln Zeit", "MHT"};
String MSK[] = new String[] {"Moskauer Normalzeit", "MSK",
- "Moskauer Sommerzeit", "MSD"};
+ "Moskauer Sommerzeit", "MSD",
+ "Zeitzone f\u00FCr Moskau", "MT"};
String MST[] = new String[] {"Rocky Mountains Normalzeit", "MST",
- "Rocky Mountains Sommerzeit", "MDT"};
+ "Rocky Mountains Sommerzeit", "MDT",
+ "Zeitzone Mountain", "MT"};
String MYT[] = new String[] {"Malaysische Zeit", "MYT",
- "Malaysische Sommerzeit", "MYST"};
+ "Malaysische Sommerzeit", "MYST",
+ "Malaysische Zeit", "MYT"};
String NORONHA[] = new String[] {"Fernando de Noronha Zeit", "FNT",
- "Fernando de Noronha Sommerzeit", "FNST"};
+ "Fernando de Noronha Sommerzeit", "FNST",
+ "Fernando de Noronha Zeit", "FNT"};
String NOVT[] = new String[] {"Nowosibirsker Zeit", "NOVT",
- "Nowosibirsker Sommerzeit", "NOVST"};
+ "Nowosibirsker Sommerzeit", "NOVST",
+ "Nowosibirsker Zeit", "NOVT"};
String NPT[] = new String[] {"Nepalesische Zeit", "NPT",
- "Nepalesische Sommerzeit", "NPST"};
+ "Nepalesische Sommerzeit", "NPST",
+ "Nepalesische Zeit", "NPT"};
String NST[] = new String[] {"Neufundland Normalzeit", "NST",
- "Neufundland Sommerzeit", "NDT"};
+ "Neufundland Sommerzeit", "NDT",
+ "Zeitzone f\u00FCr Neufundland", "NT"};
String NZST[] = new String[] {"Neuseeland Normalzeit", "NZST",
- "Neuseeland Sommerzeit", "NZDT"};
+ "Neuseeland Sommerzeit", "NZDT",
+ "Zeitzone f\u00FCr Neuseeland", "NZT"};
String PITCAIRN[] = new String[] {"Pitcairn Normalzeit", "PST",
- "Pitcairn Sommerzeit", "PDT"};
+ "Pitcairn Sommerzeit", "PDT",
+ "Zeitzone f\u00FCr Pitcairn", "PT"};
String PKT[] = new String[] {"Pakistanische Zeit", "PKT",
- "Pakistanische Sommerzeit", "PKST"};
+ "Pakistanische Sommerzeit", "PKST",
+ "Pakistanische Zeit", "PKT"};
String PONT[] = new String[] {"Pohnpei Zeit", "PONT",
- "Pohnpei Sommerzeit", "PONST"};
+ "Pohnpei Sommerzeit", "PONST",
+ "Pohnpei-Inseln Zeit", "PONT"};
String PST[] = new String[] {"Pazifische Normalzeit", "PST",
- "Pazifische Sommerzeit", "PDT"};
+ "Pazifische Sommerzeit", "PDT",
+ "Zeitzone Pazifik", "PT"};
String SAST[] = new String[] {"S\u00fcdafrikanische Normalzeit", "SAST",
- "S\u00fcdafrikanische Sommerzeit", "SAST"};
+ "S\u00fcdafrikanische Sommerzeit", "SAST",
+ "Zeitzone f\u00FCr S\u00FCdafrika", "SAT"};
String SBT[] = new String[] {"Salomoninseln Zeit", "SBT",
- "Salomoninseln Sommerzeit", "SBST"};
+ "Salomoninseln Sommerzeit", "SBST",
+ "Salomoninseln Zeit", "SBT"};
String SGT[] = new String[] {"Singapur Zeit", "SGT",
- "Singapur Sommerzeit", "SGST"};
+ "Singapur Sommerzeit", "SGST",
+ "Singapur Zeit", "SGT"};
String SLST[] = new String[] {"Greenwich Normalzeit", "GMT",
- "Sierra Leone Sommerzeit", "SLST"};
+ "Sierra Leone Sommerzeit", "SLST",
+ "Sierra Leone Zeit", "SLT"};
String TASMANIA[] = new String[] {"\u00D6stliche Normalzeit (Tasmanien)", "EST",
- "\u00D6stliche Sommerzeit (Tasmanien)", "EST"};
+ "\u00D6stliche Sommerzeit (Tasmanien)", "EST",
+ "\u00D6stliche Zeitzone (Tasmanien)", "ET"};
String TMT[] = new String[] {"Turkmenische Zeit", "TMT",
- "Turkmenische Sommerzeit", "TMST"};
+ "Turkmenische Sommerzeit", "TMST",
+ "Turkmenische Zeit", "TMT"};
String ULAT[]= new String[] {"Ulaanbaatar Zeit", "ULAT",
- "Ulaanbaatar Sommerzeit", "ULAST"};
+ "Ulaanbaatar Sommerzeit", "ULAST",
+ "Ulaanbaatar Zeit", "ULAT"};
String WART[] = new String[] {"Westargentinische Zeit", "WART",
"Westargentinische Sommerzeit", "WARST"};
String WAT[] = new String[] {"Westafrikanische Zeit", "WAT",
- "Westafrikanische Sommerzeit", "WAST"};
+ "Westafrikanische Sommerzeit", "WAST",
+ "Westafrikanische Zeit", "WAT"};
String WET[] = new String[] {"Westeurop\u00e4ische Zeit", "WEZ",
- "Westeurop\u00e4ische Sommerzeit", "WESZ"};
+ "Westeurop\u00e4ische Sommerzeit", "WESZ",
+ "Westeurop\u00E4ische Zeit", "WEZ"};
String WIT[] = new String[] {"Westindonesische Zeit", "WIB",
- "Westindonesische Sommerzeit", "WIST"};
+ "Westindonesische Sommerzeit", "WIST",
+ "Westindonesische Zeit", "WIB"};
String WST_AUS[] = new String[] {"Westliche Normalzeit (Australien)", "WST",
- "Westliche Sommerzeit (Australien)", "WST"};
+ "Westliche Sommerzeit (Australien)", "WST",
+ "Westliche Zeitzone (Australien)", "WT"};
String SAMOA[] = new String[] {"Samoa Normalzeit", "SST",
- "Samoa Sommerzeit", "SDT"};
+ "Samoa Sommerzeit", "SDT",
+ "Zeitzone f\u00FCr Samoa", "ST"};
String WST_SAMOA[] = new String[] {"West Samoa Zeit", "WST",
- "West Samoa Sommerzeit", "WSDT"};
+ "West Samoa Sommerzeit", "WSDT",
+ "West Samoa Zeit", "WST"};
String ChST[] = new String[] {"Chamorro Normalzeit", "ChST",
- "Chamorro Sommerzeit", "ChDT"};
+ "Chamorro Sommerzeit", "ChDT",
+ "Zeitzone f\u00FCr die Marianen", "ChT"};
String VICTORIA[] = new String[] {"\u00D6stliche Normalzeit (Victoria)", "EST",
- "\u00D6stliche Sommerzeit (Victoria)", "EST"};
+ "\u00D6stliche Sommerzeit (Victoria)", "EST",
+ "\u00D6stliche Zeitzone (Victoria)", "ET"};
String UTC[] = new String[] {"Koordinierte Universalzeit", "UTC",
+ "Koordinierte Universalzeit", "UTC",
"Koordinierte Universalzeit", "UTC"};
String UZT[] = new String[] {"Usbekistan Zeit", "UZT",
- "Usbekistan Sommerzeit", "UZST"};
+ "Usbekistan Sommerzeit", "UZST",
+ "Usbekistan Zeit", "UZT"};
return new Object[][] {
{"America/Los_Angeles", PST},
@@ -311,7 +387,8 @@
{"America/Argentina/Ushuaia", AGT},
{"America/Aruba", AST},
{"America/Asuncion", new String[] {"Paraguay Zeit", "PYT",
- "Paraguay Sommerzeit", "PYST"}},
+ "Paraguay Sommerzeit", "PYST",
+ "Paraguay Zeit", "PYT"}},
{"America/Atikokan", EST},
{"America/Atka", HAST},
{"America/Bahia", BRT},
@@ -322,17 +399,20 @@
{"America/Blanc-Sablon", AST},
{"America/Boa_Vista", AMT},
{"America/Bogota", new String[] {"Kolumbianische Zeit", "COT",
- "Kolumbianische Sommerzeit", "COST"}},
+ "Kolumbianische Sommerzeit", "COST",
+ "Kolumbianische Zeit", "COT"}},
{"America/Boise", MST},
{"America/Buenos_Aires", AGT},
{"America/Cambridge_Bay", MST},
{"America/Campo_Grande", AMT},
{"America/Cancun", CST},
{"America/Caracas", new String[] {"Venezuelanische Zeit", "VET",
- "Venezuelanische Sommerzeit", "VEST"}},
+ "Venezuelanische Sommerzeit", "VEST",
+ "Venezuelanische Zeit", "VET"}},
{"America/Catamarca", AGT},
{"America/Cayenne", new String[] {"Franz\u00f6sisch-Guiana Zeit", "GFT",
- "Franz\u00f6sisch-Guiana Sommerzeit", "GFST"}},
+ "Franz\u00f6sisch-Guiana Sommerzeit", "GFST",
+ "Franz\u00F6sisch-Guiana Zeit", "GFT"}},
{"America/Cayman", EST},
{"America/Chihuahua", MST},
{"America/Creston", MST},
@@ -354,16 +434,19 @@
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"Westgr\u00f6nl\u00e4ndische Zeit", "WGT",
- "Westgr\u00f6nl\u00e4ndische Sommerzeit", "WGST"}},
+ "Westgr\u00f6nl\u00e4ndische Sommerzeit", "WGST",
+ "Westgr\u00F6nl\u00E4ndische Zeit", "WGT"}},
{"America/Goose_Bay", AST},
{"America/Grand_Turk", EST},
{"America/Grenada", AST},
{"America/Guadeloupe", AST},
{"America/Guatemala", CST},
{"America/Guayaquil", new String[] {"Ecuadorianische Zeit", "ECT",
- "Ecuadorianische Sommerzeit", "ECST"}},
+ "Ecuadorianische Sommerzeit", "ECST",
+ "Ecuadorianische Zeit", "ECT"}},
{"America/Guyana", new String[] {"Guyanische Zeit", "GYT",
- "Guyanische Sommerzeit", "GYST"}},
+ "Guyanische Sommerzeit", "GYST",
+ "Guyanische Zeit", "GYT"}},
{"America/Havana", CUBA},
{"America/Hermosillo", MST},
{"America/Indiana/Indianapolis", EST},
@@ -384,9 +467,11 @@
{"America/Knox_IN", CST},
{"America/Kralendijk", AST},
{"America/La_Paz", new String[] {"Bolivianische Zeit", "BOT",
- "Bolivianische Sommerzeit", "BOST"}},
+ "Bolivianische Sommerzeit", "BOST",
+ "Bolivianische Zeit", "BOT"}},
{"America/Lima", new String[] {"Peruanische Zeit", "PET",
- "Peruanische Sommerzeit", "PEST"}},
+ "Peruanische Sommerzeit", "PEST",
+ "Peruanische Zeit", "PET"}},
{"America/Louisville", EST},
{"America/Lower_Princes", AST},
{"America/Maceio", BRT},
@@ -400,13 +485,16 @@
{"America/Menominee", CST},
{"America/Merida", CST},
{"America/Metlakatla", new String[] {"Metlakatla Normalzeit", "MeST",
- "Metlakatla Sommerzeit", "MeDT"}},
+ "Metlakatla Sommerzeit", "MeDT",
+ "Metlakatla Normalzeit", "MeT"}},
{"America/Mexico_City", CST},
{"America/Miquelon", new String[] {"Pierre & Miquelon Normalzeit", "PMST",
- "Pierre & Miquelon Sommerzeit", "PMDT"}},
+ "Pierre & Miquelon Sommerzeit", "PMDT",
+ "Zeitzone f\u00FCr St. Pierre und Miquelon", "PMT"}},
{"America/Moncton", AST},
{"America/Montevideo", new String[] {"Uruguayische Zeit", "UYT",
- "Uruguayische Sommerzeit", "UYST"}},
+ "Uruguayische Sommerzeit", "UYST",
+ "Uruguayanische Zeit", "UYT"}},
{"America/Monterrey", CST},
{"America/Montreal", EST},
{"America/Montserrat", AST},
@@ -421,7 +509,8 @@
{"America/Panama", EST},
{"America/Pangnirtung", EST},
{"America/Paramaribo", new String[] {"Suriname Zeit", "SRT",
- "Suriname Sommerzeit", "SRST"}},
+ "Suriname Sommerzeit", "SRST",
+ "Suriname Zeit", "SRT"}},
{"America/Port-au-Prince", EST},
{"America/Port_of_Spain", AST},
{"America/Porto_Acre", ACT},
@@ -461,115 +550,146 @@
{"America/Yellowknife", MST},
{"Antarctica/Casey", WST_AUS},
{"Antarctica/Davis", new String[] {"Davis Zeit", "DAVT",
- "Davis Sommerzeit", "DAVST"}},
+ "Davis Sommerzeit", "DAVST",
+ "Davis Zeit", "DAVT"}},
{"Antarctica/DumontDUrville", new String[] {"Dumont-d'Urville Zeit", "DDUT",
- "Dumont-d'Urville Sommerzeit", "DDUST"}},
+ "Dumont-d'Urville Sommerzeit", "DDUST",
+ "Dumont-d'Urville Zeit", "DDUT"}},
{"Antarctica/Macquarie", new String[] {"Macquarieinsel Zeit", "MIST",
- "Macquarieinsel Sommerzeit", "MIST"}},
+ "Macquarieinsel Sommerzeit", "MIST",
+ "Macquarieinsel Zeit", "MIST"}},
{"Antarctica/Mawson", new String[] {"Mawson Zeit", "MAWT",
- "Mawson Sommerzeit", "MAWST"}},
+ "Mawson Sommerzeit", "MAWST",
+ "Mawson Zeit", "MAWT"}},
{"Antarctica/McMurdo", NZST},
{"Antarctica/Palmer", CLT},
{"Antarctica/Rothera", new String[] {"Rothera Zeit", "ROTT",
- "Rothera Sommerzeit", "ROTST"}},
+ "Rothera Sommerzeit", "ROTST",
+ "Rothera Zeit", "ROTT"}},
{"Antarctica/South_Pole", NZST},
{"Antarctica/Syowa", new String[] {"Syowa Zeit", "SYOT",
- "Syowa Sommerzeit", "SYOST"}},
+ "Syowa Sommerzeit", "SYOST",
+ "Syowa Zeit", "SYOT"}},
{"Antarctica/Vostok", new String[] {"Vostok Zeit", "VOST",
- "Vostok Sommerzeit", "VOSST"}},
+ "Vostok Sommerzeit", "VOSST",
+ "Vostok Zeit", "VOST"}},
{"Arctic/Longyearbyen", CET},
{"Asia/Aden", ARAST},
{"Asia/Almaty", new String[] {"Alma Ata Zeit", "ALMT",
- "Alma-Ata Sommerzeit", "ALMST"}},
+ "Alma-Ata Sommerzeit", "ALMST",
+ "Alma Ata Zeit", "ALMT"}},
{"Asia/Amman", ARAST},
{"Asia/Anadyr", new String[] {"Anadyr Zeit", "ANAT",
- "Anadyr Sommerzeit", "ANAST"}},
+ "Anadyr Sommerzeit", "ANAST",
+ "Anadyr Zeit", "ANAT"}},
{"Asia/Aqtau", new String[] {"Aqtau Zeit", "AQTT",
- "Aqtau Sommerzeit", "AQTST"}},
+ "Aqtau Sommerzeit", "AQTST",
+ "Aqtau Zeit", "AQTT"}},
{"Asia/Aqtobe", new String[] {"Aqtobe Zeit", "AQTT",
- "Aqtobe Sommerzeit", "AQTST"}},
+ "Aqtobe Sommerzeit", "AQTST",
+ "Aqtobe Zeit", "AQTT"}},
{"Asia/Ashgabat", TMT},
{"Asia/Ashkhabad", TMT},
{"Asia/Baghdad", ARAST},
{"Asia/Bahrain", ARAST},
{"Asia/Baku", new String[] {"Aserbaidschanische Zeit", "AZT",
- "Aserbaidschanische Sommerzeit", "AZST"}},
+ "Aserbaidschanische Sommerzeit", "AZST",
+ "Aserbaidschanische Zeit", "AZT"}},
{"Asia/Bangkok", ICT},
{"Asia/Beirut", EET},
{"Asia/Bishkek", new String[] {"Kirgisische Zeit", "KGT",
- "Kirgisische Sommerzeit", "KGST"}},
+ "Kirgisische Sommerzeit", "KGST",
+ "Kirgisische Zeit", "KGT"}},
{"Asia/Brunei", new String[] {"Brunei Zeit", "BNT",
- "Brunei Sommerzeit", "BNST"}},
+ "Brunei Sommerzeit", "BNST",
+ "Brunei Zeit", "BNT"}},
{"Asia/Calcutta", IST},
{"Asia/Choibalsan", new String[] {"Choibalsan Zeit", "CHOT",
- "Choibalsan Sommerzeit", "CHOST"}},
+ "Choibalsan Sommerzeit", "CHOST",
+ "Choibalsan Zeit", "CHOT"}},
{"Asia/Chongqing", CTT},
{"Asia/Chungking", CTT},
{"Asia/Colombo", IST},
{"Asia/Dacca", BDT},
{"Asia/Dhaka", BDT},
{"Asia/Dili", new String[] {"Timor-Leste Normalzeit", "TLT",
- "Timor-Leste Sommerzeit", "TLST"}},
+ "Timor-Leste Sommerzeit", "TLST",
+ "Timor-Leste Normalzeit", "TLT"}},
{"Asia/Damascus", EET},
{"Asia/Dubai", GST},
{"Asia/Dushanbe", new String[] {"Tadschikische Zeit", "TJT",
- "Tadschikische Sommerzeit", "TJST"}},
+ "Tadschikische Sommerzeit", "TJST",
+ "Tadschikische Zeit", "TJT"}},
{"Asia/Gaza", EET},
{"Asia/Harbin", CTT},
{"Asia/Hebron", EET},
{"Asia/Ho_Chi_Minh", ICT},
{"Asia/Hong_Kong", HKT},
{"Asia/Hovd", new String[] {"Hovd Zeit", "HOVT",
- "Hovd Sommerzeit", "HOVST"}},
+ "Hovd Sommerzeit", "HOVST",
+ "Hovd Zeit", "HOVT"}},
{"Asia/Irkutsk", new String[] {"Irkutsk Zeit", "IRKT",
- "Irkutsk Sommerzeit", "IRKST"}},
+ "Irkutsk Sommerzeit", "IRKST",
+ "Irkutsk Zeit", "IRKT"}},
{"Asia/Istanbul", EET},
{"Asia/Jakarta", WIT},
{"Asia/Jayapura", new String[] {"Ostindonesische Zeit", "WIT",
- "Ostindonesische Sommerzeit", "EIST"}},
+ "Ostindonesische Sommerzeit", "EIST",
+ "Ostindonesische Zeit", "WIT"}},
{"Asia/Kabul", new String[] {"Afghanistanische Zeit", "AFT",
- "Afghanistanische Sommerzeit", "AFST"}},
+ "Afghanistanische Sommerzeit", "AFST",
+ "Afghanistanische Zeit", "AFT"}},
{"Asia/Kamchatka", new String[] {"Petropawlowsk-Kamtschatkische Zeit", "PETT",
- "Petropawlowsk-Kamtschatkische Sommerzeit", "PETST"}},
+ "Petropawlowsk-Kamtschatkische Sommerzeit", "PETST",
+ "Petropawlowsk-Kamtschatkische Zeit", "PETT"}},
{"Asia/Karachi", PKT},
{"Asia/Kashgar", CTT},
{"Asia/Kathmandu", NPT},
{"Asia/Katmandu", NPT},
{"Asia/Khandyga", new String[] {"Chandyga Zeit", "YAKT",
- "Chandyga Sommerzeit", "YAKST"}},
+ "Chandyga Sommerzeit", "YAKST",
+ "Chandyga Zeit", "YAKT"}},
{"Asia/Kolkata", IST},
{"Asia/Krasnoyarsk", new String[] {"Krasnojarsker Zeit", "KRAT",
- "Krasnojarsker Sommerzeit", "KRAST"}},
+ "Krasnojarsker Sommerzeit", "KRAST",
+ "Krasnojarsker Zeit", "KRAT"}},
{"Asia/Kuala_Lumpur", MYT},
{"Asia/Kuching", MYT},
{"Asia/Kuwait", ARAST},
{"Asia/Macao", CTT},
{"Asia/Macau", CTT},
{"Asia/Magadan", new String[] {"Magadanische Zeit", "MAGT",
- "Magadanische Sommerzeit", "MAGST"}},
+ "Magadanische Sommerzeit", "MAGST",
+ "Magadanische Zeit", "MAGT"}},
{"Asia/Makassar", CIT},
{"Asia/Manila", new String[] {"Philippinische Zeit", "PHT",
- "Philippinische Sommerzeit", "PHST"}},
+ "Philippinische Sommerzeit", "PHST",
+ "Philippinische Zeit", "PHT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", NOVT},
{"Asia/Novosibirsk", NOVT},
{"Asia/Oral", new String[] {"Oral Zeit", "ORAT",
- "Oral Sommerzeit", "ORAST"}},
+ "Oral Sommerzeit", "ORAST",
+ "Oral Zeit", "ORAT"}},
{"Asia/Omsk", new String[] {"Omsk Zeit", "OMST",
- "Omsk Sommerzeit", "OMSST"}},
+ "Omsk Sommerzeit", "OMSST",
+ "Omsk Zeit", "OMST"}},
{"Asia/Phnom_Penh", ICT},
{"Asia/Pontianak", WIT},
{"Asia/Pyongyang", KST},
{"Asia/Qatar", ARAST},
{"Asia/Qyzylorda", new String[] {"Qyzylorda Zeit", "QYZT",
- "Qyzylorda Sommerzeit", "QYZST"}},
+ "Qyzylorda Sommerzeit", "QYZST",
+ "Qyzylorda Zeit", "QYZT"}},
{"Asia/Rangoon", new String[] {"Myanmar Zeit", "MMT",
- "Myanmar Sommerzeit", "MMST"}},
+ "Myanmar Sommerzeit", "MMST",
+ "Myanmar Zeit", "MMT"}},
{"Asia/Riyadh", ARAST},
{"Asia/Saigon", ICT},
{"Asia/Sakhalin", new String[] {"Sakhalin Zeit", "SAKT",
- "Sakhalin Sommerzeit", "SAKST"}},
+ "Sakhalin Sommerzeit", "SAKST",
+ "Sakhalin Zeit", "SAKT"}},
{"Asia/Samarkand", UZT},
{"Asia/Seoul", KST},
{"Asia/Singapore", SGT},
@@ -577,7 +697,8 @@
{"Asia/Tel_Aviv", ISRAEL},
{"Asia/Tashkent", UZT},
{"Asia/Tbilisi", new String[] {"Georgische Zeit", "GET",
- "Georgische Sommerzeit", "GEST"}},
+ "Georgische Sommerzeit", "GEST",
+ "Georgische Zeit", "GET"}},
{"Asia/Tehran", IRT},
{"Asia/Thimbu", BTT},
{"Asia/Thimphu", BTT},
@@ -586,31 +707,39 @@
{"Asia/Ulan_Bator", ULAT},
{"Asia/Urumqi", CTT},
{"Asia/Ust-Nera", new String[] {"Ust-Nera Zeit", "VLAT",
- "Ust-Nera Sommerzeit", "VLAST"}},
+ "Ust-Nera Sommerzeit", "VLAST",
+ "Ust-Nera Zeit", "VLAT"}},
{"Asia/Vientiane", ICT},
{"Asia/Vladivostok", new String[] {"Wladiwostok Zeit", "VLAT",
- "Wladiwostok Sommerzeit", "VLAST"}},
+ "Wladiwostok Sommerzeit", "VLAST",
+ "Wladiwostok Zeit", "VLAT"}},
{"Asia/Yakutsk", new String[] {"Jakutsk Zeit", "YAKT",
- "Jakutsk Sommerzeit", "YAKST"}},
+ "Jakutsk Sommerzeit", "YAKST",
+ "Jakutsk Zeit", "YAKT"}},
{"Asia/Yekaterinburg", new String[] {"Jekaterinburger Zeit", "YEKT",
- "Jekaterinburger Sommerzeit", "YEKST"}},
+ "Jekaterinburger Sommerzeit", "YEKST",
+ "Jekaterinburger Zeit", "YEKT"}},
{"Asia/Yerevan", ARMT},
{"Atlantic/Azores", new String[] {"Azoren Zeit", "AZOT",
- "Azoren Sommerzeit", "AZOST"}},
+ "Azoren Sommerzeit", "AZOST",
+ "Azoren Zeit", "AZOT"}},
{"Atlantic/Bermuda", AST},
{"Atlantic/Canary", WET},
{"Atlantic/Cape_Verde", new String[] {"Kap Verde Zeit", "CVT",
- "Kap Verde Sommerzeit", "CVST"}},
+ "Kap Verde Sommerzeit", "CVST",
+ "Kap Verde Zeit", "CVT"}},
{"Atlantic/Faeroe", WET},
{"Atlantic/Faroe", WET},
{"Atlantic/Jan_Mayen", CET},
{"Atlantic/Madeira", WET},
{"Atlantic/Reykjavik", GMT},
{"Atlantic/South_Georgia", new String[] {"South Georgia Normalzeit", "GST",
- "South Georgia Sommerzeit", "GDT"}},
+ "South Georgia Sommerzeit", "GDT",
+ "Zeitzone f\u00FCr S\u00FCdgeorgien", "GT"}},
{"Atlantic/St_Helena", GMT},
{"Atlantic/Stanley", new String[] {"Falkland Inseln Zeit", "FKT",
- "Falkland Inseln Sommerzeit", "FKST"}},
+ "Falkland Inseln Sommerzeit", "FKST",
+ "Falkland Inseln Zeit", "FKT"}},
{"Australia/ACT", EST_NSW},
{"Australia/Adelaide", ADELAIDE},
{"Australia/Brisbane", BRISBANE},
@@ -619,7 +748,8 @@
{"Australia/Currie", EST_NSW},
{"Australia/Darwin", DARWIN},
{"Australia/Eucla", new String[] {"Zentral-Westliche Normalzeit (Australien)", "CWST",
- "Zentral-Westliche Sommerzeit (Australien)", "CWST"}},
+ "Zentral-Westliche Sommerzeit (Australien)", "CWST",
+ "Zentral-Westliche Normalzeit (Australien)", "CWT"}},
{"Australia/Hobart", TASMANIA},
{"Australia/LHI", LORD_HOWE},
{"Australia/Lindeman", BRISBANE},
@@ -704,7 +834,8 @@
{"Europe/Riga", EET},
{"Europe/Rome", CET},
{"Europe/Samara", new String[] {"Samarische Zeit", "SAMT",
- "Samarische Sommerzeit", "SAMST"}},
+ "Samarische Sommerzeit", "SAMST",
+ "Samarische Zeit", "SAMT"}},
{"Europe/San_Marino", CET},
{"Europe/Sarajevo", CET},
{"Europe/Simferopol", EET},
@@ -720,7 +851,8 @@
{"Europe/Vienna", CET},
{"Europe/Vilnius", EET},
{"Europe/Volgograd", new String[] {"Wolgograder Zeit", "VOLT",
- "Wolgograder Sommerzeit", "VOLST"}},
+ "Wolgograder Sommerzeit", "VOLST",
+ "Wolgograder Zeit", "VOLT"}},
{"Europe/Warsaw", CET},
{"Europe/Zagreb", CET},
{"Europe/Zaporozhye", EET},
@@ -734,30 +866,39 @@
{"IST", IST},
{"Indian/Antananarivo", EAT},
{"Indian/Chagos", new String[] {"Indischer Ozean Territorium Zeit", "IOT",
- "Indischer Ozean Territorium Sommerzeit", "IOST"}},
+ "Indischer Ozean Territorium Sommerzeit", "IOST",
+ "Indischer Ozean Territorium Zeit", "IOT"}},
{"Indian/Christmas", new String[] {"Christmas Island Zeit", "CXT",
- "Christmas Island Sommerzeit", "CXST"}},
+ "Christmas Island Sommerzeit", "CXST",
+ "Weihnachtsinseln Zeit", "CIT"}},
{"Indian/Cocos", new String[] {"Cocos Islands Zeit", "CCT",
- "Cocos Islands Sommerzeit", "CCST"}},
+ "Cocos Islands Sommerzeit", "CCST",
+ "Kokos-Inseln Zeit", "CCT"}},
{"Indian/Comoro", EAT},
{"Indian/Kerguelen", new String[] {"Franz\u00f6sisch S\u00fcd- u. Antarktische Landzeit", "TFT",
- "Franz\u00f6sisch S\u00fcd- u. Antarktische Landsommerzeit", "TFST"}},
+ "Franz\u00f6sisch S\u00fcd- u. Antarktische Landsommerzeit", "TFST",
+ "Franz\u00F6sisch S\u00FCd- u. Antarktische Landzeit", "TFT"}},
{"Indian/Mahe", new String[] {"Seychellen Zeit", "SCT",
- "Seychellen Sommerzeit", "SCST"}},
+ "Seychellen Sommerzeit", "SCST",
+ "Seychellen Zeit", "SCT"}},
{"Indian/Maldives", new String[] {"Maledivische Zeit", "MVT",
- "Maledivische Sommerzeit", "MVST"}},
+ "Maledivische Sommerzeit", "MVST",
+ "Maledivische Zeit", "MVT"}},
{"Indian/Mauritius", new String[] {"Mauritius Zeit", "MUT",
- "Mauritius Sommerzeit", "MUST"}},
+ "Mauritius Sommerzeit", "MUST",
+ "Mauritius Zeit", "MUT"}},
{"Indian/Mayotte", EAT},
{"Indian/Reunion", new String[] {"Reunion Zeit", "RET",
- "Reunion Sommerzeit", "REST"}},
+ "Reunion Sommerzeit", "REST",
+ "R\u00E9union Zeit", "RET"}},
{"Israel", ISRAEL},
{"Jamaica", EST},
{"Japan", JST},
{"Kwajalein", MHT},
{"Libya", EET},
{"MET", new String[] {"Zentraleurop\u00e4ische Zeit", "MET",
- "Zentraleurop\u00e4ische Sommerzeit", "MEST"}},
+ "Zentraleurop\u00e4ische Sommerzeit", "MEST",
+ "MET", "MET"}},
{"Mexico/BajaNorte", PST},
{"Mexico/BajaSur", MST},
{"Mexico/General", CST},
@@ -777,61 +918,82 @@
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
{"Pacific/Efate", new String[] {"Vanuatu Zeit", "VUT",
- "Vanuatu Sommerzeit", "VUST"}},
+ "Vanuatu Sommerzeit", "VUST",
+ "Vanuatu Zeit", "VUT"}},
{"Pacific/Enderbury", new String[] {"Phoenix Inseln Zeit", "PHOT",
- "Phoenix Inseln Sommerzeit", "PHOST"}},
+ "Phoenix Inseln Sommerzeit", "PHOST",
+ "Phoenix Inseln Zeit", "PHOT"}},
{"Pacific/Fakaofo", new String[] {"Tokelau Zeit", "TKT",
- "Tokelau Sommerzeit", "TKST"}},
+ "Tokelau Sommerzeit", "TKST",
+ "Tokelau Zeit", "TKT"}},
{"Pacific/Fiji", new String[] {"Fidschi Zeit", "FJT",
- "Fidschi Sommerzeit", "FJST"}},
+ "Fidschi Sommerzeit", "FJST",
+ "Fidschi Zeit", "FJT"}},
{"Pacific/Funafuti", new String[] {"Tuvalu Zeit", "TVT",
- "Tuvalu Sommerzeit", "TVST"}},
+ "Tuvalu Sommerzeit", "TVST",
+ "Tuvalu Zeit", "TVT"}},
{"Pacific/Galapagos", new String[] {"Galapagos Zeit", "GALT",
- "Galapagos Sommerzeit", "GALST"}},
+ "Galapagos Sommerzeit", "GALST",
+ "Galapagos Zeit", "GALT"}},
{"Pacific/Gambier", GAMBIER},
{"Pacific/Guadalcanal", SBT},
{"Pacific/Guam", ChST},
{"Pacific/Johnston", HST},
{"Pacific/Kiritimati", new String[] {"Line Inseln Zeit", "LINT",
- "Line Inseln Sommerzeit", "LINST"}},
+ "Line Inseln Sommerzeit", "LINST",
+ "Line Inseln Zeit", "LINT"}},
{"Pacific/Kosrae", new String[] {"Kosrae Zeit", "KOST",
- "Kosrae Sommerzeit", "KOSST"}},
+ "Kosrae Sommerzeit", "KOSST",
+ "Kosrae Zeit", "KOST"}},
{"Pacific/Kwajalein", MHT},
{"Pacific/Majuro", MHT},
{"Pacific/Marquesas", new String[] {"Marquesas Zeit", "MART",
- "Marquesas Sommerzeit", "MARST"}},
+ "Marquesas Sommerzeit", "MARST",
+ "Marquesas Zeit", "MART"}},
{"Pacific/Midway", SAMOA},
{"Pacific/Nauru", new String[] {"Nauru Zeit", "NRT",
- "Nauru Sommerzeit", "NRST"}},
+ "Nauru Sommerzeit", "NRST",
+ "Nauru Zeit", "NRT"}},
{"Pacific/Niue", new String[] {"Niue Zeit", "NUT",
- "Niue Sommerzeit", "NUST"}},
+ "Niue Sommerzeit", "NUST",
+ "Niue Zeit", "NUT"}},
{"Pacific/Norfolk", new String[] {"Norfolk Zeit", "NFT",
- "Norfolk Sommerzeit", "NFST"}},
+ "Norfolk Sommerzeit", "NFST",
+ "Norfolk Zeit", "NFT"}},
{"Pacific/Noumea", new String[] {"Neukaledonische Zeit", "NCT",
- "Neukaledonische Sommerzeit", "NCST"}},
+ "Neukaledonische Sommerzeit", "NCST",
+ "Neukaledonische Zeit", "NCT"}},
{"Pacific/Pago_Pago", SAMOA},
{"Pacific/Palau", new String[] {"Palau Zeit", "PWT",
- "Palau Sommerzeit", "PWST"}},
+ "Palau Sommerzeit", "PWST",
+ "Palau Zeit", "PWT"}},
{"Pacific/Pitcairn", PITCAIRN},
{"Pacific/Pohnpei", PONT},
{"Pacific/Ponape", PONT},
{"Pacific/Port_Moresby", new String[] {"Papua-Neuguinea Zeit", "PGT",
- "Papua-Neuguinea Sommerzeit", "PGST"}},
+ "Papua-Neuguinea Sommerzeit", "PGST",
+ "Papua-Neuguinea Zeit", "PGT"}},
{"Pacific/Rarotonga", new String[] {"Cook-Inseln Zeit", "CKT",
- "Cook-Inseln Sommerzeit", "CKHST"}},
+ "Cook-Inseln Sommerzeit", "CKHST",
+ "Cook-Inseln Zeit", "CKT"}},
{"Pacific/Saipan", ChST},
{"Pacific/Samoa", SAMOA},
{"Pacific/Tahiti", new String[] {"Tahiti Zeit", "TAHT",
- "Tahiti Sommerzeit", "TAHST"}},
+ "Tahiti Sommerzeit", "TAHST",
+ "Tahiti Zeit", "TAHT"}},
{"Pacific/Tarawa", new String[] {"Gilbert-Inseln Zeit", "GILT",
- "Gilbert-Inseln Sommerzeit", "GILST"}},
+ "Gilbert-Inseln Sommerzeit", "GILST",
+ "Gilbert-Inseln Zeit", "GILT"}},
{"Pacific/Tongatapu", new String[] {"Tonga Zeit", "TOT",
- "Tonga Sommerzeit", "TOST"}},
+ "Tonga Sommerzeit", "TOST",
+ "Tonga Zeit", "TOT"}},
{"Pacific/Truk", CHUT},
{"Pacific/Wake", new String[] {"Wake Zeit", "WAKT",
- "Wake Sommerzeit", "WAKST"}},
+ "Wake Sommerzeit", "WAKST",
+ "Wake Zeit", "WAKT"}},
{"Pacific/Wallis", new String[] {"Wallis u. Futuna Zeit", "WFT",
- "Wallis u. Futuna Sommerzeit", "WFST"}},
+ "Wallis u. Futuna Sommerzeit", "WFST",
+ "Wallis u. Futuna Zeit", "WFT"}},
{"Pacific/Yap", CHUT},
{"Poland", CET},
{"PRC", CTT},
--- a/jdk/src/share/classes/sun/util/resources/es/TimeZoneNames_es.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/util/resources/es/TimeZoneNames_es.java Wed Jul 05 19:27:58 2017 +0200
@@ -46,159 +46,235 @@
protected final Object[][] getContents() {
String ACT[] = new String[] {"Hora de Acre", "ACT",
- "Hora de verano de Acre", "ACST"};
+ "Hora de verano de Acre", "ACST",
+ "Hora de Acre", "ACT"};
String ADELAIDE[] = new String[] {"Hora est\u00E1ndar Central (Sur de Australia)", "CST",
- "Hora de verano Central (Sur de Australia)", "CST"};
+ "Hora de verano Central (Sur de Australia)", "CST",
+ "Hora Central (Australia del Sur)", "CT"};
String AGT[] = new String[] {"Hora de Argentina", "ART",
- "Hora de verano de Argentina", "ARST"};
+ "Hora de verano de Argentina", "ARST",
+ "Hora de Argentina", "ART"};
String AKST[] = new String[] {"Hora est\u00e1ndar de Alaska", "AKST",
- "Hora de verano de Alaska", "AKDT"};
+ "Hora de verano de Alaska", "AKDT",
+ "Hora de Alaska", "AKT"};
String AMT[] = new String[] {"Hora est\u00e1ndar de Amazonia", "AMT",
- "Hora de verano de Amazonia", "AMST"};
+ "Hora de verano de Amazonia", "AMST",
+ "Hora est\u00E1ndar de Amazonia", "AMT"};
String ARAST[] = new String[] {"Hora est\u00e1ndar de Arabia", "AST",
- "Hora de verano de Arabia", "ADT"};
+ "Hora de verano de Arabia", "ADT",
+ "Hora de Arabia", "AT"};
String ARMT[] = new String[] {"Hora de Armenia", "AMT",
- "Hora de verano de Armenia", "AMST"};
+ "Hora de verano de Armenia", "AMST",
+ "Hora de Armenia", "AMT"};
String AST[] = new String[] {"Hora est\u00e1ndar Atl\u00e1ntico", "AST",
- "Hora de verano Atl\u00e1ntico", "ADT"};
+ "Hora de verano Atl\u00e1ntico", "ADT",
+ "Hora del Atl\u00E1ntico", "AT"};
String BDT[] = new String[] {"Hora de Bangladesh", "BDT",
- "Hora de verano de Bangladesh", "BDST"};
+ "Hora de verano de Bangladesh", "BDST",
+ "Hora de Bangladesh", "BDT"};
String BRISBANE[] = new String[] {"Hora est\u00E1ndar del Este (Queensland)", "EST",
- "Hora est\u00E1ndar de verano del Este (Queensland)", "EST"};
+ "Hora est\u00E1ndar de verano del Este (Queensland)", "EST",
+ "Hora Oriental (Queensland)", "ET"};
String BROKEN_HILL[] = new String[] {"Hora est\u00E1ndar Central (Sur de Australia/Nueva Gales del Sur)", "CST",
- "Hora de verano Central (Sur de Australia/Nueva Gales del Sur)", "CST"};
+ "Hora de verano Central (Sur de Australia/Nueva Gales del Sur)", "CST",
+ "Hora Central (Australia del Sur/Nueva Gales del Sur)", "CT"};
String BRT[] = new String[] {"Hora de Brasil", "BRT",
- "Hora de verano de Brasil", "BRST"};
+ "Hora de verano de Brasil", "BRST",
+ "Hora de Brasil", "BRT"};
String BTT[] = new String[] {"Hora de But\u00e1n", "BTT",
- "Hora de verano de But\u00e1n", "BTST"};
+ "Hora de verano de But\u00e1n", "BTST",
+ "Hora de But\u00E1n", "BTT"};
String CAT[] = new String[] {"Hora de \u00c1frica Central", "CAT",
- "Hora de verano de \u00c1frica Central", "CAST"};
+ "Hora de verano de \u00c1frica Central", "CAST",
+ "Hora de \u00C1frica Central", "CAT"};
String CET[] = new String[] {"Hora de Europa Central", "CET",
- "Hora de verano de Europa Central", "CEST"};
+ "Hora de verano de Europa Central", "CEST",
+ "Hora de Europa Central", "CET"};
String CHAST[] = new String[] {"Hora est\u00e1ndar de Chatham", "CHAST",
- "Hora de verano de Chatham", "CHADT"};
- String CHUT[] = new String[] {"Chuuk Time", "CHUT",
- "Chuuk Summer Time", "CHUST"};
+ "Hora de verano de Chatham", "CHADT",
+ "Hora de Chatam", "CHAT"};
+ String CHUT[] = new String[] {"Hora de Chuuk", "CHUT",
+ "Hora de verano de Chuuk", "CHUST",
+ "Hora de Chuuk", "CHUT"};
String CIT[] = new String[] {"Hora de Indonesia Central", "WITA",
- "Hora de verano de Indonesia Central", "CIST"};
+ "Hora de verano de Indonesia Central", "CIST",
+ "Hora de Indonesia Central", "WITA"};
String CLT[] = new String[] {"Hora de Chile", "CLT",
- "Hora de verano de Chile", "CLST"};
+ "Hora de verano de Chile", "CLST",
+ "Hora de Chile", "CLT"};
String CST[] = new String[] {"Hora est\u00e1ndar Central", "CST",
- "Hora de verano Central", "CDT"};
+ "Hora de verano Central", "CDT",
+ "Hora Central", "CT"};
String CTT[] = new String[] {"Hora est\u00e1ndar de China", "CST",
- "Hora de verano de China", "CDT"};
+ "Hora de verano de China", "CDT",
+ "Hora de China", "CT"};
String CUBA[] = new String[] {"Hora est\u00e1ndar de Cuba", "CST",
- "Hora de verano de Cuba", "CDT"};
+ "Hora de verano de Cuba", "CDT",
+ "Hora de Cuba", "CT"};
String DARWIN[] = new String[] {"Hora est\u00E1ndar Central (territorio del Norte)", "CST",
- "Hora de verano Central (territorio del Norte)", "CST"};
+ "Hora de verano Central (territorio del Norte)", "CST",
+ "Hora Central (Territorio Septentrional)", "CT"};
String DUBLIN[] = new String[] {"Hora del Meridiano de Greenwich", "GMT",
- "Hora de verano de Irlanda", "IST"};
+ "Hora de verano de Irlanda", "IST",
+ "Hora de Irlanda", "IT"};
String EAT[] = new String[] {"Hora de \u00c1frica Oriental", "EAT",
- "Hora de verano de \u00c1frica Oriental", "EAST"};
+ "Hora de verano de \u00c1frica Oriental", "EAST",
+ "Hora de \u00C1frica Oriental", "EAT"};
String EASTER[] = new String[] {"Hora de la Isla de Pascua", "EAST",
- "Hora de verano de la Isla de Pascua", "EASST"};
+ "Hora de verano de la Isla de Pascua", "EASST",
+ "Hora de la Isla de Pascua", "EAST"};
String EET[] = new String[] {"Hora de Europa Oriental", "EET",
- "Hora de verano de Europa Oriental", "EEST"};
+ "Hora de verano de Europa Oriental", "EEST",
+ "Hora de Europa Oriental", "EET"};
String EGT[] = new String[] {"Hora de Groenlandia Oriental", "EGT",
- "Hora de verano de Groenlandia Oriental", "EGST"};
+ "Hora de verano de Groenlandia Oriental", "EGST",
+ "Hora de Groenlandia Oriental", "EGT"};
String EST[] = new String[] {"Hora est\u00e1ndar Oriental", "EST",
- "Hora de verano Oriental", "EDT"};
+ "Hora de verano Oriental", "EDT",
+ "Hora Oriental", "ET"};
String EST_NSW[] = new String[] {"Hora est\u00E1ndar Oriental (Nueva Gales del Sur)", "EST",
- "Hora de verano Oriental (Nueva Gales del Sur)", "EST"};
+ "Hora de verano Oriental (Nueva Gales del Sur)", "EST",
+ "Hora Oriental (Nueva Gales del Sur)", "ET"};
String FET[] = new String[] {"Hora de Europa m\u00E1s Oriental", "FET",
- "Hora de verano de Europa m\u00E1s Oriental", "FEST"};
+ "Hora de verano de Europa m\u00E1s Oriental", "FEST",
+ "Hora de Europa m\u00E1s Oriental", "FET"};
String GHMT[] = new String[] {"Hora central de Ghana", "GMT",
- "Hora de verano de Ghana", "GHST"};
+ "Hora de verano de Ghana", "GHST",
+ "Hora central de Ghana", "GMT"};
String GAMBIER[] = new String[] {"Hora de Gambier", "GAMT",
- "Hora de verano de Gambier", "GAMST"};
+ "Hora de verano de Gambier", "GAMST",
+ "Hora de Gambier", "GAMT"};
String GMT[] = new String[] {"Hora del Meridiano de Greenwich", "GMT",
+ "Hora del Meridiano de Greenwich", "GMT",
"Hora del Meridiano de Greenwich", "GMT"};
String GMTBST[] = new String[] {"Hora del Meridiano de Greenwich", "GMT",
- "Hora de verano de Gran Breta\u00f1a", "BST"};
+ "Hora de verano de Gran Breta\u00f1a", "BST",
+ "Hora de Gran Breta\u00F1a", "BT"};
String GST[] = new String[] {"Hora est\u00e1ndar del Golfo", "GST",
- "Hora de verano del Golfo", "GDT"};
+ "Hora de verano del Golfo", "GDT",
+ "Hora del Golfo", "GT"};
String HAST[] = new String[] {"Hora est\u00e1ndar de Hawaii-Aleutianas", "HAST",
- "Hora de verano de Hawaii-Aleutianas", "HADT"};
+ "Hora de verano de Hawaii-Aleutianas", "HADT",
+ "Hora de Hawaii-Aleutian", "HAT"};
String HKT[] = new String[] {"Hora de Hong Kong", "HKT",
- "Hora de verano de Hong Kong", "HKST"};
+ "Hora de verano de Hong Kong", "HKST",
+ "Hora de Hong Kong", "HKT"};
String HST[] = new String[] {"Hora est\u00e1ndar de Hawaii", "HST",
- "Hora de verano de Hawaii", "HDT"};
+ "Hora de verano de Hawaii", "HDT",
+ "Hora de Hawaii", "HT"};
String ICT[] = new String[] {"Hora de Indochina", "ICT",
- "Hora de verano de Indochina", "ICST"};
+ "Hora de verano de Indochina", "ICST",
+ "Hora de Indochina", "ICT"};
String IRT[] = new String[] {"Hora est\u00e1ndar de Ir\u00e1n", "IRST",
- "Hora de verano de Ir\u00e1n", "IRDT"};
+ "Hora de verano de Ir\u00e1n", "IRDT",
+ "Hora de Ir\u00E1n", "IRT"};
String ISRAEL[] = new String[] {"Hora est\u00e1ndar de Israel", "IST",
- "Hora de verano de Israel", "IDT"};
+ "Hora de verano de Israel", "IDT",
+ "Hora de Israel", "IT"};
String IST[] = new String[] {"Hora est\u00e1ndar de India", "IST",
- "Hora de verano de India", "IDT"};
+ "Hora de verano de India", "IDT",
+ "Hora de India", "IT"};
String JST[] = new String[] {"Hora est\u00e1ndar de Jap\u00f3n", "JST",
- "Hora de verano de Jap\u00f3n", "JDT"};
+ "Hora de verano de Jap\u00f3n", "JDT",
+ "Hora de Jap\u00F3n", "JT"};
String KST[] = new String[] {"Hora est\u00e1ndar de Corea", "KST",
- "Hora de verano de Corea", "KDT"};
+ "Hora de verano de Corea", "KDT",
+ "Hora de Corea", "KT"};
String LORD_HOWE[] = new String[] {"Hora est\u00e1ndar de Lord Howe", "LHST",
- "Hora de verano de Lord Howe", "LHST"};
+ "Hora de verano de Lord Howe", "LHST",
+ "Hora de Lord Howe", "LHT"};
String MHT[] = new String[] {"Hora de las Islas Marshall", "MHT",
- "Hora de verano de las Islas Marshall", "MHST"};
+ "Hora de verano de las Islas Marshall", "MHST",
+ "Hora de Islas Marshall", "MHT"};
String MSK[] = new String[] {"Hora est\u00e1ndar de Mosc\u00fa", "MSK",
- "Hora de verano de Mosc\u00fa", "MSD"};
+ "Hora de verano de Mosc\u00fa", "MSD",
+ "Hora de Mosc\u00FA", "MT"};
String MST[] = new String[] {"Hora est\u00e1ndar de las Rocosas", "MST",
- "Hora de verano de las Rocosas", "MDT"};
+ "Hora de verano de las Rocosas", "MDT",
+ "Hora de las Monta\u00F1as Rocosas", "MT"};
String MYT[] = new String[] {"Hora de Malasia", "MYT",
- "Hora de verano de Malasia", "MYST"};
+ "Hora de verano de Malasia", "MYST",
+ "Hora de Malasia", "MYT"};
String NORONHA[] = new String[] {"Hora de Fernando de Noronha", "FNT",
- "Hora de verano de Fernando de Noronha", "FNST"};
+ "Hora de verano de Fernando de Noronha", "FNST",
+ "Hora de Fernando de Noronha", "FNT"};
String NOVT[] = new String[] {"Hora de Novosibirsk", "NOVT",
- "Hora de verano de Novosibirsk", "NOVST"};
+ "Hora de verano de Novosibirsk", "NOVST",
+ "Hora de Novosibirsk", "NOVT"};
String NPT[] = new String[] {"Hora de Nepal", "NPT",
- "Hora de verano de Nepal", "NPST"};
+ "Hora de verano de Nepal", "NPST",
+ "Hora de Nepal", "NPT"};
String NST[] = new String[] {"Hora est\u00e1ndar de Terranova", "NST",
- "Hora de verano de Terranova", "NDT"};
+ "Hora de verano de Terranova", "NDT",
+ "Hora de Terranova", "NT"};
String NZST[] = new String[] {"Hora est\u00e1ndar de Nueva Zelanda", "NZST",
- "Hora de verano de Nueva Zelanda", "NZDT"};
+ "Hora de verano de Nueva Zelanda", "NZDT",
+ "Hora de Nueva Zelanda", "NZT"};
String PITCAIRN[] = new String[] {"Hora est\u00e1ndar de Pitcairn", "PST",
- "Hora de verano de Pitcairn", "PDT"};
+ "Hora de verano de Pitcairn", "PDT",
+ "Hora de Islas Pitcairn", "PT"};
String PKT[] = new String[] {"Hora de Pakist\u00e1n", "PKT",
- "Hora de verano de Pakist\u00e1n", "PKST"};
- String PONT[] = new String[] {"Pohnpei Time", "PONT",
- "Pohnpei Summer Time", "PONST"};
+ "Hora de verano de Pakist\u00e1n", "PKST",
+ "Hora de Pakist\u00E1n", "PKT"};
+ String PONT[] = new String[] {"Hora de Pohnpei", "PONT",
+ "Hora de verano de Pohnpei", "PONST",
+ "Hora de Pohnpei", "PONT"};
String PST[] = new String[] {"Hora est\u00e1ndar del Pac\u00edfico", "PST",
- "Hora de verano del Pac\u00edfico", "PDT"};
+ "Hora de verano del Pac\u00edfico", "PDT",
+ "Hora del Pac\u00EDfico", "PT"};
String SAST[] = new String[] {"Hora est\u00e1ndar de Sud\u00e1frica", "SAST",
- "Hora de verano de Sud\u00e1frica", "SAST"};
+ "Hora de verano de Sud\u00e1frica", "SAST",
+ "Hora de Sud\u00E1frica", "SAT"};
String SBT[] = new String[] {"Hora de las Islas Solomon", "SBT",
- "Hora de verano de las Islas Solomon", "SBST"};
+ "Hora de verano de las Islas Solomon", "SBST",
+ "Hora de las Islas Solomon", "SBT"};
String SGT[] = new String[] {"Hora de Singapur", "SGT",
- "Hora de verano de Singapur", "SGST"};
+ "Hora de verano de Singapur", "SGST",
+ "Hora de Singapur", "SGT"};
String SLST[] = new String[] {"Hora del Meridiano de Greenwich", "GMT",
- "Hora de verano de Sierra Leona", "SLST"};
+ "Hora de verano de Sierra Leona", "SLST",
+ "Horario de Sierra Leona", "SLT"};
String TASMANIA[] = new String[] {"Hora est\u00E1ndar del Este (Tasmania)", "EST",
- "Hora de verano del Este (Tasmania)", "EST"};
+ "Hora de verano del Este (Tasmania)", "EST",
+ "Hora Oriental (Tasmania)", "ET"};
String TMT[] = new String[] {"Hora de Turkmenist\u00e1n", "TMT",
- "Hora de verano de Turkmenist\u00e1n", "TMST"};
+ "Hora de verano de Turkmenist\u00e1n", "TMST",
+ "Hora de Turkmenist\u00E1n", "TMT"};
String ULAT[]= new String[] {"Hora de Ulan Bator", "ULAT",
- "Hora de verano de Ulan Bator", "ULAST"};
+ "Hora de verano de Ulan Bator", "ULAST",
+ "Hora de Ulan Bator", "ULAT"};
String WART[] = new String[] {"Hora de Argentina Occidental", "WART",
"Hora de verano de Argentina Occidental", "WARST"};
String WAT[] = new String[] {"Hora de \u00c1frica Occidental", "WAT",
- "Hora de verano de \u00c1frica Occidental", "WAST"};
+ "Hora de verano de \u00c1frica Occidental", "WAST",
+ "Hora de \u00C1frica Occidental", "WAT"};
String WET[] = new String[] {"Hora de Europa Occidental", "WET",
- "Hora de verano de Europa Occidental", "WEST"};
+ "Hora de verano de Europa Occidental", "WEST",
+ "Hora de Europa Occidental", "WET"};
String WIT[] = new String[] {"Hora de Indonesia Occidental", "WIB",
- "Indonesia Hora de verano de Indonesia Occidental", "WIST"};
+ "Indonesia Hora de verano de Indonesia Occidental", "WIST",
+ "Hora de Indonesia Occidental", "WIB"};
String WST_AUS[] = new String[] {"Hora est\u00E1ndar Occidental (Australia)", "WST",
- "Hora de verano Occidental (Australia)", "WST"};
+ "Hora de verano Occidental (Australia)", "WST",
+ "Hora Occidental (Australia)", "WT"};
String SAMOA[] = new String[] {"Hora est\u00e1ndar de Samoa", "SST",
- "Hora de verano de Samoa", "SDT"};
+ "Hora de verano de Samoa", "SDT",
+ "Hora de Samoa", "ST"};
String WST_SAMOA[] = new String[] {"Hora de Samoa Occidental", "WST",
- "Hora de verano de Samoa Occidental", "WSDT"};
+ "Hora de verano de Samoa Occidental", "WSDT",
+ "Hora de Samoa Occidental", "WST"};
String ChST[] = new String[] {"Hora est\u00e1ndar de Chamorro", "ChST",
- "Hora de verano de Chamorro", "ChDT"};
+ "Hora de verano de Chamorro", "ChDT",
+ "Hora de Chamorro", "ChT"};
String VICTORIA[] = new String[] {"Hora est\u00E1ndar del Este (Victoria)", "EST",
- "Hora de verano del Este (Victoria)", "EST"};
+ "Hora de verano del Este (Victoria)", "EST",
+ "Hora Oriental (Victoria)", "ET"};
String UTC[] = new String[] {"Hora Universal Coordinada", "UTC",
+ "Hora Universal Coordinada", "UTC",
"Hora Universal Coordinada", "UTC"};
String UZT[] = new String[] {"Hora de Uzbekist\u00e1n", "UZT",
- "Hora de verano de Uzbekist\u00e1n", "UZST"};
+ "Hora de verano de Uzbekist\u00e1n", "UZST",
+ "Hora de Uzbekist\u00E1n", "UZT"};
return new Object[][] {
{"America/Los_Angeles", PST},
@@ -311,7 +387,8 @@
{"America/Argentina/Ushuaia", AGT},
{"America/Aruba", AST},
{"America/Asuncion", new String[] {"Hora de Paraguay", "PYT",
- "Hora de verano de Paraguay", "PYST"}},
+ "Hora de verano de Paraguay", "PYST",
+ "Hora de Paraguay", "PYT"}},
{"America/Atikokan", EST},
{"America/Atka", HAST},
{"America/Bahia", BRT},
@@ -322,17 +399,20 @@
{"America/Blanc-Sablon", AST},
{"America/Boa_Vista", AMT},
{"America/Bogota", new String[] {"Hora de Colombia", "COT",
- "Hora de verano de Colombia", "COST"}},
+ "Hora de verano de Colombia", "COST",
+ "Hora de Colombia", "COT"}},
{"America/Boise", MST},
{"America/Buenos_Aires", AGT},
{"America/Cambridge_Bay", MST},
{"America/Campo_Grande", AMT},
{"America/Cancun", CST},
{"America/Caracas", new String[] {"Hora de Venezuela", "VET",
- "Hora de verano de Venezuela", "VEST"}},
+ "Hora de verano de Venezuela", "VEST",
+ "Hora de Venezuela", "VET"}},
{"America/Catamarca", AGT},
{"America/Cayenne", new String[] {"Hora de la Guayana Francesa", "GFT",
- "Hora de verano de la Guayana Francesa", "GFST"}},
+ "Hora de verano de la Guayana Francesa", "GFST",
+ "Hora de la Guayana Francesa", "GFT"}},
{"America/Cayman", EST},
{"America/Chihuahua", MST},
{"America/Creston", MST},
@@ -354,16 +434,19 @@
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"Hora de Groenlandia Occidental", "WGT",
- "Hora de verano de Groenlandia Occidental", "WGST"}},
+ "Hora de verano de Groenlandia Occidental", "WGST",
+ "Hora de Groenlandia Occidental", "WGT"}},
{"America/Goose_Bay", AST},
{"America/Grand_Turk", EST},
{"America/Grenada", AST},
{"America/Guadeloupe", AST},
{"America/Guatemala", CST},
{"America/Guayaquil", new String[] {"Hora de Ecuador", "ECT",
- "Hora de verano de Ecuador", "ECST"}},
+ "Hora de verano de Ecuador", "ECST",
+ "Hora de Ecuador", "ECT"}},
{"America/Guyana", new String[] {"Hora de Guyana", "GYT",
- "Hora de verano de Guyana", "GYST"}},
+ "Hora de verano de Guyana", "GYST",
+ "Hora de Guyana", "GYT"}},
{"America/Havana", CUBA},
{"America/Hermosillo", MST},
{"America/Indiana/Indianapolis", EST},
@@ -384,9 +467,11 @@
{"America/Knox_IN", CST},
{"America/Kralendijk", AST},
{"America/La_Paz", new String[] {"Hora de Bolivia", "BOT",
- "Hora de verano de Bolivia", "BOST"}},
+ "Hora de verano de Bolivia", "BOST",
+ "Hora de Bolivia", "BOT"}},
{"America/Lima", new String[] {"Hora de Per\u00fa", "PET",
- "Hora de verano de Per\u00fa", "PEST"}},
+ "Hora de verano de Per\u00fa", "PEST",
+ "Hora de Per\u00FA", "PET"}},
{"America/Louisville", EST},
{"America/Lower_Princes", AST},
{"America/Maceio", BRT},
@@ -399,14 +484,17 @@
{"America/Mendoza", AGT},
{"America/Menominee", CST},
{"America/Merida", CST},
- {"America/Metlakatla", new String[] {"Metlakatla Standard Time", "MeST",
- "Metlakatla Daylight Time", "MeDT"}},
+ {"America/Metlakatla", new String[] {"Hora de Metlakatla", "MeST",
+ "Hora de verano de Metlakatla", "MeDT",
+ "Metlakatla Time", "MeT"}},
{"America/Mexico_City", CST},
{"America/Miquelon", new String[] {"Hora est\u00e1ndar de Pierre & Miquelon", "PMST",
- "Hora de verano de Pierre & Miquelon", "PMDT"}},
+ "Hora de verano de Pierre & Miquelon", "PMDT",
+ "Hora de San Pedro y Miquel\u00F3n", "PMT"}},
{"America/Moncton", AST},
{"America/Montevideo", new String[] {"Hora de Uruguay", "UYT",
- "Hora de verano de Uruguay", "UYST"}},
+ "Hora de verano de Uruguay", "UYST",
+ "Hora de Uruguay", "UYT"}},
{"America/Monterrey", CST},
{"America/Montreal", EST},
{"America/Montserrat", AST},
@@ -421,7 +509,8 @@
{"America/Panama", EST},
{"America/Pangnirtung", EST},
{"America/Paramaribo", new String[] {"Hora de Surinam", "SRT",
- "Hora de verano de Surinam", "SRST"}},
+ "Hora de verano de Surinam", "SRST",
+ "Hora de Surinam", "SRT"}},
{"America/Port-au-Prince", EST},
{"America/Port_of_Spain", AST},
{"America/Porto_Acre", ACT},
@@ -461,115 +550,146 @@
{"America/Yellowknife", MST},
{"Antarctica/Casey", WST_AUS},
{"Antarctica/Davis", new String[] {"Hora de Davis", "DAVT",
- "Hora de verano de Davis", "DAVST"}},
+ "Hora de verano de Davis", "DAVST",
+ "Hora de Davis", "DAVT"}},
{"Antarctica/DumontDUrville", new String[] {"Hora de Dumont-d'Urville", "DDUT",
- "Hora de verano de Dumont-d'Urville", "DDUST"}},
- {"Antarctica/Macquarie", new String[] {"Macquarie Island Time", "MIST",
- "Macquarie Island Summer Time", "MIST"}},
+ "Hora de verano de Dumont-d'Urville", "DDUST",
+ "Hora de Dumont-d'Urville", "DDUT"}},
+ {"Antarctica/Macquarie", new String[] {"Hora de Isla Macquarie", "MIST",
+ "Hora de verano de Isla Macquarie", "MIST",
+ "Hora de Isla Macquarie", "MIST"}},
{"Antarctica/Mawson", new String[] {"Hora de Mawson", "MAWT",
- "Hora de verano de Mawson", "MAWST"}},
+ "Hora de verano de Mawson", "MAWST",
+ "Hora de Mawson", "MAWT"}},
{"Antarctica/McMurdo", NZST},
{"Antarctica/Palmer", CLT},
{"Antarctica/Rothera", new String[] {"Hora de Rothera", "ROTT",
- "Hora de verano de Rothera", "ROTST"}},
+ "Hora de verano de Rothera", "ROTST",
+ "Hora de Rothera", "ROTT"}},
{"Antarctica/South_Pole", NZST},
{"Antarctica/Syowa", new String[] {"Hora de Syowa", "SYOT",
- "Hora de verano de Syowa", "SYOST"}},
+ "Hora de verano de Syowa", "SYOST",
+ "Hora de Syowa", "SYOT"}},
{"Antarctica/Vostok", new String[] {"Hora de Vostok", "VOST",
- "Hora de verano de Vostok", "VOSST"}},
+ "Hora de verano de Vostok", "VOSST",
+ "Hora de Vostok", "VOST"}},
{"Arctic/Longyearbyen", CET},
{"Asia/Aden", ARAST},
{"Asia/Almaty", new String[] {"Hora de Alma-Ata", "ALMT",
- "Hora de verano de Alma-Ata", "ALMST"}},
+ "Hora de verano de Alma-Ata", "ALMST",
+ "Hora de Alma-Ata", "ALMT"}},
{"Asia/Amman", ARAST},
{"Asia/Anadyr", new String[] {"Hora de Anadyr", "ANAT",
- "Hora de verano de Anadyr", "ANAST"}},
+ "Hora de verano de Anadyr", "ANAST",
+ "Hora de Anadyr", "ANAT"}},
{"Asia/Aqtau", new String[] {"Hora de Aqtau", "AQTT",
- "Hora de verano de Aqtau", "AQTST"}},
+ "Hora de verano de Aqtau", "AQTST",
+ "Hora de Aqtau", "AQTT"}},
{"Asia/Aqtobe", new String[] {"Hora de Aqtobe", "AQTT",
- "Hora de verano de Aqtobe", "AQTST"}},
+ "Hora de verano de Aqtobe", "AQTST",
+ "Hora de Aqtobe", "AQTT"}},
{"Asia/Ashgabat", TMT},
{"Asia/Ashkhabad", TMT},
{"Asia/Baghdad", ARAST},
{"Asia/Bahrain", ARAST},
{"Asia/Baku", new String[] {"Hora de Azerbaiy\u00e1n", "AZT",
- "Hora de verano de Azerbaiy\u00e1n", "AZST"}},
+ "Hora de verano de Azerbaiy\u00e1n", "AZST",
+ "Hora de Azerbaiy\u00E1n", "AZT"}},
{"Asia/Bangkok", ICT},
{"Asia/Beirut", EET},
{"Asia/Bishkek", new String[] {"Hora de Kirguizist\u00e1n", "KGT",
- "Hora de verano de Kirguizist\u00e1n", "KGST"}},
+ "Hora de verano de Kirguizist\u00e1n", "KGST",
+ "Hora de Kirguizist\u00E1n", "KGT"}},
{"Asia/Brunei", new String[] {"Hora de Brunei", "BNT",
- "Hora de verano de Brunei", "BNST"}},
+ "Hora de verano de Brunei", "BNST",
+ "Hora de Brunei", "BNT"}},
{"Asia/Calcutta", IST},
{"Asia/Choibalsan", new String[] {"Hora de Choibalsan", "CHOT",
- "Hora de verano de Choibalsan", "CHOST"}},
+ "Hora de verano de Choibalsan", "CHOST",
+ "Hora de Choibalsan", "CHOT"}},
{"Asia/Chongqing", CTT},
{"Asia/Chungking", CTT},
{"Asia/Colombo", IST},
{"Asia/Dacca", BDT},
{"Asia/Dhaka", BDT},
{"Asia/Dili", new String[] {"Hora de Timor Leste", "TLT",
- "Hora de verano de Timor Leste", "TLST"}},
+ "Hora de verano de Timor Leste", "TLST",
+ "Hora de Timor Leste", "TLT"}},
{"Asia/Damascus", EET},
{"Asia/Dubai", GST},
{"Asia/Dushanbe", new String[] {"Hora de Tajikist\u00e1n", "TJT",
- "Hora de verano de Tajikist\u00e1n", "TJST"}},
+ "Hora de verano de Tajikist\u00e1n", "TJST",
+ "Hora de Tajikist\u00E1n", "TJT"}},
{"Asia/Gaza", EET},
{"Asia/Harbin", CTT},
{"Asia/Hebron", EET},
{"Asia/Ho_Chi_Minh", ICT},
{"Asia/Hong_Kong", HKT},
{"Asia/Hovd", new String[] {"Hora de Hovd", "HOVT",
- "Hora de verano de Hovd", "HOVST"}},
+ "Hora de verano de Hovd", "HOVST",
+ "Hora de Hovd", "HOVT"}},
{"Asia/Irkutsk", new String[] {"Hora de Irkutsk", "IRKT",
- "Hora de verano de Irkutsk", "IRKST"}},
+ "Hora de verano de Irkutsk", "IRKST",
+ "Hora de Irkutsk", "IRKT"}},
{"Asia/Istanbul", EET},
{"Asia/Jakarta", WIT},
{"Asia/Jayapura", new String[] {"Hora de Indonesia Oriental", "WIT",
- "Hora de verano de Indonesia Oriental", "EIST"}},
+ "Hora de verano de Indonesia Oriental", "EIST",
+ "Hora de Indonesia Oriental", "WIT"}},
{"Asia/Kabul", new String[] {"Hora de Afganist\u00e1n", "AFT",
- "Hora de verano de Afganist\u00e1n", "AFST"}},
+ "Hora de verano de Afganist\u00e1n", "AFST",
+ "Hora de Afganist\u00E1n", "AFT"}},
{"Asia/Kamchatka", new String[] {"Hora de Petropavlovsk-Kamchatski", "PETT",
- "Hora de verano de Petropavlovsk-Kamchatski", "PETST"}},
+ "Hora de verano de Petropavlovsk-Kamchatski", "PETST",
+ "Hora de Petropavlovsk-Kamchatski", "PETT"}},
{"Asia/Karachi", PKT},
{"Asia/Kashgar", CTT},
{"Asia/Kathmandu", NPT},
{"Asia/Katmandu", NPT},
{"Asia/Khandyga", new String[] {"Hora de Khandyga", "YAKT",
- "Hora de verano de Khandyga", "YAKST"}},
+ "Hora de verano de Khandyga", "YAKST",
+ "Hora de Khandyga", "YAKT"}},
{"Asia/Kolkata", IST},
{"Asia/Krasnoyarsk", new String[] {"Hora de Krasnoyarsk", "KRAT",
- "Hora de verano de Krasnoyarsk", "KRAST"}},
+ "Hora de verano de Krasnoyarsk", "KRAST",
+ "Hora de Krasnoyarsk", "KRAT"}},
{"Asia/Kuala_Lumpur", MYT},
{"Asia/Kuching", MYT},
{"Asia/Kuwait", ARAST},
{"Asia/Macao", CTT},
{"Asia/Macau", CTT},
{"Asia/Magadan", new String[] {"Hora de Magad\u00e1n", "MAGT",
- "Hora de verano de Magad\u00e1n", "MAGST"}},
+ "Hora de verano de Magad\u00e1n", "MAGST",
+ "Hora de Magad\u00E1n", "MAGT"}},
{"Asia/Makassar", CIT},
{"Asia/Manila", new String[] {"Hora de Filipinas", "PHT",
- "Hora de verano de Filipinas", "PHST"}},
+ "Hora de verano de Filipinas", "PHST",
+ "Hora de Filipinas", "PHT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", NOVT},
{"Asia/Novosibirsk", NOVT},
{"Asia/Oral", new String[] {"Hora de Uralsk", "ORAT",
- "Hora de verano de Uralsk", "ORAST"}},
+ "Hora de verano de Uralsk", "ORAST",
+ "Hora de Uralsk", "ORAT"}},
{"Asia/Omsk", new String[] {"Hora de Omsk", "OMST",
- "Hora de verano de Omsk", "OMSST"}},
+ "Hora de verano de Omsk", "OMSST",
+ "Hora de Omsk", "OMST"}},
{"Asia/Phnom_Penh", ICT},
{"Asia/Pontianak", WIT},
{"Asia/Pyongyang", KST},
{"Asia/Qatar", ARAST},
{"Asia/Qyzylorda", new String[] {"Hora de Qyzylorda", "QYZT",
- "Hora de verano de Qyzylorda", "QYZST"}},
+ "Hora de verano de Qyzylorda", "QYZST",
+ "Hora de Qyzylorda", "QYZT"}},
{"Asia/Rangoon", new String[] {"Hora de Myanmar", "MMT",
- "Hora de verano de Myanmar", "MMST"}},
+ "Hora de verano de Myanmar", "MMST",
+ "Hora de Myanmar", "MMT"}},
{"Asia/Riyadh", ARAST},
{"Asia/Saigon", ICT},
{"Asia/Sakhalin", new String[] {"Hora de Sajalin", "SAKT",
- "Hora de verano de Sajalin", "SAKST"}},
+ "Hora de verano de Sajalin", "SAKST",
+ "Hora de Sajalin", "SAKT"}},
{"Asia/Samarkand", UZT},
{"Asia/Seoul", KST},
{"Asia/Singapore", SGT},
@@ -577,7 +697,8 @@
{"Asia/Tel_Aviv", ISRAEL},
{"Asia/Tashkent", UZT},
{"Asia/Tbilisi", new String[] {"Hora de Georgia", "GET",
- "Hora de verano de Georgia", "GEST"}},
+ "Hora de verano de Georgia", "GEST",
+ "Hora de Georgia", "GET"}},
{"Asia/Tehran", IRT},
{"Asia/Thimbu", BTT},
{"Asia/Thimphu", BTT},
@@ -586,31 +707,39 @@
{"Asia/Ulan_Bator", ULAT},
{"Asia/Urumqi", CTT},
{"Asia/Ust-Nera", new String[] {"Hora de Ust-Nera", "VLAT",
- "Hora de verano de Ust-Nera", "VLAST"}},
+ "Hora de verano de Ust-Nera", "VLAST",
+ "Hora de Ust-Nera", "VLAT"}},
{"Asia/Vientiane", ICT},
{"Asia/Vladivostok", new String[] {"Hora de Vladivostok", "VLAT",
- "Hora de verano de Vladivostok", "VLAST"}},
+ "Hora de verano de Vladivostok", "VLAST",
+ "Hora de Vladivostok", "VLAT"}},
{"Asia/Yakutsk", new String[] {"Hora de Yakutsk", "YAKT",
- "Hora de verano de Yakutsk", "YAKST"}},
+ "Hora de verano de Yakutsk", "YAKST",
+ "Hora de Yakutsk", "YAKT"}},
{"Asia/Yekaterinburg", new String[] {"Hora de Ekaterinburgo", "YEKT",
- "Hora de verano de Ekaterinburgo", "YEKST"}},
+ "Hora de verano de Ekaterinburgo", "YEKST",
+ "Hora de Ekaterinburgo", "YEKT"}},
{"Asia/Yerevan", ARMT},
{"Atlantic/Azores", new String[] {"Hora de Azores", "AZOT",
- "Hora de verano de Azores", "AZOST"}},
+ "Hora de verano de Azores", "AZOST",
+ "Hora de Azores", "AZOT"}},
{"Atlantic/Bermuda", AST},
{"Atlantic/Canary", WET},
{"Atlantic/Cape_Verde", new String[] {"Hora de Cabo Verde", "CVT",
- "Hora de verano de Cabo Verde", "CVST"}},
+ "Hora de verano de Cabo Verde", "CVST",
+ "Hora de Cabo Verde", "CVT"}},
{"Atlantic/Faeroe", WET},
{"Atlantic/Faroe", WET},
{"Atlantic/Jan_Mayen", CET},
{"Atlantic/Madeira", WET},
{"Atlantic/Reykjavik", GMT},
{"Atlantic/South_Georgia", new String[] {"Hora est\u00e1ndar de Georgia del Sur", "GST",
- "Hora de verano de Georgia del Sur", "GDT"}},
+ "Hora de verano de Georgia del Sur", "GDT",
+ "Hora de Georgia del Sur", "GT"}},
{"Atlantic/St_Helena", GMT},
{"Atlantic/Stanley", new String[] {"Hora de las islas Malvinas", "FKT",
- "Hora de verano de las islas Malvinas", "FKST"}},
+ "Hora de verano de las islas Malvinas", "FKST",
+ "Hora de las islas Malvinas", "FKT"}},
{"Australia/ACT", EST_NSW},
{"Australia/Adelaide", ADELAIDE},
{"Australia/Brisbane", BRISBANE},
@@ -619,7 +748,8 @@
{"Australia/Currie", EST_NSW},
{"Australia/Darwin", DARWIN},
{"Australia/Eucla", new String[] {"Hora est\u00E1ndar de Australia Central y Occidental", "CWST",
- "Hora est\u00E1ndar de verano de Australia Central y Occidental", "CWST"}},
+ "Hora est\u00E1ndar de verano de Australia Central y Occidental", "CWST",
+ "Hora de Australia Central y Occidental", "CWT"}},
{"Australia/Hobart", TASMANIA},
{"Australia/LHI", LORD_HOWE},
{"Australia/Lindeman", BRISBANE},
@@ -704,7 +834,8 @@
{"Europe/Riga", EET},
{"Europe/Rome", CET},
{"Europe/Samara", new String[] {"Hora de Samara", "SAMT",
- "Hora de verano de Samara", "SAMST"}},
+ "Hora de verano de Samara", "SAMST",
+ "Hora de Samara", "SAMT"}},
{"Europe/San_Marino", CET},
{"Europe/Sarajevo", CET},
{"Europe/Simferopol", EET},
@@ -720,7 +851,8 @@
{"Europe/Vienna", CET},
{"Europe/Vilnius", EET},
{"Europe/Volgograd", new String[] {"Hora de Volgogrado", "VOLT",
- "Hora de verano de Volgogrado", "VOLST"}},
+ "Hora de verano de Volgogrado", "VOLST",
+ "Hora de Volgogrado", "VOLT"}},
{"Europe/Warsaw", CET},
{"Europe/Zagreb", CET},
{"Europe/Zaporozhye", EET},
@@ -734,30 +866,39 @@
{"IST", IST},
{"Indian/Antananarivo", EAT},
{"Indian/Chagos", new String[] {"Hora del Territorio del Oc\u00e9ano \u00cdndico", "IOT",
- "Hora de verano del Territorio del Oc\u00e9ano \u00cdndico", "IOST"}},
+ "Hora de verano del Territorio del Oc\u00e9ano \u00cdndico", "IOST",
+ "Hora del Territorio del Oc\u00E9ano \u00CDndico", "IOT"}},
{"Indian/Christmas", new String[] {"Hora de la isla de Christmas", "CXT",
- "Hora de verano de la isla de Christmas", "CXST"}},
+ "Hora de verano de la isla de Christmas", "CXST",
+ "Hora de la isla de Christmas", "CIT"}},
{"Indian/Cocos", new String[] {"Hora de las islas Cocos", "CCT",
- "Hora de verano de las islas Cocos", "CCST"}},
+ "Hora de verano de las islas Cocos", "CCST",
+ "Hora de las islas Cocos", "CCT"}},
{"Indian/Comoro", EAT},
{"Indian/Kerguelen", new String[] {"Hora de los Territorios Franceses del Sur y de la Ant\u00e1rtida", "TFT",
- "Hora de verano de los Territorios Franceses del Sur y de la Ant\u00e1rtida", "TFST"}},
+ "Hora de verano de los Territorios Franceses del Sur y de la Ant\u00e1rtida", "TFST",
+ "Hora de los Territorios Franceses del Sur y de la Ant\u00E1rtida", "TFT"}},
{"Indian/Mahe", new String[] {"Hora de Seychelles", "SCT",
- "Hora de verano de Seychelles", "SCST"}},
+ "Hora de verano de Seychelles", "SCST",
+ "Hora de Seychelles", "SCT"}},
{"Indian/Maldives", new String[] {"Hora de Maldivas", "MVT",
- "Hora de verano de Maldivas", "MVST"}},
+ "Hora de verano de Maldivas", "MVST",
+ "Hora de Maldivas", "MVT"}},
{"Indian/Mauritius", new String[] {"Hora de Mauricio", "MUT",
- "Hora de verano de Mauricio", "MUST"}},
+ "Hora de verano de Mauricio", "MUST",
+ "Hora de Mauricio", "MUT"}},
{"Indian/Mayotte", EAT},
{"Indian/Reunion", new String[] {"Hora de Reuni\u00f3n", "RET",
- "Hora de verano de Reuni\u00f3n", "REST"}},
+ "Hora de verano de Reuni\u00f3n", "REST",
+ "Hora de Reuni\u00F3n", "RET"}},
{"Israel", ISRAEL},
{"Jamaica", EST},
{"Japan", JST},
{"Kwajalein", MHT},
{"Libya", EET},
{"MET", new String[] {"Hora de Europa Central", "MET",
- "Hora de verano de Europa Central", "MEST"}},
+ "Hora de verano de Europa Central", "MEST",
+ "MET", "MET"}},
{"Mexico/BajaNorte", PST},
{"Mexico/BajaSur", MST},
{"Mexico/General", CST},
@@ -777,61 +918,82 @@
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
{"Pacific/Efate", new String[] {"Hora de Vanuatu", "VUT",
- "Hora de verano de Vanuatu", "VUST"}},
+ "Hora de verano de Vanuatu", "VUST",
+ "Hora de Vanuatu", "VUT"}},
{"Pacific/Enderbury", new String[] {"Hora de la isla Phoenix", "PHOT",
- "Hora de verano de la isla Phoenix", "PHOST"}},
+ "Hora de verano de la isla Phoenix", "PHOST",
+ "Hora de la isla Phoenix", "PHOT"}},
{"Pacific/Fakaofo", new String[] {"Hora de Tokelau", "TKT",
- "Hora de verano de Tokelau", "TKST"}},
+ "Hora de verano de Tokelau", "TKST",
+ "Hora de Tokelau", "TKT"}},
{"Pacific/Fiji", new String[] {"Hora de Fiji", "FJT",
- "Hora de verano de Fiji", "FJST"}},
+ "Hora de verano de Fiji", "FJST",
+ "Hora de Fiji", "FJT"}},
{"Pacific/Funafuti", new String[] {"Hora de Tuvalu", "TVT",
- "Hora de verano de Tuvalu", "TVST"}},
+ "Hora de verano de Tuvalu", "TVST",
+ "Hora de Tuvalu", "TVT"}},
{"Pacific/Galapagos", new String[] {"Hora de Gal\u00e1pagos", "GALT",
- "Hora de verano de Gal\u00e1pagos", "GALST"}},
+ "Hora de verano de Gal\u00e1pagos", "GALST",
+ "Hora de Gal\u00E1pagos", "GALT"}},
{"Pacific/Gambier", GAMBIER},
{"Pacific/Guadalcanal", SBT},
{"Pacific/Guam", ChST},
{"Pacific/Johnston", HST},
{"Pacific/Kiritimati", new String[] {"Hora de las islas Line", "LINT",
- "Hora de verano de las islas Line", "LINST"}},
+ "Hora de verano de las islas Line", "LINST",
+ "Hora de las islas Line", "LINT"}},
{"Pacific/Kosrae", new String[] {"Hora de Kosrae", "KOST",
- "Hora de verano de Kosrae", "KOSST"}},
+ "Hora de verano de Kosrae", "KOSST",
+ "Hora de Kosrae", "KOST"}},
{"Pacific/Kwajalein", MHT},
{"Pacific/Majuro", MHT},
{"Pacific/Marquesas", new String[] {"Hora de Marquesas", "MART",
- "Hora de verano de Marquesas", "MARST"}},
+ "Hora de verano de Marquesas", "MARST",
+ "Hora de Marquesas", "MART"}},
{"Pacific/Midway", SAMOA},
{"Pacific/Nauru", new String[] {"Hora de Nauru", "NRT",
- "Hora de verano de Nauru", "NRST"}},
+ "Hora de verano de Nauru", "NRST",
+ "Hora de Nauru", "NRT"}},
{"Pacific/Niue", new String[] {"Hora de Niue", "NUT",
- "Hora de verano de Niue", "NUST"}},
+ "Hora de verano de Niue", "NUST",
+ "Hora de Niue", "NUT"}},
{"Pacific/Norfolk", new String[] {"Hora de Norfolk", "NFT",
- "Hora de verano de Norfolk", "NFST"}},
+ "Hora de verano de Norfolk", "NFST",
+ "Hora de Norfolk", "NFT"}},
{"Pacific/Noumea", new String[] {"Hora de Nueva Caledonia", "NCT",
- "Hora de verano de Nueva Caledonia", "NCST"}},
+ "Hora de verano de Nueva Caledonia", "NCST",
+ "Hora de Nueva Caledonia", "NCT"}},
{"Pacific/Pago_Pago", SAMOA},
{"Pacific/Palau", new String[] {"Hora de Palau", "PWT",
- "Hora de verano de Palau", "PWST"}},
+ "Hora de verano de Palau", "PWST",
+ "Hora de Palau", "PWT"}},
{"Pacific/Pitcairn", PITCAIRN},
{"Pacific/Pohnpei", PONT},
{"Pacific/Ponape", PONT},
{"Pacific/Port_Moresby", new String[] {"Hora de Pap\u00faa-Nueva Guinea", "PGT",
- "Hora de verano de Pap\u00faa-Nueva Guinea", "PGST"}},
+ "Hora de verano de Pap\u00faa-Nueva Guinea", "PGST",
+ "Hora de Pap\u00FAa-Nueva Guinea", "PGT"}},
{"Pacific/Rarotonga", new String[] {"Hora de las islas Cook", "CKT",
- "Hora de verano de las islas Cook", "CKHST"}},
+ "Hora de verano de las islas Cook", "CKHST",
+ "Hora de las islas Cook", "CKT"}},
{"Pacific/Saipan", ChST},
{"Pacific/Samoa", SAMOA},
{"Pacific/Tahiti", new String[] {"Hora de Tahit\u00ed", "TAHT",
- "Hora de verano de Tahit\u00ed", "TAHST"}},
+ "Hora de verano de Tahit\u00ed", "TAHST",
+ "Hora de Tahit\u00ED", "TAHT"}},
{"Pacific/Tarawa", new String[] {"Hora de las islas Gilbert", "GILT",
- "Hora de verano de las islas Gilbert", "GILST"}},
+ "Hora de verano de las islas Gilbert", "GILST",
+ "Hora de las islas Gilbert", "GILT"}},
{"Pacific/Tongatapu", new String[] {"Hora de Tonga", "TOT",
- "Hora de verano de Tonga", "TOST"}},
+ "Hora de verano de Tonga", "TOST",
+ "Hora de Tonga", "TOT"}},
{"Pacific/Truk", CHUT},
{"Pacific/Wake", new String[] {"Hora de Wake", "WAKT",
- "Hora de verano de Wake", "WAKST"}},
+ "Hora de verano de Wake", "WAKST",
+ "Hora de Wake", "WAKT"}},
{"Pacific/Wallis", new String[] {"Hora de Wallis y Futuna", "WFT",
- "Hora de verano de Wallis y Futuna", "WFST"}},
+ "Hora de verano de Wallis y Futuna", "WFST",
+ "Hora de Wallis y Futuna", "WFT"}},
{"Pacific/Yap", CHUT},
{"Poland", CET},
{"PRC", CTT},
--- a/jdk/src/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java Wed Jul 05 19:27:58 2017 +0200
@@ -46,159 +46,235 @@
protected final Object[][] getContents() {
String ACT[] = new String[] {"Heure de l'Acre", "ACT",
- "Heure d'\u00e9t\u00e9 de l'Acre", "ACST"};
+ "Heure d'\u00e9t\u00e9 de l'Acre", "ACST",
+ "Heure de l'Acre", "ACT"};
String ADELAIDE[] = new String[] {"Heure standard d'Australie centrale (Australie du sud)", "CST",
- "Heure d'\u00E9t\u00E9 d'Australie centrale (Australie du sud)", "CST"};
+ "Heure d'\u00E9t\u00E9 d'Australie centrale (Australie du sud)", "CST",
+ "Centre (Australie-M\u00E9ridionale)", "CT"};
String AGT[] = new String[] {"Heure D'Argentine", "ART",
- "Heure d'\u00e9t\u00e9 D'Argentine", "ARST"} ;
+ "Heure d'\u00e9t\u00e9 D'Argentine", "ARST",
+ "Heure d'Argentine", "ART"} ;
String AKST[] = new String[] {"Heure normale d'Alaska", "AKST",
- "Heure avanc\u00e9e d'Alaska", "AKDT"} ;
+ "Heure avanc\u00e9e d'Alaska", "AKDT",
+ "Alaska", "AKT"} ;
String AMT[] = new String[] {"Heure normale d'Amazonie", "AMT",
- "Heure d'\u00e9t\u00e9 d'Amazonie", "AMST"} ;
+ "Heure d'\u00e9t\u00e9 d'Amazonie", "AMST",
+ "Heure d'Amazonie", "AMT"} ;
String ARAST[] = new String[] {"Heure normale d'Arabie", "AST",
- "Heure avanc\u00e9e d'Arabie", "ADT"} ;
+ "Heure avanc\u00e9e d'Arabie", "ADT",
+ "Arabie", "AT"} ;
String ARMT[] = new String[] {"Heure d'Arm\u00e9nie", "AMT",
- "Heure d'\u00e9t\u00e9 d'Arm\u00e9nie", "AMST"} ;
+ "Heure d'\u00e9t\u00e9 d'Arm\u00e9nie", "AMST",
+ "Heure d'Arm\u00E9nie", "AMT"} ;
String AST[] = new String[] {"Heure normale de l'Atlantique", "AST",
- "Heure avanc\u00e9e de l'Atlantique", "ADT"} ;
+ "Heure avanc\u00e9e de l'Atlantique", "ADT",
+ "Atlantique", "AT"} ;
String BDT[] = new String[] {"Heure du Bangladesh", "BDT",
- "Heure d'\u00e9t\u00e9 du Bangladesh", "BDST"} ;
+ "Heure d'\u00e9t\u00e9 du Bangladesh", "BDST",
+ "Heure du Bangladesh", "BDT"} ;
String BRISBANE[] = new String[] {"Heure standard d'Australie orientale (Queensland)", "EST",
- "Heure d'\u00E9t\u00E9 d'Australie orientale (Queensland)", "EST"};
+ "Heure d'\u00E9t\u00E9 d'Australie orientale (Queensland)", "EST",
+ "C\u00F4te Est (Queensland)", "ET"};
String BROKEN_HILL[] = new String[] {"Heure standard d'Australie centrale (Australie du sud/Nouvelle-Galles du sud)", "CST",
- "Heure d'\u00E9t\u00E9 d'Australie centrale (Australie du sud/Nouvelle-Galles du sud)", "CST"};
+ "Heure d'\u00E9t\u00E9 d'Australie centrale (Australie du sud/Nouvelle-Galles du sud)", "CST",
+ "Centre (Australie-M\u00E9ridionale/Nouvelle-Galles du Sud)", "CT"};
String BRT[] = new String[] {"Heure du Br\u00e9sil", "BRT",
- "Heure d'\u00e9t\u00e9 du Br\u00e9sil", "BRST"} ;
+ "Heure d'\u00e9t\u00e9 du Br\u00e9sil", "BRST",
+ "Heure du Br\u00E9sil", "BRT"} ;
String BTT[] = new String[] {"Heure du Bhoutan", "BTT",
- "Heure d'\u00e9t\u00e9 du Bhoutan", "BTST"} ;
+ "Heure d'\u00e9t\u00e9 du Bhoutan", "BTST",
+ "Heure du Bhoutan", "BTT"} ;
String CAT[] = new String[] {"Heure d'Afrique centrale", "CAT",
- "Heure d'\u00e9t\u00e9 d'Afrique centrale", "CAST"} ;
+ "Heure d'\u00e9t\u00e9 d'Afrique centrale", "CAST",
+ "Heure d'Afrique centrale", "CAT"} ;
String CET[] = new String[] {"Heure d'Europe centrale", "CET",
- "Heure d'\u00e9t\u00e9 d'Europe centrale", "CEST"} ;
+ "Heure d'\u00e9t\u00e9 d'Europe centrale", "CEST",
+ "Heure d'Europe centrale", "CET"} ;
String CHAST[] = new String[] {"Heure standard de Chatham", "CHAST",
- "Heure avanc\u00e9e de Chatham", "CHADT"};
+ "Heure avanc\u00e9e de Chatham", "CHADT",
+ "Chatham", "CHAT"};
String CHUT[] = new String[] {"Heure de Chuuk", "CHUT",
- "Heure d'\u00E9t\u00E9 de Chuuk", "CHUST"};
+ "Heure d'\u00E9t\u00E9 de Chuuk", "CHUST",
+ "Heure de Chuuk", "CHUT"};
String CIT[] = new String[] {"Heure d'Indon\u00e9sie centrale", "WITA",
- "Heure d'\u00e9t\u00e9 d'Indon\u00e9sie centrale", "CIST"};
+ "Heure d'\u00e9t\u00e9 d'Indon\u00e9sie centrale", "CIST",
+ "Heure d'Indon\u00E9sie centrale", "WITA"};
String CLT[] = new String[] {"Heure du Chili", "CLT",
- "Heure d'\u00e9t\u00e9 du Chili", "CLST"} ;
+ "Heure d'\u00e9t\u00e9 du Chili", "CLST",
+ "Heure du Chili", "CLT"} ;
String CST[] = new String[] {"Heure normale du Centre", "CST",
- "Heure avanc\u00e9e du Centre", "CDT"} ;
+ "Heure avanc\u00e9e du Centre", "CDT",
+ "Centre", "CT"} ;
String CTT[] = new String[] {"Heure normale de Chine", "CST",
- "Heure avanc\u00e9e de Chine", "CDT"} ;
+ "Heure avanc\u00e9e de Chine", "CDT",
+ "Chine", "CT"} ;
String CUBA[] = new String[] {"Heure standard de Cuba", "CST",
- "Heure d'\u00e9t\u00e9 de Cuba", "CDT"};
+ "Heure d'\u00e9t\u00e9 de Cuba", "CDT",
+ "Heure de Cuba", "CT"};
String DARWIN[] = new String[] {"Heure standard d'Australie centrale (Territoire du Nord)", "CST",
- "Heure d'\u00E9t\u00E9 d'Australie centrale (Territoire du Nord)", "CST"};
+ "Heure d'\u00E9t\u00E9 d'Australie centrale (Territoire du Nord)", "CST",
+ "Centre (Territoire du Nord)", "CT"};
String DUBLIN[] = new String[] {"Heure du m\u00e9ridien de Greenwich", "GMT",
- "Heure d'\u00e9t\u00e9 irlandaise", "IST"};
+ "Heure d'\u00e9t\u00e9 irlandaise", "IST",
+ "Heure irlandaise", "IT"};
String EAT[] = new String[] {"Heure d'Afrique de l'Est", "EAT",
- "Heure d'\u00e9t\u00e9 d'Afrique de l'Est", "EAST"} ;
+ "Heure d'\u00e9t\u00e9 d'Afrique de l'Est", "EAST",
+ "Heure d'Afrique de l'Est", "EAT"} ;
String EASTER[] = new String[] {"Heure de l'Ile de P\u00e2ques", "EAST",
- "Heure d'\u00e9t\u00e9 de l'Ile de P\u00e2ques", "EASST"};
+ "Heure d'\u00e9t\u00e9 de l'Ile de P\u00e2ques", "EASST",
+ "Heure de l'Ile de P\u00E2ques", "EAST"};
String EET[] = new String[] {"Heure d'Europe de l'Est", "EET",
- "Heure d'\u00e9t\u00e9 d'Europe de l'Est", "EEST"} ;
+ "Heure d'\u00e9t\u00e9 d'Europe de l'Est", "EEST",
+ "Heure d'Europe de l'Est", "EET"} ;
String EGT[] = new String[] {"Heure du Groenland de l'Est", "EGT",
- "Heure d'\u00e9t\u00e9 du Groenland de l'Est", "EGST"} ;
+ "Heure d'\u00e9t\u00e9 du Groenland de l'Est", "EGST",
+ "Heure du Groenland de l'Est", "EGT"} ;
String EST[] = new String[] {"Heure normale de l'Est", "EST",
- "Heure avanc\u00e9e de l'Est", "EDT"} ;
+ "Heure avanc\u00e9e de l'Est", "EDT",
+ "C\u00F4te Est", "ET"} ;
String EST_NSW[] = new String[] {"Heure normale de l'Est (Nouvelle-Galles du Sud)", "EST",
- "Heure d'\u00E9t\u00E9 de l'Est (Nouvelle-Galles du Sud)", "EST"} ;
+ "Heure d'\u00E9t\u00E9 de l'Est (Nouvelle-Galles du Sud)", "EST",
+ "C\u00F4te Est (Nouvelle-Galles du Sud)", "ET"} ;
String FET[] = new String[] {"Heure d'Europe de l'Est UTC+3", "FET",
- "Heure d'\u00E9t\u00E9 d'Europe de l'Est UTC+3", "FEST"};
+ "Heure d'\u00E9t\u00E9 d'Europe de l'Est UTC+3", "FEST",
+ "Heure d'Europe de l'Est UTC+3", "FET"};
String GHMT[] = new String[] {"Heure du Ghana", "GMT",
- "Heure d'\u00e9t\u00e9 du Ghana", "GHST"};
+ "Heure d'\u00e9t\u00e9 du Ghana", "GHST",
+ "Heure du Ghana", "GMT"};
String GAMBIER[] = new String[] {"Heure de Gambi", "GAMT",
- "Heure d'\u00e9t\u00e9 de Gambi", "GAMST"};
+ "Heure d'\u00e9t\u00e9 de Gambi", "GAMST",
+ "Heure de Gambi", "GAMT"};
String GMT[] = new String[] {"Heure de Greenwich", "GMT",
+ "Heure de Greenwich", "GMT",
"Heure de Greenwich", "GMT"} ;
String GMTBST[] = new String[] {"Heure du m\u00e9ridien de Greenwich", "GMT",
- "Heure d'\u00e9t\u00e9 britannique", "BST"};
+ "Heure d'\u00e9t\u00e9 britannique", "BST",
+ "Heure britannique", "BT"};
String GST[] = new String[] {"Heure normale du Golfe", "GST",
- "Heure avanc\u00e9e du Golfe", "GDT"} ;
+ "Heure avanc\u00e9e du Golfe", "GDT",
+ "Golfe", "GT"} ;
String HAST[] = new String[] {"Heure normale d'Hawa\u00ef-Al\u00e9outiennes", "HAST",
- "Heure avanc\u00e9e d'Hawa\u00ef-Al\u00e9outiennes", "HADT"} ;
+ "Heure avanc\u00e9e d'Hawa\u00ef-Al\u00e9outiennes", "HADT",
+ "Hawa\u00EF-Iles Al\u00E9outiennes", "HAT"} ;
String HKT[] = new String[] {"Heure de Hong Kong", "HKT",
- "Heure d'\u00e9t\u00e9 de Hong Kong", "HKST"};
+ "Heure d'\u00e9t\u00e9 de Hong Kong", "HKST",
+ "Heure de Hong-Kong", "HKT"};
String HST[] = new String[] {"Heure normale d'Hawa\u00ef", "HST",
- "Heure avanc\u00e9e d'Hawa\u00ef", "HDT"} ;
+ "Heure avanc\u00e9e d'Hawa\u00ef", "HDT",
+ "Hawa\u00EF", "HT"} ;
String ICT[] = new String[] {"Heure d'Indochine", "ICT",
- "Heure d'\u00e9t\u00e9 d'Indochine", "ICST"} ;
+ "Heure d'\u00e9t\u00e9 d'Indochine", "ICST",
+ "Heure d'Indochine", "ICT"} ;
String IRT[] = new String[] {"Heure normale d'Iran", "IRST",
- "Heure avanc\u00e9e d'Iran", "IRDT"} ;
+ "Heure avanc\u00e9e d'Iran", "IRDT",
+ "Heure d'Iran", "IRT"} ;
String ISRAEL[] = new String[] {"Heure standard d'Isra\u00ebl", "IST",
- "Heure avanc\u00e9e d'Isra\u00ebl", "IDT"};
+ "Heure avanc\u00e9e d'Isra\u00ebl", "IDT",
+ "Isra\u00EBl", "IT"};
String IST[] = new String[] {"Heure normale d'Inde", "IST",
- "Heure avanc\u00e9e d'Inde", "IDT"} ;
+ "Heure avanc\u00e9e d'Inde", "IDT",
+ "Inde", "IT"} ;
String JST[] = new String[] {"Heure normale du Japon", "JST",
- "Heure avanc\u00e9e du Japon", "JDT"} ;
+ "Heure avanc\u00e9e du Japon", "JDT",
+ "Japon", "JT"} ;
String KST[] = new String[] {"Heure normale de Cor\u00e9e", "KST",
- "Heure avanc\u00e9e de Cor\u00e9e", "KDT"} ;
+ "Heure avanc\u00e9e de Cor\u00e9e", "KDT",
+ "Cor\u00E9e", "KT"} ;
String LORD_HOWE[] = new String[] {"Heure standard de Lord Howe", "LHST",
- "Heure d'\u00e9t\u00e9 de Lord Howe", "LHST"};
+ "Heure d'\u00e9t\u00e9 de Lord Howe", "LHST",
+ "Heure de Lord Howe", "LHT"};
String MHT[] = new String[] {"Heure des Iles Marshall", "MHT",
- "Heure d'\u00e9t\u00e9 des Iles Marshall", "MHST"};
+ "Heure d'\u00e9t\u00e9 des Iles Marshall", "MHST",
+ "Heure des Iles Marshall", "MHT"};
String MSK[] = new String[] {"Heure standard de Moscou", "MSK",
- "Heure avanc\u00e9e de Moscou", "MSD"};
+ "Heure avanc\u00e9e de Moscou", "MSD",
+ "Moscou", "MT"};
String MST[] = new String[] {"Heure normale des Rocheuses", "MST",
- "Heure avanc\u00e9e des Rocheuses", "MDT"} ;
+ "Heure avanc\u00e9e des Rocheuses", "MDT",
+ "Rocheuses", "MT"} ;
String MYT[] = new String[] {"Heure de Malaisie", "MYT",
- "Heure d'\u00e9t\u00e9 de Malaisie", "MYST"};
+ "Heure d'\u00e9t\u00e9 de Malaisie", "MYST",
+ "Heure de Malaisie", "MYT"};
String NORONHA[] = new String[] {"Heure de Fernando de Noronha", "FNT",
- "Heure d'\u00e9t\u00e9 de Fernando de Noronha", "FNST"};
+ "Heure d'\u00e9t\u00e9 de Fernando de Noronha", "FNST",
+ "Heure de Fernando de Noronha", "FNT"};
String NOVT[] = new String[] {"Heure de Novossibirsk", "NOVT",
- "Heure d'\u00e9t\u00e9 de Novossibirsk", "NOVST"};
+ "Heure d'\u00e9t\u00e9 de Novossibirsk", "NOVST",
+ "Heure de Novossibirsk", "NOVT"};
String NPT[] = new String[] {"Heure du N\u00e9pal", "NPT",
- "Heure d'\u00e9t\u00e9 du N\u00e9pal", "NPST"};
+ "Heure d'\u00e9t\u00e9 du N\u00e9pal", "NPST",
+ "Heure du N\u00E9pal", "NPT"};
String NST[] = new String[] {"Heure normale de Terre-Neuve", "NST",
- "Heure avanc\u00e9e de Terre-Neuve", "NDT"} ;
+ "Heure avanc\u00e9e de Terre-Neuve", "NDT",
+ "Terre-Neuve", "NT"} ;
String NZST[] = new String[] {"Heure normale de Nouvelle-Z\u00e9lande", "NZST",
- "Heure avanc\u00e9e de Nouvelle-Z\u00e9lande", "NZDT"} ;
+ "Heure avanc\u00e9e de Nouvelle-Z\u00e9lande", "NZDT",
+ "Nouvelle-Z\u00E9lande", "NZT"} ;
String PITCAIRN[] = new String[] {"Heure standard des Pitcairn", "PST",
- "heure avanc\u00e9e des Pitcairn", "PDT"};
+ "heure avanc\u00e9e des Pitcairn", "PDT",
+ "Pitcairn", "PT"};
String PKT[] = new String[] {"Heure du Pakistan", "PKT",
- "Heure d'\u00e9t\u00e9 du Pakistan", "PKST"} ;
+ "Heure d'\u00e9t\u00e9 du Pakistan", "PKST",
+ "Heure du Pakistan", "PKT"} ;
String PONT[] = new String[] {"Heure de Pohnpei", "PONT",
- "Heure d'\u00E9t\u00E9 de Pohnpei", "PONST"};
+ "Heure d'\u00E9t\u00E9 de Pohnpei", "PONST",
+ "Ponape", "PONT"};
String PST[] = new String[] {"Heure normale du Pacifique", "PST",
- "Heure avanc\u00e9e du Pacifique", "PDT"} ;
+ "Heure avanc\u00e9e du Pacifique", "PDT",
+ "Pacifique", "PT"} ;
String SAST[] = new String[] {"Heure normale d'Afrique du Sud", "SAST",
- "Heure d'\u00e9t\u00e9 d'Afrique du Sud", "SAST"} ;
+ "Heure d'\u00e9t\u00e9 d'Afrique du Sud", "SAST",
+ "Afrique du Sud", "SAT"} ;
String SBT[] = new String[] {"Heure des \u00celes Salomon", "SBT",
- "Heure d'\u00e9t\u00e9 des \u00celes Salomon", "SBST"} ;
+ "Heure d'\u00e9t\u00e9 des \u00celes Salomon", "SBST",
+ "Heure des Iles Salomon", "SBT"} ;
String SGT[] = new String[] {"Heure de Singapour", "SGT",
- "Heure d'\u00e9t\u00e9 de Singapour", "SGST"};
+ "Heure d'\u00e9t\u00e9 de Singapour", "SGST",
+ "Heure de Singapour", "SGT"};
String SLST[] = new String[] {"Heure du m\u00e9ridien de Greenwich", "GMT",
- "Heure d'\u00e9t\u00e9 de Sierra Leone", "SLST"};
+ "Heure d'\u00e9t\u00e9 de Sierra Leone", "SLST",
+ "Heure de Sierra Leone", "SLT"};
String TASMANIA[] = new String[] {"Heure standard d'Australie orientale (Tasmanie)", "EST",
- "Heure d'\u00E9t\u00E9 d'Australie orientale (Tasmanie)", "EST"};
+ "Heure d'\u00E9t\u00E9 d'Australie orientale (Tasmanie)", "EST",
+ "C\u00F4te Est (Tasmanie)", "ET"};
String TMT[] = new String[] {"Heure du Turkm\u00e9nistan", "TMT",
- "Heure d'\u00e9t\u00e9 du Turkm\u00e9nistan", "TMST"} ;
+ "Heure d'\u00e9t\u00e9 du Turkm\u00e9nistan", "TMST",
+ "Heure du Turkm\u00E9nistan", "TMT"} ;
String ULAT[]= new String[] {"Heure de l'Ulaanbaatar", "ULAT",
- "Heure d'\u00e9t\u00e9 de l'Ulaanbaatar", "ULAST"} ;
+ "Heure d'\u00e9t\u00e9 de l'Ulaanbaatar", "ULAST",
+ "Heure de l'Ulaanbaatar", "ULAT"} ;
String WART[] = new String[] {"Heure D'Argentine de l'Ouest", "WART",
"Heure d'\u00e9t\u00e9 D'Argentine de l'Ouest", "WARST"} ;
String WAT[] = new String[] {"Heure d'Afrique de l'Ouest", "WAT",
- "Heure d'\u00e9t\u00e9 d'Afrique de l'Ouest", "WAST"} ;
+ "Heure d'\u00e9t\u00e9 d'Afrique de l'Ouest", "WAST",
+ "Heure d'Afrique de l'Ouest", "WAT"} ;
String WET[] = new String[] {"Heure d'Europe de l'Ouest", "WET",
- "Heure d'\u00e9t\u00e9 d'Europe de l'Ouest", "WEST"} ;
+ "Heure d'\u00e9t\u00e9 d'Europe de l'Ouest", "WEST",
+ "Heure d'Europe de l'Ouest", "WET"} ;
String WIT[] = new String[] {"Heure de l'Indon\u00e9sie occidentale", "WIB",
- "Heure d'\u00e9t\u00e9 de l'Indon\u00e9sie occidentale", "WIST"};
+ "Heure d'\u00e9t\u00e9 de l'Indon\u00e9sie occidentale", "WIST",
+ "Heure de l'Indon\u00E9sie occidentale", "WIB"};
String WST_AUS[] = new String[] {"Heure normale de l'Ouest (Australie)", "WST",
- "Heure d'\u00E9t\u00E9 de l'Ouest (Australie)", "WST"} ;
+ "Heure d'\u00E9t\u00E9 de l'Ouest (Australie)", "WST",
+ "Ouest (Australie)", "WT"} ;
String SAMOA[] = new String[] {"Heure standard de Samoa", "SST",
- "Heure avanc\u00e9e de Samoa", "SDT"};
+ "Heure avanc\u00e9e de Samoa", "SDT",
+ "Samoa", "ST"};
String WST_SAMOA[] = new String[] {"Heure des Samoas occidentales", "WST",
- "Heure d'\u00e9t\u00e9 des Samoas occidentales", "WSDT"} ;
+ "Heure d'\u00e9t\u00e9 des Samoas occidentales", "WSDT",
+ "Heure des Samoas occidentales", "WST"} ;
String ChST[] = new String[] {"Heure normale des \u00eeles Mariannes", "ChST",
- "Heure d'\u00e9t\u00e9 des \u00eeles Mariannes", "ChDT"};
+ "Heure d'\u00e9t\u00e9 des \u00eeles Mariannes", "ChDT",
+ "Chamorro", "ChT"};
String VICTORIA[] = new String[] {"Heure standard d'Australie orientale (Victoria)", "EST",
- "Heure d'\u00E9t\u00E9 d'Australie orientale (Victoria)", "EST"};
+ "Heure d'\u00E9t\u00E9 d'Australie orientale (Victoria)", "EST",
+ "C\u00F4te Est (Victoria)", "ET"};
String UTC[] = new String[] {"Temps universel coordonn\u00e9", "UTC",
- "Temps universel coordonn\u00e9", "UTC"};
+ "Temps universel coordonn\u00e9", "UTC",
+ "Temps universel coordonn\u00E9", "UTC"};
String UZT[] = new String[] {"Heure de l'Ouzb\u00e9kistan", "UZT",
- "Heure d'\u00e9t\u00e9 de l'Ouzb\u00e9kistan", "UZST"};
+ "Heure d'\u00e9t\u00e9 de l'Ouzb\u00e9kistan", "UZST",
+ "Heure de l'Ouzb\u00E9kistan", "UZT"};
return new Object[][] {
{"America/Los_Angeles", PST},
@@ -311,7 +387,8 @@
{"America/Argentina/Ushuaia", AGT},
{"America/Aruba", AST},
{"America/Asuncion", new String[] {"Heure du Paraguay", "PYT",
- "Heure d'\u00e9t\u00e9 du Paraguay", "PYST"}},
+ "Heure d'\u00e9t\u00e9 du Paraguay", "PYST",
+ "Heure du Paraguay", "PYT"}},
{"America/Atikokan", EST},
{"America/Atka", HAST},
{"America/Bahia", BRT},
@@ -322,17 +399,20 @@
{"America/Blanc-Sablon", AST},
{"America/Boa_Vista", AMT},
{"America/Bogota", new String[] {"Heure de Colombie", "COT",
- "Heure d'\u00e9t\u00e9 de Colombie", "COST"}},
+ "Heure d'\u00e9t\u00e9 de Colombie", "COST",
+ "Heure de Colombie", "COT"}},
{"America/Boise", MST},
{"America/Buenos_Aires", AGT},
{"America/Cambridge_Bay", MST},
{"America/Campo_Grande", AMT},
{"America/Cancun", CST},
{"America/Caracas", new String[] {"Heure du Venezuela", "VET",
- "Heure d'\u00e9t\u00e9 du Venezuela", "VEST"}},
+ "Heure d'\u00e9t\u00e9 du Venezuela", "VEST",
+ "Heure du Venezuela", "VET"}},
{"America/Catamarca", AGT},
{"America/Cayenne", new String[] {"Heure de Guyane fran\u00e7aise", "GFT",
- "Heure d'\u00e9t\u00e9 de Guyane fran\u00e7aise", "GFST"}},
+ "Heure d'\u00e9t\u00e9 de Guyane fran\u00e7aise", "GFST",
+ "Heure de Guyane fran\u00E7aise", "GFT"}},
{"America/Cayman", EST},
{"America/Chihuahua", MST},
{"America/Creston", MST},
@@ -354,16 +434,19 @@
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"Heure du Groenland de l'Ouest", "WGT",
- "Heure d'\u00e9t\u00e9 du Groenland de l'Ouest", "WGST"}},
+ "Heure d'\u00e9t\u00e9 du Groenland de l'Ouest", "WGST",
+ "Heure du Groenland de l'Ouest", "WGT"}},
{"America/Goose_Bay", AST},
{"America/Grand_Turk", EST},
{"America/Grenada", AST},
{"America/Guadeloupe", AST},
{"America/Guatemala", CST},
{"America/Guayaquil", new String[] {"Heure de l'\u00c9quateur", "ECT",
- "Heure d'\u00e9t\u00e9 de l'\u00c9quateur", "ECST"}},
+ "Heure d'\u00e9t\u00e9 de l'\u00c9quateur", "ECST",
+ "Heure de l'Equateur", "ECT"}},
{"America/Guyana", new String[] {"Heure de Guyana", "GYT",
- "Heure d'\u00e9t\u00e9 de Guyana", "GYST"}},
+ "Heure d'\u00e9t\u00e9 de Guyana", "GYST",
+ "Heure de Guyana", "GYT"}},
{"America/Havana", CUBA},
{"America/Hermosillo", MST},
{"America/Indiana/Indianapolis", EST},
@@ -384,9 +467,11 @@
{"America/Knox_IN", CST},
{"America/Kralendijk", AST},
{"America/La_Paz", new String[] {"Heure de Bolivie", "BOT",
- "Heure d'\u00e9t\u00e9 de Bolivie", "BOST"}},
+ "Heure d'\u00e9t\u00e9 de Bolivie", "BOST",
+ "Heure de Bolivie", "BOT"}},
{"America/Lima", new String[] {"Heure du P\u00e9rou", "PET",
- "Heure d'\u00e9t\u00e9 du P\u00e9rou", "PEST"}},
+ "Heure d'\u00e9t\u00e9 du P\u00e9rou", "PEST",
+ "Heure du P\u00E9rou", "PET"}},
{"America/Louisville", EST},
{"America/Lower_Princes", AST},
{"America/Maceio", BRT},
@@ -400,13 +485,16 @@
{"America/Menominee", CST},
{"America/Merida", CST},
{"America/Metlakatla", new String[] {"Heure normale de Metlakatla", "MeST",
- "Heure avanc\u00E9e de Metlakatla", "MeDT"}},
+ "Heure avanc\u00E9e de Metlakatla", "MeDT",
+ "Heure de Metlakatla", "MeT"}},
{"America/Mexico_City", CST},
{"America/Miquelon", new String[] {"Heure normale de Saint-Pierre et Miquelon", "PMST",
- "Heure avanc\u00e9e de Saint-Pierre et Miquelon", "PMDT"}},
+ "Heure avanc\u00e9e de Saint-Pierre et Miquelon", "PMDT",
+ "Saint-Pierre-et-Miquelon", "PMT"}},
{"America/Moncton", AST},
{"America/Montevideo", new String[] {"Heure de l'Uruguay", "UYT",
- "Heure d'\u00e9t\u00e9 de l'Uruguay", "UYST"}},
+ "Heure d'\u00e9t\u00e9 de l'Uruguay", "UYST",
+ "Heure de l'Uruguay", "UYT"}},
{"America/Monterrey", CST},
{"America/Montreal", EST},
{"America/Montserrat", AST},
@@ -421,7 +509,8 @@
{"America/Panama", EST},
{"America/Pangnirtung", EST},
{"America/Paramaribo", new String[] {"Heure du Surinam", "SRT",
- "Heure d'\u00e9t\u00e9 du Surinam", "SRST"}},
+ "Heure d'\u00e9t\u00e9 du Surinam", "SRST",
+ "Heure du Surinam", "SRT"}},
{"America/Port-au-Prince", EST},
{"America/Port_of_Spain", AST},
{"America/Porto_Acre", ACT},
@@ -461,115 +550,146 @@
{"America/Yellowknife", MST},
{"Antarctica/Casey", WST_AUS},
{"Antarctica/Davis", new String[] {"Heure de Davis", "DAVT",
- "Heure d'\u00e9t\u00e9 de Davis", "DAVST"}},
+ "Heure d'\u00e9t\u00e9 de Davis", "DAVST",
+ "Heure de Davis", "DAVT"}},
{"Antarctica/DumontDUrville", new String[] {"Heure de Dumont-d'Urville", "DDUT",
- "Heure d'\u00e9t\u00e9 de Dumont-d'Urville", "DDUST"}},
+ "Heure d'\u00e9t\u00e9 de Dumont-d'Urville", "DDUST",
+ "Heure de Dumont-d'Urville", "DDUT"}},
{"Antarctica/Macquarie", new String[] {"Heure de l'Ile Macquarie", "MIST",
- "Heure d'\u00E9t\u00E9 de l'Ile Macquarie", "MIST"}},
+ "Heure d'\u00E9t\u00E9 de l'Ile Macquarie", "MIST",
+ "Heure de l'Ile Macquarie", "MIST"}},
{"Antarctica/Mawson", new String[] {"Heure de Mawson", "MAWT",
- "Heure d'\u00e9t\u00e9 de Mawson", "MAWST"}},
+ "Heure d'\u00e9t\u00e9 de Mawson", "MAWST",
+ "Heure de Mawson", "MAWT"}},
{"Antarctica/McMurdo", NZST},
{"Antarctica/Palmer", CLT},
{"Antarctica/Rothera", new String[] {"Heure de Rothera", "ROTT",
- "Heure d'\u00e9t\u00e9 de Rothera", "ROTST"}},
+ "Heure d'\u00e9t\u00e9 de Rothera", "ROTST",
+ "Heure de Rothera", "ROTT"}},
{"Antarctica/South_Pole", NZST},
{"Antarctica/Syowa", new String[] {"Heure de Syowa", "SYOT",
- "Heure d'\u00e9t\u00e9 de Syowa", "SYOST"}},
+ "Heure d'\u00e9t\u00e9 de Syowa", "SYOST",
+ "Heure de Syowa", "SYOT"}},
{"Antarctica/Vostok", new String[] {"Heure de Vostok", "VOST",
- "Heure d'\u00e9t\u00e9 de Vostok", "VOSST"}},
+ "Heure d'\u00e9t\u00e9 de Vostok", "VOSST",
+ "Heure de Vostok", "VOST"}},
{"Arctic/Longyearbyen", CET},
{"Asia/Aden", ARAST},
{"Asia/Almaty", new String[] {"Heure d'Alma-Ata", "ALMT",
- "Heure d'\u00e9t\u00e9 d'Alma-Ata", "ALMST"}},
+ "Heure d'\u00e9t\u00e9 d'Alma-Ata", "ALMST",
+ "Heure d'Alma-Ata", "ALMT"}},
{"Asia/Amman", ARAST},
{"Asia/Anadyr", new String[] {"Heure d'Anadyr", "ANAT",
- "Heure d'\u00e9t\u00e9 d'Anadyr", "ANAST"}},
+ "Heure d'\u00e9t\u00e9 d'Anadyr", "ANAST",
+ "Heure d'Anadyr", "ANAT"}},
{"Asia/Aqtau", new String[] {"Heure d'Aqtau", "AQTT",
- "Heure d'\u00e9t\u00e9 d'Aqtau", "AQTST"}},
+ "Heure d'\u00e9t\u00e9 d'Aqtau", "AQTST",
+ "Heure d'Aqtau", "AQTT"}},
{"Asia/Aqtobe", new String[] {"Heure d'Aqtobe", "AQTT",
- "Heure d'\u00e9t\u00e9 d'Aqtobe", "AQTST"}},
+ "Heure d'\u00e9t\u00e9 d'Aqtobe", "AQTST",
+ "Heure d'Aqtobe", "AQTT"}},
{"Asia/Ashgabat", TMT},
{"Asia/Ashkhabad", TMT},
{"Asia/Baghdad", ARAST},
{"Asia/Bahrain", ARAST},
{"Asia/Baku", new String[] {"Heure d'Azerba\u00efdjan", "AZT",
- "Heure d'\u00e9t\u00e9 d'Azerba\u00efdjan", "AZST"}},
+ "Heure d'\u00e9t\u00e9 d'Azerba\u00efdjan", "AZST",
+ "Heure d'Azerba\u00EFdjan", "AZT"}},
{"Asia/Bangkok", ICT},
{"Asia/Beirut", EET},
{"Asia/Bishkek", new String[] {"Heure du Kirghizistan", "KGT",
- "Heure d'\u00e9t\u00e9 du Kirghizistan", "KGST"}},
+ "Heure d'\u00e9t\u00e9 du Kirghizistan", "KGST",
+ "Heure du Kirghizistan", "KGT"}},
{"Asia/Brunei", new String[] {"Heure du Brunei", "BNT",
- "Heure d'\u00e9t\u00e9 du Brunei", "BNST"}},
+ "Heure d'\u00e9t\u00e9 du Brunei", "BNST",
+ "Heure du Brunei", "BNT"}},
{"Asia/Calcutta", IST},
{"Asia/Choibalsan", new String[] {"Heure de Choibalsan", "CHOT",
- "Heure d'\u00e9t\u00e9 de Choibalsan", "CHOST"}},
+ "Heure d'\u00e9t\u00e9 de Choibalsan", "CHOST",
+ "Heure de Choibalsan", "CHOT"}},
{"Asia/Chongqing", CTT},
{"Asia/Chungking", CTT},
{"Asia/Colombo", IST},
{"Asia/Dacca", BDT},
{"Asia/Dhaka", BDT},
{"Asia/Dili", new String[] {"Heure de Timor-Leste", "TLT",
- "Heure d'\u00e9t\u00e9 de Timor-Leste", "TLST"}},
+ "Heure d'\u00e9t\u00e9 de Timor-Leste", "TLST",
+ "Heure de Timor-Leste", "TLT"}},
{"Asia/Damascus", EET},
{"Asia/Dubai", GST},
{"Asia/Dushanbe", new String[] {"Heure du Tadjikistan", "TJT",
- "Heure d'\u00e9t\u00e9 du Tadjikistan", "TJST"}},
+ "Heure d'\u00e9t\u00e9 du Tadjikistan", "TJST",
+ "Heure du Tadjikistan", "TJT"}},
{"Asia/Gaza", EET},
{"Asia/Harbin", CTT},
{"Asia/Hebron", EET},
{"Asia/Ho_Chi_Minh", ICT},
{"Asia/Hong_Kong", HKT},
{"Asia/Hovd", new String[] {"Heure de Hovd", "HOVT",
- "Heure d'\u00e9t\u00e9 de Hovd", "HOVST"}},
+ "Heure d'\u00e9t\u00e9 de Hovd", "HOVST",
+ "Heure de Hovd", "HOVT"}},
{"Asia/Irkutsk", new String[] {"Heure d'Irkutsk", "IRKT",
- "Heure d'\u00e9t\u00e9 d'Irkutsk", "IRKST"}},
+ "Heure d'\u00e9t\u00e9 d'Irkutsk", "IRKST",
+ "Heure d'Irkutsk", "IRKT"}},
{"Asia/Istanbul", EET},
{"Asia/Jakarta", WIT},
{"Asia/Jayapura", new String[] {"Heure d'Indon\u00e9sie orientale", "WIT",
- "Heure d'\u00e9t\u00e9 d'Indon\u00e9sie orientale", "EIST"}},
+ "Heure d'\u00e9t\u00e9 d'Indon\u00e9sie orientale", "EIST",
+ "Heure d'Indon\u00E9sie orientale", "WIT"}},
{"Asia/Kabul", new String[] {"Heure d'Afghanistan", "AFT",
- "Heure d'\u00e9t\u00e9 d'Afghanistan", "AFST"}},
+ "Heure d'\u00e9t\u00e9 d'Afghanistan", "AFST",
+ "Heure d'Afghanistan", "AFT"}},
{"Asia/Kamchatka", new String[] {"Heure de Petropavlovsk-Kamchatski", "PETT",
- "Heure d'\u00e9t\u00e9 de Petropavlovsk-Kamchatski", "PETST"}},
+ "Heure d'\u00e9t\u00e9 de Petropavlovsk-Kamchatski", "PETST",
+ "Heure de Petropavlovsk-Kamchatski", "PETT"}},
{"Asia/Karachi", PKT},
{"Asia/Kashgar", CTT},
{"Asia/Kathmandu", NPT},
{"Asia/Katmandu", NPT},
{"Asia/Khandyga", new String[] {"Heure de Khandyga", "YAKT",
- "Heure d'\u00E9t\u00E9 de Khandyga", "YAKST"}},
+ "Heure d'\u00E9t\u00E9 de Khandyga", "YAKST",
+ "Heure de Khandyga", "YAKT"}},
{"Asia/Kolkata", IST},
{"Asia/Krasnoyarsk", new String[] {"Heure de Krasno\u00efarsk", "KRAT",
- "Heure d'\u00e9t\u00e9 de Krasno\u00efarsk", "KRAST"}},
+ "Heure d'\u00e9t\u00e9 de Krasno\u00efarsk", "KRAST",
+ "Heure de Krasno\u00EFarsk", "KRAT"}},
{"Asia/Kuala_Lumpur", MYT},
{"Asia/Kuching", MYT},
{"Asia/Kuwait", ARAST},
{"Asia/Macao", CTT},
{"Asia/Macau", CTT},
{"Asia/Magadan", new String[] {"Heure de Magadan", "MAGT",
- "Heure d'\u00e9t\u00e9 de Magadan", "MAGST"}},
+ "Heure d'\u00e9t\u00e9 de Magadan", "MAGST",
+ "Heure de Magadan", "MAGT"}},
{"Asia/Makassar", CIT},
{"Asia/Manila", new String[] {"Heure des Philippines", "PHT",
- "Heure d'\u00e9t\u00e9 des Philippines", "PHST"}},
+ "Heure d'\u00e9t\u00e9 des Philippines", "PHST",
+ "Heure des Philippines", "PHT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", NOVT},
{"Asia/Novosibirsk", NOVT},
{"Asia/Oral", new String[] {"Heure d'Oral", "ORAT",
- "Heure d'\u00e9t\u00e9 d'Oral", "ORAST"}},
+ "Heure d'\u00e9t\u00e9 d'Oral", "ORAST",
+ "Heure d'Oral", "ORAT"}},
{"Asia/Omsk", new String[] {"Heure d'Omsk", "OMST",
- "Heure d'\u00e9t\u00e9 d'Omsk", "OMSST"}},
+ "Heure d'\u00e9t\u00e9 d'Omsk", "OMSST",
+ "Heure d'Omsk", "OMST"}},
{"Asia/Phnom_Penh", ICT},
{"Asia/Pontianak", WIT},
{"Asia/Pyongyang", KST},
{"Asia/Qatar", ARAST},
{"Asia/Qyzylorda", new String[] {"Heure de Kyzylorda", "QYZT",
- "Heure d'\u00e9t\u00e9 de Kyzylorda", "QYZST"}},
+ "Heure d'\u00e9t\u00e9 de Kyzylorda", "QYZST",
+ "Heure de Kyzylorda", "QYZT"}},
{"Asia/Rangoon", new String[] {"Heure de Myanmar", "MMT",
- "Heure d'\u00e9t\u00e9 de Myanmar", "MMST"}},
+ "Heure d'\u00e9t\u00e9 de Myanmar", "MMST",
+ "Heure de Myanmar", "MMT"}},
{"Asia/Riyadh", ARAST},
{"Asia/Saigon", ICT},
{"Asia/Sakhalin", new String[] {"Heure de Sakhalin", "SAKT",
- "Heure d'\u00e9t\u00e9 de Sakhalin", "SAKST"}},
+ "Heure d'\u00e9t\u00e9 de Sakhalin", "SAKST",
+ "Heure de Sakhalin", "SAKT"}},
{"Asia/Samarkand", UZT},
{"Asia/Seoul", KST},
{"Asia/Singapore", SGT},
@@ -577,7 +697,8 @@
{"Asia/Tel_Aviv", ISRAEL},
{"Asia/Tashkent", UZT},
{"Asia/Tbilisi", new String[] {"Heure de G\u00e9orgie", "GET",
- "Heure d'\u00e9t\u00e9 de G\u00e9orgie", "GEST"}},
+ "Heure d'\u00e9t\u00e9 de G\u00e9orgie", "GEST",
+ "Heure de G\u00E9orgie", "GET"}},
{"Asia/Tehran", IRT},
{"Asia/Thimbu", BTT},
{"Asia/Thimphu", BTT},
@@ -586,31 +707,39 @@
{"Asia/Ulan_Bator", ULAT},
{"Asia/Urumqi", CTT},
{"Asia/Ust-Nera", new String[] {"Heure d'Ust-Nera", "VLAT",
- "Heure d'\u00E9t\u00E9 d'Ust-Nera", "VLAST"}},
+ "Heure d'\u00E9t\u00E9 d'Ust-Nera", "VLAST",
+ "Heure d'Ust-Nera", "VLAT"}},
{"Asia/Vientiane", ICT},
{"Asia/Vladivostok", new String[] {"Heure de Vladivostok", "VLAT",
- "Heure d'\u00e9t\u00e9 de Vladivostok", "VLAST"}},
+ "Heure d'\u00e9t\u00e9 de Vladivostok", "VLAST",
+ "Heure de Vladivostok", "VLAT"}},
{"Asia/Yakutsk", new String[] {"Heure du Iakoutsk", "YAKT",
- "Heure d'\u00e9t\u00e9 du Iakoutsk", "YAKST"}},
+ "Heure d'\u00e9t\u00e9 du Iakoutsk", "YAKST",
+ "Heure du Iakoutsk", "YAKT"}},
{"Asia/Yekaterinburg", new String[] {"Heure de Yekaterinburg", "YEKT",
- "Heure d'\u00e9t\u00e9 de Yekaterinburg", "YEKST"}},
+ "Heure d'\u00e9t\u00e9 de Yekaterinburg", "YEKST",
+ "Heure de Yekaterinburg", "YEKT"}},
{"Asia/Yerevan", ARMT},
{"Atlantic/Azores", new String[] {"Heure des A\u00e7ores", "AZOT",
- "Heure d'\u00e9t\u00e9 des A\u00e7ores", "AZOST"}},
+ "Heure d'\u00e9t\u00e9 des A\u00e7ores", "AZOST",
+ "Heure des A\u00E7ores", "AZOT"}},
{"Atlantic/Bermuda", AST},
{"Atlantic/Canary", WET},
{"Atlantic/Cape_Verde", new String[] {"Heure de Cap-Vert", "CVT",
- "Heure d'\u00e9t\u00e9 de Cap-Vert", "CVST"}},
+ "Heure d'\u00e9t\u00e9 de Cap-Vert", "CVST",
+ "Heure de Cap-Vert", "CVT"}},
{"Atlantic/Faeroe", WET},
{"Atlantic/Faroe", WET},
{"Atlantic/Jan_Mayen", CET},
{"Atlantic/Madeira", WET},
{"Atlantic/Reykjavik", GMT},
{"Atlantic/South_Georgia", new String[] {"Heure normale de G\u00e9orgie du Sud", "GST",
- "Heure avanc\u00e9e de G\u00e9orgie du Sud", "GDT"}},
+ "Heure avanc\u00e9e de G\u00e9orgie du Sud", "GDT",
+ "G\u00E9orgie du Sud", "GT"}},
{"Atlantic/St_Helena", GMT},
{"Atlantic/Stanley", new String[] {"Heure des \u00eeles Falkland", "FKT",
- "Heure d'\u00e9t\u00e9 des \u00eeles Falkland", "FKST"}},
+ "Heure d'\u00e9t\u00e9 des \u00eeles Falkland", "FKST",
+ "Heure des \u00EEles Falkland", "FKT"}},
{"Australia/ACT", EST_NSW},
{"Australia/Adelaide", ADELAIDE},
{"Australia/Brisbane", BRISBANE},
@@ -619,7 +748,8 @@
{"Australia/Currie", EST_NSW},
{"Australia/Darwin", DARWIN},
{"Australia/Eucla", new String[] {"Heure standard de l'Australie occidentale (centre)", "CWST",
- "Heure d'\u00E9t\u00E9 de l'Australie occidentale (centre)", "CWST"}},
+ "Heure d'\u00E9t\u00E9 de l'Australie occidentale (centre)", "CWST",
+ "Heure de l'Australie occidentale (centre)", "CWT"}},
{"Australia/Hobart", TASMANIA},
{"Australia/LHI", LORD_HOWE},
{"Australia/Lindeman", BRISBANE},
@@ -704,7 +834,8 @@
{"Europe/Riga", EET},
{"Europe/Rome", CET},
{"Europe/Samara", new String[] {"Heure normale de Samara", "SAMT",
- "Heure d'\u00e9t\u00e9 de Samara", "SAMST"}},
+ "Heure d'\u00e9t\u00e9 de Samara", "SAMST",
+ "Heure de Samara", "SAMT"}},
{"Europe/San_Marino", CET},
{"Europe/Sarajevo", CET},
{"Europe/Simferopol", EET},
@@ -720,7 +851,8 @@
{"Europe/Vienna", CET},
{"Europe/Vilnius", EET},
{"Europe/Volgograd", new String[] {"Heure de Volgograd", "VOLT",
- "Heure d'\u00e9t\u00e9 de Volgograd", "VOLST"}},
+ "Heure d'\u00e9t\u00e9 de Volgograd", "VOLST",
+ "Heure de Volgograd", "VOLT"}},
{"Europe/Warsaw", CET},
{"Europe/Zagreb", CET},
{"Europe/Zaporozhye", EET},
@@ -734,30 +866,39 @@
{"IST", IST},
{"Indian/Antananarivo", EAT},
{"Indian/Chagos", new String[] {"Heure de l'oc\u00e9an Indien", "IOT",
- "Heure d'\u00e9t\u00e9 de l'oc\u00e9an Indien", "IOST"}},
+ "Heure d'\u00e9t\u00e9 de l'oc\u00e9an Indien", "IOST",
+ "Heure de l'oc\u00E9an Indien", "IOT"}},
{"Indian/Christmas", new String[] {"Heure de l'\u00cele Christmas", "CXT",
- "Heure d'\u00e9t\u00e9 de l'\u00cele Christmas", "CXST"}},
+ "Heure d'\u00e9t\u00e9 de l'\u00cele Christmas", "CXST",
+ "Heure de l'Ile Christmas", "CIT"}},
{"Indian/Cocos", new String[] {"Heure des \u00celes Cocos", "CCT",
- "Heure d'\u00e9t\u00e9 des \u00celes Cocos", "CCST"}},
+ "Heure d'\u00e9t\u00e9 des \u00celes Cocos", "CCST",
+ "Heure des Iles Cocos", "CCT"}},
{"Indian/Comoro", EAT},
{"Indian/Kerguelen", new String[] {"Heure des Terres australes antartiques fran\u00e7aises", "TFT",
- "Heure d'\u00e9t\u00e9 des Terres australes antartiques fran\u00e7aises", "TFST"}},
+ "Heure d'\u00e9t\u00e9 des Terres australes antartiques fran\u00e7aises", "TFST",
+ "Heure des Terres australes antarctiques fran\u00E7aises", "TFT"}},
{"Indian/Mahe", new String[] {"Heure des Seychelles", "SCT",
- "Heure d'\u00e9t\u00e9 des Seychelles", "SCST"}},
+ "Heure d'\u00e9t\u00e9 des Seychelles", "SCST",
+ "Heure des Seychelles", "SCT"}},
{"Indian/Maldives", new String[] {"Heure des Maldives", "MVT",
- "Heure d'\u00e9t\u00e9 des Maldives", "MVST"}},
+ "Heure d'\u00e9t\u00e9 des Maldives", "MVST",
+ "Heure des Maldives", "MVT"}},
{"Indian/Mauritius", new String[] {"Heure de Maurice", "MUT",
- "Heure d'\u00e9t\u00e9 de Maurice", "MUST"}},
+ "Heure d'\u00e9t\u00e9 de Maurice", "MUST",
+ "Heure de Maurice", "MUT"}},
{"Indian/Mayotte", EAT},
{"Indian/Reunion", new String[] {"Heure de la R\u00e9union", "RET",
- "Heure d'\u00e9t\u00e9 de la R\u00e9union", "REST"}},
+ "Heure d'\u00e9t\u00e9 de la R\u00e9union", "REST",
+ "Heure de la R\u00E9union", "RET"}},
{"Israel", ISRAEL},
{"Jamaica", EST},
{"Japan", JST},
{"Kwajalein", MHT},
{"Libya", EET},
{"MET", new String[] {"Heure de l'Europe centrale", "MET",
- "Heure d'\u00e9t\u00e9 de l'Europe centrale", "MEST"}},
+ "Heure d'\u00e9t\u00e9 de l'Europe centrale", "MEST",
+ "MET", "MET"}},
{"Mexico/BajaNorte", PST},
{"Mexico/BajaSur", MST},
{"Mexico/General", CST},
@@ -777,61 +918,82 @@
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
{"Pacific/Efate", new String[] {"Heure du Vanuatu", "VUT",
- "Heure d'\u00e9t\u00e9 du Vanuatu", "VUST"}},
+ "Heure d'\u00e9t\u00e9 du Vanuatu", "VUST",
+ "Heure du Vanuatu", "VUT"}},
{"Pacific/Enderbury", new String[] {"Heure de l'\u00cele de Phoenix", "PHOT",
- "Heure d'\u00e9t\u00e9 de l'\u00cele de Phoenix", "PHOST"}},
+ "Heure d'\u00e9t\u00e9 de l'\u00cele de Phoenix", "PHOST",
+ "Heure de l'Ile de Phoenix", "PHOT"}},
{"Pacific/Fakaofo", new String[] {"Heure de Tokelau", "TKT",
- "Heure d'\u00e9t\u00e9 de Tokelau", "TKST"}},
+ "Heure d'\u00e9t\u00e9 de Tokelau", "TKST",
+ "Heure de Tokelau", "TKT"}},
{"Pacific/Fiji", new String[] {"Heure de Fidji", "FJT",
- "Heure d'\u00e9t\u00e9 de Fidji", "FJST"}},
+ "Heure d'\u00e9t\u00e9 de Fidji", "FJST",
+ "Heure de Fidji", "FJT"}},
{"Pacific/Funafuti", new String[] {"Heure de Tuvalu", "TVT",
- "Heure d'\u00e9t\u00e9 de Tuvalu", "TVST"}},
+ "Heure d'\u00e9t\u00e9 de Tuvalu", "TVST",
+ "Heure de Tuvalu", "TVT"}},
{"Pacific/Galapagos", new String[] {"Heure des Galapagos", "GALT",
- "Heure d'\u00e9t\u00e9 des Galapagos", "GALST"}},
+ "Heure d'\u00e9t\u00e9 des Galapagos", "GALST",
+ "Heure des Galapagos", "GALT"}},
{"Pacific/Gambier", GAMBIER},
{"Pacific/Guadalcanal", SBT},
{"Pacific/Guam", ChST},
{"Pacific/Johnston", HST},
{"Pacific/Kiritimati", new String[] {"Heure de l'\u00cele de Line", "LINT",
- "Heure d'\u00e9t\u00e9 de l'\u00cele de Line", "LINST"}},
+ "Heure d'\u00e9t\u00e9 de l'\u00cele de Line", "LINST",
+ "Heure de l'Ile de Line", "LINT"}},
{"Pacific/Kosrae", new String[] {"Heure de Kusaie", "KOST",
- "Heure d'\u00e9t\u00e9 de Kusaie", "KOSST"}},
+ "Heure d'\u00e9t\u00e9 de Kusaie", "KOSST",
+ "Heure de Kusaie", "KOST"}},
{"Pacific/Kwajalein", MHT},
{"Pacific/Majuro", MHT},
{"Pacific/Marquesas", new String[] {"Heure des Marquises", "MART",
- "Heure d'\u00e9t\u00e9 des Marquises", "MARST"}},
+ "Heure d'\u00e9t\u00e9 des Marquises", "MARST",
+ "Heure des Marquises", "MART"}},
{"Pacific/Midway", SAMOA},
{"Pacific/Nauru", new String[] {"Heure de Nauru", "NRT",
- "Heure d'\u00e9t\u00e9 de Nauru", "NRST"}},
+ "Heure d'\u00e9t\u00e9 de Nauru", "NRST",
+ "Heure de Nauru", "NRT"}},
{"Pacific/Niue", new String[] {"Heure de Niue", "NUT",
- "Heure d'\u00e9t\u00e9 de Niue", "NUST"}},
+ "Heure d'\u00e9t\u00e9 de Niue", "NUST",
+ "Heure de Niue", "NUT"}},
{"Pacific/Norfolk", new String[] {"Heure de Norfolk", "NFT",
- "Heure d'\u00e9t\u00e9 de Norfolk", "NFST"}},
+ "Heure d'\u00e9t\u00e9 de Norfolk", "NFST",
+ "Heure de Norfolk", "NFT"}},
{"Pacific/Noumea", new String[] {"Heure de Nouvelle-Cal\u00e9donie", "NCT",
- "Heure d'\u00e9t\u00e9 de Nouvelle-Cal\u00e9donie", "NCST"}},
+ "Heure d'\u00e9t\u00e9 de Nouvelle-Cal\u00e9donie", "NCST",
+ "Heure de Nouvelle-Cal\u00E9donie", "NCT"}},
{"Pacific/Pago_Pago", SAMOA},
{"Pacific/Palau", new String[] {"Heure de Palaos", "PWT",
- "Heure d'\u00e9t\u00e9 de Palaos", "PWST"}},
+ "Heure d'\u00e9t\u00e9 de Palaos", "PWST",
+ "Heure de Palaos", "PWT"}},
{"Pacific/Pitcairn", PITCAIRN},
{"Pacific/Pohnpei", PONT},
{"Pacific/Ponape", PONT},
{"Pacific/Port_Moresby", new String[] {"Heure de Papouasie-Nouvelle-Guin\u00e9e", "PGT",
- "Heure d'\u00e9t\u00e9 de de Papouasie-Nouvelle-Guin\u00e9e", "PGST"}},
+ "Heure d'\u00e9t\u00e9 de de Papouasie-Nouvelle-Guin\u00e9e", "PGST",
+ "Heure de Papouasie-Nouvelle-Guin\u00E9e", "PGT"}},
{"Pacific/Rarotonga", new String[] {"Heure des \u00celes Cook", "CKT",
- "Heure d'\u00e9t\u00e9 des \u00celes Cook", "CKHST"}},
+ "Heure d'\u00e9t\u00e9 des \u00celes Cook", "CKHST",
+ "Heure des Iles Cook", "CKT"}},
{"Pacific/Saipan", ChST},
{"Pacific/Samoa", SAMOA},
{"Pacific/Tahiti", new String[] {"Heure de Tahiti", "TAHT",
- "Heure d'\u00e9t\u00e9 de Tahiti", "TAHST"}},
+ "Heure d'\u00e9t\u00e9 de Tahiti", "TAHST",
+ "Heure de Tahiti", "TAHT"}},
{"Pacific/Tarawa", new String[] {"Heure de Kiribati", "GILT",
- "Heure d'\u00e9t\u00e9 de Kiribati", "GILST"}},
+ "Heure d'\u00e9t\u00e9 de Kiribati", "GILST",
+ "Heure de Kiribati", "GILT"}},
{"Pacific/Tongatapu", new String[] {"Heure de Tonga", "TOT",
- "Heure d'\u00e9t\u00e9 de Tonga", "TOST"}},
+ "Heure d'\u00e9t\u00e9 de Tonga", "TOST",
+ "Heure de Tonga", "TOT"}},
{"Pacific/Truk", CHUT},
{"Pacific/Wake", new String[] {"Heure de Wake", "WAKT",
- "Heure d'\u00e9t\u00e9 de Wake", "WAKST"}},
+ "Heure d'\u00e9t\u00e9 de Wake", "WAKST",
+ "Heure de Wake", "WAKT"}},
{"Pacific/Wallis", new String[] {"Heure de Wallis et Futuna", "WFT",
- "Heure d'\u00e9t\u00e9 de Wallis et Futuna", "WFST"}},
+ "Heure d'\u00e9t\u00e9 de Wallis et Futuna", "WFST",
+ "Heure de Wallis-et-Futuna", "WFT"}},
{"Pacific/Yap", CHUT},
{"Poland", CET},
{"PRC", CTT},
--- a/jdk/src/share/classes/sun/util/resources/it/TimeZoneNames_it.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/util/resources/it/TimeZoneNames_it.java Wed Jul 05 19:27:58 2017 +0200
@@ -46,159 +46,235 @@
protected final Object[][] getContents() {
String ACT[] = new String[] {"Ora di Acre", "ACT",
- "Ora estiva di Acre", "ACST"};
+ "Ora estiva di Acre", "ACST",
+ "Ora di Acre", "ACT"};
String ADELAIDE[] = new String[] {"Ora standard centrale (Australia del Sud)", "CST",
- "Ora estiva centrale (Australia del Sud)", "CST"};
+ "Ora estiva centrale (Australia del Sud)", "CST",
+ "Ora fuso centrale (Australia del Sud)", "CT"};
String AGT[] = new String[] {"Ora dell'Argentina", "ART",
- "Ora estiva dell'Argentina", "ARST"};
+ "Ora estiva dell'Argentina", "ARST",
+ "Ora dell'Argentina", "ART"};
String AKST[] = new String[] {"Ora solare dell'Alaska", "AKST",
- "Ora legale dell'Alaska", "AKDT"};
+ "Ora legale dell'Alaska", "AKDT",
+ "Ora Alaska", "AKT"};
String AMT[] = new String[] {"Ora solare dell'Amazzonia", "AMT",
- "Ora estiva dell'Amazzonia", "AMST"};
+ "Ora estiva dell'Amazzonia", "AMST",
+ "Ora dell'Amazzonia", "AMT"};
String ARAST[] = new String[] {"Ora solare dell'Arabia", "AST",
- "Ora legale dell'Arabia", "ADT"};
+ "Ora legale dell'Arabia", "ADT",
+ "Ora Arabia Saudita", "AT"};
String ARMT[] = new String[] {"Ora dell'Armenia", "AMT",
- "Ora estiva dell'Armenia", "AMST"};
+ "Ora estiva dell'Armenia", "AMST",
+ "Ora dell'Armenia", "AMT"};
String AST[] = new String[] {"Ora solare dell'Atlantico occidentale", "AST",
- "Ora legale dell'Atlantico occidentale", "ADT"};
+ "Ora legale dell'Atlantico occidentale", "ADT",
+ "Fuso dell'Atlantico", "AT"};
String BDT[] = new String[] {"Ora del Bangladesh", "BDT",
- "Ora estiva del Bangladesh", "BDST"};
+ "Ora estiva del Bangladesh", "BDST",
+ "Ora del Bangladesh", "BDT"};
String BRISBANE[] = new String[] {"Ora standard orientale (Queensland)", "EST",
- "Ora estiva orientale (Queensland)", "EST"};
+ "Ora estiva orientale (Queensland)", "EST",
+ "Ora fuso orientale (Queensland)", "ET"};
String BROKEN_HILL[] = new String[] {"Ora standard centrale (Australia del Sud/Nuovo Galles del Sud)", "CST",
- "Ora estiva centrale (Australia del Sud/Nuovo Galles del Sud)", "CST"};
+ "Ora estiva centrale (Australia del Sud/Nuovo Galles del Sud)", "CST",
+ "Ora fuso centrale (Australia del Sud/Nuovo Galles del Sud)", "CT"};
String BRT[] = new String[] {"Ora del Brasile", "BRT",
- "Ora estiva del Brasile", "BRST"};
+ "Ora estiva del Brasile", "BRST",
+ "Ora di Brasilia", "BRT"};
String BTT[] = new String[] {"Ora del Bhutan", "BTT",
- "Ora estiva del Bhutan", "BTST"};
+ "Ora estiva del Bhutan", "BTST",
+ "Ora del Bhutan", "BTT"};
String CAT[] = new String[] {"Ora dell'Africa centrale", "CAT",
- "Ora estiva dell'Africa centrale", "CAST"};
+ "Ora estiva dell'Africa centrale", "CAST",
+ "Ora dell'Africa centrale", "CAT"};
String CET[] = new String[] {"Ora dell'Europa centrale", "CET",
- "Ora estiva dell'Europa centrale", "CEST"};
+ "Ora estiva dell'Europa centrale", "CEST",
+ "Ora dell'Europa centrale", "CET"};
String CHAST[] = new String[] {"Ora di Chatham standard", "CHAST",
- "Ora legale di Chatham", "CHADT"};
+ "Ora legale di Chatham", "CHADT",
+ "Ora Chatham", "CHAT"};
String CHUT[] = new String[] {"Ora di Chuuk", "CHUT",
- "Ora estiva di Chuuk", "CHUST"};
+ "Ora estiva di Chuuk", "CHUST",
+ "Ora di Chuuk", "CHUT"};
String CIT[] = new String[] {"Ora dell'Indonesia centrale", "WITA",
- "Ora estiva dell'Indonesia centrale", "CIST"};
+ "Ora estiva dell'Indonesia centrale", "CIST",
+ "Ora dell'Indonesia centrale", "WITA"};
String CLT[] = new String[] {"Ora del Cile", "CLT",
- "Ora estiva del Cile", "CLST"};
+ "Ora estiva del Cile", "CLST",
+ "Ora del Cile", "CLT"};
String CST[] = new String[] {"Ora solare USA centrale", "CST",
- "Ora legale USA centrale", "CDT"};
+ "Ora legale USA centrale", "CDT",
+ "Ora fuso centrale", "CT"};
String CTT[] = new String[] {"Ora solare della Cina", "CST",
- "Ora legale della Cina", "CDT"};
+ "Ora legale della Cina", "CDT",
+ "Ora Cina", "CT"};
String CUBA[] = new String[] {"Ora solare Cuba", "CST",
- "Ora legale Cuba", "CDT"};
+ "Ora legale Cuba", "CDT",
+ "Ora di Cuba", "CT"};
String DARWIN[] = new String[] {"Ora standard centrale (Territori del Nord)", "CST",
- "Ora estiva centrale (Territori del Nord)", "CST"};
+ "Ora estiva centrale (Territori del Nord)", "CST",
+ "Ora fuso centrale (Territori del Nord)", "CT"};
String DUBLIN[] = new String[] {"Ora media di Greenwich", "GMT",
- "Ora estiva irlandese", "IST"};
+ "Ora estiva irlandese", "IST",
+ "Ora irlandese", "IT"};
String EAT[] = new String[] {"Ora dell'Africa orientale", "EAT",
- "Ora estiva dell'Africa orientale", "EAST"};
+ "Ora estiva dell'Africa orientale", "EAST",
+ "Ora dell'Africa orientale", "EAT"};
String EASTER[] = new String[] {"Ora dell'Isola di Pasqua", "EAST",
- "Ora estiva dell'Isola di Pasqua", "EASST"};
+ "Ora estiva dell'Isola di Pasqua", "EASST",
+ "Ora dell'Isola di Pasqua", "EAST"};
String EET[] = new String[] {"Ora dell'Europa orientale", "EET",
- "Ora estiva dell'Europa orientale", "EEST"};
+ "Ora estiva dell'Europa orientale", "EEST",
+ "Ora dell'Europa orientale", "EET"};
String EGT[] = new String[] {"Ora della Groenlandia orientale", "EGT",
- "Ora estiva della Groenlandia orientale", "EGST"};
+ "Ora estiva della Groenlandia orientale", "EGST",
+ "Ora della Groenlandia orientale", "EGT"};
String EST[] = new String[] {"Ora solare USA orientale", "EST",
- "Ora legale USA orientale", "EDT"};
+ "Ora legale USA orientale", "EDT",
+ "Fuso orientale", "ET"};
String EST_NSW[] = new String[] {"Ora standard dell'Australia orientale (Nuovo Galles del Sud)", "EST",
- "Ora estiva dell'Australia orientale (Nuovo Galles del Sud)", "EST"};
+ "Ora estiva dell'Australia orientale (Nuovo Galles del Sud)", "EST",
+ "Ora fuso orientale (Nuovo Galles del Sud)", "ET"};
String FET[] = new String[] {"Ora dei paesi europei pi\u00F9 orientali", "FET",
- "Ora estiva dei paesi europei pi\u00F9 orientali", "FEST"};
+ "Ora estiva dei paesi europei pi\u00F9 orientali", "FEST",
+ "Ora dei paesi europei pi\u00F9 orientali", "FET"};
String GHMT[] = new String[] {"Ora media del Ghana", "GMT",
- "Ora legale del Ghana", "GHST"};
+ "Ora legale del Ghana", "GHST",
+ "Ora media del Ghana", "GMT"};
String GAMBIER[] = new String[] {"Ora di Gambier", "GAMT",
- "Ora estiva di Gambier", "GAMST"};
+ "Ora estiva di Gambier", "GAMST",
+ "Ora di Gambier", "GAMT"};
String GMT[] = new String[] {"Ora media di Greenwich", "GMT",
+ "Ora media di Greenwich", "GMT",
"Ora media di Greenwich", "GMT"};
String GMTBST[] = new String[] {"Ora media di Greenwich", "GMT",
- "Ora estiva britannica", "BST"};
+ "Ora estiva britannica", "BST",
+ "Ora britannica", "BT"};
String GST[] = new String[] {"Ora solare del golfo", "GST",
- "Ora legale del golfo", "GDT"};
+ "Ora legale del golfo", "GDT",
+ "Ora del golfo", "GT"};
String HAST[] = new String[] {"Ora solare delle Isole Hawaii-Aleutine", "HAST",
- "Ora solare delle Isole Hawaii-Aleutine", "HADT"};
+ "Ora solare delle Isole Hawaii-Aleutine", "HADT",
+ "Ora Hawaii-Aleutine", "HAT"};
String HKT[] = new String[] {"Ora di Hong Kong", "HKT",
- "Ora estiva di Hong Kong", "HKST"};
+ "Ora estiva di Hong Kong", "HKST",
+ "Ora di Hong Kong", "HKT"};
String HST[] = new String[] {"Ora solare delle Isole Hawaii", "HST",
- "Ora legale delle Isole Hawaii", "HDT"};
+ "Ora legale delle Isole Hawaii", "HDT",
+ "Ora Hawaii", "HT"};
String ICT[] = new String[] {"Ora dell'Indocina", "ICT",
- "Ora estiva dell'Indocina", "ICST"};
+ "Ora estiva dell'Indocina", "ICST",
+ "Ora dell'Indocina", "ICT"};
String IRT[] = new String[] {"Ora solare Iran", "IRST",
- "Ora legale Iran", "IRDT"};
+ "Ora legale Iran", "IRDT",
+ "Ora Iran", "IRT"};
String ISRAEL[] = new String[] {"Ora standard di Israele", "IST",
- "Ora legale di Israele", "IDT"};
+ "Ora legale di Israele", "IDT",
+ "Ora Israele", "IT"};
String IST[] = new String[] {"Ora solare dell'India", "IST",
- "Ora legale dell'India", "IDT"};
+ "Ora legale dell'India", "IDT",
+ "Ora India", "IT"};
String JST[] = new String[] {"Ora solare del Giappone", "JST",
- "Ora legale del Giappone", "JDT"};
+ "Ora legale del Giappone", "JDT",
+ "Ora Giappone", "JT"};
String KST[] = new String[] {"Ora solare della Corea", "KST",
- "Ora legale della Corea", "KDT"};
+ "Ora legale della Corea", "KDT",
+ "Ora Corea", "KT"};
String LORD_HOWE[] = new String[] {"Ora standard di Lord Howe", "LHST",
- "Ora estiva di Lord Howe", "LHST"};
+ "Ora estiva di Lord Howe", "LHST",
+ "Ora di Lord Howe", "LHT"};
String MHT[] = new String[] {"Ora delle Isole Marshall", "MHT",
- "Ora estiva delle Isole Marshall", "MHST"};
+ "Ora estiva delle Isole Marshall", "MHST",
+ "Ora delle Isole Marshall", "MHT"};
String MSK[] = new String[] {"Ora standard di Mosca", "MSK",
- "Ora legale di Mosca", "MSD"};
+ "Ora legale di Mosca", "MSD",
+ "Ora Mosca", "MT"};
String MST[] = new String[] {"Ora solare USA occidentale", "MST",
- "Ora legale USA occidentale", "MDT"};
+ "Ora legale USA occidentale", "MDT",
+ "Ora fuso occidentale", "MT"};
String MYT[] = new String[] {"Ora della Malaysia", "MYT",
- "Ora estiva della Malaysia", "MYST"};
+ "Ora estiva della Malaysia", "MYST",
+ "Ora della Malaysia", "MYT"};
String NORONHA[] = new String[] {"Ora di Fernando de Noronha", "FNT",
- "Ora estiva di Fernando de Noronha", "FNST"};
+ "Ora estiva di Fernando de Noronha", "FNST",
+ "Ora di Fernando de Noronha", "FNT"};
String NOVT[] = new String[] {"Ora di Novosibirsk", "NOVT",
- "Ora estiva di Novosibirsk", "NOVST"};
+ "Ora estiva di Novosibirsk", "NOVST",
+ "Ora di Novosibirsk", "NOVT"};
String NPT[] = new String[] {"Ora del Nepal", "NPT",
- "Ora estiva del Nepal", "NPST"};
+ "Ora estiva del Nepal", "NPST",
+ "Ora del Nepal", "NPT"};
String NST[] = new String[] {"Ora solare di Terranova", "NST",
- "Ora legale di Terranova", "NDT"};
+ "Ora legale di Terranova", "NDT",
+ "Ora Terranova", "NT"};
String NZST[] = new String[] {"Ora solare della Nuova Zelanda", "NZST",
- "Ora legale della Nuova Zelanda", "NZDT"};
+ "Ora legale della Nuova Zelanda", "NZDT",
+ "Ora Nuova Zelanda", "NZT"};
String PITCAIRN[] = new String[] {"Ora standard di Pitcairn", "PST",
- "Ora legale di Pitcairn", "PDT"};
+ "Ora legale di Pitcairn", "PDT",
+ "Ora Pitcairn", "PT"};
String PKT[] = new String[] {"Ora del Pakistan", "PKT",
- "Ora estiva del Pakistan", "PKST"};
+ "Ora estiva del Pakistan", "PKST",
+ "Ora del Pakistan", "PKT"};
String PONT[] = new String[] {"Ora di Pohnpei", "PONT",
- "Ora estiva di Pohnpei", "PONST"};
+ "Ora estiva di Pohnpei", "PONST",
+ "Ora Ponape", "PONT"};
String PST[] = new String[] {"Ora solare della costa occidentale USA", "PST",
- "Ora legale della costa occidentale USA", "PDT"};
+ "Ora legale della costa occidentale USA", "PDT",
+ "Fuso del Pacifico", "PT"};
String SAST[] = new String[] {"Ora solare del Sudafrica", "SAST",
- "Ora estiva del Sudafrica", "SAST"};
+ "Ora estiva del Sudafrica", "SAST",
+ "Ora Sudafrica", "SAT"};
String SBT[] = new String[] {"Ora delle Isole Salomone", "SBT",
- "Ora estiva delle Isole Salomone", "SBST"};
+ "Ora estiva delle Isole Salomone", "SBST",
+ "Ora delle Isole Salomone", "SBT"};
String SGT[] = new String[] {"Ora di Singapore", "SGT",
- "Ora estiva di Singapore", "SGST"};
+ "Ora estiva di Singapore", "SGST",
+ "Ora di Singapore", "SGT"};
String SLST[] = new String[] {"Ora media di Greenwich", "GMT",
- "Ora legale della Sierra Leone", "SLST"};
+ "Ora legale della Sierra Leone", "SLST",
+ "Ora della Sierra Leone", "SLT"};
String TASMANIA[] = new String[] {"Ora standard orientale (Tasmania)", "EST",
- "Ora estiva orientale (Tasmania)", "EST"};
+ "Ora estiva orientale (Tasmania)", "EST",
+ "Ora fuso orientale (Tasmania)", "ET"};
String TMT[] = new String[] {"Ora del Turkmenistan", "TMT",
- "Ora estiva del Turkmenistan", "TMST"};
+ "Ora estiva del Turkmenistan", "TMST",
+ "Ora del Turkmenistan", "TMT"};
String ULAT[]= new String[] {"Ora di Ulaanbaatar", "ULAT",
- "Ora estiva di Ulaanbaatar", "ULAST"};
+ "Ora estiva di Ulaanbaatar", "ULAST",
+ "Ora di Ulaanbaatar", "ULAT"};
String WART[] = new String[] {"Ora dell'Argentina occidentale", "WART",
"Ora estiva dell'Argentina occidentale", "WARST"};
String WAT[] = new String[] {"Ora dell'Africa occidentale", "WAT",
- "Ora estiva dell'Africa occidentale", "WAST"};
+ "Ora estiva dell'Africa occidentale", "WAST",
+ "Ora dell'Africa occidentale", "WAT"};
String WET[] = new String[] {"Ora dell'Europa occidentale", "WET",
- "Ora estiva dell'Europa occidentale", "WEST"};
+ "Ora estiva dell'Europa occidentale", "WEST",
+ "Ora dell'Europa occidentale", "WET"};
String WIT[] = new String[] {"Ora dell'Indonesia occidentale", "WIB",
- "Ora estiva dell'Indonesia occidentale", "WIST"};
+ "Ora estiva dell'Indonesia occidentale", "WIST",
+ "Ora dell'Indonesia occidentale", "WIB"};
String WST_AUS[] = new String[] {"Ora standard dell'Australia occidentale", "WST",
- "Ora estiva dell'Australia occidentale", "WST"};
+ "Ora estiva dell'Australia occidentale", "WST",
+ "Ora Australia occidentale", "WT"};
String SAMOA[] = new String[] {"Ora standard di Samoa", "SST",
- "Ora legale di Samoa", "SDT"};
+ "Ora legale di Samoa", "SDT",
+ "Ora Samoa", "ST"};
String WST_SAMOA[] = new String[] {"Ora di Samoa", "WST",
- "Ora estiva di Samoa", "WSDT"};
+ "Ora estiva di Samoa", "WSDT",
+ "Ora di Samoa occidentale", "WST"};
String ChST[] = new String[] {"Ora standard di Chamorro", "ChST",
- "Ora legale di Chamorro", "ChDT"};
+ "Ora legale di Chamorro", "ChDT",
+ "Ora Chamorro", "ChT"};
String VICTORIA[] = new String[] {"Ora standard orientale (Victoria)", "EST",
- "Ora estiva orientale (Victoria)", "EST"};
+ "Ora estiva orientale (Victoria)", "EST",
+ "Ora fuso orientale (Victoria)", "ET"};
String UTC[] = new String[] {"Tempo universale coordinato", "UTC",
+ "Tempo universale coordinato", "UTC",
"Tempo universale coordinato", "UTC"};
String UZT[] = new String[] {"Ora dell'Uzbekistan", "UZT",
- "Ora estiva dell'Uzbekistan", "UZST"};
+ "Ora estiva dell'Uzbekistan", "UZST",
+ "Ora dell'Uzbekistan", "UZT"};
return new Object[][] {
{"America/Los_Angeles", PST},
@@ -311,7 +387,8 @@
{"America/Argentina/Ushuaia", AGT},
{"America/Aruba", AST},
{"America/Asuncion", new String[] {"Ora del Paraguay", "PYT",
- "Ora estiva del Paraguay", "PYST"}},
+ "Ora estiva del Paraguay", "PYST",
+ "Ora del Paraguay", "PYT"}},
{"America/Atikokan", EST},
{"America/Atka", HAST},
{"America/Bahia", BRT},
@@ -322,17 +399,20 @@
{"America/Blanc-Sablon", AST},
{"America/Boa_Vista", AMT},
{"America/Bogota", new String[] {"Ora della Colombia", "COT",
- "Ora estiva della Colombia", "COST"}},
+ "Ora estiva della Colombia", "COST",
+ "Ora della Colombia", "COT"}},
{"America/Boise", MST},
{"America/Buenos_Aires", AGT},
{"America/Cambridge_Bay", MST},
{"America/Campo_Grande", AMT},
{"America/Cancun", CST},
{"America/Caracas", new String[] {"Ora del Venezuela", "VET",
- "Ora estiva del Venezuela", "VEST"}},
+ "Ora estiva del Venezuela", "VEST",
+ "Ora del Venezuela", "VET"}},
{"America/Catamarca", AGT},
{"America/Cayenne", new String[] {"Ora della Guyana Francese", "GFT",
- "Ora estiva della Guyana Francese", "GFST"}},
+ "Ora estiva della Guyana Francese", "GFST",
+ "Ora della Guyana Francese", "GFT"}},
{"America/Cayman", EST},
{"America/Chihuahua", MST},
{"America/Creston", MST},
@@ -354,16 +434,19 @@
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"Ora della Groenlandia occidentale", "WGT",
- "Ora estiva della Groenlandia occidentale", "WGST"}},
+ "Ora estiva della Groenlandia occidentale", "WGST",
+ "Ora della Groenlandia occidentale", "WGT"}},
{"America/Goose_Bay", AST},
{"America/Grand_Turk", EST},
{"America/Grenada", AST},
{"America/Guadeloupe", AST},
{"America/Guatemala", CST},
{"America/Guayaquil", new String[] {"Ora dell'Ecuador", "ECT",
- "Ora estiva dell'Ecuador", "ECST"}},
+ "Ora estiva dell'Ecuador", "ECST",
+ "Ora dell'Ecuador", "ECT"}},
{"America/Guyana", new String[] {"Ora della Guyana", "GYT",
- "Ora estiva della Guyana", "GYST"}},
+ "Ora estiva della Guyana", "GYST",
+ "Ora della Guyana", "GYT"}},
{"America/Havana", CUBA},
{"America/Hermosillo", MST},
{"America/Indiana/Indianapolis", EST},
@@ -384,9 +467,11 @@
{"America/Knox_IN", CST},
{"America/Kralendijk", AST},
{"America/La_Paz", new String[] {"Ora della Bolivia", "BOT",
- "Ora estiva della Bolivia", "BOST"}},
+ "Ora estiva della Bolivia", "BOST",
+ "Ora della Bolivia", "BOT"}},
{"America/Lima", new String[] {"Ora del Per\u00f9", "PET",
- "Ora estiva del Per\u00f9", "PEST"}},
+ "Ora estiva del Per\u00f9", "PEST",
+ "Ora del Per\u00F9", "PET"}},
{"America/Louisville", EST},
{"America/Lower_Princes", AST},
{"America/Maceio", BRT},
@@ -400,13 +485,16 @@
{"America/Menominee", CST},
{"America/Merida", CST},
{"America/Metlakatla", new String[] {"Ora standard di Metlakatla", "MeST",
- "Ora legale di Metlakatla", "MeDT"}},
+ "Ora legale di Metlakatla", "MeDT",
+ "Ora di Metlakatla", "MeT"}},
{"America/Mexico_City", CST},
{"America/Miquelon", new String[] {"Ora solare di Saint-Pierre e Miquelon", "PMST",
- "Ora legale di Saint-Pierre e Miquelon", "PMDT"}},
+ "Ora legale di Saint-Pierre e Miquelon", "PMDT",
+ "Ora Saint-Pierre e Miquelon", "PMT"}},
{"America/Moncton", AST},
{"America/Montevideo", new String[] {"Ora dell'Uruguay", "UYT",
- "Ora estiva dell'Uruguay", "UYST"}},
+ "Ora estiva dell'Uruguay", "UYST",
+ "Ora dell'Uruguay", "UYT"}},
{"America/Monterrey", CST},
{"America/Montreal", EST},
{"America/Montserrat", AST},
@@ -421,7 +509,8 @@
{"America/Panama", EST},
{"America/Pangnirtung", EST},
{"America/Paramaribo", new String[] {"Ora di Suriname", "SRT",
- "Ora estiva di Suriname", "SRST"}},
+ "Ora estiva di Suriname", "SRST",
+ "Ora di Suriname", "SRT"}},
{"America/Port-au-Prince", EST},
{"America/Port_of_Spain", AST},
{"America/Porto_Acre", ACT},
@@ -461,115 +550,146 @@
{"America/Yellowknife", MST},
{"Antarctica/Casey", WST_AUS},
{"Antarctica/Davis", new String[] {"Ora di Davis", "DAVT",
- "Ora estiva di Davis", "DAVST"}},
+ "Ora estiva di Davis", "DAVST",
+ "Ora di Davis", "DAVT"}},
{"Antarctica/DumontDUrville", new String[] {"Ora di Dumont-d'Urville", "DDUT",
- "Ora estiva di Dumont-d'Urville", "DDUST"}},
+ "Ora estiva di Dumont-d'Urville", "DDUST",
+ "Ora di Dumont-d'Urville", "DDUT"}},
{"Antarctica/Macquarie", new String[] {"Ora dell'Isola Macquarie", "MIST",
- "Ora estiva dell'Isola Macquarie", "MIST"}},
+ "Ora estiva dell'Isola Macquarie", "MIST",
+ "Ora dell'Isola Macquarie", "MIST"}},
{"Antarctica/Mawson", new String[] {"Ora di Mawson", "MAWT",
- "Ora estiva di Mawson", "MAWST"}},
+ "Ora estiva di Mawson", "MAWST",
+ "Ora di Mawson", "MAWT"}},
{"Antarctica/McMurdo", NZST},
{"Antarctica/Palmer", CLT},
{"Antarctica/Rothera", new String[] {"Ora di Rothera", "ROTT",
- "Ora estiva di Rothera", "ROTST"}},
+ "Ora estiva di Rothera", "ROTST",
+ "Ora di Rothera", "ROTT"}},
{"Antarctica/South_Pole", NZST},
{"Antarctica/Syowa", new String[] {"Ora di Syowa", "SYOT",
- "Ora estiva di Syowa", "SYOST"}},
+ "Ora estiva di Syowa", "SYOST",
+ "Ora di Syowa", "SYOT"}},
{"Antarctica/Vostok", new String[] {"Ora di Vostok", "VOST",
- "Ora estiva di Vostok", "VOSST"}},
+ "Ora estiva di Vostok", "VOSST",
+ "Ora di Vostok", "VOST"}},
{"Arctic/Longyearbyen", CET},
{"Asia/Aden", ARAST},
{"Asia/Almaty", new String[] {"Ora di Alma-Ata", "ALMT",
- "Ora estiva di Alma-Ata", "ALMST"}},
+ "Ora estiva di Alma-Ata", "ALMST",
+ "Ora di Alma-Ata", "ALMT"}},
{"Asia/Amman", ARAST},
{"Asia/Anadyr", new String[] {"Ora di Anadyr", "ANAT",
- "Ora estiva di Anadyr", "ANAST"}},
+ "Ora estiva di Anadyr", "ANAST",
+ "Ora di Anadyr", "ANAT"}},
{"Asia/Aqtau", new String[] {"Ora di Aqtau", "AQTT",
- "Ora estiva di Aqtau", "AQTST"}},
+ "Ora estiva di Aqtau", "AQTST",
+ "Ora di Aqtau", "AQTT"}},
{"Asia/Aqtobe", new String[] {"Ora di Aqtobe", "AQTT",
- "Ora estiva di Aqtobe", "AQTST"}},
+ "Ora estiva di Aqtobe", "AQTST",
+ "Ora di Aqtobe", "AQTT"}},
{"Asia/Ashgabat", TMT},
{"Asia/Ashkhabad", TMT},
{"Asia/Baghdad", ARAST},
{"Asia/Bahrain", ARAST},
{"Asia/Baku", new String[] {"Ora dell'Azerbaigian", "AZT",
- "Ora estiva dell'Azerbaigian", "AZST"}},
+ "Ora estiva dell'Azerbaigian", "AZST",
+ "Ora dell'Azerbaigian", "AZT"}},
{"Asia/Bangkok", ICT},
{"Asia/Beirut", EET},
{"Asia/Bishkek", new String[] {"Ora del Kirghizistan", "KGT",
- "Ora estiva del Kirghizistan", "KGST"}},
+ "Ora estiva del Kirghizistan", "KGST",
+ "Ora del Kirghizistan", "KGT"}},
{"Asia/Brunei", new String[] {"Ora del Brunei", "BNT",
- "Ora estiva del Brunei", "BNST"}},
+ "Ora estiva del Brunei", "BNST",
+ "Ora del Brunei", "BNT"}},
{"Asia/Calcutta", IST},
{"Asia/Choibalsan", new String[] {"Ora di Choibalsan", "CHOT",
- "Ora estiva di Choibalsan", "CHOST"}},
+ "Ora estiva di Choibalsan", "CHOST",
+ "Ora di Choibalsan", "CHOT"}},
{"Asia/Chongqing", CTT},
{"Asia/Chungking", CTT},
{"Asia/Colombo", IST},
{"Asia/Dacca", BDT},
{"Asia/Dhaka", BDT},
{"Asia/Dili", new String[] {"Ora di Timor Leste", "TLT",
- "Ora estiva di Timor Leste", "TLST"}},
+ "Ora estiva di Timor Leste", "TLST",
+ "Ora di Timor Est", "TLT"}},
{"Asia/Damascus", EET},
{"Asia/Dubai", GST},
{"Asia/Dushanbe", new String[] {"Ora del Tagikistan", "TJT",
- "Ora estiva del Tagikistan", "TJST"}},
+ "Ora estiva del Tagikistan", "TJST",
+ "Ora del Tagikistan", "TJT"}},
{"Asia/Gaza", EET},
{"Asia/Harbin", CTT},
{"Asia/Hebron", EET},
{"Asia/Ho_Chi_Minh", ICT},
{"Asia/Hong_Kong", HKT},
{"Asia/Hovd", new String[] {"Ora di Hovd", "HOVT",
- "Ora estiva di Hovd", "HOVST"}},
+ "Ora estiva di Hovd", "HOVST",
+ "Ora di Hovd", "HOVT"}},
{"Asia/Irkutsk", new String[] {"Ora di Irkutsk", "IRKT",
- "Ora estiva di Irkutsk", "IRKST"}},
+ "Ora estiva di Irkutsk", "IRKST",
+ "Ora di Irkutsk", "IRKT"}},
{"Asia/Istanbul", EET},
{"Asia/Jakarta", WIT},
{"Asia/Jayapura", new String[] {"Ora dell'Indonesia orientale", "WIT",
- "Ora estiva dell'Indonesia orientale", "EIST"}},
+ "Ora estiva dell'Indonesia orientale", "EIST",
+ "Ora dell'Indonesia orientale", "WIT"}},
{"Asia/Kabul", new String[] {"Ora dell'Afghanistan", "AFT",
- "Ora estiva dell'Afghanistan", "AFST"}},
+ "Ora estiva dell'Afghanistan", "AFST",
+ "Ora dell'Afghanistan", "AFT"}},
{"Asia/Kamchatka", new String[] {"Ora di Petropavlovsk-Kamchatski", "PETT",
- "Ora estiva di Petropavlovsk-Kamchatski", "PETST"}},
+ "Ora estiva di Petropavlovsk-Kamchatski", "PETST",
+ "Ora di Petropavlovsk-Kamchatski", "PETT"}},
{"Asia/Karachi", PKT},
{"Asia/Kashgar", CTT},
{"Asia/Kathmandu", NPT},
{"Asia/Katmandu", NPT},
{"Asia/Kolkata", IST},
{"Asia/Khandyga", new String[] {"Ora di Khandyga", "YAKT",
- "Ora estiva di Khandyga", "YAKST"}},
+ "Ora estiva di Khandyga", "YAKST",
+ "Ora di Khandyga", "YAKT"}},
{"Asia/Krasnoyarsk", new String[] {"Ora di Krasnojarsk", "KRAT",
- "Ora estiva di Krasnojarsk", "KRAST"}},
+ "Ora estiva di Krasnojarsk", "KRAST",
+ "Ora di Krasnojarsk", "KRAT"}},
{"Asia/Kuala_Lumpur", MYT},
{"Asia/Kuching", MYT},
{"Asia/Kuwait", ARAST},
{"Asia/Macao", CTT},
{"Asia/Macau", CTT},
{"Asia/Magadan", new String[] {"Ora di Magadan", "MAGT",
- "Ora estiva di Magadan", "MAGST"}},
+ "Ora estiva di Magadan", "MAGST",
+ "Ora di Magadan", "MAGT"}},
{"Asia/Makassar", CIT},
{"Asia/Manila", new String[] {"Ora delle Filippine", "PHT",
- "Ora estiva delle Filippine", "PHST"}},
+ "Ora estiva delle Filippine", "PHST",
+ "Ora delle Filippine", "PHT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", NOVT},
{"Asia/Novosibirsk", NOVT},
{"Asia/Oral", new String[] {"Ora di Oral", "ORAT",
- "Ora estiva di Oral", "ORAST"}},
+ "Ora estiva di Oral", "ORAST",
+ "Ora di Oral", "ORAT"}},
{"Asia/Omsk", new String[] {"Ora di Omsk", "OMST",
- "Ora estiva di Omsk", "OMSST"}},
+ "Ora estiva di Omsk", "OMSST",
+ "Ora di Omsk", "OMST"}},
{"Asia/Phnom_Penh", ICT},
{"Asia/Pontianak", WIT},
{"Asia/Pyongyang", KST},
{"Asia/Qatar", ARAST},
{"Asia/Qyzylorda", new String[] {"Ora di Qyzylorda", "QYZT",
- "Ora estiva di Qyzylorda", "QYZST"}},
+ "Ora estiva di Qyzylorda", "QYZST",
+ "Ora di Qyzylorda", "QYZT"}},
{"Asia/Rangoon", new String[] {"Ora della Birmania/Myanmar", "MMT",
- "Ora estiva della Birmania/Myanmar", "MMST"}},
+ "Ora estiva della Birmania/Myanmar", "MMST",
+ "Ora della Birmania/Myanmar", "MMT"}},
{"Asia/Riyadh", ARAST},
{"Asia/Saigon", ICT},
{"Asia/Sakhalin", new String[] {"Ora di Sakhalin", "SAKT",
- "Ora estiva di Sakhalin", "SAKST"}},
+ "Ora estiva di Sakhalin", "SAKST",
+ "Ora di Sakhalin", "SAKT"}},
{"Asia/Samarkand", UZT},
{"Asia/Seoul", KST},
{"Asia/Singapore", SGT},
@@ -577,7 +697,8 @@
{"Asia/Tel_Aviv", ISRAEL},
{"Asia/Tashkent", UZT},
{"Asia/Tbilisi", new String[] {"Ora della Georgia", "GET",
- "Ora estiva della Georgia", "GEST"}},
+ "Ora estiva della Georgia", "GEST",
+ "Ora della Georgia", "GET"}},
{"Asia/Tehran", IRT},
{"Asia/Thimbu", BTT},
{"Asia/Thimphu", BTT},
@@ -586,31 +707,39 @@
{"Asia/Ulan_Bator", ULAT},
{"Asia/Urumqi", CTT},
{"Asia/Ust-Nera", new String[] {"Ora di Ust-Nera", "VLAT",
- "Ora estiva di Ust-Nera", "VLAST"}},
+ "Ora estiva di Ust-Nera", "VLAST",
+ "Ora di Ust-Nera", "VLAT"}},
{"Asia/Vientiane", ICT},
{"Asia/Vladivostok", new String[] {"Ora di Vladivostok", "VLAT",
- "Ora estiva di Vladivostok", "VLAST"}},
+ "Ora estiva di Vladivostok", "VLAST",
+ "Ora di Vladivostok", "VLAT"}},
{"Asia/Yakutsk", new String[] {"Ora di Jakutsk", "YAKT",
- "Ora estiva di Jakutsk", "YAKST"}},
+ "Ora estiva di Jakutsk", "YAKST",
+ "Ora di Yakutsk", "YAKT"}},
{"Asia/Yekaterinburg", new String[] {"Ora di Ekaterinburg", "YEKT",
- "Ora estiva di Ekaterinburg", "YEKST"}},
+ "Ora estiva di Ekaterinburg", "YEKST",
+ "Ora di Ekaterinburg", "YEKT"}},
{"Asia/Yerevan", ARMT},
{"Atlantic/Azores", new String[] {"Ora delle Azzorre", "AZOT",
- "Ora estiva delle Azzorre", "AZOST"}},
+ "Ora estiva delle Azzorre", "AZOST",
+ "Ora delle Azzorre", "AZOT"}},
{"Atlantic/Bermuda", AST},
{"Atlantic/Canary", WET},
{"Atlantic/Cape_Verde", new String[] {"Ora di Capo Verde", "CVT",
- "Ora estiva di Capo Verde", "CVST"}},
+ "Ora estiva di Capo Verde", "CVST",
+ "Ora di Capo Verde", "CVT"}},
{"Atlantic/Faroe", WET},
{"Atlantic/Faeroe", WET},
{"Atlantic/Jan_Mayen", CET},
{"Atlantic/Madeira", WET},
{"Atlantic/Reykjavik", GMT},
{"Atlantic/South_Georgia", new String[] {"Ora solare della Georgia Australe", "GST",
- "Ora legale della Georgia Australe", "GDT"}},
+ "Ora legale della Georgia Australe", "GDT",
+ "Ora Georgia del Sud", "GT"}},
{"Atlantic/St_Helena", GMT},
{"Atlantic/Stanley", new String[] {"Ora delle Falkland", "FKT",
- "Ora estiva delle Falkland", "FKST"}},
+ "Ora estiva delle Falkland", "FKST",
+ "Ora delle Falkland", "FKT"}},
{"Australia/ACT", EST_NSW},
{"Australia/Adelaide", ADELAIDE},
{"Australia/Brisbane", BRISBANE},
@@ -619,7 +748,8 @@
{"Australia/Currie", EST_NSW},
{"Australia/Darwin", DARWIN},
{"Australia/Eucla", new String[] {"Ora standard Australia centro-occidentale", "CWST",
- "Ora estiva Australia centro-occidentale", "CWST"}},
+ "Ora estiva Australia centro-occidentale", "CWST",
+ "Ora Australia centro-occidentale", "CWT"}},
{"Australia/Hobart", TASMANIA},
{"Australia/LHI", LORD_HOWE},
{"Australia/Lindeman", BRISBANE},
@@ -704,7 +834,8 @@
{"Europe/Riga", EET},
{"Europe/Rome", CET},
{"Europe/Samara", new String[] {"Ora di Samara", "SAMT",
- "Ora estiva di Samara", "SAMST"}},
+ "Ora estiva di Samara", "SAMST",
+ "Ora di Samara", "SAMT"}},
{"Europe/San_Marino", CET},
{"Europe/Sarajevo", CET},
{"Europe/Simferopol", EET},
@@ -720,7 +851,8 @@
{"Europe/Vienna", CET},
{"Europe/Vilnius", EET},
{"Europe/Volgograd", new String[] {"Ora di Volgograd", "VOLT",
- "Ora estiva di Volgograd", "VOLST"}},
+ "Ora estiva di Volgograd", "VOLST",
+ "Ora di Volgograd", "VOLT"}},
{"Europe/Warsaw", CET},
{"Europe/Zagreb", CET},
{"Europe/Zaporozhye", EET},
@@ -734,30 +866,39 @@
{"IST", IST},
{"Indian/Antananarivo", EAT},
{"Indian/Chagos", new String[] {"Ora del Terr. Britannico dell'Oceano Indiano", "IOT",
- "Ora estiva del Terr. Britannico dell'Oceano Indiano", "IOST"}},
+ "Ora estiva del Terr. Britannico dell'Oceano Indiano", "IOST",
+ "Ora del Territorio Britannico dell'Oceano Indiano", "IOT"}},
{"Indian/Christmas", new String[] {"Ora dell'Isola Christmas", "CXT",
- "Ora estiva dell'Isola Christmas", "CXST"}},
+ "Ora estiva dell'Isola Christmas", "CXST",
+ "Ora dell'Isola Christmas", "CIT"}},
{"Indian/Cocos", new String[] {"Ora delle Isole Cocos", "CCT",
- "Ora estiva delle Isole Cocos", "CCST"}},
+ "Ora estiva delle Isole Cocos", "CCST",
+ "Ora delle Isole Cocos", "CCT"}},
{"Indian/Comoro", EAT},
{"Indian/Kerguelen", new String[] {"Ora delle Terre Australi e Antartiche Francesi", "TFT",
- "Ora estiva delle Terre Australi Antartiche Francesi", "TFST"}},
+ "Ora estiva delle Terre Australi Antartiche Francesi", "TFST",
+ "Ora delle Terre Australi e Antartiche Francesi", "TFT"}},
{"Indian/Mahe", new String[] {"Ora delle Seychelles", "SCT",
- "Ora estiva delle Seychelles", "SCST"}},
+ "Ora estiva delle Seychelles", "SCST",
+ "Ora delle Seychelles", "SCT"}},
{"Indian/Maldives", new String[] {"Ora delle Maldive", "MVT",
- "Ora estiva delle Maldive", "MVST"}},
+ "Ora estiva delle Maldive", "MVST",
+ "Ora delle Maldive", "MVT"}},
{"Indian/Mauritius", new String[] {"Ora di Mauritius", "MUT",
- "Ora estiva di Mauritius", "MUST"}},
+ "Ora estiva di Mauritius", "MUST",
+ "Ora di Mauritius", "MUT"}},
{"Indian/Mayotte", EAT},
{"Indian/Reunion", new String[] {"Ora di Reunion", "RET",
- "Ora estiva di Reunion", "REST"}},
+ "Ora estiva di Reunion", "REST",
+ "Ora di Reunion", "RET"}},
{"Israel", ISRAEL},
{"Jamaica", EST},
{"Japan", JST},
{"Kwajalein", MHT},
{"Libya", EET},
{"MET", new String[] {"Ora dell'Europa centrale", "MET",
- "Ora estiva dell'Europa centrale", "MEST"}},
+ "Ora estiva dell'Europa centrale", "MEST",
+ "MET", "MET"}},
{"Mexico/BajaNorte", PST},
{"Mexico/BajaSur", MST},
{"Mexico/General", CST},
@@ -777,61 +918,82 @@
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
{"Pacific/Efate", new String[] {"Ora di Vanuatu", "VUT",
- "Ora estiva di Vanuatu", "VUST"}},
+ "Ora estiva di Vanuatu", "VUST",
+ "Ora di Vanuatu", "VUT"}},
{"Pacific/Enderbury", new String[] {"Ora dell'Isola della Fenice", "PHOT",
- "Ora estiva dell'Isola della Fenice", "PHOST"}},
+ "Ora estiva dell'Isola della Fenice", "PHOST",
+ "Ora delle Isole Phoenix", "PHOT"}},
{"Pacific/Fakaofo", new String[] {"Ora di Tokelau", "TKT",
- "Ora estiva di Tokelau", "TKST"}},
+ "Ora estiva di Tokelau", "TKST",
+ "Ora di Tokelau", "TKT"}},
{"Pacific/Fiji", new String[] {"Ora di Figi", "FJT",
- "Ora estiva di Figi", "FJST"}},
+ "Ora estiva di Figi", "FJST",
+ "Ora di Figi", "FJT"}},
{"Pacific/Funafuti", new String[] {"Ora di Tuvalu", "TVT",
- "Ora estiva di Tuvalu", "TVST"}},
+ "Ora estiva di Tuvalu", "TVST",
+ "Ora di Tuvalu", "TVT"}},
{"Pacific/Galapagos", new String[] {"Ora delle Galapagos", "GALT",
- "Ora estiva delle Galapagos", "GALST"}},
+ "Ora estiva delle Galapagos", "GALST",
+ "Ora delle Galapagos", "GALT"}},
{"Pacific/Gambier", GAMBIER},
{"Pacific/Guadalcanal", SBT},
{"Pacific/Guam", ChST},
{"Pacific/Johnston", HST},
{"Pacific/Kiritimati", new String[] {"Ora delle Line Islands", "LINT",
- "Ora estiva delle Line Islands", "LINST"}},
+ "Ora estiva delle Line Islands", "LINST",
+ "Ora delle Line Islands", "LINT"}},
{"Pacific/Kosrae", new String[] {"Ora di Kosrae", "KOST",
- "Ora estiva di Kosrae", "KOSST"}},
+ "Ora estiva di Kosrae", "KOSST",
+ "Ora di Kosrae", "KOST"}},
{"Pacific/Kwajalein", MHT},
{"Pacific/Majuro", MHT},
{"Pacific/Marquesas", new String[] {"Ora delle Isole Marchesi", "MART",
- "Ora estiva delle Isole Marchesi", "MARST"}},
+ "Ora estiva delle Isole Marchesi", "MARST",
+ "Ora delle Isole Marchesi", "MART"}},
{"Pacific/Midway", SAMOA},
{"Pacific/Nauru", new String[] {"Ora di Nauru", "NRT",
- "Ora estiva di Nauru", "NRST"}},
+ "Ora estiva di Nauru", "NRST",
+ "Ora di Nauru", "NRT"}},
{"Pacific/Niue", new String[] {"Ora di Niue", "NUT",
- "Ora estiva di Niue", "NUST"}},
+ "Ora estiva di Niue", "NUST",
+ "Ora di Niue", "NUT"}},
{"Pacific/Norfolk", new String[] {"Ora di Norfolk", "NFT",
- "Ora estiva di Norfolk", "NFST"}},
+ "Ora estiva di Norfolk", "NFST",
+ "Ora di Norfolk", "NFT"}},
{"Pacific/Noumea", new String[] {"Ora della Nuova Caledonia", "NCT",
- "Ora estiva della Nuova Caledonia", "NCST"}},
+ "Ora estiva della Nuova Caledonia", "NCST",
+ "Ora della Nuova Caledonia", "NCT"}},
{"Pacific/Pago_Pago", SAMOA},
{"Pacific/Palau", new String[] {"Ora di Palau", "PWT",
- "Ora estiva di Palau", "PWST"}},
+ "Ora estiva di Palau", "PWST",
+ "Ora di Palau", "PWT"}},
{"Pacific/Pitcairn", PITCAIRN},
{"Pacific/Pohnpei", PONT},
{"Pacific/Ponape", PONT},
{"Pacific/Port_Moresby", new String[] {"Ora di Papua Nuova Guinea", "PGT",
- "Ora estiva di Papua Nuova Guinea", "PGST"}},
+ "Ora estiva di Papua Nuova Guinea", "PGST",
+ "Ora di Papua Nuova Guinea", "PGT"}},
{"Pacific/Rarotonga", new String[] {"Ora delle Isole Cook", "CKT",
- "Ora estiva delle Isole Cook", "CKHST"}},
+ "Ora estiva delle Isole Cook", "CKHST",
+ "Ora delle Isole Cook", "CKT"}},
{"Pacific/Saipan", ChST},
{"Pacific/Samoa", SAMOA},
{"Pacific/Tahiti", new String[] {"Ora di Tahiti", "TAHT",
- "Ora estiva di Tahiti", "TAHST"}},
+ "Ora estiva di Tahiti", "TAHST",
+ "Ora di Tahiti", "TAHT"}},
{"Pacific/Tarawa", new String[] {"Ora delle Isole Gilbert", "GILT",
- "Ora estiva delle Isole Gilbert", "GILST"}},
+ "Ora estiva delle Isole Gilbert", "GILST",
+ "Ora delle Isole Gilbert", "GILT"}},
{"Pacific/Tongatapu", new String[] {"Ora di Tonga", "TOT",
- "Ora estiva di Tonga", "TOST"}},
+ "Ora estiva di Tonga", "TOST",
+ "Ora di Tonga", "TOT"}},
{"Pacific/Truk", CHUT},
{"Pacific/Wake", new String[] {"Ora di Wake", "WAKT",
- "Ora estiva di Wake", "WAKST"}},
+ "Ora estiva di Wake", "WAKST",
+ "Ora di Wake", "WAKT"}},
{"Pacific/Wallis", new String[] {"Ora di Wallis e Futuna", "WFT",
- "Ora estiva di Wallis e Futuna", "WFST"}},
+ "Ora estiva di Wallis e Futuna", "WFST",
+ "Ora di Wallis e Futuna", "WFT"}},
{"Pacific/Yap", CHUT},
{"Poland", CET},
{"PRC", CTT},
--- a/jdk/src/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java Wed Jul 05 19:27:58 2017 +0200
@@ -46,159 +46,235 @@
protected final Object[][] getContents() {
String ACT[] = new String[] {"\u30a2\u30af\u30ec\u6642\u9593", "ACT",
- "\u30a2\u30af\u30ec\u590f\u6642\u9593", "ACST"};
+ "\u30a2\u30af\u30ec\u590f\u6642\u9593", "ACST",
+ "\u30a2\u30af\u30ec\u6642\u9593", "ACT"};
String ADELAIDE[] = new String[] {"\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "CST",
- "\u4E2D\u90E8\u590F\u6642\u9593(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "CST"};
+ "\u4E2D\u90E8\u590F\u6642\u9593(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "CST",
+ "\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "CT"};
String AGT[] = new String[] {"\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3\u6642\u9593", "ART",
- "\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3\u590f\u6642\u9593", "ARST"};
+ "\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3\u590f\u6642\u9593", "ARST",
+ "\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593", "ART"};
String AKST[] = new String[] {"\u30a2\u30e9\u30b9\u30ab\u6a19\u6e96\u6642", "AKST",
- "\u30a2\u30e9\u30b9\u30ab\u590f\u6642\u9593", "AKDT"};
+ "\u30a2\u30e9\u30b9\u30ab\u590f\u6642\u9593", "AKDT",
+ "\u30A2\u30E9\u30B9\u30AB\u6642\u9593", "AKT"};
String AMT[] = new String[] {"\u30a2\u30de\u30be\u30f3\u6642\u9593", "AMT",
- "\u30a2\u30de\u30be\u30f3\u590f\u6642\u9593", "AMST"};
+ "\u30a2\u30de\u30be\u30f3\u590f\u6642\u9593", "AMST",
+ "\u30A2\u30DE\u30BE\u30F3\u6642\u9593", "AMT"};
String ARAST[] = new String[] {"\u30a2\u30e9\u30d3\u30a2\u6a19\u6e96\u6642", "AST",
- "\u30a2\u30e9\u30d3\u30a2\u590f\u6642\u9593", "ADT"};
+ "\u30a2\u30e9\u30d3\u30a2\u590f\u6642\u9593", "ADT",
+ "\u30A2\u30E9\u30D3\u30A2\u6642\u9593", "AT"};
String ARMT[] = new String[] {"\u30a2\u30eb\u30e1\u30cb\u30a2\u6642\u9593", "AMT",
- "\u30a2\u30eb\u30e1\u30cb\u30a2\u590f\u6642\u9593", "AMST"};
+ "\u30a2\u30eb\u30e1\u30cb\u30a2\u590f\u6642\u9593", "AMST",
+ "\u30A2\u30EB\u30E1\u30CB\u30A2\u6642\u9593", "AMT"};
String AST[] = new String[] {"\u5927\u897f\u6d0b\u6a19\u6e96\u6642", "AST",
- "\u5927\u897f\u6d0b\u590f\u6642\u9593", "ADT"};
+ "\u5927\u897f\u6d0b\u590f\u6642\u9593", "ADT",
+ "\u5927\u897F\u6D0B\u6A19\u6E96\u6642", "AT"};
String BDT[] = new String[] {"\u30d0\u30f3\u30b0\u30e9\u30c7\u30b7\u30e5\u6642\u9593", "BDT",
- "\u30d0\u30f3\u30b0\u30e9\u30c7\u30b7\u30e5\u590f\u6642\u9593", "BDST"};
+ "\u30d0\u30f3\u30b0\u30e9\u30c7\u30b7\u30e5\u590f\u6642\u9593", "BDST",
+ "\u30D0\u30F3\u30B0\u30E9\u30C7\u30B7\u30E5\u6642\u9593", "BDT"};
String BRISBANE[] = new String[] {"\u6771\u90E8\u6A19\u6E96\u6642(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)", "EST",
- "\u6771\u90E8\u590F\u6642\u9593(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)", "EST"};
+ "\u6771\u90E8\u590F\u6642\u9593(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)", "EST",
+ "\u6771\u90E8\u6A19\u6E96\u6642(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)", "ET"};
String BROKEN_HILL[] = new String[] {"\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)", "CST",
- "\u4E2D\u90E8\u590F\u6642\u9593(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)", "CST"};
+ "\u4E2D\u90E8\u590F\u6642\u9593(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)", "CST",
+ "\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)", "CT"};
String BRT[] = new String[] {"\u30d6\u30e9\u30b8\u30eb\u6642\u9593", "BRT",
- "\u30d6\u30e9\u30b8\u30eb\u590f\u6642\u9593", "BRST"};
+ "\u30d6\u30e9\u30b8\u30eb\u590f\u6642\u9593", "BRST",
+ "\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593", "BRT"};
String BTT[] = new String[] {"\u30d6\u30fc\u30bf\u30f3\u6642\u9593", "BTT",
- "\u30d6\u30fc\u30bf\u30f3\u590f\u6642\u9593", "BTST"};
+ "\u30d6\u30fc\u30bf\u30f3\u590f\u6642\u9593", "BTST",
+ "\u30D6\u30FC\u30BF\u30F3\u6642\u9593", "BTT"};
String CAT[] = new String[] {"\u4e2d\u90e8\u30a2\u30d5\u30ea\u30ab\u6642\u9593", "CAT",
- "\u4e2d\u90e8\u30a2\u30d5\u30ea\u30ab\u590f\u6642\u9593", "CAST"};
+ "\u4e2d\u90e8\u30a2\u30d5\u30ea\u30ab\u590f\u6642\u9593", "CAST",
+ "\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593", "CAT"};
String CET[] = new String[] {"\u4e2d\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593", "CET",
- "\u4e2d\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u590f\u6642\u9593", "CEST"};
+ "\u4e2d\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u590f\u6642\u9593", "CEST",
+ "\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593", "CET"};
String CHAST[] = new String[] {"\u30c1\u30e3\u30bf\u30e0\u6a19\u6e96\u6642", "CHAST",
- "\u30c1\u30e3\u30bf\u30e0\u590f\u6642\u9593", "CHADT"};
+ "\u30c1\u30e3\u30bf\u30e0\u590f\u6642\u9593", "CHADT",
+ "\u30C1\u30E3\u30BF\u30E0\u6642\u9593", "CHAT"};
String CHUT[] = new String[] {"\u30C1\u30E5\u30FC\u30AF\u6642\u9593", "CHUT",
- "Chuuk Time", "CHUST"};
+ "Chuuk Time", "CHUST",
+ "\u30C1\u30E5\u30FC\u30AF\u6642\u9593", "CHUT"};
String CIT[] = new String[] {"\u4e2d\u592e\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u6642\u9593", "WITA",
- "\u4e2d\u592e\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u590f\u6642\u9593", "CIST"};
+ "\u4e2d\u592e\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u590f\u6642\u9593", "CIST",
+ "\u4E2D\u90E8\u30A4\u30F3\u30C9\u30CD\u30B7\u30A2\u6642\u9593", "WITA"};
String CLT[] = new String[] {"\u30c1\u30ea\u6642\u9593", "CLT",
- "\u30c1\u30ea\u590f\u6642\u9593", "CLST"};
+ "\u30c1\u30ea\u590f\u6642\u9593", "CLST",
+ "\u30C1\u30EA\u6642\u9593", "CLT"};
String CST[] = new String[] {"\u4e2d\u90e8\u6a19\u6e96\u6642", "CST",
- "\u4e2d\u90e8\u590f\u6642\u9593", "CDT"};
+ "\u4e2d\u90e8\u590f\u6642\u9593", "CDT",
+ "\u4E2D\u90E8\u6A19\u6E96\u6642", "CT"};
String CTT[] = new String[] {"\u4e2d\u56fd\u6a19\u6e96\u6642", "CST",
- "\u4e2d\u56fd\u590f\u6642\u9593", "CDT"};
+ "\u4e2d\u56fd\u590f\u6642\u9593", "CDT",
+ "\u4E2D\u56FD\u6642\u9593", "CT"};
String CUBA[] = new String[] {"\u30ad\u30e5\u30fc\u30d0\u6a19\u6e96\u6642", "CST",
- "\u30ad\u30e5\u30fc\u30d0\u590f\u6642\u9593", "CDT"};
+ "\u30ad\u30e5\u30fc\u30d0\u590f\u6642\u9593", "CDT",
+ "\u30AD\u30E5\u30FC\u30D0\u6642\u9593", "CT"};
String DARWIN[] = new String[] {"\u4E2D\u90E8\u6A19\u6E96\u6642(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)", "CST",
- "\u4E2D\u90E8\u590F\u6642\u9593(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)", "CST"};
+ "\u4E2D\u90E8\u590F\u6642\u9593(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)", "CST",
+ "\u4E2D\u90E8\u6A19\u6E96\u6642(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)", "CT"};
String DUBLIN[] = new String[] {"\u30b0\u30ea\u30cb\u30c3\u30b8\u6a19\u6e96\u6642", "GMT",
- "\u30a2\u30a4\u30eb\u30e9\u30f3\u30c9\u590f\u6642\u9593", "IST"};
+ "\u30a2\u30a4\u30eb\u30e9\u30f3\u30c9\u590f\u6642\u9593", "IST",
+ "\u30A2\u30A4\u30EB\u30E9\u30F3\u30C9\u6642\u9593", "IT"};
String EAT[] = new String[] {"\u6771\u30a2\u30d5\u30ea\u30ab\u6642\u9593", "EAT",
- "\u6771\u30a2\u30d5\u30ea\u30ab\u590f\u6642\u9593", "EAST"};
+ "\u6771\u30a2\u30d5\u30ea\u30ab\u590f\u6642\u9593", "EAST",
+ "\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593", "EAT"};
String EASTER[] = new String[] {"\u30a4\u30fc\u30b9\u30bf\u30fc\u5cf6\u6642\u9593", "EAST",
- "\u30a4\u30fc\u30b9\u30bf\u30fc\u5cf6\u590f\u6642\u9593", "EASST"};
+ "\u30a4\u30fc\u30b9\u30bf\u30fc\u5cf6\u590f\u6642\u9593", "EASST",
+ "\u30A4\u30FC\u30B9\u30BF\u30FC\u5CF6\u6642\u9593", "EAST"};
String EET[] = new String[] {"\u6771\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593", "EET",
- "\u6771\u30e8\u30fc\u30ed\u30c3\u30d1\u590f\u6642\u9593", "EEST"};
+ "\u6771\u30e8\u30fc\u30ed\u30c3\u30d1\u590f\u6642\u9593", "EEST",
+ "\u6771\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593", "EET"};
String EGT[] = new String[] {"\u6771\u30b0\u30ea\u30fc\u30f3\u30e9\u30f3\u30c9\u6642\u9593", "EGT",
- "\u6771\u30b0\u30ea\u30fc\u30f3\u30e9\u30f3\u30c9\u590f\u6642\u9593", "EGST"};
+ "\u6771\u30b0\u30ea\u30fc\u30f3\u30e9\u30f3\u30c9\u590f\u6642\u9593", "EGST",
+ "\u6771\u90E8\u30B0\u30EA\u30FC\u30F3\u30E9\u30F3\u30C9\u6642\u9593", "EGT"};
String EST[] = new String[] {"\u6771\u90e8\u6a19\u6e96\u6642", "EST",
- "\u6771\u90e8\u590f\u6642\u9593", "EDT"};
+ "\u6771\u90e8\u590f\u6642\u9593", "EDT",
+ "\u6771\u90E8\u6A19\u6E96\u6642", "ET"};
String EST_NSW[] = new String[] {"\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)", "EST",
- "\u6771\u90E8\u590F\u6642\u9593(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)", "EST"};
+ "\u6771\u90E8\u590F\u6642\u9593(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)", "EST",
+ "\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)", "ET"};
String FET[] = new String[] {"\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593", "FET",
- "\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u590F\u6642\u9593", "FEST"};
+ "\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u590F\u6642\u9593", "FEST",
+ "\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593", "FET"};
String GHMT[] = new String[] {"\u30ac\u30fc\u30ca\u6a19\u6e96\u6642", "GMT",
- "\u30ac\u30fc\u30ca\u590f\u6642\u9593", "GHST"};
+ "\u30ac\u30fc\u30ca\u590f\u6642\u9593", "GHST",
+ "\u30AC\u30FC\u30CA\u6A19\u6E96\u6642", "GMT"};
String GAMBIER[] = new String[] {"\u30ac\u30f3\u30d3\u30a2\u6642\u9593", "GAMT",
- "\u30ac\u30f3\u30d3\u30a2\u590f\u6642\u9593", "GAMST"};
+ "\u30ac\u30f3\u30d3\u30a2\u590f\u6642\u9593", "GAMST",
+ "\u30AC\u30F3\u30D3\u30A8\u6642\u9593", "GAMT"};
String GMT[] = new String[] {"\u30b0\u30ea\u30cb\u30c3\u30b8\u6a19\u6e96\u6642", "GMT",
- "\u30b0\u30ea\u30cb\u30c3\u30b8\u6a19\u6e96\u6642", "GMT"};
+ "\u30b0\u30ea\u30cb\u30c3\u30b8\u6a19\u6e96\u6642", "GMT",
+ "\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642", "GMT"};
String GMTBST[] = new String[] {"\u30b0\u30ea\u30cb\u30c3\u30b8\u6a19\u6e96\u6642", "GMT",
- "\u82f1\u56fd\u590f\u6642\u9593", "BST"};
+ "\u82f1\u56fd\u590f\u6642\u9593", "BST",
+ "\u30A4\u30AE\u30EA\u30B9\u6642\u9593", "BT"};
String GST[] = new String[] {"\u6e7e\u5cb8\u6a19\u6e96\u6642", "GST",
- "\u6e7e\u5cb8\u590f\u6642\u9593", "GDT"};
+ "\u6e7e\u5cb8\u590f\u6642\u9593", "GDT",
+ "\u6E7E\u5CB8\u6642\u9593", "GT"};
String HAST[] = new String[] {"\u30cf\u30ef\u30a4 - \u30a2\u30ea\u30e5\u30fc\u30b7\u30e3\u30f3\u6a19\u6e96\u6642", "HAST",
- "\u30cf\u30ef\u30a4 - \u30a2\u30ea\u30e5\u30fc\u30b7\u30e3\u30f3\u590f\u6642\u9593", "HADT"};
+ "\u30cf\u30ef\u30a4 - \u30a2\u30ea\u30e5\u30fc\u30b7\u30e3\u30f3\u590f\u6642\u9593", "HADT",
+ "\u30CF\u30EF\u30A4\u30FB\u30A2\u30EA\u30E5\u30FC\u30B7\u30E3\u30F3\u6642\u9593", "HAT"};
String HKT[] = new String[] {"\u9999\u6e2f\u6642\u9593", "HKT",
- "\u9999\u6e2f\u590f\u6642\u9593", "HKST"};
+ "\u9999\u6e2f\u590f\u6642\u9593", "HKST",
+ "\u9999\u6E2F\u6642\u9593", "HKT"};
String HST[] = new String[] {"\u30cf\u30ef\u30a4\u6a19\u6e96\u6642", "HST",
- "\u30cf\u30ef\u30a4\u590f\u6642\u9593", "HDT"};
+ "\u30cf\u30ef\u30a4\u590f\u6642\u9593", "HDT",
+ "\u30CF\u30EF\u30A4\u6642\u9593", "HT"};
String ICT[] = new String[] {"\u30a4\u30f3\u30c9\u30b7\u30ca\u6642\u9593", "ICT",
- "\u30a4\u30f3\u30c9\u30b7\u30ca\u590f\u6642\u9593", "ICST"};
+ "\u30a4\u30f3\u30c9\u30b7\u30ca\u590f\u6642\u9593", "ICST",
+ "\u30A4\u30F3\u30C9\u30B7\u30CA\u6642\u9593", "ICT"};
String IRT[] = new String[] {"\u30a4\u30e9\u30f3\u6a19\u6e96\u6642", "IRST",
- "\u30a4\u30e9\u30f3\u590f\u6642\u9593", "IRDT"};
+ "\u30a4\u30e9\u30f3\u590f\u6642\u9593", "IRDT",
+ "\u30A4\u30E9\u30F3\u6642\u9593", "IRT"};
String ISRAEL[] = new String[] {"\u30a4\u30b9\u30e9\u30a8\u30eb\u6a19\u6e96\u6642", "IST",
- "\u30a4\u30b9\u30e9\u30a8\u30eb\u590f\u6642\u9593", "IDT"};
+ "\u30a4\u30b9\u30e9\u30a8\u30eb\u590f\u6642\u9593", "IDT",
+ "\u30A4\u30B9\u30E9\u30A8\u30EB\u6642\u9593", "IT"};
String IST[] = new String[] {"\u30a4\u30f3\u30c9\u6a19\u6e96\u6642", "IST",
- "\u30a4\u30f3\u30c9\u590f\u6642\u9593", "IDT"};
+ "\u30a4\u30f3\u30c9\u590f\u6642\u9593", "IDT",
+ "\u30A4\u30F3\u30C9\u6642\u9593", "IT"};
String JST[] = new String[] {"\u65e5\u672c\u6a19\u6e96\u6642", "JST",
- "\u65e5\u672c\u590f\u6642\u9593", "JDT"};
+ "\u65e5\u672c\u590f\u6642\u9593", "JDT",
+ "\u65E5\u672C\u6642\u9593", "JT"};
String KST[] = new String[] {"\u97d3\u56fd\u6a19\u6e96\u6642", "KST",
- "\u97d3\u56fd\u590f\u6642\u9593", "KDT"};
+ "\u97d3\u56fd\u590f\u6642\u9593", "KDT",
+ "\u97D3\u56FD\u6642\u9593", "KT"};
String LORD_HOWE[] = new String[] {"\u30ed\u30fc\u30c9\u30cf\u30a6\u5cf6\u6a19\u6e96\u6642", "LHST",
- "\u30ed\u30fc\u30c9\u30cf\u30a6\u5cf6\u590f\u6642\u9593", "LHST"};
+ "\u30ed\u30fc\u30c9\u30cf\u30a6\u5cf6\u590f\u6642\u9593", "LHST",
+ "\u30ED\u30FC\u30C9\u30CF\u30A6\u6642\u9593", "LHT"};
String MHT[] = new String[] {"\u30de\u30fc\u30b7\u30e3\u30eb\u5cf6\u6642\u9593", "MHT",
- "\u30de\u30fc\u30b7\u30e3\u30eb\u5cf6\u590f\u6642\u9593", "MHST"};
+ "\u30de\u30fc\u30b7\u30e3\u30eb\u5cf6\u590f\u6642\u9593", "MHST",
+ "\u30DE\u30FC\u30B7\u30E3\u30EB\u8AF8\u5CF6\u6642\u9593", "MHT"};
String MSK[] = new String[] {"\u30e2\u30b9\u30af\u30ef\u6a19\u6e96\u6642", "MSK",
- "\u30e2\u30b9\u30af\u30ef\u590f\u6642\u9593", "MSD"};
+ "\u30e2\u30b9\u30af\u30ef\u590f\u6642\u9593", "MSD",
+ "\u30E2\u30B9\u30AF\u30EF\u6642\u9593", "MT"};
String MST[] = new String[] {"\u5c71\u5730\u6a19\u6e96\u6642", "MST",
- "\u5c71\u5730\u590f\u6642\u9593", "MDT"};
+ "\u5c71\u5730\u590f\u6642\u9593", "MDT",
+ "\u5C71\u5730\u6A19\u6E96\u6642", "MT"};
String MYT[] = new String[] {"\u30de\u30ec\u30fc\u30b7\u30a2\u6642\u9593", "MYT",
- "\u30de\u30ec\u30fc\u30b7\u30a2\u590f\u6642\u9593", "MYST"};
+ "\u30de\u30ec\u30fc\u30b7\u30a2\u590f\u6642\u9593", "MYST",
+ "\u30DE\u30EC\u30FC\u30B7\u30A2\u6642\u9593", "MYT"};
String NORONHA[] = new String[] {"\u30d5\u30a7\u30eb\u30ca\u30f3\u30c9\u30fb\u30c7\u30fb\u30ce\u30ed\u30fc\u30cb\u30e3\u6642\u9593", "FNT",
- "\u30d5\u30a7\u30eb\u30ca\u30f3\u30c9\u30fb\u30c7\u30fb\u30ce\u30ed\u30fc\u30cb\u30e3\u590f\u6642\u9593", "FNST"};
+ "\u30d5\u30a7\u30eb\u30ca\u30f3\u30c9\u30fb\u30c7\u30fb\u30ce\u30ed\u30fc\u30cb\u30e3\u590f\u6642\u9593", "FNST",
+ "\u30D5\u30A7\u30EB\u30CA\u30F3\u30C9\u30FB\u30C7\u30FB\u30CE\u30ED\u30FC\u30CB\u30E3\u6642\u9593", "FNT"};
String NOVT[] = new String[] {"\u30ce\u30dc\u30b7\u30d3\u30eb\u30b9\u30af\u6642\u9593", "NOVT",
- "\u30ce\u30dc\u30b7\u30d3\u30eb\u30b9\u30af\u590f\u6642\u9593", "NOVST"};
+ "\u30ce\u30dc\u30b7\u30d3\u30eb\u30b9\u30af\u590f\u6642\u9593", "NOVST",
+ "\u30CE\u30F4\u30A9\u30B7\u30D3\u30EB\u30B9\u30AF\u6642\u9593", "NOVT"};
String NPT[] = new String[] {"\u30cd\u30d1\u30fc\u30eb\u6642\u9593", "NPT",
- "\u30cd\u30d1\u30fc\u30eb\u590f\u6642\u9593", "NPST"};
+ "\u30cd\u30d1\u30fc\u30eb\u590f\u6642\u9593", "NPST",
+ "\u30CD\u30D1\u30FC\u30EB\u6642\u9593", "NPT"};
String NST[] = new String[] {"\u30cb\u30e5\u30fc\u30d5\u30a1\u30f3\u30c9\u30e9\u30f3\u30c9\u6a19\u6e96\u6642", "NST",
- "\u30cb\u30e5\u30fc\u30d5\u30a1\u30f3\u30c9\u30e9\u30f3\u30c9\u590f\u6642\u9593", "NDT"};
+ "\u30cb\u30e5\u30fc\u30d5\u30a1\u30f3\u30c9\u30e9\u30f3\u30c9\u590f\u6642\u9593", "NDT",
+ "\u30CB\u30E5\u30FC\u30D5\u30A1\u30F3\u30C9\u30E9\u30F3\u30C9\u6642\u9593", "NT"};
String NZST[] = new String[] {"\u30cb\u30e5\u30fc\u30b8\u30fc\u30e9\u30f3\u30c9\u6a19\u6e96\u6642", "NZST",
- "\u30cb\u30e5\u30fc\u30b8\u30fc\u30e9\u30f3\u30c9\u590f\u6642\u9593", "NZDT"};
+ "\u30cb\u30e5\u30fc\u30b8\u30fc\u30e9\u30f3\u30c9\u590f\u6642\u9593", "NZDT",
+ "\u30CB\u30E5\u30FC\u30B8\u30FC\u30E9\u30F3\u30C9\u6642\u9593", "NZT"};
String PITCAIRN[] = new String[] {"\u30d4\u30c8\u30b1\u30eb\u30f3\u5cf6\u6a19\u6e96\u6642", "PST",
- "\u30d4\u30c8\u30b1\u30eb\u30f3\u5cf6\u590f\u6642\u9593", "PDT"};
+ "\u30d4\u30c8\u30b1\u30eb\u30f3\u5cf6\u590f\u6642\u9593", "PDT",
+ "\u30D4\u30C8\u30B1\u30A2\u30F3\u6642\u9593", "PT"};
String PKT[] = new String[] {"\u30d1\u30ad\u30b9\u30bf\u30f3\u6642\u9593", "PKT",
- "\u30d1\u30ad\u30b9\u30bf\u30f3\u590f\u6642\u9593", "PKST"};
+ "\u30d1\u30ad\u30b9\u30bf\u30f3\u590f\u6642\u9593", "PKST",
+ "\u30D1\u30AD\u30B9\u30BF\u30F3\u6642\u9593", "PKT"};
String PONT[] = new String[] {"\u30DD\u30F3\u30DA\u30A4\u6642\u9593", "PONT",
- "\u30DD\u30F3\u30DA\u30A4\u590F\u6642\u9593", "PONST"};
+ "\u30DD\u30F3\u30DA\u30A4\u590F\u6642\u9593", "PONST",
+ "\u30DD\u30CA\u30DA\u6642\u9593", "PONT"};
String PST[] = new String[] {"\u592a\u5e73\u6d0b\u6a19\u6e96\u6642", "PST",
- "\u592a\u5e73\u6d0b\u590f\u6642\u9593", "PDT"};
+ "\u592a\u5e73\u6d0b\u590f\u6642\u9593", "PDT",
+ "\u592A\u5E73\u6D0B\u6A19\u6E96\u6642", "PT"};
String SAST[] = new String[] {"\u5357\u30a2\u30d5\u30ea\u30ab\u6a19\u6e96\u6642", "SAST",
- "\u5357\u30a2\u30d5\u30ea\u30ab\u590f\u6642\u9593", "SAST"};
+ "\u5357\u30a2\u30d5\u30ea\u30ab\u590f\u6642\u9593", "SAST",
+ "\u5357\u30A2\u30D5\u30EA\u30AB\u6642\u9593", "SAT"};
String SBT[] = new String[] {"\u30bd\u30ed\u30e2\u30f3\u8af8\u5cf6\u6642\u9593", "SBT",
- "\u30bd\u30ed\u30e2\u30f3\u8af8\u5cf6\u590f\u6642\u9593", "SBST"};
+ "\u30bd\u30ed\u30e2\u30f3\u8af8\u5cf6\u590f\u6642\u9593", "SBST",
+ "\u30BD\u30ED\u30E2\u30F3\u8AF8\u5CF6\u6642\u9593", "SBT"};
String SGT[] = new String[] {"\u30b7\u30f3\u30ac\u30dd\u30fc\u30eb\u6642\u9593", "SGT",
- "\u30b7\u30f3\u30ac\u30dd\u30fc\u30eb\u590f\u6642\u9593", "SGST"};
+ "\u30b7\u30f3\u30ac\u30dd\u30fc\u30eb\u590f\u6642\u9593", "SGST",
+ "\u30B7\u30F3\u30AC\u30DD\u30FC\u30EB\u6642\u9593", "SGT"};
String SLST[] = new String[] {"\u30b0\u30ea\u30cb\u30c3\u30b8\u6a19\u6e96\u6642", "GMT",
- "\u30b7\u30a8\u30e9\u30ec\u30aa\u30cd\u590f\u6642\u9593", "SLST"};
+ "\u30b7\u30a8\u30e9\u30ec\u30aa\u30cd\u590f\u6642\u9593", "SLST",
+ "\u30B7\u30A8\u30E9\u30EC\u30AA\u30CD\u6642\u9593", "SLT"};
String TASMANIA[] = new String[] {"\u6771\u90E8\u6A19\u6E96\u6642(\u30BF\u30B9\u30DE\u30CB\u30A2)", "EST",
- "\u6771\u90E8\u590F\u6642\u9593(\u30BF\u30B9\u30DE\u30CB\u30A2)", "EST"};
+ "\u6771\u90E8\u590F\u6642\u9593(\u30BF\u30B9\u30DE\u30CB\u30A2)", "EST",
+ "\u6771\u90E8\u6A19\u6E96\u6642(\u30BF\u30B9\u30DE\u30CB\u30A2)", "ET"};
String TMT[] = new String[] {"\u30c8\u30eb\u30af\u30e1\u30cb\u30b9\u30bf\u30f3\u6642\u9593", "TMT",
- "\u30c8\u30eb\u30af\u30e1\u30cb\u30b9\u30bf\u30f3\u590f\u6642\u9593", "TMST"};
+ "\u30c8\u30eb\u30af\u30e1\u30cb\u30b9\u30bf\u30f3\u590f\u6642\u9593", "TMST",
+ "\u30C8\u30EB\u30AF\u30E1\u30CB\u30B9\u30BF\u30F3\u6642\u9593", "TMT"};
String ULAT[]= new String[] {"\u30a6\u30e9\u30fc\u30f3\u30d0\u30fc\u30c8\u30eb\u6642\u9593", "ULAT",
- "\u30a6\u30e9\u30fc\u30f3\u30d0\u30fc\u30c8\u30eb\u590f\u6642\u9593", "ULAST"};
+ "\u30a6\u30e9\u30fc\u30f3\u30d0\u30fc\u30c8\u30eb\u590f\u6642\u9593", "ULAST",
+ "\u30A6\u30E9\u30F3\u30D0\u30FC\u30C8\u30EB\u6642\u9593", "ULAT"};
String WART[] = new String[] {"\u897f\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3\u6642\u9593", "WART",
"\u897f\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3\u590f\u6642\u9593", "WARST"};
String WAT[] = new String[] {"\u897f\u30a2\u30d5\u30ea\u30ab\u6642\u9593", "WAT",
- "\u897f\u30a2\u30d5\u30ea\u30ab\u590f\u6642\u9593", "WAST"};
+ "\u897f\u30a2\u30d5\u30ea\u30ab\u590f\u6642\u9593", "WAST",
+ "\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593", "WAT"};
String WET[] = new String[] {"\u897f\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593", "WET",
- "\u897f\u30e8\u30fc\u30ed\u30c3\u30d1\u590f\u6642\u9593", "WEST"};
+ "\u897f\u30e8\u30fc\u30ed\u30c3\u30d1\u590f\u6642\u9593", "WEST",
+ "\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593", "WET"};
String WIT[] = new String[] {"\u897f\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u6642\u9593", "WIB",
- "\u897f\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u590f\u6642\u9593", "WIST"};
+ "\u897f\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u590f\u6642\u9593", "WIST",
+ "\u897F\u90E8\u30A4\u30F3\u30C9\u30CD\u30B7\u30A2\u6642\u9593", "WIB"};
String WST_AUS[] = new String[] {"\u897F\u90E8\u6A19\u6E96\u6642(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "WST",
- "\u897F\u90E8\u590F\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "WST"};
+ "\u897F\u90E8\u590F\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "WST",
+ "\u897F\u90E8\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "WT"};
String SAMOA[] = new String[] {"\u30b5\u30e2\u30a2\u6a19\u6e96\u6642", "SST",
- "\u30b5\u30e2\u30a2\u590f\u6642\u9593", "SDT"};
+ "\u30b5\u30e2\u30a2\u590f\u6642\u9593", "SDT",
+ "\u30B5\u30E2\u30A2\u6642\u9593", "ST"};
String WST_SAMOA[] = new String[] {"\u897f\u30b5\u30e2\u30a2\u6642\u9593", "WST",
- "\u897f\u30b5\u30e2\u30a2\u590f\u6642\u9593", "WSDT"};
+ "\u897f\u30b5\u30e2\u30a2\u590f\u6642\u9593", "WSDT",
+ "\u897F\u30B5\u30E2\u30A2\u6642\u9593", "WST"};
String ChST[] = new String[] {"\u30b0\u30a2\u30e0\u6a19\u6e96\u6642", "ChST",
- "\u30b0\u30a2\u30e0\u590f\u6642\u9593", "ChDT"};
+ "\u30b0\u30a2\u30e0\u590f\u6642\u9593", "ChDT",
+ "\u30C1\u30E3\u30E2\u30ED\u6642\u9593", "ChT"};
String VICTORIA[] = new String[] {"\u6771\u90E8\u6A19\u6E96\u6642(\u30D3\u30AF\u30C8\u30EA\u30A2)", "EST",
- "\u6771\u90E8\u590F\u6642\u9593(\u30D3\u30AF\u30C8\u30EA\u30A2)", "EST"};
+ "\u6771\u90E8\u590F\u6642\u9593(\u30D3\u30AF\u30C8\u30EA\u30A2)", "EST",
+ "\u6771\u90E8\u6A19\u6E96\u6642(\u30D3\u30AF\u30C8\u30EA\u30A2)", "ET"};
String UTC[] = new String[] {"\u5354\u5b9a\u4e16\u754c\u6642", "UTC",
- "\u5354\u5b9a\u4e16\u754c\u6642", "UTC"};
+ "\u5354\u5b9a\u4e16\u754c\u6642", "UTC",
+ "\u5354\u5B9A\u4E16\u754C\u6642", "UTC"};
String UZT[] = new String[] {"\u30a6\u30ba\u30d9\u30ad\u30b9\u30bf\u30f3\u6642\u9593", "UZT",
- "\u30a6\u30ba\u30d9\u30ad\u30b9\u30bf\u30f3\u590f\u6642\u9593", "UZST"};
+ "\u30a6\u30ba\u30d9\u30ad\u30b9\u30bf\u30f3\u590f\u6642\u9593", "UZST",
+ "\u30A6\u30BA\u30D9\u30AD\u30B9\u30BF\u30F3\u6642\u9593", "UZT"};
return new Object[][] {
{"America/Los_Angeles", PST},
@@ -311,7 +387,8 @@
{"America/Argentina/Ushuaia", AGT},
{"America/Aruba", AST},
{"America/Asuncion", new String[] {"\u30d1\u30e9\u30b0\u30a2\u30a4\u6642\u9593", "PYT",
- "\u30d1\u30e9\u30b0\u30a2\u30a4\u590f\u6642\u9593", "PYST"}},
+ "\u30d1\u30e9\u30b0\u30a2\u30a4\u590f\u6642\u9593", "PYST",
+ "\u30D1\u30E9\u30B0\u30A2\u30A4\u6642\u9593", "PYT"}},
{"America/Atikokan", EST},
{"America/Atka", HAST},
{"America/Bahia", BRT},
@@ -322,17 +399,20 @@
{"America/Blanc-Sablon", AST},
{"America/Boa_Vista", AMT},
{"America/Bogota", new String[] {"\u30b3\u30ed\u30f3\u30d3\u30a2\u6642\u9593", "COT",
- "\u30b3\u30ed\u30f3\u30d3\u30a2\u590f\u6642\u9593", "COST"}},
+ "\u30b3\u30ed\u30f3\u30d3\u30a2\u590f\u6642\u9593", "COST",
+ "\u30B3\u30ED\u30F3\u30D3\u30A2\u6642\u9593", "COT"}},
{"America/Boise", MST},
{"America/Buenos_Aires", AGT},
{"America/Cambridge_Bay", MST},
{"America/Campo_Grande", AMT},
{"America/Cancun", CST},
{"America/Caracas", new String[] {"\u30d9\u30cd\u30ba\u30a8\u30e9\u6642\u9593", "VET",
- "\u30d9\u30cd\u30ba\u30a8\u30e9\u590f\u6642\u9593", "VEST"}},
+ "\u30d9\u30cd\u30ba\u30a8\u30e9\u590f\u6642\u9593", "VEST",
+ "\u30D9\u30CD\u30BA\u30A8\u30E9\u6642\u9593", "VET"}},
{"America/Catamarca", AGT},
{"America/Cayenne", new String[] {"\u4ecf\u9818\u30ae\u30a2\u30ca\u6642\u9593", "GFT",
- "\u4ecf\u9818\u30ae\u30a2\u30ca\u590f\u6642\u9593", "GFST"}},
+ "\u4ecf\u9818\u30ae\u30a2\u30ca\u590f\u6642\u9593", "GFST",
+ "\u30D5\u30E9\u30F3\u30B9\u9818\u30AE\u30A2\u30CA\u6642\u9593", "GFT"}},
{"America/Cayman", EST},
{"America/Chihuahua", MST},
{"America/Creston", MST},
@@ -354,16 +434,19 @@
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"\u897f\u30b0\u30ea\u30fc\u30f3\u30e9\u30f3\u30c9\u6642\u9593", "WGT",
- "\u897f\u30b0\u30ea\u30fc\u30f3\u30e9\u30f3\u30c9\u590f\u6642\u9593", "WGST"}},
+ "\u897f\u30b0\u30ea\u30fc\u30f3\u30e9\u30f3\u30c9\u590f\u6642\u9593", "WGST",
+ "\u897F\u90E8\u30B0\u30EA\u30FC\u30F3\u30E9\u30F3\u30C9\u6642\u9593", "WGT"}},
{"America/Goose_Bay", AST},
{"America/Grand_Turk", EST},
{"America/Grenada", AST},
{"America/Guadeloupe", AST},
{"America/Guatemala", CST},
{"America/Guayaquil", new String[] {"\u30a8\u30af\u30a2\u30c9\u30eb\u6642\u9593", "ECT",
- "\u30a8\u30af\u30a2\u30c9\u30eb\u590f\u6642\u9593", "ECST"}},
+ "\u30a8\u30af\u30a2\u30c9\u30eb\u590f\u6642\u9593", "ECST",
+ "\u30A8\u30AF\u30A2\u30C9\u30EB\u6642\u9593", "ECT"}},
{"America/Guyana", new String[] {"\u30ac\u30a4\u30a2\u30ca\u6642\u9593", "GYT",
- "\u30ac\u30a4\u30a2\u30ca\u590f\u6642\u9593", "GYST"}},
+ "\u30ac\u30a4\u30a2\u30ca\u590f\u6642\u9593", "GYST",
+ "\u30AC\u30A4\u30A2\u30CA\u6642\u9593", "GYT"}},
{"America/Havana", CUBA},
{"America/Hermosillo", MST},
{"America/Indiana/Indianapolis", EST},
@@ -384,9 +467,11 @@
{"America/Knox_IN", CST},
{"America/Kralendijk", AST},
{"America/La_Paz", new String[] {"\u30dc\u30ea\u30d3\u30a2\u6642\u9593", "BOT",
- "\u30dc\u30ea\u30d3\u30a2\u590f\u6642\u9593", "BOST"}},
+ "\u30dc\u30ea\u30d3\u30a2\u590f\u6642\u9593", "BOST",
+ "\u30DC\u30EA\u30D3\u30A2\u6642\u9593", "BOT"}},
{"America/Lima", new String[] {"\u30da\u30eb\u30fc\u6642\u9593", "PET",
- "\u30da\u30eb\u30fc\u590f\u6642\u9593", "PEST"}},
+ "\u30da\u30eb\u30fc\u590f\u6642\u9593", "PEST",
+ "\u30DA\u30EB\u30FC\u6642\u9593", "PET"}},
{"America/Louisville", EST},
{"America/Lower_Princes", AST},
{"America/Maceio", BRT},
@@ -400,13 +485,16 @@
{"America/Menominee", CST},
{"America/Merida", CST},
{"America/Metlakatla", new String[] {"\u30E1\u30C8\u30E9\u30AB\u30C8\u30E9\u6A19\u6E96\u6642\u9593", "MeST",
- "\u30E1\u30C8\u30E9\u30AB\u30C8\u30E9\u590F\u6642\u9593", "MeDT"}},
+ "\u30E1\u30C8\u30E9\u30AB\u30C8\u30E9\u590F\u6642\u9593", "MeDT",
+ "\u30E1\u30C8\u30E9\u30AB\u30C8\u30E9\u6642\u9593", "MeT"}},
{"America/Mexico_City", CST},
{"America/Miquelon", new String[] {"\u30b5\u30f3\u30d4\u30a8\u30fc\u30eb\u30fb\u30df\u30af\u30ed\u30f3\u8af8\u5cf6\u6a19\u6e96\u6642", "PMST",
- "\u30b5\u30f3\u30d4\u30a8\u30fc\u30eb\u30fb\u30df\u30af\u30ed\u30f3\u8af8\u5cf6\u590f\u6642\u9593", "PMDT"}},
+ "\u30b5\u30f3\u30d4\u30a8\u30fc\u30eb\u30fb\u30df\u30af\u30ed\u30f3\u8af8\u5cf6\u590f\u6642\u9593", "PMDT",
+ "\u30D4\u30A8\u30FC\u30EB\u30FB\u30DF\u30AF\u30ED\u30F3\u6642\u9593", "PMT"}},
{"America/Moncton", AST},
{"America/Montevideo", new String[] {"\u30a6\u30eb\u30b0\u30a2\u30a4\u6642\u9593", "UYT",
- "\u30a6\u30eb\u30b0\u30a2\u30a4\u590f\u6642\u9593", "UYST"}},
+ "\u30a6\u30eb\u30b0\u30a2\u30a4\u590f\u6642\u9593", "UYST",
+ "\u30A6\u30EB\u30B0\u30A2\u30A4\u6642\u9593", "UYT"}},
{"America/Monterrey", CST},
{"America/Montreal", EST},
{"America/Montserrat", AST},
@@ -421,7 +509,8 @@
{"America/Panama", EST},
{"America/Pangnirtung", EST},
{"America/Paramaribo", new String[] {"\u30b9\u30ea\u30ca\u30e0\u6642\u9593", "SRT",
- "\u30b9\u30ea\u30ca\u30e0\u590f\u6642\u9593", "SRST"}},
+ "\u30b9\u30ea\u30ca\u30e0\u590f\u6642\u9593", "SRST",
+ "\u30B9\u30EA\u30CA\u30E0\u6642\u9593", "SRT"}},
{"America/Port-au-Prince", EST},
{"America/Port_of_Spain", AST},
{"America/Porto_Acre", ACT},
@@ -461,115 +550,146 @@
{"America/Yellowknife", MST},
{"Antarctica/Casey", WST_AUS},
{"Antarctica/Davis", new String[] {"\u30c7\u30a4\u30d3\u30b9\u6642\u9593", "DAVT",
- "\u30c7\u30a4\u30d3\u30b9\u590f\u6642\u9593", "DAVST"}},
+ "\u30c7\u30a4\u30d3\u30b9\u590f\u6642\u9593", "DAVST",
+ "\u30C7\u30FC\u30D3\u30B9\u6642\u9593", "DAVT"}},
{"Antarctica/DumontDUrville", new String[] {"\u30c7\u30e5\u30e2\u30f3\u30c7\u30e5\u30eb\u30f4\u30a3\u30eb\u6642\u9593", "DDUT",
- "\u30c7\u30e5\u30e2\u30f3\u30c7\u30e5\u30eb\u30f4\u30a3\u30eb\u590f\u6642\u9593", "DDUST"}},
+ "\u30c7\u30e5\u30e2\u30f3\u30c7\u30e5\u30eb\u30f4\u30a3\u30eb\u590f\u6642\u9593", "DDUST",
+ "\u30C7\u30E5\u30E2\u30F3\u30FB\u30C7\u30E5\u30EB\u30D3\u30EB\u6642\u9593", "DDUT"}},
{"Antarctica/Macquarie", new String[] {"\u30DE\u30C3\u30B3\u30FC\u30EA\u30FC\u5CF6\u6642\u9593", "MIST",
- "\u30DE\u30C3\u30B3\u30FC\u30EA\u30FC\u5CF6\u590F\u6642\u9593", "MIST"}},
+ "\u30DE\u30C3\u30B3\u30FC\u30EA\u30FC\u5CF6\u590F\u6642\u9593", "MIST",
+ "\u30DE\u30C3\u30B3\u30FC\u30EA\u30FC\u5CF6\u6642\u9593", "MIST"}},
{"Antarctica/Mawson", new String[] {"\u30e2\u30fc\u30bd\u30f3\u6642\u9593", "MAWT",
- "\u30e2\u30fc\u30bd\u30f3\u590f\u6642\u9593", "MAWST"}},
+ "\u30e2\u30fc\u30bd\u30f3\u590f\u6642\u9593", "MAWST",
+ "\u30E2\u30FC\u30BD\u30F3\u6642\u9593", "MAWT"}},
{"Antarctica/McMurdo", NZST},
{"Antarctica/Palmer", CLT},
{"Antarctica/Rothera", new String[] {"\u30ed\u30bc\u30e9\u6642\u9593", "ROTT",
- "\u30ed\u30bc\u30e9\u590f\u6642\u9593", "ROTST"}},
+ "\u30ed\u30bc\u30e9\u590f\u6642\u9593", "ROTST",
+ "\u30ED\u30BC\u30E9\u6642\u9593", "ROTT"}},
{"Antarctica/South_Pole", NZST},
{"Antarctica/Syowa", new String[] {"\u662d\u548c\u57fa\u5730\u6642\u9593", "SYOT",
- "\u662d\u548c\u57fa\u5730\u590f\u6642\u9593", "SYOST"}},
+ "\u662d\u548c\u57fa\u5730\u590f\u6642\u9593", "SYOST",
+ "\u662D\u548C\u57FA\u5730\u6642\u9593", "SYOT"}},
{"Antarctica/Vostok", new String[] {"\u30dc\u30b9\u30c8\u30fc\u30af\u57fa\u5730\u6642\u9593", "VOST",
- "\u30dc\u30b9\u30c8\u30fc\u30af\u57fa\u5730\u590f\u6642\u9593", "VOSST"}},
+ "\u30dc\u30b9\u30c8\u30fc\u30af\u57fa\u5730\u590f\u6642\u9593", "VOSST",
+ "\u30DC\u30B9\u30C8\u30FC\u30AF\u6642\u9593", "VOST"}},
{"Arctic/Longyearbyen", CET},
{"Asia/Aden", ARAST},
{"Asia/Almaty", new String[] {"\u30a2\u30eb\u30de\u30a2\u30bf\u6642\u9593", "ALMT",
- "\u30a2\u30eb\u30de\u30a2\u30bf\u590f\u6642\u9593", "ALMST"}},
+ "\u30a2\u30eb\u30de\u30a2\u30bf\u590f\u6642\u9593", "ALMST",
+ "\u30A2\u30EB\u30DE\u30A2\u30BF\u6642\u9593", "ALMT"}},
{"Asia/Amman", ARAST},
{"Asia/Anadyr", new String[] {"\u30a2\u30ca\u30c9\u30a5\u30a4\u30ea\u6642\u9593", "ANAT",
- "\u30a2\u30ca\u30c9\u30a5\u30a4\u30ea\u590f\u6642\u9593", "ANAST"}},
+ "\u30a2\u30ca\u30c9\u30a5\u30a4\u30ea\u590f\u6642\u9593", "ANAST",
+ "\u30A2\u30CA\u30C7\u30A3\u30EA\u6642\u9593", "ANAT"}},
{"Asia/Aqtau", new String[] {"\u30a2\u30af\u30bf\u30a6\u6642\u9593", "AQTT",
- "\u30a2\u30af\u30bf\u30a6\u590f\u6642\u9593", "AQTST"}},
+ "\u30a2\u30af\u30bf\u30a6\u590f\u6642\u9593", "AQTST",
+ "\u30A2\u30AF\u30BF\u30A6\u6642\u9593", "AQTT"}},
{"Asia/Aqtobe", new String[] {"\u30a2\u30af\u30c8\u30d9\u6642\u9593", "AQTT",
- "\u30a2\u30af\u30c8\u30d9\u590f\u6642\u9593", "AQTST"}},
+ "\u30a2\u30af\u30c8\u30d9\u590f\u6642\u9593", "AQTST",
+ "\u30A2\u30AF\u30C8\u30D9\u6642\u9593", "AQTT"}},
{"Asia/Ashgabat", TMT},
{"Asia/Ashkhabad", TMT},
{"Asia/Baghdad", ARAST},
{"Asia/Bahrain", ARAST},
{"Asia/Baku", new String[] {"\u30a2\u30bc\u30eb\u30d0\u30a4\u30b8\u30e3\u30f3\u6642\u9593", "AZT",
- "\u30a2\u30bc\u30eb\u30d0\u30a4\u30b8\u30e3\u30f3\u590f\u6642\u9593", "AZST"}},
+ "\u30a2\u30bc\u30eb\u30d0\u30a4\u30b8\u30e3\u30f3\u590f\u6642\u9593", "AZST",
+ "\u30A2\u30BC\u30EB\u30D0\u30A4\u30B8\u30E3\u30F3\u6642\u9593", "AZT"}},
{"Asia/Bangkok", ICT},
{"Asia/Beirut", EET},
{"Asia/Bishkek", new String[] {"\u30ad\u30eb\u30ae\u30b9\u30bf\u30f3\u6642\u9593", "KGT",
- "\u30ad\u30eb\u30ae\u30b9\u30bf\u30f3\u590f\u6642\u9593", "KGST"}},
+ "\u30ad\u30eb\u30ae\u30b9\u30bf\u30f3\u590f\u6642\u9593", "KGST",
+ "\u30AD\u30EB\u30AE\u30B9\u6642\u9593", "KGT"}},
{"Asia/Brunei", new String[] {"\u30d6\u30eb\u30cd\u30a4\u6642\u9593", "BNT",
- "\u30d6\u30eb\u30cd\u30a4\u590f\u6642\u9593", "BNST"}},
+ "\u30d6\u30eb\u30cd\u30a4\u590f\u6642\u9593", "BNST",
+ "\u30D6\u30EB\u30CD\u30A4\u6642\u9593", "BNT"}},
{"Asia/Calcutta", IST},
{"Asia/Choibalsan", new String[] {"\u30c1\u30e7\u30a4\u30d0\u30eb\u30b5\u30f3\u6642\u9593", "CHOT",
- "\u30c1\u30e7\u30a4\u30d0\u30eb\u30b5\u30f3\u590f\u6642\u9593", "CHOST"}},
+ "\u30c1\u30e7\u30a4\u30d0\u30eb\u30b5\u30f3\u590f\u6642\u9593", "CHOST",
+ "\u30C1\u30E7\u30A4\u30D0\u30EB\u30B5\u30F3\u6642\u9593", "CHOT"}},
{"Asia/Chongqing", CTT},
{"Asia/Chungking", CTT},
{"Asia/Colombo", IST},
{"Asia/Dacca", BDT},
{"Asia/Dhaka", BDT},
{"Asia/Dili", new String[] {"\u6771\u30c6\u30a3\u30e2\u30fc\u30eb\u6642\u9593", "TLT",
- "\u6771\u30c6\u30a3\u30e2\u30fc\u30eb\u590f\u6642\u9593", "TLST"}},
+ "\u6771\u30c6\u30a3\u30e2\u30fc\u30eb\u590f\u6642\u9593", "TLST",
+ "\u6771\u30C6\u30A3\u30E2\u30FC\u30EB\u6642\u9593", "TLT"}},
{"Asia/Damascus", EET},
{"Asia/Dubai", GST},
{"Asia/Dushanbe", new String[] {"\u30bf\u30b8\u30ad\u30b9\u30bf\u30f3\u6642\u9593", "TJT",
- "\u30bf\u30b8\u30ad\u30b9\u30bf\u30f3\u590f\u6642\u9593", "TJST"}},
+ "\u30bf\u30b8\u30ad\u30b9\u30bf\u30f3\u590f\u6642\u9593", "TJST",
+ "\u30BF\u30B8\u30AD\u30B9\u30BF\u30F3\u6642\u9593", "TJT"}},
{"Asia/Gaza", EET},
{"Asia/Harbin", CTT},
{"Asia/Hebron", EET},
{"Asia/Ho_Chi_Minh", ICT},
{"Asia/Hong_Kong", HKT},
{"Asia/Hovd", new String[] {"\u30db\u30d6\u30c9\u6642\u9593", "HOVT",
- "\u30db\u30d6\u30c9\u590f\u6642\u9593", "HOVST"}},
+ "\u30db\u30d6\u30c9\u590f\u6642\u9593", "HOVST",
+ "\u30DB\u30D6\u30C9\u6642\u9593", "HOVT"}},
{"Asia/Irkutsk", new String[] {"\u30a4\u30eb\u30af\u30fc\u30c4\u30af\u6642\u9593", "IRKT",
- "\u30a4\u30eb\u30af\u30fc\u30c4\u30af\u590f\u6642\u9593", "IRKST"}},
+ "\u30a4\u30eb\u30af\u30fc\u30c4\u30af\u590f\u6642\u9593", "IRKST",
+ "\u30A4\u30EB\u30AF\u30FC\u30C4\u30AF\u6642\u9593", "IRKT"}},
{"Asia/Istanbul", EET},
{"Asia/Jakarta", WIT},
{"Asia/Jayapura", new String[] {"\u6771\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u6642\u9593", "WIT",
- "\u6771\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u590f\u6642\u9593", "EIST" }},
+ "\u6771\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u590f\u6642\u9593", "EIST" ,
+ "\u6771\u90E8\u30A4\u30F3\u30C9\u30CD\u30B7\u30A2\u6642\u9593", "WIT"}},
{"Asia/Kabul", new String[] {"\u30a2\u30d5\u30ac\u30cb\u30b9\u30bf\u30f3\u6642\u9593", "AFT",
- "\u30a2\u30d5\u30ac\u30cb\u30b9\u30bf\u30f3\u590f\u6642\u9593", "AFST"}},
+ "\u30a2\u30d5\u30ac\u30cb\u30b9\u30bf\u30f3\u590f\u6642\u9593", "AFST",
+ "\u30A2\u30D5\u30AC\u30CB\u30B9\u30BF\u30F3\u6642\u9593", "AFT"}},
{"Asia/Kamchatka", new String[] {"\u30da\u30c8\u30ed\u30d1\u30d6\u30ed\u30d5\u30b9\u30af\u30ab\u30e0\u30c1\u30e3\u30c4\u30ad\u30fc\u6642\u9593", "PETT",
- "\u30da\u30c8\u30ed\u30d1\u30d6\u30ed\u30d5\u30b9\u30af\u30ab\u30e0\u30c1\u30e3\u30c4\u30ad\u30fc\u590f\u6642\u9593", "PETST"}},
+ "\u30da\u30c8\u30ed\u30d1\u30d6\u30ed\u30d5\u30b9\u30af\u30ab\u30e0\u30c1\u30e3\u30c4\u30ad\u30fc\u590f\u6642\u9593", "PETST",
+ "\u30DA\u30C8\u30ED\u30D1\u30D6\u30ED\u30D5\u30B9\u30AF\u30FB\u30AB\u30E0\u30C1\u30E3\u30C4\u30AD\u30FC\u6642\u9593", "PETT"}},
{"Asia/Karachi", PKT},
{"Asia/Kashgar", CTT},
{"Asia/Kathmandu", NPT},
{"Asia/Katmandu", NPT},
{"Asia/Khandyga", new String[] {"\u30CF\u30F3\u30C9\u30A5\u30A4\u30AC\u6642\u9593", "YAKT",
- "\u30CF\u30F3\u30C9\u30A5\u30A4\u30AC\u590F\u6642\u9593", "YAKST"}},
+ "\u30CF\u30F3\u30C9\u30A5\u30A4\u30AC\u590F\u6642\u9593", "YAKST",
+ "\u30CF\u30F3\u30C9\u30A5\u30A4\u30AC\u6642\u9593", "YAKT"}},
{"Asia/Kolkata", IST},
{"Asia/Krasnoyarsk", new String[] {"\u30af\u30e9\u30b9\u30ce\u30e4\u30eb\u30b9\u30af\u6642\u9593", "KRAT",
- "\u30af\u30e9\u30b9\u30ce\u30e4\u30eb\u30b9\u30af\u590f\u6642\u9593", "KRAST"}},
+ "\u30af\u30e9\u30b9\u30ce\u30e4\u30eb\u30b9\u30af\u590f\u6642\u9593", "KRAST",
+ "\u30AF\u30E9\u30B9\u30CE\u30E4\u30EB\u30B9\u30AF\u6642\u9593", "KRAT"}},
{"Asia/Kuala_Lumpur", MYT},
{"Asia/Kuching", MYT},
{"Asia/Kuwait", ARAST},
{"Asia/Macao", CTT},
{"Asia/Macau", CTT},
{"Asia/Magadan", new String[] {"\u30de\u30ac\u30c0\u30f3\u6642\u9593", "MAGT",
- "\u30de\u30ac\u30c0\u30f3\u590f\u6642\u9593", "MAGST"}},
+ "\u30de\u30ac\u30c0\u30f3\u590f\u6642\u9593", "MAGST",
+ "\u30DE\u30AC\u30C0\u30F3\u6642\u9593", "MAGT"}},
{"Asia/Makassar", CIT},
{"Asia/Manila", new String[] {"\u30d5\u30a3\u30ea\u30d4\u30f3\u6642\u9593", "PHT",
- "\u30d5\u30a3\u30ea\u30d4\u30f3\u590f\u6642\u9593", "PHST"}},
+ "\u30d5\u30a3\u30ea\u30d4\u30f3\u590f\u6642\u9593", "PHST",
+ "\u30D5\u30A3\u30EA\u30D4\u30F3\u6642\u9593", "PHT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", NOVT},
{"Asia/Novosibirsk", NOVT},
{"Asia/Oral", new String[] {"\u30aa\u30e9\u30eb\u6642\u9593", "ORAT",
- "\u30aa\u30e9\u30eb\u590f\u6642\u9593", "ORAST"}},
+ "\u30aa\u30e9\u30eb\u590f\u6642\u9593", "ORAST",
+ "\u30AA\u30E9\u30EB\u6642\u9593", "ORAT"}},
{"Asia/Omsk", new String[] {"\u30aa\u30e0\u30b9\u30af\u6642\u9593", "OMST",
- "\u30aa\u30e0\u30b9\u30af\u590f\u6642\u9593", "OMSST"}},
+ "\u30aa\u30e0\u30b9\u30af\u590f\u6642\u9593", "OMSST",
+ "\u30AA\u30E0\u30B9\u30AF\u6642\u9593", "OMST"}},
{"Asia/Phnom_Penh", ICT},
{"Asia/Pontianak", WIT},
{"Asia/Pyongyang", KST},
{"Asia/Qatar", ARAST},
{"Asia/Qyzylorda", new String[] {"\u30ad\u30b8\u30eb\u30aa\u30eb\u30c0\u6642\u9593", "QYZT",
- "\u30ad\u30b8\u30eb\u30aa\u30eb\u30c0\u590f\u6642\u9593", "QYZST"}},
+ "\u30ad\u30b8\u30eb\u30aa\u30eb\u30c0\u590f\u6642\u9593", "QYZST",
+ "\u30AF\u30BA\u30ED\u30EB\u30C0\u6642\u9593", "QYZT"}},
{"Asia/Rangoon", new String[] {"\u30df\u30e3\u30f3\u30de\u30fc\u6642\u9593", "MMT",
- "\u30df\u30e3\u30f3\u30de\u30fc\u590f\u6642\u9593", "MMST"}},
+ "\u30df\u30e3\u30f3\u30de\u30fc\u590f\u6642\u9593", "MMST",
+ "\u30DF\u30E3\u30F3\u30DE\u30FC\u6642\u9593", "MMT"}},
{"Asia/Riyadh", ARAST},
{"Asia/Saigon", ICT},
{"Asia/Sakhalin", new String[] {"\u6a3a\u592a\u6642\u9593", "SAKT",
- "\u6a3a\u592a\u590f\u6642\u9593", "SAKST"}},
+ "\u6a3a\u592a\u590f\u6642\u9593", "SAKST",
+ "\u30B5\u30CF\u30EA\u30F3\u6642\u9593", "SAKT"}},
{"Asia/Samarkand", UZT},
{"Asia/Seoul", KST},
{"Asia/Singapore", SGT},
@@ -577,7 +697,8 @@
{"Asia/Tel_Aviv", ISRAEL},
{"Asia/Tashkent", UZT},
{"Asia/Tbilisi", new String[] {"\u30b0\u30eb\u30b8\u30a2\u6642\u9593", "GET",
- "\u30b0\u30eb\u30b8\u30a2\u590f\u6642\u9593", "GEST"}},
+ "\u30b0\u30eb\u30b8\u30a2\u590f\u6642\u9593", "GEST",
+ "\u30B0\u30EB\u30B8\u30A2\u6642\u9593", "GET"}},
{"Asia/Tehran", IRT},
{"Asia/Thimbu", BTT},
{"Asia/Thimphu", BTT},
@@ -586,31 +707,39 @@
{"Asia/Ulan_Bator", ULAT},
{"Asia/Urumqi", CTT},
{"Asia/Ust-Nera", new String[] {"\u30A6\u30B9\u30C1\u30CD\u30E9\u6642\u9593", "VLAT",
- "\u30A6\u30B9\u30C1\u30CD\u30E9\u590F\u6642\u9593", "VLAST"}},
+ "\u30A6\u30B9\u30C1\u30CD\u30E9\u590F\u6642\u9593", "VLAST",
+ "\u30A6\u30B9\u30C1\u30CD\u30E9\u6642\u9593", "VLAT"}},
{"Asia/Vientiane", ICT},
{"Asia/Vladivostok", new String[] {"\u30a6\u30e9\u30b8\u30aa\u30b9\u30c8\u30af\u6642\u9593", "VLAT",
- "\u30a6\u30e9\u30b8\u30aa\u30b9\u30c8\u30af\u590f\u6642\u9593", "VLAST"}},
+ "\u30a6\u30e9\u30b8\u30aa\u30b9\u30c8\u30af\u590f\u6642\u9593", "VLAST",
+ "\u30A6\u30E9\u30B8\u30AA\u30B9\u30C8\u30AF\u6642\u9593", "VLAT"}},
{"Asia/Yakutsk", new String[] {"\u30e4\u30af\u30fc\u30c4\u30af\u6642\u9593", "YAKT",
- "\u30e4\u30af\u30fc\u30c4\u30af\u590f\u6642\u9593", "YAKST"}},
+ "\u30e4\u30af\u30fc\u30c4\u30af\u590f\u6642\u9593", "YAKST",
+ "\u30E4\u30AF\u30FC\u30C4\u30AF\u6642\u9593", "YAKT"}},
{"Asia/Yekaterinburg", new String[] {"\u30a8\u30ab\u30c6\u30ea\u30f3\u30d6\u30eb\u30b0\u6642\u9593", "YEKT",
- "\u30a8\u30ab\u30c6\u30ea\u30f3\u30d6\u30eb\u30b0\u590f\u6642\u9593", "YEKST"}},
+ "\u30a8\u30ab\u30c6\u30ea\u30f3\u30d6\u30eb\u30b0\u590f\u6642\u9593", "YEKST",
+ "\u30A8\u30AB\u30C6\u30EA\u30F3\u30D6\u30EB\u30AF\u6642\u9593", "YEKT"}},
{"Asia/Yerevan", ARMT},
{"Atlantic/Azores", new String[] {"\u30a2\u30be\u30ec\u30b9\u6642\u9593", "AZOT",
- "\u30a2\u30be\u30ec\u30b9\u590f\u6642\u9593", "AZOST"}},
+ "\u30a2\u30be\u30ec\u30b9\u590f\u6642\u9593", "AZOST",
+ "\u30A2\u30BE\u30EC\u30B9\u6642\u9593", "AZOT"}},
{"Atlantic/Bermuda", AST},
{"Atlantic/Canary", WET},
{"Atlantic/Cape_Verde", new String[] {"\u30ab\u30fc\u30dc\u30d9\u30eb\u30c7\u6642\u9593", "CVT",
- "\u30ab\u30fc\u30dc\u30d9\u30eb\u30c7\u590f\u6642\u9593", "CVST"}},
+ "\u30ab\u30fc\u30dc\u30d9\u30eb\u30c7\u590f\u6642\u9593", "CVST",
+ "\u30AB\u30FC\u30DC\u30D9\u30EB\u30C7\u6642\u9593", "CVT"}},
{"Atlantic/Faeroe", WET},
{"Atlantic/Faroe", WET},
{"Atlantic/Jan_Mayen", CET},
{"Atlantic/Madeira", WET},
{"Atlantic/Reykjavik", GMT},
{"Atlantic/South_Georgia", new String[] {"\u5357\u30b8\u30e7\u30fc\u30b8\u30a2\u5cf6\u6a19\u6e96\u6642", "GST",
- "\u5357\u30b8\u30e7\u30fc\u30b8\u30a2\u5cf6\u590f\u6642\u9593", "GDT"}},
+ "\u5357\u30b8\u30e7\u30fc\u30b8\u30a2\u5cf6\u590f\u6642\u9593", "GDT",
+ "\u5357\u30B8\u30E7\u30FC\u30B8\u30A2\u6642\u9593", "GT"}},
{"Atlantic/St_Helena", GMT},
{"Atlantic/Stanley", new String[] {"\u30d5\u30a9\u30fc\u30af\u30e9\u30f3\u30c9\u8af8\u5cf6\u6642\u9593", "FKT",
- "\u30d5\u30a9\u30fc\u30af\u30e9\u30f3\u30c9\u8af8\u5cf6\u590f\u6642\u9593", "FKST"}},
+ "\u30d5\u30a9\u30fc\u30af\u30e9\u30f3\u30c9\u8af8\u5cf6\u590f\u6642\u9593", "FKST",
+ "\u30D5\u30A9\u30FC\u30AF\u30E9\u30F3\u30C9\u8AF8\u5CF6\u6642\u9593", "FKT"}},
{"Australia/ACT", EST_NSW},
{"Australia/Adelaide", ADELAIDE},
{"Australia/Brisbane", BRISBANE},
@@ -619,7 +748,8 @@
{"Australia/Currie", EST_NSW},
{"Australia/Darwin", DARWIN},
{"Australia/Eucla", new String[] {"\u4E2D\u897F\u90E8\u6A19\u6E96\u6642(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "CWST",
- "\u4E2D\u897F\u90E8\u590F\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "CWST"}},
+ "\u4E2D\u897F\u90E8\u590F\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "CWST",
+ "\u4E2D\u897F\u90E8\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)", "CWT"}},
{"Australia/Hobart", TASMANIA},
{"Australia/LHI", LORD_HOWE},
{"Australia/Lindeman", BRISBANE},
@@ -704,7 +834,8 @@
{"Europe/Riga", EET},
{"Europe/Rome", CET},
{"Europe/Samara", new String[] {"\u30b5\u30de\u30e9\u6642\u9593", "SAMT",
- "\u30b5\u30de\u30e9\u590f\u6642\u9593", "SAMST"}},
+ "\u30b5\u30de\u30e9\u590f\u6642\u9593", "SAMST",
+ "\u30B5\u30DE\u30E9\u6642\u9593", "SAMT"}},
{"Europe/San_Marino", CET},
{"Europe/Sarajevo", CET},
{"Europe/Simferopol", EET},
@@ -720,7 +851,8 @@
{"Europe/Vienna", CET},
{"Europe/Vilnius", EET},
{"Europe/Volgograd", new String[] {"\u30dc\u30eb\u30b4\u30b0\u30e9\u30fc\u30c9\u6642\u9593", "VOLT",
- "\u30dc\u30eb\u30b4\u30b0\u30e9\u30fc\u30c9\u590f\u6642\u9593", "VOLST"}},
+ "\u30dc\u30eb\u30b4\u30b0\u30e9\u30fc\u30c9\u590f\u6642\u9593", "VOLST",
+ "\u30DC\u30EB\u30B4\u30B0\u30E9\u30FC\u30C9\u6642\u9593", "VOLT"}},
{"Europe/Warsaw", CET},
{"Europe/Zagreb", CET},
{"Europe/Zaporozhye", EET},
@@ -734,30 +866,39 @@
{"IST", IST},
{"Indian/Antananarivo", EAT},
{"Indian/Chagos", new String[] {"\u30a4\u30f3\u30c9\u6d0b\u5730\u57df\u6642\u9593", "IOT",
- "\u30a4\u30f3\u30c9\u6d0b\u5730\u57df\u590f\u6642\u9593", "IOST"}},
+ "\u30a4\u30f3\u30c9\u6d0b\u5730\u57df\u590f\u6642\u9593", "IOST",
+ "\u30A4\u30F3\u30C9\u6D0B\u5730\u57DF\u6642\u9593", "IOT"}},
{"Indian/Christmas", new String[] {"\u30af\u30ea\u30b9\u30de\u30b9\u8af8\u5cf6\u6642\u9593", "CXT",
- "\u30af\u30ea\u30b9\u30de\u30b9\u8af8\u5cf6\u590f\u6642\u9593", "CXST"}},
+ "\u30af\u30ea\u30b9\u30de\u30b9\u8af8\u5cf6\u590f\u6642\u9593", "CXST",
+ "\u30AF\u30EA\u30B9\u30DE\u30B9\u5CF6\u6642\u9593", "CIT"}},
{"Indian/Cocos", new String[] {"\u30b3\u30b3\u30b9\u8af8\u5cf6\u6642\u9593", "CCT",
- "\u30b3\u30b3\u30b9\u8af8\u5cf6\u590f\u6642\u9593", "CCST"}},
+ "\u30b3\u30b3\u30b9\u8af8\u5cf6\u590f\u6642\u9593", "CCST",
+ "\u30B3\u30B3\u30B9\u8AF8\u5CF6\u6642\u9593", "CCT"}},
{"Indian/Comoro", EAT},
{"Indian/Kerguelen", new String[] {"\u4ecf\u5357\u65b9\u9818\u304a\u3088\u3073\u5357\u6975\u6642\u9593", "TFT",
- "\u4ecf\u5357\u65b9\u9818\u304a\u3088\u3073\u5357\u6975\u590f\u6642\u9593", "TFST"}},
+ "\u4ecf\u5357\u65b9\u9818\u304a\u3088\u3073\u5357\u6975\u590f\u6642\u9593", "TFST",
+ "\u30D5\u30E9\u30F3\u30B9\u9818\u5357\u65B9\u304A\u3088\u3073\u5357\u6975\u5927\u9678\u6642\u9593", "TFT"}},
{"Indian/Mahe", new String[] {"\u30bb\u30a4\u30b7\u30a7\u30eb\u6642\u9593", "SCT",
- "\u30bb\u30a4\u30b7\u30a7\u30eb\u590f\u6642\u9593", "SCST"}},
+ "\u30bb\u30a4\u30b7\u30a7\u30eb\u590f\u6642\u9593", "SCST",
+ "\u30BB\u30FC\u30B7\u30A7\u30EB\u6642\u9593", "SCT"}},
{"Indian/Maldives", new String[] {"\u30e2\u30eb\u30b8\u30d6\u6642\u9593", "MVT",
- "\u30e2\u30eb\u30b8\u30d6\u590f\u6642\u9593", "MVST"}},
+ "\u30e2\u30eb\u30b8\u30d6\u590f\u6642\u9593", "MVST",
+ "\u30E2\u30EB\u30B8\u30D6\u6642\u9593", "MVT"}},
{"Indian/Mauritius", new String[] {"\u30e2\u30fc\u30ea\u30b7\u30e3\u30b9\u6642\u9593", "MUT",
- "\u30e2\u30fc\u30ea\u30b7\u30e3\u30b9\u590f\u6642\u9593", "MUST"}},
+ "\u30e2\u30fc\u30ea\u30b7\u30e3\u30b9\u590f\u6642\u9593", "MUST",
+ "\u30E2\u30FC\u30EA\u30B7\u30E3\u30B9\u6642\u9593", "MUT"}},
{"Indian/Mayotte", EAT},
{"Indian/Reunion", new String[] {"\u30ec\u30e6\u30cb\u30aa\u30f3\u6642\u9593", "RET",
- "\u30ec\u30e6\u30cb\u30aa\u30f3\u590f\u6642\u9593", "REST"}},
+ "\u30ec\u30e6\u30cb\u30aa\u30f3\u590f\u6642\u9593", "REST",
+ "\u30EC\u30E6\u30CB\u30AA\u30F3\u6642\u9593", "RET"}},
{"Israel", ISRAEL},
{"Jamaica", EST},
{"Japan", JST},
{"Kwajalein", MHT},
{"Libya", EET},
{"MET", new String[] {"\u4e2d\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593", "MET",
- "\u4e2d\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u590f\u6642\u9593", "MEST"}},
+ "\u4e2d\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u590f\u6642\u9593", "MEST",
+ "MET", "MET"}},
{"Mexico/BajaNorte", PST},
{"Mexico/BajaSur", MST},
{"Mexico/General", CST},
@@ -777,61 +918,82 @@
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
{"Pacific/Efate", new String[] {"\u30d0\u30cc\u30a2\u30c4\u6642\u9593", "VUT",
- "\u30d0\u30cc\u30a2\u30c4\u590f\u6642\u9593", "VUST"}},
+ "\u30d0\u30cc\u30a2\u30c4\u590f\u6642\u9593", "VUST",
+ "\u30D0\u30CC\u30A2\u30C4\u6642\u9593", "VUT"}},
{"Pacific/Enderbury", new String[] {"\u30d5\u30a7\u30cb\u30c3\u30af\u30b9\u8af8\u5cf6\u6642\u9593", "PHOT",
- "\u30d5\u30a7\u30cb\u30c3\u30af\u30b9\u8af8\u5cf6\u590f\u6642\u9593", "PHOST"}},
+ "\u30d5\u30a7\u30cb\u30c3\u30af\u30b9\u8af8\u5cf6\u590f\u6642\u9593", "PHOST",
+ "\u30D5\u30A7\u30CB\u30C3\u30AF\u30B9\u8AF8\u5CF6\u6642\u9593", "PHOT"}},
{"Pacific/Fakaofo", new String[] {"\u30c8\u30b1\u30e9\u30a6\u8af8\u5cf6\u6642\u9593", "TKT",
- "\u30c8\u30b1\u30e9\u30a6\u8af8\u5cf6\u590f\u6642\u9593", "TKST"}},
+ "\u30c8\u30b1\u30e9\u30a6\u8af8\u5cf6\u590f\u6642\u9593", "TKST",
+ "\u30C8\u30B1\u30E9\u30A6\u6642\u9593", "TKT"}},
{"Pacific/Fiji", new String[] {"\u30d5\u30a3\u30b8\u30fc\u6642\u9593", "FJT",
- "\u30d5\u30a3\u30b8\u30fc\u590f\u6642\u9593", "FJST"}},
+ "\u30d5\u30a3\u30b8\u30fc\u590f\u6642\u9593", "FJST",
+ "\u30D5\u30A3\u30B8\u30FC\u6642\u9593", "FJT"}},
{"Pacific/Funafuti", new String[] {"\u30c4\u30d0\u30eb\u6642\u9593", "TVT",
- "\u30c4\u30d0\u30eb\u590f\u6642\u9593", "TVST"}},
+ "\u30c4\u30d0\u30eb\u590f\u6642\u9593", "TVST",
+ "\u30C4\u30D0\u30EB\u6642\u9593", "TVT"}},
{"Pacific/Galapagos", new String[] {"\u30ac\u30e9\u30d1\u30b4\u30b9\u6642\u9593", "GALT",
- "\u30ac\u30e9\u30d1\u30b4\u30b9\u590f\u6642\u9593", "GALST"}},
+ "\u30ac\u30e9\u30d1\u30b4\u30b9\u590f\u6642\u9593", "GALST",
+ "\u30AC\u30E9\u30D1\u30B4\u30B9\u6642\u9593", "GALT"}},
{"Pacific/Gambier", GAMBIER},
{"Pacific/Guadalcanal", SBT},
{"Pacific/Guam", ChST},
{"Pacific/Johnston", HST},
{"Pacific/Kiritimati", new String[] {"\u30e9\u30a4\u30f3\u8af8\u5cf6\u6642\u9593", "LINT",
- "\u30e9\u30a4\u30f3\u8af8\u5cf6\u590f\u6642\u9593", "LINST"}},
+ "\u30e9\u30a4\u30f3\u8af8\u5cf6\u590f\u6642\u9593", "LINST",
+ "\u30E9\u30A4\u30F3\u8AF8\u5CF6\u6642\u9593", "LINT"}},
{"Pacific/Kosrae", new String[] {"\u30b3\u30b9\u30e9\u30a8\u6642\u9593", "KOST",
- "\u30b3\u30b9\u30e9\u30a8\u590f\u6642\u9593", "KOSST"}},
+ "\u30b3\u30b9\u30e9\u30a8\u590f\u6642\u9593", "KOSST",
+ "\u30B3\u30B9\u30E9\u30A8\u6642\u9593", "KOST"}},
{"Pacific/Kwajalein", MHT},
{"Pacific/Majuro", MHT},
{"Pacific/Marquesas", new String[] {"\u30de\u30eb\u30b1\u30b5\u30b9\u6642\u9593", "MART",
- "\u30de\u30eb\u30b1\u30b5\u30b9\u590f\u6642\u9593", "MARST"}},
+ "\u30de\u30eb\u30b1\u30b5\u30b9\u590f\u6642\u9593", "MARST",
+ "\u30DE\u30EB\u30AD\u30FC\u30BA\u6642\u9593", "MART"}},
{"Pacific/Midway", SAMOA},
{"Pacific/Nauru", new String[] {"\u30ca\u30a6\u30eb\u6642\u9593", "NRT",
- "\u30ca\u30a6\u30eb\u590f\u6642\u9593", "NRST"}},
+ "\u30ca\u30a6\u30eb\u590f\u6642\u9593", "NRST",
+ "\u30CA\u30A6\u30EB\u6642\u9593", "NRT"}},
{"Pacific/Niue", new String[] {"\u30cb\u30a6\u30a8\u5cf6\u6642\u9593", "NUT",
- "\u30cb\u30a6\u30a8\u5cf6\u590f\u6642\u9593", "NUST"}},
+ "\u30cb\u30a6\u30a8\u5cf6\u590f\u6642\u9593", "NUST",
+ "\u30CB\u30A6\u30A8\u6642\u9593", "NUT"}},
{"Pacific/Norfolk", new String[] {"\u30ce\u30fc\u30d5\u30a9\u30fc\u30af\u6642\u9593", "NFT",
- "\u30ce\u30fc\u30d5\u30a9\u30fc\u30af\u590f\u6642\u9593", "NFST"}},
+ "\u30ce\u30fc\u30d5\u30a9\u30fc\u30af\u590f\u6642\u9593", "NFST",
+ "\u30CE\u30FC\u30D5\u30A9\u30FC\u30AF\u6642\u9593", "NFT"}},
{"Pacific/Noumea", new String[] {"\u30cb\u30e5\u30fc\u30ab\u30ec\u30c9\u30cb\u30a2\u6642\u9593", "NCT",
- "\u30cb\u30e5\u30fc\u30ab\u30ec\u30c9\u30cb\u30a2\u590f\u6642\u9593", "NCST"}},
+ "\u30cb\u30e5\u30fc\u30ab\u30ec\u30c9\u30cb\u30a2\u590f\u6642\u9593", "NCST",
+ "\u30CB\u30E5\u30FC\u30AB\u30EC\u30C9\u30CB\u30A2\u6642\u9593", "NCT"}},
{"Pacific/Pago_Pago", SAMOA},
{"Pacific/Palau", new String[] {"\u30d1\u30e9\u30aa\u6642\u9593", "PWT",
- "\u30d1\u30e9\u30aa\u590f\u6642\u9593", "PWST"}},
+ "\u30d1\u30e9\u30aa\u590f\u6642\u9593", "PWST",
+ "\u30D1\u30E9\u30AA\u6642\u9593", "PWT"}},
{"Pacific/Pitcairn", PITCAIRN},
{"Pacific/Pohnpei", PONT},
{"Pacific/Ponape", PONT},
{"Pacific/Port_Moresby", new String[] {"\u30d1\u30d7\u30a2\u30cb\u30e5\u30fc\u30ae\u30cb\u30a2\u6642\u9593", "PGT",
- "\u30d1\u30d7\u30a2\u30cb\u30e5\u30fc\u30ae\u30cb\u30a2\u590f\u6642\u9593", "PGST"}},
+ "\u30d1\u30d7\u30a2\u30cb\u30e5\u30fc\u30ae\u30cb\u30a2\u590f\u6642\u9593", "PGST",
+ "\u30D1\u30D7\u30A2\u30CB\u30E5\u30FC\u30AE\u30CB\u30A2\u6642\u9593", "PGT"}},
{"Pacific/Rarotonga", new String[] {"\u30af\u30c3\u30af\u8af8\u5cf6\u6642\u9593", "CKT",
- "\u30af\u30c3\u30af\u8af8\u5cf6\u590f\u6642\u9593", "CKHST"}},
+ "\u30af\u30c3\u30af\u8af8\u5cf6\u590f\u6642\u9593", "CKHST",
+ "\u30AF\u30C3\u30AF\u8AF8\u5CF6\u6642\u9593", "CKT"}},
{"Pacific/Saipan", ChST},
{"Pacific/Samoa", SAMOA},
{"Pacific/Tahiti", new String[] {"\u30bf\u30d2\u30c1\u6642\u9593", "TAHT",
- "\u30bf\u30d2\u30c1\u590f\u6642\u9593", "TAHST"}},
+ "\u30bf\u30d2\u30c1\u590f\u6642\u9593", "TAHST",
+ "\u30BF\u30D2\u30C1\u6642\u9593", "TAHT"}},
{"Pacific/Tarawa", new String[] {"\u30ae\u30eb\u30d0\u30fc\u30c8\u8af8\u5cf6\u6642\u9593", "GILT",
- "\u30ae\u30eb\u30d0\u30fc\u30c8\u8af8\u5cf6\u590f\u6642\u9593", "GILST"}},
+ "\u30ae\u30eb\u30d0\u30fc\u30c8\u8af8\u5cf6\u590f\u6642\u9593", "GILST",
+ "\u30AE\u30EB\u30D0\u30FC\u30C8\u8AF8\u5CF6\u6642\u9593", "GILT"}},
{"Pacific/Tongatapu", new String[] {"\u30c8\u30f3\u30ac\u6642\u9593", "TOT",
- "\u30c8\u30f3\u30ac\u590f\u6642\u9593", "TOST"}},
+ "\u30c8\u30f3\u30ac\u590f\u6642\u9593", "TOST",
+ "\u30C8\u30F3\u30AC\u6642\u9593", "TOT"}},
{"Pacific/Truk", CHUT},
{"Pacific/Wake", new String[] {"\u30a6\u30a7\u30fc\u30af\u6642\u9593", "WAKT",
- "\u30a6\u30a7\u30fc\u30af\u590f\u6642\u9593", "WAKST"}},
+ "\u30a6\u30a7\u30fc\u30af\u590f\u6642\u9593", "WAKST",
+ "\u30A6\u30A7\u30FC\u30AF\u6642\u9593", "WAKT"}},
{"Pacific/Wallis", new String[] {"\u30ef\u30ea\u30b9\u53ca\u3073\u30d5\u30c4\u30ca\u6642\u9593", "WFT",
- "\u30ef\u30ea\u30b9\u53ca\u3073\u30d5\u30c4\u30ca\u590f\u6642\u9593", "WFST"}},
+ "\u30ef\u30ea\u30b9\u53ca\u3073\u30d5\u30c4\u30ca\u590f\u6642\u9593", "WFST",
+ "\u30A6\u30A9\u30EA\u30B9\u30FB\u30D5\u30C4\u30CA\u6642\u9593", "WFT"}},
{"Pacific/Yap", CHUT},
{"Poland", CET},
{"PRC", CTT},
--- a/jdk/src/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java Wed Jul 05 19:27:58 2017 +0200
@@ -46,159 +46,235 @@
protected final Object[][] getContents() {
String ACT[] = new String[] {"\uc5d0\uc774\ucee4 \uc2dc\uac04", "ACT",
- "\uc5d0\uc774\ucee4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ACST"};
+ "\uc5d0\uc774\ucee4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ACST",
+ "\uc5d0\uc774\ucee4 \uc2dc\uac04", "ACT"};
String ADELAIDE[] = new String[] {"\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "CST",
- "\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "CST"};
+ "\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "CST",
+ "\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "CT"};
String AGT[] = new String[] {"\uc544\ub974\ud5e8\ud2f0\ub098 \uc2dc\uac04", "ART",
- "\uc544\ub974\ud5e8\ud2f0\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ARST"};
+ "\uc544\ub974\ud5e8\ud2f0\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ARST",
+ "\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC", "ART"};
String AKST[] = new String[] {"\uc54c\ub798\uc2a4\uce74 \ud45c\uc900\uc2dc", "AKST",
- "\uc54c\ub798\uc2a4\uce74 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AKDT"};
+ "\uc54c\ub798\uc2a4\uce74 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AKDT",
+ "\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC", "AKT"};
String AMT[] = new String[] {"\uc544\ub9c8\uc874 \uc2dc\uac04", "AMT",
- "\uc544\ub9c8\uc874 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AMST"};
+ "\uc544\ub9c8\uc874 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AMST",
+ "\uC544\uB9C8\uC874 \uD45C\uC900\uC2DC", "AMT"};
String ARAST[] = new String[] {"\uc544\ub78d \ud45c\uc900\uc2dc", "AST",
- "\uc544\ub78d \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ADT"};
+ "\uc544\ub78d \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ADT",
+ "\uC544\uB77C\uBE44\uC544 \uD45C\uC900\uC2DC", "AT"};
String ARMT[] = new String[] {"\uc544\ub974\uba54\ub2c8\uc544 \uc2dc\uac04", "AMT",
- "\uc544\ub974\uba54\ub2c8\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AMST"};
+ "\uc544\ub974\uba54\ub2c8\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AMST",
+ "\uC544\uB974\uBA54\uB2C8\uC544 \uD45C\uC900\uC2DC", "AMT"};
String AST[] = new String[] {"\ub300\uc11c\uc591 \ud45c\uc900\uc2dc", "AST",
- "\ub300\uc11c\uc591 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ADT"};
+ "\ub300\uc11c\uc591 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ADT",
+ "\uB300\uC11C\uC591 \uD45C\uC900\uC2DC", "AT"};
String BDT[] = new String[] {"\ubc29\uae00\ub77c\ub370\uc2dc \uc2dc\uac04", "BDT",
- "\ubc29\uae00\ub77c\ub370\uc2dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "BDST"};
+ "\ubc29\uae00\ub77c\ub370\uc2dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "BDST",
+ "\uBC29\uAE00\uB77C\uB370\uC2DC \uD45C\uC900\uC2DC", "BDT"};
String BRISBANE[] = new String[] {"\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD038\uC990\uB79C\uB4DC)", "EST",
- "\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uD038\uC990\uB79C\uB4DC)", "EST"};
+ "\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uD038\uC990\uB79C\uB4DC)", "EST",
+ "\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD038\uC990\uB79C\uB4DC)", "ET"};
String BROKEN_HILL[] = new String[] {"\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)", "CST",
- "\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)", "CST"};
+ "\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)", "CST",
+ "\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)", "CT"};
String BRT[] = new String[] {"\ube0c\ub77c\uc9c8\ub9ac\uc544 \uc2dc\uac04", "BRT",
- "\ube0c\ub77c\uc9c8\ub9ac\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "BRST"};
+ "\ube0c\ub77c\uc9c8\ub9ac\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "BRST",
+ "\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC", "BRT"};
String BTT[] = new String[] {"\ubd80\ud0c4 \uc2dc\uac04", "BTT",
- "\ubd80\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "BTST"};
+ "\ubd80\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "BTST",
+ "\uBD80\uD0C4 \uD45C\uC900\uC2DC", "BTT"};
String CAT[] = new String[] {"\uc911\uc559 \uc544\ud504\ub9ac\uce74 \uc2dc\uac04", "CAT",
- "\uc911\uc559 \uc544\ud504\ub9ac\uce74 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CAST"};
+ "\uc911\uc559 \uc544\ud504\ub9ac\uce74 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CAST",
+ "\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC", "CAT"};
String CET[] = new String[] {"\uc911\uc559 \uc720\ub7fd \uc2dc\uac04", "CET",
- "\uc911\uc559 \uc720\ub7fd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CEST"};
+ "\uc911\uc559 \uc720\ub7fd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CEST",
+ "\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC", "CET"};
String CHAST[] = new String[] {"Chatham \ud45c\uc900\uc2dc", "CHAST",
- "Chatham \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CHADT"};
+ "Chatham \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CHADT",
+ "\uCC44\uD140 \uD45C\uC900\uC2DC", "CHAT"};
String CHUT[] = new String[] {"\uCD94\uD06C \uD45C\uC900\uC2DC", "CHUT",
- "\uCD94\uD06C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "CHUST"};
+ "\uCD94\uD06C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "CHUST",
+ "\uCD94\uD06C \uD45C\uC900\uC2DC", "CHUT"};
String CIT[] = new String[] {"\uc911\uc559 \uc778\ub3c4\ub124\uc2dc\uc544 \uc2dc\uac04", "WITA",
- "\uc911\uc559 \uc778\ub3c4\ub124\uc2dc\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CIST"};
+ "\uc911\uc559 \uc778\ub3c4\ub124\uc2dc\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CIST",
+ "\uC911\uBD80 \uC778\uB3C4\uB124\uC2DC\uC544 \uD45C\uC900\uC2DC", "WITA"};
String CLT[] = new String[] {"\uce60\ub808 \uc2dc\uac04", "CLT",
- "\uce60\ub808 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CLST"};
+ "\uce60\ub808 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CLST",
+ "\uCE60\uB808 \uD45C\uC900\uC2DC", "CLT"};
String CST[] = new String[] {"\uc911\ubd80 \ud45c\uc900\uc2dc", "CST",
- "\uc911\ubd80 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CDT"};
+ "\uc911\ubd80 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CDT",
+ "\uC911\uBD80 \uD45C\uC900\uC2DC", "CT"};
String CTT[] = new String[] {"\uc911\uad6d \ud45c\uc900\uc2dc", "CST",
- "\uc911\uad6d \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CDT"};
+ "\uc911\uad6d \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CDT",
+ "\uC911\uAD6D \uD45C\uC900\uC2DC", "CT"};
String CUBA[] = new String[] {"\ucfe0\ubc14 \ud45c\uc900\uc2dc", "CST",
- "\ucfe0\ubc14 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CDT"};
+ "\ucfe0\ubc14 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CDT",
+ "\uCFE0\uBC14 \uD45C\uC900\uC2DC", "CT"};
String DARWIN[] = new String[] {"\uC911\uBD80 \uD45C\uC900\uC2DC(\uBD81\uBD80 \uC9C0\uC5ED)", "CST",
- "\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uBD81\uBD80 \uC9C0\uC5ED)", "CST"};
+ "\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uBD81\uBD80 \uC9C0\uC5ED)", "CST",
+ "\uC911\uBD80 \uD45C\uC900\uC2DC(\uBD81\uBD80 \uC9C0\uC5ED)", "CT"};
String DUBLIN[] = new String[] {"\uadf8\ub9ac\ub2c8\uce58 \ud45c\uc900\uc2dc", "GMT",
- "\uc544\uc77c\ub79c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IST"};
+ "\uc544\uc77c\ub79c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IST",
+ "\uC544\uC77C\uB79C\uB4DC \uD45C\uC900\uC2DC", "IT"};
String EAT[] = new String[] {"\ub3d9\ubd80 \uc544\ud504\ub9ac\uce74 \uc2dc\uac04", "EAT",
- "\ub3d9\ubd80 \uc544\ud504\ub9ac\uce74 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "EAST"};
+ "\ub3d9\ubd80 \uc544\ud504\ub9ac\uce74 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "EAST",
+ "\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC", "EAT"};
String EASTER[] = new String[] {"Easter Is. \uc2dc\uac04", "EAST",
- "Easter Is. \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "EASST"};
+ "Easter Is. \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "EASST",
+ "\uC774\uC2A4\uD130 \uC12C \uD45C\uC900\uC2DC", "EAST"};
String EET[] = new String[] {"\ub3d9\uc720\ub7fd \uc2dc\uac04", "EET",
- "\ub3d9\uc720\ub7fd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "EEST"};
+ "\ub3d9\uc720\ub7fd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "EEST",
+ "\ub3d9\ubd80 \uc720\ub7fd \ud45c\uc900\uc2dc", "EET"};
String EGT[] = new String[] {"\ub3d9\ubd80 \uadf8\ub9b0\ub79c\ub4dc \uc2dc\uac04", "EGT",
- "\ub3d9\ubd80 \uadf8\ub9b0\ub79c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "EGST"};
+ "\ub3d9\ubd80 \uadf8\ub9b0\ub79c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "EGST",
+ "\uB3D9\uBD80 \uADF8\uB9B0\uB780\uB4DC \uD45C\uC900\uC2DC", "EGT"};
String EST[] = new String[] {"\ub3d9\ubd80 \ud45c\uc900\uc2dc", "EST",
- "\ub3d9\ubd80 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "EDT"};
+ "\ub3d9\ubd80 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "EDT",
+ "\uB3D9\uBD80 \uD45C\uC900\uC2DC", "ET"};
String EST_NSW[] = new String[] {"\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)", "EST",
- "\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)", "EST"};
+ "\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)", "EST",
+ "\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)", "ET"};
String FET[] = new String[] {"\uADF9\uB3D9 \uC720\uB7FD \uD45C\uC900\uC2DC", "FET",
- "\uADF9\uB3D9 \uC720\uB7FD \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "FEST"};
+ "\uADF9\uB3D9 \uC720\uB7FD \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "FEST",
+ "\uADF9\uB3D9 \uC720\uB7FD \uD45C\uC900\uC2DC", "FET"};
String GHMT[] = new String[] {"\uac00\ub098 \ud45c\uc900\uc2dc", "GMT",
- "\uac00\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GHST"};
+ "\uac00\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GHST",
+ "\uAC00\uB098 \uD45C\uC900\uC2DC", "GMT"};
String GAMBIER[] = new String[] {"\uac10\ube44\uc544 \uc2dc\uac04", "GAMT",
- "\uac10\ube44\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GAMST"};
+ "\uac10\ube44\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GAMST",
+ "\uC7A0\uBE44\uC544 \uD45C\uC900\uC2DC", "GAMT"};
String GMT[] = new String[] {"\uadf8\ub9ac\ub2c8\uce58 \ud45c\uc900\uc2dc", "GMT",
- "\uadf8\ub9ac\ub2c8\uce58 \ud45c\uc900\uc2dc", "GMT"};
+ "\uadf8\ub9ac\ub2c8\uce58 \ud45c\uc900\uc2dc", "GMT",
+ "\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC", "GMT"};
String GMTBST[] = new String[] {"\uadf8\ub9ac\ub2c8\uce58 \ud45c\uc900\uc2dc", "GMT",
- "\uc601\uad6d \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "BST"};
+ "\uc601\uad6d \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "BST",
+ "\uC601\uAD6D \uD45C\uC900\uC2DC", "BT"};
String GST[] = new String[] {"\uac78\ud504\ub9cc \ud45c\uc900\uc2dc", "GST",
- "\uac78\ud504\ub9cc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GDT"};
+ "\uac78\ud504\ub9cc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GDT",
+ "\uAC78\uD504\uB9CC \uD45C\uC900\uC2DC", "GT"};
String HAST[] = new String[] {"\ud558\uc640\uc774 \uc54c\ub958\uc0e8 \ud45c\uc900\uc2dc", "HAST",
- "\ud558\uc640\uc774 \uc54c\ub958\uc0e8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "HADT"};
+ "\ud558\uc640\uc774 \uc54c\ub958\uc0e8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "HADT",
+ "\uD558\uC640\uC774-\uC54C\uB8E8\uC0E8 \uD45C\uC900\uC2DC", "HAT"};
String HKT[] = new String[] {"\ud64d\ucf69 \uc2dc\uac04", "HKT",
- "\ud64d\ucf69 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "HKST"};
+ "\ud64d\ucf69 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "HKST",
+ "\uD64D\uCF69 \uD45C\uC900\uC2DC", "HKT"};
String HST[] = new String[] {"\ud558\uc640\uc774 \ud45c\uc900\uc2dc", "HST",
- "\ud558\uc640\uc774 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "HDT"};
+ "\ud558\uc640\uc774 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "HDT",
+ "\uD558\uC640\uC774 \uD45C\uC900\uC2DC", "HT"};
String ICT[] = new String[] {"\uc778\ub3c4\ucc28\uc774\ub098 \ubc18\ub3c4 \uc2dc\uac04", "ICT",
- "\uc778\ub3c4\ucc28\uc774\ub098 \ubc18\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ICST"};
+ "\uc778\ub3c4\ucc28\uc774\ub098 \ubc18\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ICST",
+ "\uC778\uB3C4\uCC28\uC774\uB098 \uBC18\uB3C4 \uD45C\uC900\uC2DC", "ICT"};
String IRT[] = new String[] {"\uc774\ub780 \ud45c\uc900\uc2dc", "IRST",
- "\uc774\ub780 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IRDT"};
+ "\uc774\ub780 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IRDT",
+ "\uC774\uB780 \uD45C\uC900\uC2DC", "IRT"};
String ISRAEL[] = new String[] {"\uc774\uc2a4\ub77c\uc5d8 \ud45c\uc900\uc2dc", "IST",
- "\uc774\uc2a4\ub77c\uc5d8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IDT"};
+ "\uc774\uc2a4\ub77c\uc5d8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IDT",
+ "\uC544\uC2A4\uB77C\uC5D8 \uD45C\uC900\uC2DC", "IT"};
String IST[] = new String[] {"\uc778\ub3c4 \ud45c\uc900\uc2dc", "IST",
- "\uc778\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IDT"};
+ "\uc778\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IDT",
+ "\uC778\uB3C4 \uD45C\uC900\uC2DC", "IT"};
String JST[] = new String[] {"\uc77c\ubcf8 \ud45c\uc900\uc2dc", "JST",
- "\uc77c\ubcf8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "JDT"};
+ "\uc77c\ubcf8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "JDT",
+ "\uC77C\uBCF8 \uD45C\uC900\uC2DC", "JT"};
String KST[] = new String[] {"\ud55c\uad6d \ud45c\uc900\uc2dc", "KST",
- "\ud55c\uad6d \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "KDT"};
+ "\ud55c\uad6d \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "KDT",
+ "\uB300\uD55C\uBBFC\uAD6D \uD45C\uC900\uC2DC", "KT"};
String LORD_HOWE[] = new String[] {"\ub85c\ub4dc \ud558\uc6b0 \ud45c\uc900\uc2dc", "LHST",
- "\ub85c\ub4dc \ud558\uc6b0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "LHST"};
+ "\ub85c\ub4dc \ud558\uc6b0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "LHST",
+ "\uB85C\uB4DC\uD558\uC6B0 \uD45C\uC900\uC2DC", "LHT"};
String MHT[] = new String[] {"\ub9c8\uc15c\uc81c\ub3c4 \uc2dc\uac04", "MHT",
- "\ub9c8\uc15c\uc81c\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MHST"};
+ "\ub9c8\uc15c\uc81c\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MHST",
+ "\uB9C8\uC15C \uC81C\uB3C4 \uD45C\uC900\uC2DC", "MHT"};
String MSK[] = new String[] {"\ubaa8\uc2a4\ud06c\ubc14 \ud45c\uc900\uc2dc", "MSK",
- "\ubaa8\uc2a4\ud06c\ubc14 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MSD"};
+ "\ubaa8\uc2a4\ud06c\ubc14 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MSD",
+ "\uBAA8\uC2A4\uD06C\uBC14 \uD45C\uC900\uC2DC", "MT"};
String MST[] = new String[] {"\uc0b0\uc9c0 \ud45c\uc900\uc2dc", "MST",
- "\uc0b0\uc9c0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MDT"};
+ "\uc0b0\uc9c0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MDT",
+ "\uC0B0\uC9C0 \uD45C\uC900\uC2DC", "MT"};
String MYT[] = new String[] {"\ub9d0\ub808\uc774\uc2dc\uc544 \uc2dc\uac04", "MYT",
- "\ub9d0\ub808\uc774\uc2dc\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MYST"};
+ "\ub9d0\ub808\uc774\uc2dc\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MYST",
+ "\uB9D0\uB808\uC774\uC2DC\uC544 \uD45C\uC900\uC2DC", "MYT"};
String NORONHA[] = new String[] {"Fernando de Noronha \uc2dc\uac04", "FNT",
- "Fernando de Noronha \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "FNST"};
+ "Fernando de Noronha \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "FNST",
+ "\uD398\uB974\uB09C\uB3C4 \uB4DC \uB178\uB85C\uD558 \uD45C\uC900\uC2DC", "FNT"};
String NOVT[] = new String[] {"\ub178\ube0c\uc2dc\ube4c\uc2a4\ud06c \uc2dc\uac04", "NOVT",
- "\ub178\ube0c\uc2dc\ube4c\uc2a4\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NOVST"};
+ "\ub178\ube0c\uc2dc\ube4c\uc2a4\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NOVST",
+ "\uB178\uBCF4\uC2DC\uBE44\uB974\uC2A4\uD06C \uD45C\uC900\uC2DC", "NOVT"};
String NPT[] = new String[] {"\ub124\ud314 \uc2dc\uac04", "NPT",
- "\ub124\ud314 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NPST"};
+ "\ub124\ud314 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NPST",
+ "\uB124\uD314 \uD45C\uC900\uC2DC", "NPT"};
String NST[] = new String[] {"\ub274\ud380\ub4e4\ub79c\ub4dc \ud45c\uc900\uc2dc", "NST",
- "\ub274\ud380\ub4e4\ub79c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NDT"};
+ "\ub274\ud380\ub4e4\ub79c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NDT",
+ "\uB274\uD380\uB4E4\uB79C\uB4DC \uD45C\uC900\uC2DC", "NT"};
String NZST[] = new String[] {"\ub274\uc9c8\ub79c\ub4dc \ud45c\uc900\uc2dc", "NZST",
- "\ub274\uc9c8\ub79c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NZDT"};
+ "\ub274\uc9c8\ub79c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NZDT",
+ "\uB274\uC9C8\uB79C\uB4DC \uD45C\uC900\uC2DC", "NZT"};
String PITCAIRN[] = new String[] {"Pitcairn \ud45c\uc900\uc2dc", "PST",
- "Pitcairn \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PDT"};
+ "Pitcairn \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PDT",
+ "\uD54F\uCF00\uC5B8 \uD45C\uC900\uC2DC", "PT"};
String PKT[] = new String[] {"\ud30c\ud0a4\uc2a4\ud0c4 \uc2dc\uac04", "PKT",
- "\ud30c\ud0a4\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PKST"};
+ "\ud30c\ud0a4\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PKST",
+ "\uD30C\uD0A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC", "PKT"};
String PONT[] = new String[] {"\uD3F0\uD398\uC774 \uD45C\uC900\uC2DC", "PONT",
- "\uD3F0\uD398\uC774 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "PONST"};
+ "\uD3F0\uD398\uC774 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "PONST",
+ "\uD3EC\uB098\uD398 \uD45C\uC900\uC2DC", "PONT"};
String PST[] = new String[] {"\ud0dc\ud3c9\uc591 \ud45c\uc900\uc2dc", "PST",
- "\ud0dc\ud3c9\uc591 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PDT"};
+ "\ud0dc\ud3c9\uc591 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PDT",
+ "\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC", "PT"};
String SAST[] = new String[] {"\ub0a8\uc544\ud504\ub9ac\uce74 \ud45c\uc900\uc2dc", "SAST",
- "\ub0a8\uc544\ud504\ub9ac\uce74 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SAST"};
+ "\ub0a8\uc544\ud504\ub9ac\uce74 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SAST",
+ "\uB0A8\uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC", "SAT"};
String SBT[] = new String[] {"\uc194\ub85c\ubaac \uad70\ub3c4 \uc2dc\uac04", "SBT",
- "\uc194\ub85c\ubaac \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SBST"};
+ "\uc194\ub85c\ubaac \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SBST",
+ "\uC194\uB85C\uBAAC \uC81C\uB3C4 \uD45C\uC900\uC2DC", "SBT"};
String SGT[] = new String[] {"\uc2f1\uac00\ud3ec\ub974 \uc2dc\uac04", "SGT",
- "\uc2f1\uac00\ud3ec\ub974 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SGST"};
+ "\uc2f1\uac00\ud3ec\ub974 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SGST",
+ "\uC2F1\uAC00\uD3EC\uB974 \uD45C\uC900\uC2DC", "SGT"};
String SLST[] = new String[] {"\uadf8\ub9ac\ub2c8\uce58 \ud45c\uc900\uc2dc", "GMT",
- "\uc2dc\uc5d0\ub77c\ub9ac\uc628 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SLST"};
+ "\uc2dc\uc5d0\ub77c\ub9ac\uc628 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SLST",
+ "\uC2DC\uC5D0\uB77C\uB9AC\uC628 \uD45C\uC900\uC2DC", "SLT"};
String TASMANIA[] = new String[] {"\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544)", "EST",
- "\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544)", "EST"};
+ "\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544)", "EST",
+ "\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544)", "ET"};
String TMT[] = new String[] {"\ud22c\ub974\ud06c\uba54\ub2c8\uc2a4\ud0c4 \uc2dc\uac04", "TMT",
- "\ud22c\ub974\ud06c\uba54\ub2c8\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TMST"};
+ "\ud22c\ub974\ud06c\uba54\ub2c8\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TMST",
+ "\uD22C\uB974\uD06C\uBA54\uB2C8\uC2A4\uD0C4 \uD45C\uC900\uC2DC", "TMT"};
String ULAT[]= new String[] {"\uc6b8\ub780\ubc14\ud0c0\ub974 \uc2dc\uac04", "ULAT",
- "\uc6b8\ub780\ubc14\ud0c0\ub974 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ULAST"};
+ "\uc6b8\ub780\ubc14\ud0c0\ub974 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ULAST",
+ "\uC6B8\uB780\uBC14\uD1A0\uB974 \uD45C\uC900\uC2DC", "ULAT"};
String WART[] = new String[] {"\uc11c\ubd80 \uc544\ub974\ud5e8\ud2f0\ub098 \uc2dc\uac04", "WART",
"\uc11c\ubd80 \uc544\ub974\ud5e8\ud2f0\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WARST"};
String WAT[] = new String[] {"\uc11c\ubd80 \uc544\ud504\ub9ac\uce74 \uc2dc\uac04", "WAT",
- "\uc11c\ubd80 \uc544\ud504\ub9ac\uce74 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WAST"};
+ "\uc11c\ubd80 \uc544\ud504\ub9ac\uce74 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WAST",
+ "\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC", "WAT"};
String WET[] = new String[] {"\uc11c\uc720\ub7fd \uc2dc\uac04", "WET",
- "\uc11c\uc720\ub7fd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WEST"};
+ "\uc11c\uc720\ub7fd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WEST",
+ "\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC", "WET"};
String WIT[] = new String[] {"\uc11c\uc778\ub3c4\ub124\uc2dc\uc544 \uc2dc\uac04", "WIB",
- "\uc11c\uc778\ub3c4\ub124\uc2dc\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WIST"};
+ "\uc11c\uc778\ub3c4\ub124\uc2dc\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WIST",
+ "\uC11C\uBD80 \uC778\uB3C4\uB124\uC2DC\uC544 \uD45C\uC900\uC2DC", "WIB"};
String WST_AUS[] = new String[] {"\uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "WST",
- "\uC11C\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "WST"};
+ "\uC11C\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "WST",
+ "\uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "WT"};
String SAMOA[] = new String[] {"\uc0ac\ubaa8\uc544 \ud45c\uc900\uc2dc", "SST",
- "\uc0ac\ubaa8\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SDT"};
+ "\uc0ac\ubaa8\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SDT",
+ "\uC0AC\uBAA8\uC544 \uD45C\uC900\uC2DC", "ST"};
String WST_SAMOA[] = new String[] {"\uc11c\uc0ac\ubaa8\uc544 \uc2dc\uac04", "WST",
- "\uc11c\uc0ac\ubaa8\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WSDT"};
+ "\uc11c\uc0ac\ubaa8\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WSDT",
+ "\uC11C\uC0AC\uBAA8\uC544 \uD45C\uC900\uC2DC", "WST"};
String ChST[] = new String[] {"\ucc28\ubaa8\ub85c \ud45c\uc900\uc2dc", "ChST",
- "\ucc28\ubaa8\ub85c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ChDT"};
+ "\ucc28\ubaa8\ub85c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ChDT",
+ "\uCC28\uBAA8\uB974 \uD45C\uC900\uC2DC", "ChT"};
String VICTORIA[] = new String[] {"\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uBE45\uD1A0\uB9AC\uC544)", "EST",
- "\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uBE45\uD1A0\uB9AC\uC544)", "EST"};
+ "\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uBE45\uD1A0\uB9AC\uC544)", "EST",
+ "\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uBE45\uD1A0\uB9AC\uC544)", "ET"};
String UTC[] = new String[] {"\uc138\uacc4 \ud45c\uc900\uc2dc", "UTC",
- "\uc138\uacc4 \ud45c\uc900\uc2dc", "UTC"};
+ "\uc138\uacc4 \ud45c\uc900\uc2dc", "UTC",
+ "\uC9C0\uC5ED \uD45C\uC900\uC2DC", "UTC"};
String UZT[] = new String[] {"\uc6b0\uc988\ubca0\ud0a4\uc2a4\ud0c4 \uc2dc\uac04", "UZT",
- "\uc6b0\uc988\ubca0\ud0a4\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "UZST"};
+ "\uc6b0\uc988\ubca0\ud0a4\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "UZST",
+ "\uC6B0\uC988\uBCA0\uD0A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC", "UZT"};
return new Object[][] {
{"America/Los_Angeles", PST},
@@ -311,7 +387,8 @@
{"America/Argentina/Ushuaia", AGT},
{"America/Aruba", AST},
{"America/Asuncion", new String[] {"\ud30c\ub77c\uacfc\uc774 \uc2dc\uac04", "PYT",
- "\ud30c\ub77c\uacfc\uc774 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PYST"}},
+ "\ud30c\ub77c\uacfc\uc774 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PYST",
+ "\uD30C\uB77C\uACFC\uC774 \uD45C\uC900\uC2DC", "PYT"}},
{"America/Atikokan", EST},
{"America/Atka", HAST},
{"America/Bahia", BRT},
@@ -322,17 +399,20 @@
{"America/Blanc-Sablon", AST},
{"America/Boa_Vista", AMT},
{"America/Bogota", new String[] {"\ucf5c\ub86c\ube44\uc544 \uc2dc\uac04", "COT",
- "\ucf5c\ub86c\ube44\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "COST"}},
+ "\ucf5c\ub86c\ube44\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "COST",
+ "\uCF5C\uB86C\uBE44\uC544 \uD45C\uC900\uC2DC", "COT"}},
{"America/Boise", MST},
{"America/Buenos_Aires", AGT},
{"America/Cambridge_Bay", MST},
{"America/Campo_Grande", AMT},
{"America/Cancun", CST},
{"America/Caracas", new String[] {"\ubca0\ub124\uc218\uc5d8\ub77c \uc2dc\uac04", "VET",
- "\ubca0\ub124\uc218\uc5d8\ub77c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VEST"}},
+ "\ubca0\ub124\uc218\uc5d8\ub77c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VEST",
+ "\uBCA0\uB124\uC218\uC5D8\uB77C \uD45C\uC900\uC2DC", "VET"}},
{"America/Catamarca", AGT},
{"America/Cayenne", new String[] {"\ud504\ub791\uc2a4\ub839 \uae30\uc544\ub098 \uc2dc\uac04", "GFT",
- "\ud504\ub791\uc2a4\ub839 \uae30\uc544\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GFST"}},
+ "\ud504\ub791\uc2a4\ub839 \uae30\uc544\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GFST",
+ "\uD504\uB791\uC2A4\uB839 \uAE30\uC544\uB098 \uD45C\uC900\uC2DC", "GFT"}},
{"America/Cayman", EST},
{"America/Chihuahua", MST},
{"America/Creston", MST},
@@ -354,16 +434,19 @@
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"\uc11c\ubd80 \uadf8\ub9b0\ub79c\ub4dc \uc2dc\uac04", "WGT",
- "\uc11c\ubd80 \uadf8\ub9b0\ub79c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WGST"}},
+ "\uc11c\ubd80 \uadf8\ub9b0\ub79c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WGST",
+ "\uC11C\uBD80 \uADF8\uB9B0\uB780\uB4DC \uD45C\uC900\uC2DC", "WGT"}},
{"America/Goose_Bay", AST},
{"America/Grand_Turk", EST},
{"America/Grenada", AST},
{"America/Guadeloupe", AST},
{"America/Guatemala", CST},
{"America/Guayaquil", new String[] {"\uc5d0\ucfe0\uc544\ub3c4\ub974 \uc2dc\uac04", "ECT",
- "\uc5d0\ucfe0\uc544\ub3c4\ub974 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ECST"}},
+ "\uc5d0\ucfe0\uc544\ub3c4\ub974 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ECST",
+ "\uC5D0\uCF70\uB3C4\uB974 \uD45C\uC900\uC2DC", "ECT"}},
{"America/Guyana", new String[] {"\uac00\uc774\uc544\ub098 \uc2dc\uac04", "GYT",
- "\uac00\uc774\uc544\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GYST"}},
+ "\uac00\uc774\uc544\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GYST",
+ "\uAC00\uC774\uC544\uB098 \uD45C\uC900\uC2DC", "GYT"}},
{"America/Havana", CUBA},
{"America/Hermosillo", MST},
{"America/Indiana/Indianapolis", EST},
@@ -384,9 +467,11 @@
{"America/Knox_IN", CST},
{"America/Kralendijk", AST},
{"America/La_Paz", new String[] {"\ubcfc\ub9ac\ube44\uc544 \uc2dc\uac04", "BOT",
- "\ubcfc\ub9ac\ube44\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "BOST"}},
+ "\ubcfc\ub9ac\ube44\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "BOST",
+ "\uBCFC\uB9AC\uBE44\uC544 \uD45C\uC900\uC2DC", "BOT"}},
{"America/Lima", new String[] {"\ud398\ub8e8 \uc2dc\uac04", "PET",
- "\ud398\ub8e8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PEST"}},
+ "\ud398\ub8e8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PEST",
+ "\uD398\uB8E8 \uD45C\uC900\uC2DC", "PET"}},
{"America/Louisville", EST},
{"America/Lower_Princes", AST},
{"America/Maceio", BRT},
@@ -400,13 +485,16 @@
{"America/Menominee", CST},
{"America/Merida", CST},
{"America/Metlakatla", new String[] {"\uBA54\uD2B8\uB77C\uCE74\uD2B8\uB77C \uD45C\uC900\uC2DC", "MeST",
- "\uBA54\uD2B8\uB77C\uCE74\uD2B8\uB77C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "MeDT"}},
+ "\uBA54\uD2B8\uB77C\uCE74\uD2B8\uB77C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "MeDT",
+ "\uBA54\uD2B8\uB77C\uCE74\uD2B8\uB77C \uD45C\uC900\uC2DC", "MeT"}},
{"America/Mexico_City", CST},
{"America/Miquelon", new String[] {"\ud53c\uc5d0\ub974 \ubbf8\ud06c\ub860 \ud45c\uc900\uc2dc", "PMST",
- "\ud53c\uc5d0\ub974 \ubbf8\ud06c\ub860 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PMDT"}},
+ "\ud53c\uc5d0\ub974 \ubbf8\ud06c\ub860 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PMDT",
+ "\uD53C\uC5D0\uB974 \uBBF8\uD074\uB871 \uD45C\uC900\uC2DC", "PMT"}},
{"America/Moncton", AST},
{"America/Montevideo", new String[] {"\uc6b0\ub8e8\uacfc\uc774 \uc2dc\uac04", "UYT",
- "\uc6b0\ub8e8\uacfc\uc774 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "UYST"}},
+ "\uc6b0\ub8e8\uacfc\uc774 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "UYST",
+ "\uC6B0\uB8E8\uACFC\uC774 \uD45C\uC900\uC2DC", "UYT"}},
{"America/Monterrey", CST},
{"America/Montreal", EST},
{"America/Montserrat", AST},
@@ -421,7 +509,8 @@
{"America/Panama", EST},
{"America/Pangnirtung", EST},
{"America/Paramaribo", new String[] {"\uc218\ub9ac\ub0a8 \uc2dc\uac04", "SRT",
- "\uc218\ub9ac\ub0a8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SRST"}},
+ "\uc218\ub9ac\ub0a8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SRST",
+ "\uC218\uB9AC\uB0A8 \uD45C\uC900\uC2DC", "SRT"}},
{"America/Port-au-Prince", EST},
{"America/Port_of_Spain", AST},
{"America/Porto_Acre", ACT},
@@ -461,115 +550,146 @@
{"America/Yellowknife", MST},
{"Antarctica/Casey", WST_AUS},
{"Antarctica/Davis", new String[] {"Davis \uc2dc\uac04", "DAVT",
- "Davis \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "DAVST"}},
+ "Davis \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "DAVST",
+ "\uB370\uC774\uBE44\uC2A4 \uD45C\uC900\uC2DC", "DAVT"}},
{"Antarctica/DumontDUrville", new String[] {"\ub4a4\ubabd \ub4a4\ub974\ube4c \uc2dc\uac04", "DDUT",
- "\ub4a4\ubabd \ub4a4\ub974\ube4c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "DDUST"}},
+ "\ub4a4\ubabd \ub4a4\ub974\ube4c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "DDUST",
+ "\uB450\uBAAC\uD2B8\uC6B0\uB974\uBE4C \uD45C\uC900\uC2DC", "DDUT"}},
{"Antarctica/Macquarie", new String[] {"\uB9E4\uCF70\uB9AC \uC12C \uD45C\uC900\uC2DC", "MIST",
- "\uB9E4\uCF70\uB9AC \uC12C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "MIST"}},
+ "\uB9E4\uCF70\uB9AC \uC12C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "MIST",
+ "\uB9E4\uCF70\uB9AC \uC12C \uD45C\uC900\uC2DC", "MIST"}},
{"Antarctica/Mawson", new String[] {"\ubaa8\uc2a8 \uc2dc\uac04", "MAWT",
- "\ubaa8\uc2a8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MAWST"}},
+ "\ubaa8\uc2a8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MAWST",
+ "\uB9C8\uC2A8 \uD45C\uC900\uC2DC", "MAWT"}},
{"Antarctica/McMurdo", NZST},
{"Antarctica/Palmer", CLT},
{"Antarctica/Rothera", new String[] {"\ub85c\uc81c\ub77c \ud45c\uc900\uc2dc", "ROTT",
- "\ub85c\uc81c\ub77c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ROTST"}},
+ "\ub85c\uc81c\ub77c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ROTST",
+ "\uB85C\uB354\uB77C \uD45C\uC900\uC2DC", "ROTT"}},
{"Antarctica/South_Pole", NZST},
{"Antarctica/Syowa", new String[] {"Syowa \uc2dc\uac04", "SYOT",
- "Syowa \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SYOST"}},
+ "Syowa \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SYOST",
+ "\uC1FC\uC640 \uD45C\uC900\uC2DC", "SYOT"}},
{"Antarctica/Vostok", new String[] {"Vostok \uc2dc\uac04", "VOST",
- "Vostok \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VOSST"}},
+ "Vostok \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VOSST",
+ "\uBCF4\uC2A4\uD1A1 \uD45C\uC900\uC2DC", "VOST"}},
{"Arctic/Longyearbyen", CET},
{"Asia/Aden", ARAST},
{"Asia/Almaty", new String[] {"\uc54c\ub9c8\uc544\ud0c0 \uc2dc\uac04", "ALMT",
- "\uc54c\ub9c8\uc544\ud0c0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ALMST"}},
+ "\uc54c\ub9c8\uc544\ud0c0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ALMST",
+ "\uC54C\uB9C8\uC544\uD0C0 \uD45C\uC900\uC2DC", "ALMT"}},
{"Asia/Amman", ARAST},
{"Asia/Anadyr", new String[] {"\uc544\ub098\ub514\ub974 \uc2dc\uac04", "ANAT",
- "\uc544\ub098\ub514\ub974 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ANAST"}},
+ "\uc544\ub098\ub514\ub974 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ANAST",
+ "\uC544\uB098\uB514\uB9AC \uD45C\uC900\uC2DC", "ANAT"}},
{"Asia/Aqtau", new String[] {"\uc545\ud0c0\uc6b0 \uc2dc\uac04", "AQTT",
- "\uc545\ud0c0\uc6b0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AQTST"}},
+ "\uc545\ud0c0\uc6b0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AQTST",
+ "\uC544\uD06C\uD0C0\uC6B0 \uD45C\uC900\uC2DC", "AQTT"}},
{"Asia/Aqtobe", new String[] {"\uc545\ud1a0\ube0c \uc2dc\uac04", "AQTT",
- "\uc545\ud1a0\ube0c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AQTST"}},
+ "\uc545\ud1a0\ube0c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AQTST",
+ "\uC544\uD06C\uD1A0\uBCA0 \uD45C\uC900\uC2DC", "AQTT"}},
{"Asia/Ashgabat", TMT},
{"Asia/Ashkhabad", TMT},
{"Asia/Baghdad", ARAST},
{"Asia/Bahrain", ARAST},
{"Asia/Baku", new String[] {"\uc544\uc81c\ub974\ubc14\uc774\uc794 \uc2dc\uac04", "AZT",
- "\uc544\uc81c\ub974\ubc14\uc774\uc794 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AZST"}},
+ "\uc544\uc81c\ub974\ubc14\uc774\uc794 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AZST",
+ "\uC544\uC81C\uB974\uBC14\uC774\uC794 \uD45C\uC900\uC2DC", "AZT"}},
{"Asia/Bangkok", ICT},
{"Asia/Beirut", EET},
{"Asia/Bishkek", new String[] {"\ud0a4\ub974\ud0a4\uc988\uc2a4\ud0c4 \uc2dc\uac04", "KGT",
- "\ud0a4\ub974\uae30\uc988\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "KGST"}},
+ "\ud0a4\ub974\uae30\uc988\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "KGST",
+ "\uD0A4\uB974\uAE30\uC2A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC", "KGT"}},
{"Asia/Brunei", new String[] {"\ube0c\ub8e8\ub098\uc774 \uc2dc\uac04", "BNT",
- "\ube0c\ub8e8\ub098\uc774 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "BNST"}},
+ "\ube0c\ub8e8\ub098\uc774 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "BNST",
+ "\uBE0C\uB8E8\uB098\uC774 \uD45C\uC900\uC2DC", "BNT"}},
{"Asia/Calcutta", IST},
{"Asia/Choibalsan", new String[] {"Choibalsan \uc2dc\uac04", "CHOT",
- "Choibalsan \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CHOST"}},
+ "Choibalsan \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CHOST",
+ "\uCD08\uC774\uBC1C\uC0B0 \uD45C\uC900\uC2DC", "CHOT"}},
{"Asia/Chongqing", CTT},
{"Asia/Chungking", CTT},
{"Asia/Colombo", IST},
{"Asia/Dacca", BDT},
{"Asia/Dhaka", BDT},
{"Asia/Dili", new String[] {"\ud2f0\ubaa8\ub974-\ub808\uc2a4\ud14c \uc2dc\uac04", "TLT",
- "\ud2f0\ubaa8\ub974-\ub808\uc2a4\ud14c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TLST"}},
+ "\ud2f0\ubaa8\ub974-\ub808\uc2a4\ud14c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TLST",
+ "\uB3D9\uD2F0\uBAA8\uB974 \uD45C\uC900\uC2DC", "TLT"}},
{"Asia/Damascus", EET},
{"Asia/Dubai", GST},
{"Asia/Dushanbe", new String[] {"\ud0c0\uc9c0\ud0a4\uc2a4\ud0c4 \uc2dc\uac04", "TJT",
- "\ud0c0\uc9c0\ud0a4\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TJST"}},
+ "\ud0c0\uc9c0\ud0a4\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TJST",
+ "\uD0C0\uC9C0\uD0A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC", "TJT"}},
{"Asia/Gaza", EET},
{"Asia/Harbin", CTT},
{"Asia/Hebron", EET},
{"Asia/Ho_Chi_Minh", ICT},
{"Asia/Hong_Kong", HKT},
{"Asia/Hovd", new String[] {"Hovd \uc2dc\uac04", "HOVT",
- "Hovd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "HOVST"}},
+ "Hovd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "HOVST",
+ "\uD638\uBE0C\uB4DC \uD45C\uC900\uC2DC", "HOVT"}},
{"Asia/Irkutsk", new String[] {"\uc774\ub974\ucfe0\uce20\ud06c \uc2dc\uac04", "IRKT",
- "\uc774\ub974\ucfe0\uce20\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IRKST"}},
+ "\uc774\ub974\ucfe0\uce20\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IRKST",
+ "\uC774\uB974\uCFE0\uCE20\uD06C \uD45C\uC900\uC2DC", "IRKT"}},
{"Asia/Istanbul", EET},
{"Asia/Jakarta", WIT},
{"Asia/Jayapura", new String[] {"\ub3d9\ubd80 \uc778\ub3c4\ub124\uc2dc\uc544 \uc2dc\uac04", "WIT",
- "\ub3d9\ubd80 \uc778\ub3c4\ub124\uc2dc\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "EIST"}},
+ "\ub3d9\ubd80 \uc778\ub3c4\ub124\uc2dc\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "EIST",
+ "\uB3D9\uBD80 \uC778\uB3C4\uB124\uC2DC\uC544 \uD45C\uC900\uC2DC", "WIT"}},
{"Asia/Kabul", new String[] {"\uc544\ud504\uac00\ub2c8\uc2a4\ud0c4 \uc2dc\uac04", "AFT",
- "\uc544\ud504\uac00\ub2c8\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AFST"}},
+ "\uc544\ud504\uac00\ub2c8\uc2a4\ud0c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AFST",
+ "\uC544\uD504\uAC00\uB2C8\uC2A4\uD0C4 \uD45C\uC900\uC2DC", "AFT"}},
{"Asia/Kamchatka", new String[] {"\ud398\ud2b8\ub85c\ud30c\ube14\ub85c\ud504\uc2a4\ud06c-\uce84\ucc28\uce20\ud0a4 \uc2dc\uac04", "PETT",
- "\ud398\ud2b8\ub85c\ud30c\ube14\ub85c\ud504\uc2a4\ud06c-\uce84\ucc28\uce20\ud0a4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PETST"}},
+ "\ud398\ud2b8\ub85c\ud30c\ube14\ub85c\ud504\uc2a4\ud06c-\uce84\ucc28\uce20\ud0a4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PETST",
+ "\uD398\uD2B8\uB85C\uD30C\uBE0C\uB85C\uD504\uC2A4\uD06C-\uCE84\uCC28\uCE20\uD0A4 \uD45C\uC900\uC2DC", "PETT"}},
{"Asia/Karachi", PKT},
{"Asia/Kashgar", CTT},
{"Asia/Kathmandu", NPT},
{"Asia/Katmandu", NPT},
{"Asia/Khandyga", new String[] {"\uD55C\uB514\uAC00 \uD45C\uC900\uC2DC", "YAKT",
- "\uD55C\uB514\uAC00 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "YAKST"}},
+ "\uD55C\uB514\uAC00 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "YAKST",
+ "\uD55C\uB514\uAC00 \uD45C\uC900\uC2DC", "YAKT"}},
{"Asia/Kolkata", IST},
{"Asia/Krasnoyarsk", new String[] {"\ud06c\ub77c\uc2a4\ub178\uc57c\ub974\uc2a4\ud06c \uc2dc\uac04", "KRAT",
- "\ud06c\ub77c\uc2a4\ub178\uc57c\ub974\uc2a4\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "KRAST"}},
+ "\ud06c\ub77c\uc2a4\ub178\uc57c\ub974\uc2a4\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "KRAST",
+ "\uD06C\uB77C\uC2A4\uB178\uC57C\uB974\uC2A4\uD06C \uD45C\uC900\uC2DC", "KRAT"}},
{"Asia/Kuala_Lumpur", MYT},
{"Asia/Kuching", MYT},
{"Asia/Kuwait", ARAST},
{"Asia/Macao", CTT},
{"Asia/Macau", CTT},
{"Asia/Magadan", new String[] {"\ub9c8\uac00\ub2e8 \uc2dc\uac04", "MAGT",
- "\ub9c8\uac00\ub2e8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MAGST"}},
+ "\ub9c8\uac00\ub2e8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MAGST",
+ "\uB9C8\uAC00\uB2E8 \uD45C\uC900\uC2DC", "MAGT"}},
{"Asia/Makassar", CIT},
{"Asia/Manila", new String[] {"\ud544\ub9ac\ud540 \uc2dc\uac04", "PHT",
- "\ud544\ub9ac\ud540 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PHST"}},
+ "\ud544\ub9ac\ud540 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PHST",
+ "\uD544\uB9AC\uD540 \uD45C\uC900\uC2DC", "PHT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", NOVT},
{"Asia/Novosibirsk", NOVT},
{"Asia/Oral", new String[] {"Oral \ud45c\uc900\uc2dc", "ORAT",
- "Oral \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ORAST"}},
+ "Oral \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "ORAST",
+ "\uC624\uB7F4 \uD45C\uC900\uC2DC", "ORAT"}},
{"Asia/Omsk", new String[] {"Omsk \uc2dc\uac04", "OMST",
- "Omsk \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "OMSST"}},
+ "Omsk \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "OMSST",
+ "\uC634\uC2A4\uD06C \uD45C\uC900\uC2DC", "OMST"}},
{"Asia/Phnom_Penh", ICT},
{"Asia/Pontianak", WIT},
{"Asia/Pyongyang", KST},
{"Asia/Qatar", ARAST},
{"Asia/Qyzylorda", new String[] {"Qyzylorda \ud45c\uc900\uc2dc", "QYZT",
- "Qyzylorda \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "QYZST"}},
+ "Qyzylorda \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "QYZST",
+ "\uD0A4\uC9C8\uB85C\uB974\uB2E4 \uD45C\uC900\uC2DC", "QYZT"}},
{"Asia/Rangoon", new String[] {"\ubbf8\uc580\ub9c8 \uc2dc\uac04", "MMT",
- "\ubbf8\uc580\ub9c8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MMST"}},
+ "\ubbf8\uc580\ub9c8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MMST",
+ "\uBBF8\uC580\uB9C8 \uD45C\uC900\uC2DC", "MMT"}},
{"Asia/Riyadh", ARAST},
{"Asia/Saigon", ICT},
{"Asia/Sakhalin", new String[] {"\uc0ac\ud560\ub9b0 \uc2dc\uac04", "SAKT",
- "\uc0ac\ud560\ub9b0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SAKST"}},
+ "\uc0ac\ud560\ub9b0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SAKST",
+ "\uC0AC\uD560\uB9B0 \uD45C\uC900\uC2DC", "SAKT"}},
{"Asia/Samarkand", UZT},
{"Asia/Seoul", KST},
{"Asia/Singapore", SGT},
@@ -577,7 +697,8 @@
{"Asia/Tel_Aviv", ISRAEL},
{"Asia/Tashkent", UZT},
{"Asia/Tbilisi", new String[] {"\uadf8\ub8e8\uc9c0\uc57c \uc2dc\uac04", "GET",
- "\uadf8\ub8e8\uc9c0\uc57c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GEST"}},
+ "\uadf8\ub8e8\uc9c0\uc57c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GEST",
+ "\uADF8\uB8E8\uC9C0\uC57C \uD45C\uC900\uC2DC", "GET"}},
{"Asia/Tehran", IRT},
{"Asia/Thimbu", BTT},
{"Asia/Thimphu", BTT},
@@ -586,31 +707,39 @@
{"Asia/Ulan_Bator", ULAT},
{"Asia/Urumqi", CTT},
{"Asia/Ust-Nera", new String[] {"\uC6B0\uC2A4\uD2F0\uB124\uB77C \uD45C\uC900\uC2DC", "VLAT",
- "\uC6B0\uC2A4\uD2F0\uB124\uB77C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "VLAST" }},
+ "\uC6B0\uC2A4\uD2F0\uB124\uB77C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04", "VLAST" ,
+ "\uC6B0\uC2A4\uD2F0\uB124\uB77C \uD45C\uC900\uC2DC", "VLAT"}},
{"Asia/Vientiane", ICT},
{"Asia/Vladivostok", new String[] {"\ube14\ub77c\ub514\ubcf4\uc2a4\ud1a1 \uc2dc\uac04", "VLAT",
- "\ube14\ub77c\ub514\ubcf4\uc2a4\ud1a1 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VLAST"}},
+ "\ube14\ub77c\ub514\ubcf4\uc2a4\ud1a1 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VLAST",
+ "\uBE14\uB77C\uB514\uBCF4\uC2A4\uD1A1 \uD45C\uC900\uC2DC", "VLAT"}},
{"Asia/Yakutsk", new String[] {"\uc57c\uce20\ud06c \uc2dc\uac04", "YAKT",
- "\uc57c\uce20\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "YAKST"}},
+ "\uc57c\uce20\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "YAKST",
+ "\uC57C\uCFE0\uCE20\uD06C \uD45C\uC900\uC2DC", "YAKT"}},
{"Asia/Yekaterinburg", new String[] {"\uc608\uce74\ud14c\ub9b0\ubc84\uadf8 \uc2dc\uac04", "YEKT",
- "\uc608\uce74\ud14c\ub9b0\ubc84\uadf8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "YEKST"}},
+ "\uc608\uce74\ud14c\ub9b0\ubc84\uadf8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "YEKST",
+ "\uC608\uCE74\uD14C\uB9B0\uBD80\uB974\uD06C \uD45C\uC900\uC2DC", "YEKT"}},
{"Asia/Yerevan", ARMT},
{"Atlantic/Azores", new String[] {"\uc544\uc870\ub808\uc2a4 \uc2dc\uac04", "AZOT",
- "\uc544\uc870\ub808\uc2a4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AZOST"}},
+ "\uc544\uc870\ub808\uc2a4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "AZOST",
+ "\uC544\uC870\uB808\uC2A4 \uD45C\uC900\uC2DC", "AZOT"}},
{"Atlantic/Bermuda", AST},
{"Atlantic/Canary", WET},
{"Atlantic/Cape_Verde", new String[] {"\uae4c\ubf40\ubca0\ub974\ub370 \uc2dc\uac04", "CVT",
- "\uae4c\ubf40\ubca0\ub974\ub370 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CVST"}},
+ "\uae4c\ubf40\ubca0\ub974\ub370 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CVST",
+ "\uCF00\uC774\uD504\uBCA0\uB974\uB370 \uD45C\uC900\uC2DC", "CVT"}},
{"Atlantic/Faeroe", WET},
{"Atlantic/Faroe", WET},
{"Atlantic/Jan_Mayen", CET},
{"Atlantic/Madeira", WET},
{"Atlantic/Reykjavik", GMT},
{"Atlantic/South_Georgia", new String[] {"\uc0ac\uc6b0\uc2a4 \uc870\uc9c0\uc544 \ud45c\uc900\uc2dc", "GST",
- "\uc0ac\uc6b0\uc2a4 \uc870\uc9c0\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GDT"}},
+ "\uc0ac\uc6b0\uc2a4 \uc870\uc9c0\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GDT",
+ "\uC0AC\uC6B0\uC2A4\uC870\uC9C0\uC544 \uD45C\uC900\uC2DC", "GT"}},
{"Atlantic/St_Helena", GMT},
{"Atlantic/Stanley", new String[] {"\ud3ec\ud074\ub79c\ub4dc \uad70\ub3c4 \uc2dc\uac04", "FKT",
- "\ud3ec\ud074\ub79c\ub4dc \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "FKST"}},
+ "\ud3ec\ud074\ub79c\ub4dc \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "FKST",
+ "\uD3EC\uD074\uB79C\uB4DC \uC81C\uB3C4 \uD45C\uC900\uC2DC", "FKT"}},
{"Australia/ACT", EST_NSW},
{"Australia/Adelaide", ADELAIDE},
{"Australia/Brisbane", BRISBANE},
@@ -619,7 +748,8 @@
{"Australia/Currie", EST_NSW},
{"Australia/Darwin", DARWIN},
{"Australia/Eucla", new String[] {"\uC911\uC559 \uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "CWST",
- "\uC911\uC559 \uC11C\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "CWST"}},
+ "\uC911\uC559 \uC11C\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "CWST",
+ "\uC911\uC559 \uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)", "CWT"}},
{"Australia/Hobart", TASMANIA},
{"Australia/LHI", LORD_HOWE},
{"Australia/Lindeman", BRISBANE},
@@ -704,7 +834,8 @@
{"Europe/Riga", EET},
{"Europe/Rome", CET},
{"Europe/Samara", new String[] {"\uc0ac\ub9c8\ub77c \uc2dc\uac04", "SAMT",
- "\uc0ac\ub9c8\ub77c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SAMST"}},
+ "\uc0ac\ub9c8\ub77c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SAMST",
+ "\uC0AC\uB9C8\uB77C \uD45C\uC900\uC2DC", "SAMT"}},
{"Europe/San_Marino", CET},
{"Europe/Sarajevo", CET},
{"Europe/Simferopol", EET},
@@ -720,7 +851,8 @@
{"Europe/Vienna", CET},
{"Europe/Vilnius", EET},
{"Europe/Volgograd", new String[] {"\ubcfc\uace0\uadf8\ub77c\ub4dc \uc2dc\uac04", "VOLT",
- "\ubcfc\uace0\uadf8\ub77c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VOLST"}},
+ "\ubcfc\uace0\uadf8\ub77c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VOLST",
+ "\uBCFC\uACE0\uADF8\uB77C\uB4DC \uD45C\uC900\uC2DC", "VOLT"}},
{"Europe/Warsaw", CET},
{"Europe/Zagreb", CET},
{"Europe/Zaporozhye", EET},
@@ -734,30 +866,39 @@
{"IST", IST},
{"Indian/Antananarivo", EAT},
{"Indian/Chagos", new String[] {"\uc601\uc778\ub3c4 \uc81c\ub3c4 \uc2dc\uac04", "IOT",
- "\uc601\uc778\ub3c4 \uc81c\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IOST"}},
+ "\uc601\uc778\ub3c4 \uc81c\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "IOST",
+ "\uC778\uB3C4\uC591 \uC2DD\uBBFC\uC9C0 \uD45C\uC900\uC2DC", "IOT"}},
{"Indian/Christmas", new String[] {"\ud06c\ub9ac\uc2a4\ub9c8\uc2a4\uc12c \uc2dc\uac04", "CXT",
- "\ud06c\ub9ac\uc2a4\ub9c8\uc2a4\uc12c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CXST"}},
+ "\ud06c\ub9ac\uc2a4\ub9c8\uc2a4\uc12c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CXST",
+ "\uD06C\uB9AC\uC2A4\uB9C8\uC2A4 \uC12C \uD45C\uC900\uC2DC", "CIT"}},
{"Indian/Cocos", new String[] {"\ucf54\ucf54\uc2a4 \uad70\ub3c4 \uc2dc\uac04", "CCT",
- "\ucf54\ucf54\uc2a4 \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CCST"}},
+ "\ucf54\ucf54\uc2a4 \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CCST",
+ "\uCF54\uCF54\uC2A4 \uC81C\uB3C4 \uD45C\uC900\uC2DC", "CCT"}},
{"Indian/Comoro", EAT},
{"Indian/Kerguelen", new String[] {"\ud504\ub791\uc2a4 \ub0a8\ubd80 \uc9c0\ubc29 \ubc0f \ub0a8\uadf9 \uc9c0\uc5ed \uc2dc\uac04", "TFT",
- "\ud504\ub791\uc2a4 \ub0a8\ubd80 \uc9c0\ubc29 \ubc0f \ub0a8\uadf9 \uc9c0\uc5ed \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TFST"}},
+ "\ud504\ub791\uc2a4 \ub0a8\ubd80 \uc9c0\ubc29 \ubc0f \ub0a8\uadf9 \uc9c0\uc5ed \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TFST",
+ "\uD504\uB791\uC2A4\uB839 \uB0A8\uBD80 \uBC0F \uB0A8\uADF9 \uB300\uB959 \uD45C\uC900\uC2DC", "TFT"}},
{"Indian/Mahe", new String[] {"\uc138\uc774\uc140 \uc2dc\uac04", "SCT",
- "\uc138\uc774\uc258 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SCST"}},
+ "\uc138\uc774\uc258 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "SCST",
+ "\uC138\uC774\uC178 \uD45C\uC900\uC2DC", "SCT"}},
{"Indian/Maldives", new String[] {"\ubab0\ub514\ube0c \uc2dc\uac04", "MVT",
- "\ubab0\ub514\ube0c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MVST"}},
+ "\ubab0\ub514\ube0c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MVST",
+ "\uBAB0\uB514\uBE0C \uD45C\uC900\uC2DC", "MVT"}},
{"Indian/Mauritius", new String[] {"\ubaa8\ub9ac\uc154\uc2a4 \uc2dc\uac04", "MUT",
- "\ubaa8\ub9ac\uc154\uc2a4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MUST"}},
+ "\ubaa8\ub9ac\uc154\uc2a4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MUST",
+ "\uBAA8\uB9AC\uC154\uC2A4 \uD45C\uC900\uC2DC", "MUT"}},
{"Indian/Mayotte", EAT},
{"Indian/Reunion", new String[] {"\ub9ac\uc720\ub2c8\uc5b8 \uc2dc\uac04", "RET",
- "\ub9ac\uc720\ub2c8\uc5b8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "REST"}},
+ "\ub9ac\uc720\ub2c8\uc5b8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "REST",
+ "\uB808\uC704\uB2C8\uC639 \uD45C\uC900\uC2DC", "RET"}},
{"Israel", ISRAEL},
{"Jamaica", EST},
{"Japan", JST},
{"Kwajalein", MHT},
{"Libya", EET},
{"MET", new String[] {"\uc911\ubd80 \uc720\ub7fd \uc2dc\uac04", "MET",
- "\uc911\ubd80 \uc720\ub7fd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MEST"}},
+ "\uc911\ubd80 \uc720\ub7fd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MEST",
+ "MET", "MET"}},
{"Mexico/BajaNorte", PST},
{"Mexico/BajaSur", MST},
{"Mexico/General", CST},
@@ -777,61 +918,82 @@
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
{"Pacific/Efate", new String[] {"\ube44\ub204\uc544\ud22c \uc2dc\uac04", "VUT",
- "\ubc14\ub204\uc544\ud22c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VUST"}},
+ "\ubc14\ub204\uc544\ud22c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "VUST",
+ "\uBC14\uB204\uC544\uD22C \uD45C\uC900\uC2DC", "VUT"}},
{"Pacific/Enderbury", new String[] {"\ud53c\ub2c9\uc2a4 \uad70\ub3c4 \uc2dc\uac04", "PHOT",
- "\ud53c\ub2c9\uc2a4 \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PHOST"}},
+ "\ud53c\ub2c9\uc2a4 \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PHOST",
+ "\uD53C\uB2C9\uC2A4 \uC81C\uB3C4 \uD45C\uC900\uC2DC", "PHOT"}},
{"Pacific/Fakaofo", new String[] {"\ud1a0\ucf08\ub77c\uc6b0 \uc2dc\uac04", "TKT",
- "\ud1a0\ucf08\ub77c\uc6b0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TKST"}},
+ "\ud1a0\ucf08\ub77c\uc6b0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TKST",
+ "\uD1A0\uCF08\uB77C\uC6B0 \uD45C\uC900\uC2DC", "TKT"}},
{"Pacific/Fiji", new String[] {"\ud53c\uc9c0 \uc2dc\uac04", "FJT",
- "\ud53c\uc9c0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "FJST"}},
+ "\ud53c\uc9c0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "FJST",
+ "\uD53C\uC9C0 \uD45C\uC900\uC2DC", "FJT"}},
{"Pacific/Funafuti", new String[] {"\ud22c\ubc1c\ub8e8 \uc2dc\uac04", "TVT",
- "\ud22c\ubc1c\ub8e8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TVST"}},
+ "\ud22c\ubc1c\ub8e8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TVST",
+ "\uD22C\uBC1C\uB8E8 \uD45C\uC900\uC2DC", "TVT"}},
{"Pacific/Galapagos", new String[] {"\uac08\ub77c\ud30c\uace0\uc2a4 \uc2dc\uac04", "GALT",
- "\uac08\ub77c\ud30c\uace0\uc2a4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GALST"}},
+ "\uac08\ub77c\ud30c\uace0\uc2a4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GALST",
+ "\uAC08\uB77C\uD30C\uACE0\uC2A4 \uD45C\uC900\uC2DC", "GALT"}},
{"Pacific/Gambier", GAMBIER},
{"Pacific/Guadalcanal", SBT},
{"Pacific/Guam", ChST},
{"Pacific/Johnston", HST},
{"Pacific/Kiritimati", new String[] {"\ub77c\uc778 \uad70\ub3c4 \uc2dc\uac04", "LINT",
- "\ub77c\uc778 \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "LINST"}},
+ "\ub77c\uc778 \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "LINST",
+ "\uB77C\uC778 \uC81C\uB3C4 \uD45C\uC900\uC2DC", "LINT"}},
{"Pacific/Kosrae", new String[] {"\ucf54\uc2a4\ub798 \uc2dc\uac04", "KOST",
- "\ucf54\uc2a4\ub798 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "KOSST"}},
+ "\ucf54\uc2a4\ub798 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "KOSST",
+ "\uCF54\uC2A4\uB808 \uD45C\uC900\uC2DC", "KOST"}},
{"Pacific/Kwajalein", MHT},
{"Pacific/Majuro", MHT},
{"Pacific/Marquesas", new String[] {"\ub9c8\ub974\ucf00\uc0ac\uc2a4 \uc2dc\uac04", "MART",
- "\ub9c8\ub974\ucf00\uc0ac\uc2a4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MARST"}},
+ "\ub9c8\ub974\ucf00\uc0ac\uc2a4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MARST",
+ "\uB9C8\uD0A4\uC800\uC2A4 \uD45C\uC900\uC2DC", "MART"}},
{"Pacific/Midway", SAMOA},
{"Pacific/Nauru", new String[] {"\ub098\uc6b0\ub8e8 \uc2dc\uac04", "NRT",
- "\ub098\uc6b0\ub8e8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NRST"}},
+ "\ub098\uc6b0\ub8e8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NRST",
+ "\uB098\uC6B0\uB8E8 \uD45C\uC900\uC2DC", "NRT"}},
{"Pacific/Niue", new String[] {"\ub2c8\uc6b0\uc5d0 \uc2dc\uac04", "NUT",
- "\ub2c8\uc6b0\uc5d0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NUST"}},
+ "\ub2c8\uc6b0\uc5d0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NUST",
+ "\uB2C8\uC6B0\uC5D0 \uD45C\uC900\uC2DC", "NUT"}},
{"Pacific/Norfolk", new String[] {"\ub178\ud37d \uc2dc\uac04", "NFT",
- "\ub178\ud37d \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NFST"}},
+ "\ub178\ud37d \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NFST",
+ "\uB178\uD37D \uD45C\uC900\uC2DC", "NFT"}},
{"Pacific/Noumea", new String[] {"\ub274 \uce7c\ub808\ub3c4\ub2c8\uc544 \uc2dc\uac04", "NCT",
- "\ub274 \uce7c\ub808\ub3c4\ub2c8\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NCST"}},
+ "\ub274 \uce7c\ub808\ub3c4\ub2c8\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "NCST",
+ "\uB274 \uCE7C\uB808\uB3C4\uB2C8\uC544 \uD45C\uC900\uC2DC", "NCT"}},
{"Pacific/Pago_Pago", SAMOA},
{"Pacific/Palau", new String[] {"\ud314\ub77c\uc6b0 \uc2dc\uac04", "PWT",
- "\ud314\ub77c\uc6b0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PWST"}},
+ "\ud314\ub77c\uc6b0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PWST",
+ "\uD314\uB77C\uC6B0 \uD45C\uC900\uC2DC", "PWT"}},
{"Pacific/Pitcairn", PITCAIRN},
{"Pacific/Pohnpei", PONT},
{"Pacific/Ponape", PONT},
{"Pacific/Port_Moresby", new String[] {"\ud30c\ud478\uc544\ub274\uae30\ub2c8 \uc2dc\uac04", "PGT",
- "\ud30c\ud478\uc544\ub274\uae30\ub2c8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PGST"}},
+ "\ud30c\ud478\uc544\ub274\uae30\ub2c8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PGST",
+ "\uD30C\uD478\uC544 \uB274\uAE30\uB2C8\uC544 \uD45C\uC900\uC2DC", "PGT"}},
{"Pacific/Rarotonga", new String[] {"\ucfe0\ud06c \uad70\ub3c4 \uc2dc\uac04", "CKT",
- "\ucfe0\ud06c \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CKHST"}},
+ "\ucfe0\ud06c \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "CKHST",
+ "\uCFE1 \uC81C\uB3C4 \uD45C\uC900\uC2DC", "CKT"}},
{"Pacific/Saipan", ChST},
{"Pacific/Samoa", SAMOA},
{"Pacific/Tahiti", new String[] {"\ud0c0\ud788\ud2f0 \uc2dc\uac04", "TAHT",
- "\ud0c0\ud788\ud2f0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TAHST"}},
+ "\ud0c0\ud788\ud2f0 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TAHST",
+ "\uD0C0\uD788\uD2F0 \uD45C\uC900\uC2DC", "TAHT"}},
{"Pacific/Tarawa", new String[] {"\uae38\ubc84\ud2b8 \uad70\ub3c4 \uc2dc\uac04", "GILT",
- "\uae38\ubc84\ud2b8 \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GILST"}},
+ "\uae38\ubc84\ud2b8 \uad70\ub3c4 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "GILST",
+ "\uAE38\uBC84\uD2B8 \uC81C\uB3C4 \uD45C\uC900\uC2DC", "GILT"}},
{"Pacific/Tongatapu", new String[] {"\ud1b5\uac00 \uc2dc\uac04", "TOT",
- "\ud1b5\uac00 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TOST"}},
+ "\ud1b5\uac00 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "TOST",
+ "\uD1B5\uAC00 \uD45C\uC900\uC2DC", "TOT"}},
{"Pacific/Truk", CHUT},
{"Pacific/Wake", new String[] {"\uc6e8\uc774\ud06c \uc2dc\uac04", "WAKT",
- "\uc6e8\uc774\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WAKST"}},
+ "\uc6e8\uc774\ud06c \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WAKST",
+ "\uC6E8\uC774\uD06C \uD45C\uC900\uC2DC", "WAKT"}},
{"Pacific/Wallis", new String[] {"\uc6d4\ub9ac\uc2a4 \ud6c4\ud22c\ub098 \uc2dc\uac04", "WFT",
- "\uc6d4\ub9ac\uc2a4 \ud6c4\ud2b8\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WFST"}},
+ "\uc6d4\ub9ac\uc2a4 \ud6c4\ud2b8\ub098 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WFST",
+ "\uC6D4\uB9AC\uC2A4 \uD478\uD22C\uB098 \uD45C\uC900\uC2DC", "WFT"}},
{"Pacific/Yap", CHUT},
{"Poland", CET},
{"PRC", CTT},
--- a/jdk/src/share/classes/sun/util/resources/pt/TimeZoneNames_pt_BR.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/util/resources/pt/TimeZoneNames_pt_BR.java Wed Jul 05 19:27:58 2017 +0200
@@ -46,157 +46,233 @@
protected final Object[][] getContents() {
String ACT[] = new String[] {"Fuso hor\u00e1rio do Acre", "ACT",
- "Fuso hor\u00e1rio de ver\u00e3o do Acre", "ACST"};
+ "Fuso hor\u00e1rio de ver\u00e3o do Acre", "ACST",
+ "Fuso hor\u00e1rio do Acre", "ACT"};
String ADELAIDE[] = new String[] {"Hor\u00E1rio-Padr\u00E3o Central (Austr\u00E1lia do Sul)", "CST",
- "Fuso Hor\u00E1rio de Ver\u00E3o Central (Austr\u00E1lia do Sul)", "CST"};
+ "Fuso Hor\u00E1rio de Ver\u00E3o Central (Austr\u00E1lia do Sul)", "CST",
+ "Hor\u00E1rio Central (Austr\u00E1lia do Sul)", "CT"};
String AGT[] = new String[] {"Fuso hor\u00e1rio da Argentina", "ART",
- "Fuso hor\u00e1rio de ver\u00e3o da Argentina", "ARST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da Argentina", "ARST",
+ "Hor\u00E1rio da Argentina", "ART"};
String AKST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Alaska", "AKST",
- "Hor\u00e1rio de luz natural do Alaska", "AKDT"};
+ "Hor\u00e1rio de luz natural do Alaska", "AKDT",
+ "Hor\u00E1rio do Alasca", "AKT"};
String AMT[] = new String[] {"Fuso hor\u00e1rio do Amazonas", "AMT",
- "Fuso hor\u00e1rio de ver\u00e3o do Amazonas", "AMST"};
+ "Fuso hor\u00e1rio de ver\u00e3o do Amazonas", "AMST",
+ "Hor\u00E1rio do Amazonas", "AMT"};
String ARAST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da Ar\u00e1bia", "AST",
- "Hor\u00e1rio de luz natural da Ar\u00e1bia", "ADT"};
+ "Hor\u00e1rio de luz natural da Ar\u00e1bia", "ADT",
+ "Hor\u00E1rio da Ar\u00E1bia", "AT"};
String ARMT[] = new String[] {"Fuso hor\u00e1rio da Arm\u00eania", "AMT",
- "Fuso hor\u00e1rio de ver\u00e3o da Arm\u00eania", "AMST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da Arm\u00eania", "AMST",
+ "Hor\u00E1rio da Arm\u00EAnia", "AMT"};
String AST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Atl\u00e2ntico", "AST",
- "Hor\u00e1rio de luz natural do Atl\u00e2ntico", "ADT"};
+ "Hor\u00e1rio de luz natural do Atl\u00e2ntico", "ADT",
+ "Hor\u00E1rio do Atl\u00E2ntico", "AT"};
String BDT[] = new String[] {"Fuso hor\u00e1rio de Bangladesh", "BDT",
- "Fuso hor\u00e1rio de ver\u00e3o de Bangladesh", "BDST"};
+ "Fuso hor\u00e1rio de ver\u00e3o de Bangladesh", "BDST",
+ "Hor\u00E1rio de Bangladesh", "BDT"};
String BRISBANE[] = new String[] {"Hor\u00E1rio-Padr\u00E3o do Leste (Queensland)", "EST",
- "Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Queensland)", "EST"};
+ "Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Queensland)", "EST",
+ "Hor\u00E1rio do Leste (Queensland)", "ET"};
String BROKEN_HILL[] = new String[] {"Hor\u00E1rio-Padr\u00E3o Central (Austr\u00E1lia do Sul/Nova Gales do Sul)", "CST",
- "Fuso Hor\u00E1rio de Ver\u00E3o Central (Austr\u00E1lia do Sul/Nova Gales do Sul)", "CST"};
+ "Fuso Hor\u00E1rio de Ver\u00E3o Central (Austr\u00E1lia do Sul/Nova Gales do Sul)", "CST",
+ "Hor\u00E1rio Central (Austr\u00E1lia do Sul/Nova Gales do Sul)", "CT"};
String BRT[] = new String[] {"Fuso hor\u00e1rio de Bras\u00edlia", "BRT",
- "Fuso hor\u00e1rio de ver\u00e3o de Bras\u00edlia", "BRST"};
+ "Fuso hor\u00e1rio de ver\u00e3o de Bras\u00edlia", "BRST",
+ "Hor\u00E1rio de Bras\u00EDlia", "BRT"};
String BTT[] = new String[] {"Fuso hor\u00e1rio de But\u00e3o", "BTT",
- "Fuso hor\u00e1rio de ver\u00e3o de But\u00e3o", "BTST"};
+ "Fuso hor\u00e1rio de ver\u00e3o de But\u00e3o", "BTST",
+ "Hor\u00E1rio do But\u00E3o", "BTT"};
String CAT[] = new String[] {"Fuso hor\u00e1rio da \u00c1frica Central", "CAT",
- "Fuso hor\u00e1rio de ver\u00e3o da \u00c1frica Central", "CAST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da \u00c1frica Central", "CAST",
+ "Hor\u00E1rio da \u00C1frica Central", "CAT"};
String CET[] = new String[] {"Fuso hor\u00e1rio da Europa Central", "CET",
- "Fuso hor\u00e1rio de ver\u00e3o da Europa Central", "CEST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da Europa Central", "CEST",
+ "Hor\u00E1rio da Europa Central", "CET"};
String CHAST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Chatham", "CHAST",
- "Hor\u00e1rio de luz natural de Chatham", "CHADT"};
+ "Hor\u00e1rio de luz natural de Chatham", "CHADT",
+ "Hor\u00E1rio de Chatham", "CHAT"};
String CIT[] = new String[] {"Fuso hor\u00e1rio da Indon\u00e9sia Central", "WITA",
- "Fuso hor\u00e1rio de ver\u00e3o da Indon\u00e9sia Central", "CIST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da Indon\u00e9sia Central", "CIST",
+ "Hor\u00E1rio da Indon\u00E9sia Central", "WITA"};
String CLT[] = new String[] {"Fuso hor\u00e1rio do Chile", "CLT",
- "Fuso hor\u00e1rio de ver\u00e3o do Chile", "CLST"};
+ "Fuso hor\u00e1rio de ver\u00e3o do Chile", "CLST",
+ "Hor\u00E1rio do Chile", "CLT"};
String CST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o central", "CST",
- "Hor\u00e1rio de luz natural central", "CDT"};
+ "Hor\u00e1rio de luz natural central", "CDT",
+ "Hor\u00E1rio Central", "CT"};
String CTT[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da China", "CST",
- "Hor\u00e1rio de luz natural da China", "CDT"};
+ "Hor\u00e1rio de luz natural da China", "CDT",
+ "Hor\u00E1rio da China", "CT"};
String CUBA[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Cuba", "CST",
- "Hor\u00e1rio de luz natural de Cuba", "CDT"};
+ "Hor\u00e1rio de luz natural de Cuba", "CDT",
+ "Hor\u00E1rio de Cuba", "CT"};
String DARWIN[] = new String[] {"Hor\u00E1rio-Padr\u00E3o Central (Territ\u00F3rio do Norte)", "CST",
- "Fuso Hor\u00E1rio de Ver\u00E3o Central (Territ\u00F3rio do Norte)", "CST"};
+ "Fuso Hor\u00E1rio de Ver\u00E3o Central (Territ\u00F3rio do Norte)", "CST",
+ "Hor\u00E1rio Central (Territ\u00F3rio do Norte)", "CT"};
String DUBLIN[] = new String[] {"Fuso hor\u00e1rio do meridiano de Greenwich", "GMT",
- "Fuso hor\u00e1rio de ver\u00e3o da Irlanda", "IST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da Irlanda", "IST",
+ "Hor\u00E1rio da Rep\u00FAblica da Irlanda", "IT"};
String EAT[] = new String[] {"Fuso hor\u00e1rio da \u00c1frica Oriental", "EAT",
- "Fuso hor\u00e1rio padr\u00e3o da \u00c1frica Oriental", "EAST"};
+ "Fuso hor\u00e1rio padr\u00e3o da \u00c1frica Oriental", "EAST",
+ "Hor\u00E1rio do Leste da \u00C1frica", "EAT"};
String EASTER[] = new String[] {"Fuso hor\u00e1rio da Ilha de P\u00e1scoa", "EAST",
- "Fuso hor\u00e1rio de ver\u00e3o da Ilha de P\u00e1scoa", "EASST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da Ilha de P\u00e1scoa", "EASST",
+ "Hor\u00E1rio da Ilha de P\u00E1scoa", "EAST"};
String EET[] = new String[] {"Fuso hor\u00e1rio da Europa Oriental", "EET",
- "Fuso hor\u00e1rio de ver\u00e3o da Europa Oriental", "EEST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da Europa Oriental", "EEST",
+ "Hor\u00e1rio da Europa Oriental", "EET"};
String EGT[] = new String[] {"Fuso hor\u00e1rio da Groenl\u00e2ndia Oriental", "EGT",
- "Fuso hor\u00e1rio de ver\u00e3o da Groenl\u00e2ndia Oriental", "EGST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da Groenl\u00e2ndia Oriental", "EGST",
+ "Hor\u00E1rio da Groenl\u00E2ndia Oriental", "EGT"};
String EST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o oriental", "EST",
- "Hor\u00e1rio de luz natural oriental", "EDT"};
+ "Hor\u00e1rio de luz natural oriental", "EDT",
+ "Hor\u00E1rio do Leste", "ET"};
String EST_NSW[] = new String[] {"Hor\u00E1rio-Padr\u00E3o Oriental (Nova Gales do Sul)", "EST",
- "Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Nova Gales do Sul)", "EST"};
+ "Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Nova Gales do Sul)", "EST",
+ "Hor\u00E1rio Oriental (Nova Gales do Sul)", "ET"};
String FET[] = new String[] {"Hor\u00E1rio do Extremo Leste Europeu (FET)", "FET",
- "Fuso Hor\u00E1rio de Ver\u00E3o do Extremo Leste Europeu", "FEST"};
+ "Fuso Hor\u00E1rio de Ver\u00E3o do Extremo Leste Europeu", "FEST",
+ "Hor\u00E1rio do Extremo Leste Europeu (FET)", "FET"};
String GHMT[] = new String[] {"Fuso hor\u00e1rio do meridiano de Gana", "GMT",
- "Fuso hor\u00e1rio de ver\u00e3o de Gana", "GHST"};
+ "Fuso hor\u00e1rio de ver\u00e3o de Gana", "GHST",
+ "Fuso Hor\u00E1rio do Meridiano de Gana", "GMT"};
String GAMBIER[] = new String[] {"Fuso hor\u00e1rio de Gambier", "GAMT",
- "Fuso hor\u00e1rio de ver\u00e3o de Gambier", "GAMST"};
+ "Fuso hor\u00e1rio de ver\u00e3o de Gambier", "GAMST",
+ "Hor\u00E1rio de Gambier", "GAMT"};
String GMT[] = new String[] {"Fuso hor\u00e1rio do meridiano de Greenwich", "GMT",
- "Fuso hor\u00e1rio do meridiano de Greenwich", "GMT"};
+ "Fuso hor\u00e1rio do meridiano de Greenwich", "GMT",
+ "Hor\u00E1rio M\u00E9dio de Greenwich", "GMT"};
String GMTBST[] = new String[] {"Fuso hor\u00e1rio do meridiano de Greenwich", "GMT",
- "Fuso hor\u00e1rio de ver\u00e3o da Gr\u00e3-Bretanha", "BST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da Gr\u00e3-Bretanha", "BST",
+ "Hor\u00E1rio do Reino Unido", "BT"};
String GST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do golfo", "GST",
- "Hor\u00e1rio de luz natural do golfo", "GDT"};
+ "Hor\u00e1rio de luz natural do golfo", "GDT",
+ "Hor\u00E1rio do Golfo", "GT"};
String HAST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Hava\u00ed-Aleutian", "HAST",
- "Hor\u00e1rio de luz natural do Hava\u00ed-Aleutian", "HADT"};
+ "Hor\u00e1rio de luz natural do Hava\u00ed-Aleutian", "HADT",
+ "Hor\u00E1rio do Hava\u00ED-Aleutas", "HAT"};
String HKT[] = new String[] {"Fuso hor\u00e1rio de Hong Kong", "HKT",
- "Fuso hor\u00e1rio de ver\u00e3o de Hong Kong", "HKST"};
+ "Fuso hor\u00e1rio de ver\u00e3o de Hong Kong", "HKST",
+ "Hor\u00E1rio de Hong Kong", "HKT"};
String HST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Hava\u00ed", "HST",
- "Hor\u00e1rio de luz natural do Hava\u00ed", "HDT"};
+ "Hor\u00e1rio de luz natural do Hava\u00ed", "HDT",
+ "Hor\u00E1rio do Hava\u00ED", "HT"};
String ICT[] = new String[] {"Fuso hor\u00e1rio da Indochina", "ICT",
- "Fuso hor\u00e1rio de ver\u00e3o da Indochina", "ICST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da Indochina", "ICST",
+ "Hor\u00E1rio da Indochina", "ICT"};
String IRT[] = new String[] {"Fuso hor\u00e1rio do Ir\u00e3", "IRST",
- "Hor\u00e1rio de luz natural do Ir\u00e3", "IRDT"};
+ "Hor\u00e1rio de luz natural do Ir\u00e3", "IRDT",
+ "Hor\u00E1rio do Ir\u00E3", "IRT"};
String ISRAEL[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Israel", "IST",
- "Hor\u00e1rio de luz natural de Israel", "IDT"};
+ "Hor\u00e1rio de luz natural de Israel", "IDT",
+ "Hor\u00E1rio de Israel", "IT"};
String IST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da \u00cdndia", "IST",
- "Hor\u00e1rio de luz natural da \u00cdndia", "IDT"};
+ "Hor\u00e1rio de luz natural da \u00cdndia", "IDT",
+ "Hor\u00E1rio da \u00CDndia", "IT"};
String JST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Jap\u00e3o", "JST",
- "Hor\u00e1rio de luz natural do Jap\u00e3o", "JDT"};
+ "Hor\u00e1rio de luz natural do Jap\u00e3o", "JDT",
+ "Hor\u00E1rio do Jap\u00E3o", "JT"};
String KST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da Coreia", "KST",
- "Hor\u00e1rio de luz natural da Coreia", "KDT"};
+ "Hor\u00e1rio de luz natural da Coreia", "KDT",
+ "Hor\u00E1rio da Coreia", "KT"};
String LORD_HOWE[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Lord Howe", "LHST",
- "Fuso hor\u00e1rio de ver\u00e3o de Lord Howe", "LHST"};
+ "Fuso hor\u00e1rio de ver\u00e3o de Lord Howe", "LHST",
+ "Hor\u00E1rio de Lord Howe", "LHT"};
String MHT[] = new String[] {"Fuso hor\u00e1rio das Ilhas Marshall", "MHT",
- "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Marshall", "MHST"};
+ "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Marshall", "MHST",
+ "Hor\u00E1rio das Ilhas Marshall", "MHT"};
String MSK[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Moscou", "MSK",
- "Hor\u00e1rio de luz natural de Moscou", "MSD"};
+ "Hor\u00e1rio de luz natural de Moscou", "MSD",
+ "Hor\u00E1rio de Moscou", "MT"};
String MST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o das montanhas", "MST",
- "Hor\u00e1rio de luz natural das montanhas", "MDT"};
+ "Hor\u00e1rio de luz natural das montanhas", "MDT",
+ "Hor\u00E1rio das Montanhas Rochosas", "MT"};
String MYT[] = new String[] {"Fuso hor\u00e1rio da Mal\u00e1sia", "MYT",
- "Fuso hor\u00e1rio de ver\u00e3o da Mal\u00e1sia", "MYST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da Mal\u00e1sia", "MYST",
+ "Hor\u00E1rio da Mal\u00E1sia", "MYT"};
String NORONHA[] = new String[] {"Fuso hor\u00e1rio de Fernando de Noronha", "FNT",
- "Fuso hor\u00e1rio de ver\u00e3o de Fernando de Noronha", "FNST"};
+ "Fuso hor\u00e1rio de ver\u00e3o de Fernando de Noronha", "FNST",
+ "Hor\u00E1rio de Fernando de Noronha", "FNT"};
String NOVT[] = new String[] {"Fuso hor\u00e1rio de Novosibirsk", "NOVT",
- "Fuso hor\u00e1rio de ver\u00e3o de Novosibirsk", "NOVST"};
+ "Fuso hor\u00e1rio de ver\u00e3o de Novosibirsk", "NOVST",
+ "Hor\u00E1rio de Novosibirsk", "NOVT"};
String NPT[] = new String[] {"Fuso hor\u00e1rio do Nepal", "NPT",
- "Fuso hor\u00e1rio de ver\u00e3o do Nepal", "NPST"};
+ "Fuso hor\u00e1rio de ver\u00e3o do Nepal", "NPST",
+ "Hor\u00E1rio do Nepal", "NPT"};
String NST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Terra Nova", "NST",
- "Hor\u00e1rio de luz natural de Terra Nova", "NDT"};
+ "Hor\u00e1rio de luz natural de Terra Nova", "NDT",
+ "Hor\u00E1rio de Terra Nova", "NT"};
String NZST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da Nova Zel\u00e2ndia", "NZST",
- "Hor\u00e1rio de luz natural da Nova Zel\u00e2ndia", "NZDT"};
+ "Hor\u00e1rio de luz natural da Nova Zel\u00e2ndia", "NZDT",
+ "Hor\u00E1rio da Nova Zel\u00E2ndia", "NZT"};
String PITCAIRN[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Pitcairn", "PST",
- "Hor\u00e1rio de luz natural de Pitcairn", "PDT"};
+ "Hor\u00e1rio de luz natural de Pitcairn", "PDT",
+ "Hor\u00E1rio de Pitcairn", "PT"};
String PKT[] = new String[] {"Fuso hor\u00e1rio do Paquist\u00e3o", "PKT",
- "Fuso hor\u00e1rio de ver\u00e3o do Paquist\u00e3o", "PKST"};
+ "Fuso hor\u00e1rio de ver\u00e3o do Paquist\u00e3o", "PKST",
+ "Hor\u00E1rio do Paquist\u00E3o", "PKT"};
String PONT[] = new String[] {"Fuso Hor\u00E1rio de Pohnpei", "PONT",
- "Fuso Hor\u00E1rio de Ver\u00E3o de Pohnpei", "PONST"};
+ "Fuso Hor\u00E1rio de Ver\u00E3o de Pohnpei", "PONST",
+ "Hor\u00E1rio de Ponape", "PONT"};
String PST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o do Pac\u00edfico", "PST",
- "Hor\u00e1rio de luz natural do Pac\u00edfico", "PDT"};
+ "Hor\u00e1rio de luz natural do Pac\u00edfico", "PDT",
+ "Hor\u00E1rio do Pac\u00EDfico", "PT"};
String SAST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o da \u00c1frica do Sul", "SAST",
- "Fuso hor\u00e1rio de ver\u00e3o da \u00c1frica do Sul", "SAST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da \u00c1frica do Sul", "SAST",
+ "Hor\u00E1rio da \u00C1frica do Sul", "SAT"};
String SBT[] = new String[] {"Fuso hor\u00e1rio das Ilhas Salom\u00e3o", "SBT",
- "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Salom\u00e3o", "SBST"};
+ "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Salom\u00e3o", "SBST",
+ "Hor\u00E1rio das Ilhas Salom\u00E3o", "SBT"};
String SGT[] = new String[] {"Fuso hor\u00e1rio de Cingapura", "SGT",
- "Fuso hor\u00e1rio de ver\u00e1 de Cingapura", "SGST"};
+ "Fuso hor\u00e1rio de ver\u00e1 de Cingapura", "SGST",
+ "Hor\u00E1rio de Cingapura", "SGT"};
String SLST[] = new String[] {"Fuso hor\u00e1rio do meridiano de Greenwich", "GMT",
- "Fuso hor\u00e1rio de ver\u00e3o de Serra Leoa", "SLST"};
+ "Fuso hor\u00e1rio de ver\u00e3o de Serra Leoa", "SLST",
+ "Hor\u00E1rio de Serra Leoa", "SLT"};
String TASMANIA[] = new String[] {"Hor\u00E1rio-Padr\u00E3o do Leste (Tasm\u00E2nia)", "EST",
- "Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Tasm\u00E2nia)", "EST"};
+ "Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Tasm\u00E2nia)", "EST",
+ "Hor\u00E1rio do Leste (Tasm\u00E2nia)", "ET"};
String TMT[] = new String[] {"Fuso hor\u00e1rio do Turcomenist\u00e3o", "TMT",
- "Fuso hor\u00e1rio de ver\u00e3o do Turcomenist\u00e3o", "TMST"};
+ "Fuso hor\u00e1rio de ver\u00e3o do Turcomenist\u00e3o", "TMST",
+ "Hor\u00E1rio do Turcomenist\u00E3o", "TMT"};
String TRUT[] = new String[] {"Fuso Hor\u00E1rio de Chuuk", "CHUT",
- "Fuso Hor\u00E1rio de Ver\u00E3o de Chuuk", "CHUST"};
+ "Fuso Hor\u00E1rio de Ver\u00E3o de Chuuk", "CHUST",
+ "Fuso Hor\u00E1rio de Chuuk", "CHUT"};
String ULAT[]= new String[] {"Fuso hor\u00e1rio de Ulan Bator", "ULAT",
- "Fuso hor\u00e1rio de ver\u00e3o de Ulan Bator", "ULAST"};
+ "Fuso hor\u00e1rio de ver\u00e3o de Ulan Bator", "ULAST",
+ "Hor\u00E1rio de Ulaanbaatar", "ULAT"};
String WAT[] = new String[] {"Fuso hor\u00e1rio da \u00c1frica Ocidental", "WAT",
- "Fuso hor\u00e1rio de ver\u00e3o da \u00c1frica Ocidental", "WAST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da \u00c1frica Ocidental", "WAST",
+ "Hor\u00E1rio da \u00C1frica Ocidental", "WAT"};
String WET[] = new String[] {"Fuso hor\u00e1rio da Europa Ocidental", "WET",
- "Fuso hor\u00e1rio de ver\u00e3o da Europa Ocidental", "WEST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da Europa Ocidental", "WEST",
+ "Hor\u00E1rio da Europa Ocidental", "WET"};
String WIT[] = new String[] {"Fuso hor\u00e1rio da Indon\u00e9sia Ocidental", "WIB",
- "Fuso hor\u00e1rio de ver\u00e3o da Indon\u00e9sia Ocidental", "WIST"};
+ "Fuso hor\u00e1rio de ver\u00e3o da Indon\u00e9sia Ocidental", "WIST",
+ "Hor\u00E1rio da Indon\u00E9sia Ocidental", "WIB"};
String WST_AUS[] = new String[] {"Hor\u00E1rio-Padr\u00E3o Ocidental (Austr\u00E1lia)", "WST",
- "Fuso Hor\u00E1rio de Ver\u00E3o Ocidental (Austr\u00E1lia)", "WST"};
+ "Fuso Hor\u00E1rio de Ver\u00E3o Ocidental (Austr\u00E1lia)", "WST",
+ "Hor\u00E1rio Ocidental (Austr\u00E1lia)", "WT"};
String SAMOA[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Samoa", "SST",
- "Hor\u00e1rio de luz natural de Samoa", "SDT"};
+ "Hor\u00e1rio de luz natural de Samoa", "SDT",
+ "Hor\u00E1rio da Samoa", "ST"};
String WST_SAMOA[] = new String[] {"Fuso hor\u00e1rio de Samoa Ocidental", "WST",
- "Fuso hor\u00e1rio de ver\u00e3o de Samoa Ocidental", "WSDT"};
+ "Fuso hor\u00e1rio de ver\u00e3o de Samoa Ocidental", "WSDT",
+ "Fuso Hor\u00E1rio de Samoa Ocidental", "WST"};
String ChST[] = new String[] {"Fuso hor\u00e1rio padr\u00e3o de Chamorro", "ChST",
- "Hor\u00e1rio de luz natural de Chamorro", "ChDT"};
+ "Hor\u00e1rio de luz natural de Chamorro", "ChDT",
+ "Hor\u00E1rio de Chamorro", "ChT"};
String VICTORIA[] = new String[] {"Hor\u00E1rio-Padr\u00E3o do Leste (Victoria)", "EST",
- "Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Victoria)", "EST"};
+ "Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Victoria)", "EST",
+ "Hor\u00E1rio do Leste (Victoria)", "ET"};
String UTC[] = new String[] {"Tempo universal coordenado", "UTC",
- "Tempo universal coordenado", "UTC"};
+ "Tempo universal coordenado", "UTC",
+ "Hor\u00E1rio Universal Coordenado", "UTC"};
String UZT[] = new String[] {"Fuso hor\u00e1rio do Uzbequist\u00e3o", "UZT",
- "Fuso hor\u00e1rio de ver\u00e3o do Uzbequist\u00e3o", "UZST"};
+ "Fuso hor\u00e1rio de ver\u00e3o do Uzbequist\u00e3o", "UZST",
+ "Hor\u00E1rio do Uzbequist\u00E3o", "UZT"};
String WART[] = new String[] {"Fuso hor\u00e1rio da Argentina Ocidental", "WART",
"Fuso hor\u00e1rio de ver\u00e3o da Argentina Ocidental", "WARST"};
@@ -311,7 +387,8 @@
{"America/Argentina/Ushuaia", AGT},
{"America/Aruba", AST},
{"America/Asuncion", new String[] {"Fuso hor\u00e1rio do Paraguai", "PYT",
- "Fuso hor\u00e1rio de ver\u00e3o do Paraguai", "PYST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o do Paraguai", "PYST",
+ "Hor\u00E1rio do Paraguai", "PYT"}},
{"America/Atikokan", EST},
{"America/Atka", HAST},
{"America/Bahia", BRT},
@@ -322,17 +399,20 @@
{"America/Blanc-Sablon", AST},
{"America/Boa_Vista", AMT},
{"America/Bogota", new String[] {"Fuso hor\u00e1rio da Col\u00f4mbia", "COT",
- "Fuso hor\u00e1rio de ver\u00e3o da Col\u00f4mbia", "COST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o da Col\u00f4mbia", "COST",
+ "Hor\u00E1rio da Col\u00F4mbia", "COT"}},
{"America/Boise", MST},
{"America/Buenos_Aires", AGT},
{"America/Cambridge_Bay", MST},
{"America/Campo_Grande", AMT},
{"America/Cancun", CST},
{"America/Caracas", new String[] {"Fuso hor\u00e1rio da Venezuela", "VET",
- "Fuso hor\u00e1rio de ver\u00e3o da Venezuela", "VEST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o da Venezuela", "VEST",
+ "Hor\u00E1rio da Venezuela", "VET"}},
{"America/Catamarca", AGT},
{"America/Cayenne", new String[] {"Fuso hor\u00e1rio da Guiana Francesa", "GFT",
- "Fuso hor\u00e1rio de ver\u00e3o da Guiana Francesa", "GFST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o da Guiana Francesa", "GFST",
+ "Hor\u00E1rio da Guiana Francesa", "GFT"}},
{"America/Cayman", EST},
{"America/Chihuahua", MST},
{"America/Creston", MST},
@@ -354,16 +434,19 @@
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"Fuso hor\u00e1rio da Groenl\u00e2ndia Ocidental", "WGT",
- "Fuso hor\u00e1rio de ver\u00e3o da Groenl\u00e2ndia Ocidental", "WGST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o da Groenl\u00e2ndia Ocidental", "WGST",
+ "Hor\u00E1rio da Groenl\u00E2ndia Ocidental", "WGT"}},
{"America/Goose_Bay", AST},
{"America/Grand_Turk", EST},
{"America/Grenada", AST},
{"America/Guadeloupe", AST},
{"America/Guatemala", CST},
{"America/Guayaquil", new String[] {"Fuso hor\u00e1rio do Equador", "ECT",
- "Fuso hor\u00e1rio de ver\u00e3o do Equador", "ECST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o do Equador", "ECST",
+ "Hor\u00E1rio do Equador", "ECT"}},
{"America/Guyana", new String[] {"Fuso hor\u00e1rio da Guiana", "GYT",
- "Fuso hor\u00e1rio de ver\u00e3o da Guiana", "GYST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o da Guiana", "GYST",
+ "Hor\u00E1rios da Guiana", "GYT"}},
{"America/Havana", CUBA},
{"America/Hermosillo", MST},
{"America/Indiana/Indianapolis", EST},
@@ -384,9 +467,11 @@
{"America/Knox_IN", CST},
{"America/Kralendijk", AST},
{"America/La_Paz", new String[] {"Fuso hor\u00e1rio da Bol\u00edvia", "BOT",
- "Fuso hor\u00e1rio de ver\u00e3o da Bol\u00edvia", "BOST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o da Bol\u00edvia", "BOST",
+ "Hor\u00E1rio da Bol\u00EDvia", "BOT"}},
{"America/Lima", new String[] {"Fuso hor\u00e1rio do Peru", "PET",
- "Fuso hor\u00e1rio de ver\u00e3o do Peru", "PEST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o do Peru", "PEST",
+ "Hor\u00E1rio do Peru", "PET"}},
{"America/Louisville", EST},
{"America/Lower_Princes", AST},
{"America/Maceio", BRT},
@@ -400,13 +485,16 @@
{"America/Menominee", CST},
{"America/Merida", CST},
{"America/Metlakatla", new String[] {"Hor\u00E1rio Padr\u00E3o de Metlakatla", "MeST",
- "Hor\u00E1rio de Luz Natural de Metlakatla", "MeDT"}},
+ "Hor\u00E1rio de Luz Natural de Metlakatla", "MeDT",
+ "Hor\u00E1rio de Metlakatla", "MeT"}},
{"America/Mexico_City", CST},
{"America/Miquelon", new String[] {"Fuso hor\u00e1rio padr\u00e3o de S\u00e3o Pedro e Miquelon", "PMST",
- "Hor\u00e1rio de luz natural de S\u00e3o Pedro e Miquelon", "PMDT"}},
+ "Hor\u00e1rio de luz natural de S\u00e3o Pedro e Miquelon", "PMDT",
+ "Hor\u00E1rio de Saint Pierre e Miquelon", "PMT"}},
{"America/Moncton", AST},
{"America/Montevideo", new String[] {"Fuso hor\u00e1rio do Uruguai", "UYT",
- "Fuso hor\u00e1rio de ver\u00e3o do Uruguai", "UYST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o do Uruguai", "UYST",
+ "Hor\u00E1rio do Uruguai", "UYT"}},
{"America/Monterrey", CST},
{"America/Montreal", EST},
{"America/Montserrat", AST},
@@ -421,7 +509,8 @@
{"America/Panama", EST},
{"America/Pangnirtung", EST},
{"America/Paramaribo", new String[] {"Fuso hor\u00e1rio do Suriname", "SRT",
- "Fuso hor\u00e1rio de ver\u00e3o do Suriname", "SRST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o do Suriname", "SRST",
+ "Hor\u00E1rio do Suriname", "SRT"}},
{"America/Port-au-Prince", EST},
{"America/Port_of_Spain", AST},
{"America/Porto_Acre", ACT},
@@ -461,115 +550,146 @@
{"America/Yellowknife", MST},
{"Antarctica/Casey", WST_AUS},
{"Antarctica/Davis", new String[] {"Fuso hor\u00e1rio de Davis", "DAVT",
- "Fuso hor\u00e1rio de ver\u00e3o de Davis", "DAVST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Davis", "DAVST",
+ "Hor\u00E1rio de Davis", "DAVT"}},
{"Antarctica/DumontDUrville", new String[] {"Fuso hor\u00e1rio de Dumont-d'Urville", "DDUT",
- "Fuso hor\u00e1rio de ver\u00e3o de Dumont-d'Urville", "DDUST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Dumont-d'Urville", "DDUST",
+ "Fuso Hor\u00E1rio de Dumont-d'Urville", "DDUT"}},
{"Antarctica/Macquarie", new String[] {"Fuso Hor\u00E1rio da Ilha de Macquarie", "MIST",
- "Fuso Hor\u00E1rio de Ver\u00E3o da Ilha de Macquarie", "MIST"}},
+ "Fuso Hor\u00E1rio de Ver\u00E3o da Ilha de Macquarie", "MIST",
+ "Fuso Hor\u00E1rio da Ilha de Macquarie", "MIST"}},
{"Antarctica/Mawson", new String[] {"Fuso hor\u00e1rio de Mawson", "MAWT",
- "Fuso hor\u00e1rio de ver\u00e3o de Mawson", "MAWST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Mawson", "MAWST",
+ "Hor\u00E1rio de Mawson", "MAWT"}},
{"Antarctica/McMurdo", NZST},
{"Antarctica/Palmer", CLT},
{"Antarctica/Rothera", new String[] {"Fuso hor\u00e1rio de Rothera", "ROTT",
- "Fuso hor\u00e1rio de ver\u00e3o de Rothera", "ROTST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Rothera", "ROTST",
+ "Hor\u00E1rio de Rothera", "ROTT"}},
{"Antarctica/South_Pole", NZST},
{"Antarctica/Syowa", new String[] {"Fuso hor\u00e1rio de Syowa", "SYOT",
- "Fuso hor\u00e1rio de ver\u00e3o de Syowa", "SYOST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Syowa", "SYOST",
+ "Hor\u00E1rio de Syowa", "SYOT"}},
{"Antarctica/Vostok", new String[] {"Fuso hor\u00e1rio de Vostok", "VOST",
- "Fuso hor\u00e1rio de ver\u00e3o de Vostok", "VOSST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Vostok", "VOSST",
+ "Hor\u00E1rio de Vostok", "VOST"}},
{"Arctic/Longyearbyen", CET},
{"Asia/Aden", ARAST},
{"Asia/Almaty", new String[] {"Fuso hor\u00e1rio de Alma-Ata", "ALMT",
- "Fuso hor\u00e1rio de ver\u00e3o de Alma-Ata", "ALMST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Alma-Ata", "ALMST",
+ "Hor\u00E1rio de Alma-Ata", "ALMT"}},
{"Asia/Amman", ARAST},
{"Asia/Anadyr", new String[] {"Fuso hor\u00e1rio de Anadyr", "ANAT",
- "Fuso hor\u00e1rio de ver\u00e3o de Anadyr", "ANAST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Anadyr", "ANAST",
+ "Hor\u00E1rio de Anadyr", "ANAT"}},
{"Asia/Aqtau", new String[] {"Fuso hor\u00e1rio de Aqtau", "AQTT",
- "Fuso hor\u00e1rio de ver\u00e3o de Aqtau", "AQTST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Aqtau", "AQTST",
+ "Hor\u00E1rio de Aqtau", "AQTT"}},
{"Asia/Aqtobe", new String[] {"Fuso hor\u00e1rio de Aqtobe", "AQTT",
- "Fuso hor\u00e1rio de ver\u00e3o de Aqtobe", "AQTST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Aqtobe", "AQTST",
+ "Hor\u00E1rio de Aqtobe", "AQTT"}},
{"Asia/Ashgabat", TMT},
{"Asia/Ashkhabad", TMT},
{"Asia/Baghdad", ARAST},
{"Asia/Bahrain", ARAST},
{"Asia/Baku", new String[] {"Fuso hor\u00e1rio do Azerbaij\u00e3o", "AZT",
- "Fuso hor\u00e1rio de ver\u00e3o do Azerbaij\u00e3o", "AZST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o do Azerbaij\u00e3o", "AZST",
+ "Hor\u00E1rio do Azerbaij\u00E3o", "AZT"}},
{"Asia/Bangkok", ICT},
{"Asia/Beirut", EET},
{"Asia/Bishkek", new String[] {"Fuso hor\u00e1rio do Quirguist\u00e3o", "KGT",
- "Fuso hor\u00e1rio de ver\u00e3o do Quirguist\u00e3o", "KGST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o do Quirguist\u00e3o", "KGST",
+ "Hor\u00E1rio do Quirguist\u00E3o", "KGT"}},
{"Asia/Brunei", new String[] {"Fuso hor\u00e1rio de Brunei", "BNT",
- "Fuso hor\u00e1rio de ver\u00e3o de Brunei", "BNST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Brunei", "BNST",
+ "Hor\u00E1rio de Brunei", "BNT"}},
{"Asia/Calcutta", IST},
{"Asia/Choibalsan", new String[] {"Fuso hor\u00e1rio de Choibalsan", "CHOT",
- "Fuso hor\u00e1rio de ver\u00e3o de Choibalsan", "CHOST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Choibalsan", "CHOST",
+ "Hor\u00E1rio de Choibalsan", "CHOT"}},
{"Asia/Chongqing", CTT},
{"Asia/Chungking", CTT},
{"Asia/Colombo", IST},
{"Asia/Dacca", BDT},
{"Asia/Dhaka", BDT},
{"Asia/Dili", new String[] {"Fuso hor\u00e1rio do Timor-Leste", "TLT",
- "Fuso hor\u00e1rio de ver\u00e3o do Timor-Leste", "TLST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o do Timor-Leste", "TLST",
+ "Hor\u00E1rio do Timor-Leste", "TLT"}},
{"Asia/Damascus", EET},
{"Asia/Dubai", GST},
{"Asia/Dushanbe", new String[] {"Fuso hor\u00e1rio do Tadjiquist\u00e3o", "TJT",
- "Fuso hor\u00e1rio de ver\u00e3o do Tadjiquist\u00e3o", "TJST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o do Tadjiquist\u00e3o", "TJST",
+ "Hor\u00E1rio do Tadjiquist\u00E3o", "TJT"}},
{"Asia/Gaza", EET},
{"Asia/Harbin", CTT},
{"Asia/Hebron", EET},
{"Asia/Ho_Chi_Minh", ICT},
{"Asia/Hong_Kong", HKT},
{"Asia/Hovd", new String[] {"Fuso hor\u00e1rio de Hovd", "HOVT",
- "Fuso hor\u00e1rio de ver\u00e3o de Hovd", "HOVST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Hovd", "HOVST",
+ "Hor\u00E1rio de Hovd", "HOVT"}},
{"Asia/Irkutsk", new String[] {"Fuso hor\u00e1rio de Irkutsk", "IRKT",
- "Fuso hor\u00e1rio de ver\u00e3o de Irkutsk", "IRKST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Irkutsk", "IRKST",
+ "Hor\u00E1rio de Irkutsk", "IRKT"}},
{"Asia/Istanbul", EET},
{"Asia/Jakarta", WIT},
{"Asia/Jayapura", new String[] {"Fuso hor\u00e1rio da Indon\u00e9sia Oriental", "WIT",
- "Fuso hor\u00e1rio de ver\u00e3o da Indon\u00e9sia Oriental", "EIST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o da Indon\u00e9sia Oriental", "EIST",
+ "Hor\u00E1rio da Indon\u00E9sia Oriental", "WIT"}},
{"Asia/Kabul", new String[] {"Fuso hor\u00e1rio do Afeganist\u00e3o", "AFT",
- "Fuso hor\u00e1rio de ver\u00e3o do Afeganist\u00e3o", "AFST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o do Afeganist\u00e3o", "AFST",
+ "Hor\u00E1rio do Afeganist\u00E3o", "AFT"}},
{"Asia/Kamchatka", new String[] {"Fuso hor\u00e1rio de Petropavlovsk-Kamchatski", "PETT",
- "Fuso hor\u00e1rio de ver\u00e3o de Petropavlovsk-Kamchatski", "PETST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Petropavlovsk-Kamchatski", "PETST",
+ "Hor\u00E1rio de Petropavlovsk-Kamchatski", "PETT"}},
{"Asia/Karachi", PKT},
{"Asia/Kashgar", CTT},
{"Asia/Kathmandu", NPT},
{"Asia/Katmandu", NPT},
{"Asia/Khandyga", new String[] {"Hor\u00E1rio de Khandyga", "YAKT",
- "Hor\u00E1rio de Ver\u00E3o de Khandyga", "YAKST"}},
+ "Hor\u00E1rio de Ver\u00E3o de Khandyga", "YAKST",
+ "Hor\u00E1rio de Khandyga", "YAKT"}},
{"Asia/Kolkata", IST},
{"Asia/Krasnoyarsk", new String[] {"Fuso hor\u00e1rio de Krasnoyarsk", "KRAT",
- "Fuso hor\u00e1rio de ver\u00e3o de Krasnoyarsk", "KRAST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Krasnoyarsk", "KRAST",
+ "Hor\u00E1rio de Krasnoyarsk", "KRAT"}},
{"Asia/Kuala_Lumpur", MYT},
{"Asia/Kuching", MYT},
{"Asia/Kuwait", ARAST},
{"Asia/Macao", CTT},
{"Asia/Macau", CTT},
{"Asia/Magadan", new String[] {"Fuso hor\u00e1rio de Magadan", "MAGT",
- "Fuso hor\u00e1rio de ver\u00e3o de Magadan", "MAGST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Magadan", "MAGST",
+ "Hor\u00E1rio de Magadan", "MAGT"}},
{"Asia/Makassar", CIT},
{"Asia/Manila", new String[] {"Fuso hor\u00e1rio das Filipinas", "PHT",
- "Fuso hor\u00e1rio de ver\u00e3o das Filipinas", "PHST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Filipinas", "PHST",
+ "Hor\u00E1rio das Filipinas", "PHT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", NOVT},
{"Asia/Novosibirsk", NOVT},
{"Asia/Oral", new String[] {"Fuso hor\u00e1rio de Uralsk", "ORAT",
- "Fuso hor\u00e1rio de ver\u00e3o de Uralsk", "ORAST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Uralsk", "ORAST",
+ "Hor\u00E1rio de Uralsk", "ORAT"}},
{"Asia/Omsk", new String[] {"Fuso hor\u00e1rio de Omsk", "OMST",
- "Fuso hor\u00e1rio de ver\u00e3o de Omsk", "OMSST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Omsk", "OMSST",
+ "Hor\u00E1rio de Omsk", "OMST"}},
{"Asia/Phnom_Penh", ICT},
{"Asia/Pontianak", WIT},
{"Asia/Pyongyang", KST},
{"Asia/Qatar", ARAST},
{"Asia/Qyzylorda", new String[] {"Fuso hor\u00e1rio de Kizil-Orda", "QYZT",
- "Fuso hor\u00e1rio de ver\u00e3o de Kizil-Orda", "QYZST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Kizil-Orda", "QYZST",
+ "Hor\u00E1rio de Qyzylorda", "QYZT"}},
{"Asia/Rangoon", new String[] {"Fuso hor\u00e1rio de Mianmar", "MMT",
- "Fuso hor\u00e1rio de ver\u00e3o de Mianmar", "MMST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Mianmar", "MMST",
+ "Hor\u00E1rio de Mianmar", "MMT"}},
{"Asia/Riyadh", ARAST},
{"Asia/Saigon", ICT},
{"Asia/Sakhalin", new String[] {"Fuso hor\u00e1rio de Sakhalina", "SAKT",
- "Fuso hor\u00e1rio de ver\u00e3o de Sakhalina", "SAKST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Sakhalina", "SAKST",
+ "Hor\u00E1rio de Sakhalin", "SAKT"}},
{"Asia/Samarkand", UZT},
{"Asia/Seoul", KST},
{"Asia/Singapore", SGT},
@@ -577,7 +697,8 @@
{"Asia/Tel_Aviv", ISRAEL},
{"Asia/Tashkent", UZT},
{"Asia/Tbilisi", new String[] {"Fuso hor\u00e1rio da Ge\u00f3rgia", "GET",
- "Fuso hor\u00e1rio de ver\u00e3o da Ge\u00f3rgia", "GEST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o da Ge\u00f3rgia", "GEST",
+ "Hor\u00E1rio da Ge\u00F3rgia", "GET"}},
{"Asia/Tehran", IRT},
{"Asia/Thimbu", BTT},
{"Asia/Thimphu", BTT},
@@ -586,31 +707,39 @@
{"Asia/Ulan_Bator", ULAT},
{"Asia/Urumqi", CTT},
{"Asia/Ust-Nera", new String[] {"Hor\u00E1rio de Ust-Nera", "VLAT",
- "Hor\u00E1rio de Ver\u00E3o de Ust-Nera", "VLAST"}},
+ "Hor\u00E1rio de Ver\u00E3o de Ust-Nera", "VLAST",
+ "Hor\u00E1rio de Ust-Nera", "VLAT"}},
{"Asia/Vientiane", ICT},
{"Asia/Vladivostok", new String[] {"Fuso hor\u00e1rio de Vladivostok", "VLAT",
- "Fuso hor\u00e1rio de ver\u00e3o de Vladivostok", "VLAST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Vladivostok", "VLAST",
+ "Hor\u00E1rio de Vladivostok", "VLAT"}},
{"Asia/Yakutsk", new String[] {"Fuso hor\u00e1rio de Yakutsk", "YAKT",
- "Fuso hor\u00e1rio de ver\u00e3o de Yakutsk", "YAKST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Yakutsk", "YAKST",
+ "Hor\u00E1rio de Yakutsk", "YAKT"}},
{"Asia/Yekaterinburg", new String[] {"Fuso hor\u00e1rio de Yekaterinburgo", "YEKT",
- "Fuso hor\u00e1rio de ver\u00e3o de Yekaterinburgo", "YEKST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Yekaterinburgo", "YEKST",
+ "Hor\u00E1rio de Yekaterinburg", "YEKT"}},
{"Asia/Yerevan", ARMT},
{"Atlantic/Azores", new String[] {"Fuso hor\u00e1rio das A\u00e7ores", "AZOT",
- "Fuso hor\u00e1rio de ver\u00e3o das A\u00e7ores", "AZOST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das A\u00e7ores", "AZOST",
+ "Hor\u00E1rio de A\u00E7ores", "AZOT"}},
{"Atlantic/Bermuda", AST},
{"Atlantic/Canary", WET},
{"Atlantic/Cape_Verde", new String[] {"Fuso hor\u00e1rio de Cabo Verde", "CVT",
- "Fuso hor\u00e1rio de ver\u00e3o de Cabo Verde", "CVST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Cabo Verde", "CVST",
+ "Hor\u00E1rio de Cabo Verde", "CVT"}},
{"Atlantic/Faeroe", WET},
{"Atlantic/Faroe", WET},
{"Atlantic/Jan_Mayen", CET},
{"Atlantic/Madeira", WET},
{"Atlantic/Reykjavik", GMT},
{"Atlantic/South_Georgia", new String[] {"Fuso hor\u00e1rio padr\u00e3o da Ge\u00f3rgia do Sul", "GST",
- "Hor\u00e1rio de luz natural da Ge\u00f3rgia do Sul", "GDT"}},
+ "Hor\u00e1rio de luz natural da Ge\u00f3rgia do Sul", "GDT",
+ "Hor\u00E1rio da Ge\u00F3rgia do Sul", "GT"}},
{"Atlantic/St_Helena", GMT},
{"Atlantic/Stanley", new String[] {"Fuso hor\u00e1rio das Ilhas Falkland", "FKT",
- "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Falkland", "FKST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Falkland", "FKST",
+ "Hor\u00E1rio das Ilhas Malvinas", "FKT"}},
{"Australia/ACT", EST_NSW},
{"Australia/Adelaide", ADELAIDE},
{"Australia/Brisbane", BRISBANE},
@@ -619,7 +748,8 @@
{"Australia/Currie", EST_NSW},
{"Australia/Darwin", DARWIN},
{"Australia/Eucla", new String[] {"Fuso Hor\u00E1rio Ocidental Central (Austr\u00E1lia)", "CWST",
- "Fuso Hor\u00E1rio de Ver\u00E3o Ocidental Central (Austr\u00E1lia)", "CWST"}},
+ "Fuso Hor\u00E1rio de Ver\u00E3o Ocidental Central (Austr\u00E1lia)", "CWST",
+ "Hor\u00E1rio Ocidental Central (Austr\u00E1lia)", "CWT"}},
{"Australia/Hobart", TASMANIA},
{"Australia/LHI", LORD_HOWE},
{"Australia/Lindeman", BRISBANE},
@@ -704,7 +834,8 @@
{"Europe/Riga", EET},
{"Europe/Rome", CET},
{"Europe/Samara", new String[] {"Fuso hor\u00e1rio de Samara", "SAMT",
- "Fuso hor\u00e1rio de ver\u00e3o de Samara", "SAMST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Samara", "SAMST",
+ "Hor\u00E1rio de Samara", "SAMT"}},
{"Europe/San_Marino", CET},
{"Europe/Sarajevo", CET},
{"Europe/Simferopol", EET},
@@ -720,7 +851,8 @@
{"Europe/Vienna", CET},
{"Europe/Vilnius", EET},
{"Europe/Volgograd", new String[] {"Fuso hor\u00e1rio de Volgogrado", "VOLT",
- "Fuso hor\u00e1rio de ver\u00e3o de Volgogrado", "VOLST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Volgogrado", "VOLST",
+ "Hor\u00E1rio de Volgogrado", "VOLT"}},
{"Europe/Warsaw", CET},
{"Europe/Zagreb", CET},
{"Europe/Zaporozhye", EET},
@@ -734,30 +866,39 @@
{"IST", IST},
{"Indian/Antananarivo", EAT},
{"Indian/Chagos", new String[] {"Fuso hor\u00e1rio dos territ\u00f3rios do Oceano \u00cdndico", "IOT",
- "Fuso hor\u00e1rio de ver\u00e3o dos territ\u00f3rios do Oceano \u00cdndico", "IOST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o dos territ\u00f3rios do Oceano \u00cdndico", "IOST",
+ "Hor\u00E1rio do Territ\u00F3rio do Oceano \u00CDndico", "IOT"}},
{"Indian/Christmas", new String[] {"Fuso hor\u00e1rio das Ilhas Christmas", "CXT",
- "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Christmas", "CXST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Christmas", "CXST",
+ "Hor\u00E1rio da Ilha Christmas", "CIT"}},
{"Indian/Cocos", new String[] {"Fuso hor\u00e1rio das Ilhas Cocos", "CCT",
- "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Cocos", "CCST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Cocos", "CCST",
+ "Hor\u00E1rio das Ilhas Cocos", "CCT"}},
{"Indian/Comoro", EAT},
{"Indian/Kerguelen", new String[] {"Fuso hor\u00e1rio das Terras Austrais e Ant\u00e1rticas Francesas", "TFT",
- "Fuso hor\u00e1rio de ver\u00e3o das Terras Austrais e Ant\u00e1rticas Francesas", "TFST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Terras Austrais e Ant\u00e1rticas Francesas", "TFST",
+ "Hor\u00E1rio do Territ\u00F3rio Franc\u00EAs no Sul da Ant\u00E1rtica", "TFT"}},
{"Indian/Mahe", new String[] {"Fuso hor\u00e1rio das Seychelles", "SCT",
- "Fuso hor\u00e1rio de ver\u00e3o das Seychelles", "SCST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Seychelles", "SCST",
+ "Hor\u00E1rio de Seychelles", "SCT"}},
{"Indian/Maldives", new String[] {"Fuso hor\u00e1rio das Maldivas", "MVT",
- "Fuso hor\u00e1rio de ver\u00e3o das Maldivas", "MVST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Maldivas", "MVST",
+ "Hor\u00E1rio das Maldivas", "MVT"}},
{"Indian/Mauritius", new String[] {"Fuso hor\u00e1rio das Ilhas Maur\u00edcio", "MUT",
- "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Maur\u00edcio", "MUST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Maur\u00edcio", "MUST",
+ "Hor\u00E1rio de Maur\u00EDcio", "MUT"}},
{"Indian/Mayotte", EAT},
{"Indian/Reunion", new String[] {"Fuso hor\u00e1rio de Reuni\u00e3o", "RET",
- "Fuso hor\u00e1rio de ver\u00e3o de Reuni\u00e3o", "REST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Reuni\u00e3o", "REST",
+ "Hor\u00E1rio das Ilhas Reuni\u00E3o", "RET"}},
{"Israel", ISRAEL},
{"Jamaica", EST},
{"Japan", JST},
{"Kwajalein", MHT},
{"Libya", EET},
{"MET", new String[] {"Fuso hor\u00e1rio da Europa M\u00e9dia", "MET",
- "Fuso hor\u00e1rio de ver\u00e3o da Europa M\u00e9dia", "MEST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o da Europa M\u00e9dia", "MEST",
+ "MET", "MET"}},
{"Mexico/BajaNorte", PST},
{"Mexico/BajaSur", MST},
{"Mexico/General", CST},
@@ -777,61 +918,82 @@
{"Pacific/Chuuk", TRUT},
{"Pacific/Easter", EASTER},
{"Pacific/Efate", new String[] {"Fuso hor\u00e1rio de Vanuatu", "VUT",
- "Fuso hor\u00e1rio de ver\u00e3o de Vanuatu", "VUST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Vanuatu", "VUST",
+ "Hor\u00E1rio de Vanuatu", "VUT"}},
{"Pacific/Enderbury", new String[] {"Fuso hor\u00e1rio das Ilhas F\u00e9nix", "PHOT",
- "Fuso hor\u00e1rio de ver\u00e3o das Ilhas F\u00e9nix", "PHOST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Ilhas F\u00e9nix", "PHOST",
+ "Hor\u00E1rio da Ilha Phoenix", "PHOT"}},
{"Pacific/Fakaofo", new String[] {"Fuso hor\u00e1rio de Tokelau", "TKT",
- "Fuso hor\u00e1rio de ver\u00e3o de Tokelau", "TKST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Tokelau", "TKST",
+ "Hor\u00E1rio de Toquelau", "TKT"}},
{"Pacific/Fiji", new String[] {"Fuso hor\u00e1rio de Fiji", "FJT",
- "Fuso hor\u00e1rio de ver\u00e3o de Fiji", "FJST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Fiji", "FJST",
+ "Hor\u00E1rio de Fiji", "FJT"}},
{"Pacific/Funafuti", new String[] {"Fuso hor\u00e1rio de Tuvalu", "TVT",
- "Fuso hor\u00e1rio de ver\u00e3o de Tuvalu", "TVST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Tuvalu", "TVST",
+ "Hor\u00E1rio de Tuvalu", "TVT"}},
{"Pacific/Galapagos", new String[] {"Fuso hor\u00e1rio das Ilhas Gal\u00e1pagos", "GALT",
- "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Gal\u00e1pagos", "GALST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Gal\u00e1pagos", "GALST",
+ "Hor\u00E1rio de Gal\u00E1pagos", "GALT"}},
{"Pacific/Gambier", GAMBIER},
{"Pacific/Guadalcanal", SBT},
{"Pacific/Guam", ChST},
{"Pacific/Johnston", HST},
{"Pacific/Kiritimati", new String[] {"Fuso hor\u00e1rio das Esp\u00f3rades Equatoriais", "LINT",
- "Fuso hor\u00e1rio de ver\u00e3o das Esp\u00f3rades Equatoriais", "LINST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Esp\u00f3rades Equatoriais", "LINST",
+ "Hor\u00E1rio das Ilhas Line", "LINT"}},
{"Pacific/Kosrae", new String[] {"Fuso hor\u00e1rio de Kosrae", "KOST",
- "Fuso hor\u00e1rio de ver\u00e3o de Kosrae", "KOSST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Kosrae", "KOSST",
+ "Hor\u00E1rio de Kosrae", "KOST"}},
{"Pacific/Kwajalein", MHT},
{"Pacific/Majuro", MHT},
{"Pacific/Marquesas", new String[] {"Fuso hor\u00e1rio das Ilhas Marquesas", "MART",
- "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Marquesas", "MARST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Marquesas", "MARST",
+ "Hor\u00E1rio das Ilhas Marquesas", "MART"}},
{"Pacific/Midway", SAMOA},
{"Pacific/Nauru", new String[] {"Fuso hor\u00e1rio de Nauru", "NRT",
- "Fuso hor\u00e1rio de ver\u00e3o de Nauru", "NRST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Nauru", "NRST",
+ "Hor\u00E1rio de Nauru", "NRT"}},
{"Pacific/Niue", new String[] {"Fuso hor\u00e1rio de Niue", "NUT",
- "Fuso hor\u00e1rio de ver\u00e3o de Niue", "NUST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Niue", "NUST",
+ "Hor\u00E1rio de Niue", "NUT"}},
{"Pacific/Norfolk", new String[] {"Fuso hor\u00e1rio da Ilha de Norfolk", "NFT",
- "Fuso hor\u00e1rio de ver\u00e3o da Ilha de Norfolk", "NFST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o da Ilha de Norfolk", "NFST",
+ "Hor\u00E1rio de Norfolk", "NFT"}},
{"Pacific/Noumea", new String[] {"Fuso hor\u00e1rio da Nova Caled\u00f4nia", "NCT",
- "Fuso hor\u00e1rio de ver\u00e3o da Nova Caled\u00f4nia", "NCST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o da Nova Caled\u00f4nia", "NCST",
+ "Hor\u00E1rio da Nova Caled\u00F4nia", "NCT"}},
{"Pacific/Pago_Pago", SAMOA},
{"Pacific/Palau", new String[] {"Fuso hor\u00e1rio de Palau", "PWT",
- "Fuso hor\u00e1rio de ver\u00e3o de Palau", "PWST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Palau", "PWST",
+ "Hor\u00E1rio de Palau", "PWT"}},
{"Pacific/Pitcairn", PITCAIRN},
{"Pacific/Pohnpei", PONT},
{"Pacific/Ponape", PONT},
{"Pacific/Port_Moresby", new String[] {"Fuso hor\u00e1rio de Papua-Nova Guin\u00e9", "PGT",
- "Fuso hor\u00e1rio de ver\u00e3o de Papua-Nova Guin\u00e9", "PGST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Papua-Nova Guin\u00e9", "PGST",
+ "Hor\u00E1rio de Papua-Nova Guin\u00E9", "PGT"}},
{"Pacific/Rarotonga", new String[] {"Fuso hor\u00e1rio das Ilhas Cook", "CKT",
- "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Cook", "CKHST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Cook", "CKHST",
+ "Hor\u00E1rio das Ilhas Cook", "CKT"}},
{"Pacific/Saipan", ChST},
{"Pacific/Samoa", SAMOA},
{"Pacific/Tahiti", new String[] {"Fuso hor\u00e1rio do Taiti", "TAHT",
- "Fuso hor\u00e1rio de ver\u00e3o do Taiti", "TAHST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o do Taiti", "TAHST",
+ "Hor\u00E1rio do Tahiti", "TAHT"}},
{"Pacific/Tarawa", new String[] {"Fuso hor\u00e1rio das Ilhas Gilbert", "GILT",
- "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Gilbert", "GILST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o das Ilhas Gilbert", "GILST",
+ "Hor\u00E1rio das Ilhas Gilbert", "GILT"}},
{"Pacific/Tongatapu", new String[] {"Fuso hor\u00e1rio de Tonga", "TOT",
- "Fuso hor\u00e1rio de ver\u00e3o de Tonga", "TOST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Tonga", "TOST",
+ "Hor\u00E1rio de Tonga", "TOT"}},
{"Pacific/Truk", TRUT},
{"Pacific/Wake", new String[] {"Fuso hor\u00e1rio de Wake", "WAKT",
- "Fuso hor\u00e1rio de ver\u00e3o de Wake", "WAKST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Wake", "WAKST",
+ "Hor\u00E1rio de Wake", "WAKT"}},
{"Pacific/Wallis", new String[] {"Fuso hor\u00e1rio de Wallis e Futuna", "WFT",
- "Fuso hor\u00e1rio de ver\u00e3o de Wallis e Futuna", "WFST"}},
+ "Fuso hor\u00e1rio de ver\u00e3o de Wallis e Futuna", "WFST",
+ "Hor\u00E1rio das Ilhas Wallis e Futuna", "WFT"}},
{"Pacific/Yap", TRUT},
{"Poland", CET},
{"PRC", CTT},
--- a/jdk/src/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java Wed Jul 05 19:27:58 2017 +0200
@@ -46,159 +46,235 @@
protected final Object[][] getContents() {
String ACT[] = new String[] {"Acre, normaltid", "ACT",
- "Acre, sommartid", "ACST"};
+ "Acre, sommartid", "ACST",
+ "Acre, normaltid", "ACT"};
String ADELAIDE[] = new String[] {"Central standardtid (Sydaustralien)", "CST",
- "Central sommartid (South Australia)", "CST"};
+ "Central sommartid (South Australia)", "CST",
+ "Central tid (Sydaustralien)", "CT"};
String AGT[] = new String[] {"Argentina, normaltid", "ART",
- "Argentina, sommartid", "ARST"};
+ "Argentina, sommartid", "ARST",
+ "Argentinsk tid", "ART"};
String AKST[] = new String[] {"Alaska, normaltid", "AKST",
- "Alaska, sommartid", "AKDT"};
+ "Alaska, sommartid", "AKDT",
+ "Alaskisk tid", "AKT"};
String AMT[] = new String[] {"Amazonas, normaltid", "AMT",
- "Amazonas, sommartid", "AMST"};
+ "Amazonas, sommartid", "AMST",
+ "Amazonas-tid", "AMT"};
String ARAST[] = new String[] {"Arabisk normaltid", "AST",
- "Arabisk sommartid", "ADT"};
+ "Arabisk sommartid", "ADT",
+ "Arabisk tid", "AT"};
String ARMT[] = new String[] {"Armenien, normaltid", "AMT",
- "Armenien, sommartid", "AMST"};
+ "Armenien, sommartid", "AMST",
+ "Armenisk tid", "AMT"};
String AST[] = new String[] {"Atlantisk normaltid", "AST",
- "Atlantisk sommartid", "ADT"};
+ "Atlantisk sommartid", "ADT",
+ "Atlantisk tid", "AT"};
String BDT[] = new String[] {"Bangladesh, normaltid", "BDT",
- "Bangladesh, sommartid", "BDST"};
+ "Bangladesh, sommartid", "BDST",
+ "Bangladeshisk tid", "BDT"};
String BRISBANE[] = new String[] {"\u00D6stlig standardtid (Queensland)", "EST",
- "\u00D6stlig sommartid (Queensland)", "EST"};
- String BROKEN_HILL[] = new String[] {"Central standardtid (Sydaustralien)/New South Wales)", "CST",
- "Central sommartid (South Australia/New South Wales)", "CST"};
+ "\u00D6stlig sommartid (Queensland)", "EST",
+ "\u00D6stlig tid (Queensland)", "ET"};
+ String BROKEN_HILL[] = new String[] {"Central standardtid (Sydaustralien/New South Wales)", "CST",
+ "Central sommartid (South Australia/New South Wales)", "CST",
+ "Central tid (Sydaustralien/New South Wales)", "CT"};
String BRT[] = new String[] {"Brasilien, normaltid", "BRT",
- "Brasilien, sommartid", "BRST"};
+ "Brasilien, sommartid", "BRST",
+ "Brasiliansk tid", "BRT"};
String BTT[] = new String[] {"Bhutan, normaltid", "BTT",
- "Bhutan, sommartid", "BTST"};
+ "Bhutan, sommartid", "BTST",
+ "Bhutanesisk tid", "BTT"};
String CAT[] = new String[] {"Centralafrikansk tid", "CAT",
- "Centralafrikansk sommartid", "CAST"};
+ "Centralafrikansk sommartid", "CAST",
+ "Centralafrikansk tid", "CAT"};
String CET[] = new String[] {"Centraleuropeisk tid", "CET",
- "Centraleuropeisk sommartid", "CEST"};
+ "Centraleuropeisk sommartid", "CEST",
+ "Centraleuropeisk tid", "CET"};
String CHAST[] = new String[] {"Chatham, normaltid", "CHAST",
- "Chatham, sommartid", "CHADT"};
+ "Chatham, sommartid", "CHADT",
+ "Chathams tid", "CHAT"};
String CHUT[] = new String[] {"Chuuk, normaltid", "CHUT",
- "Chuuk, sommartid", "CHUST"};
+ "Chuuk, sommartid", "CHUST",
+ "Chuuk, normaltid", "CHUT"};
String CIT[] = new String[] {"Centralindonesisk tid", "WITA",
- "Centralindonesisk sommartid", "CIST"};
+ "Centralindonesisk sommartid", "CIST",
+ "Centralindonesisk tid", "WITA"};
String CLT[] = new String[] {"Chile, normaltid", "CLT",
- "Chile, sommartid", "CLST"};
+ "Chile, sommartid", "CLST",
+ "Chilensk tid", "CLT"};
String CST[] = new String[] {"Central normaltid", "CST",
- "Central sommartid", "CDT"};
+ "Central sommartid", "CDT",
+ "Central tid", "CT"};
String CTT[] = new String[] {"Kina, normaltid", "CST",
- "Kina, sommartid", "CDT"};
+ "Kina, sommartid", "CDT",
+ "Kinesisk tid", "CT"};
String CUBA[] = new String[] {"Kuba, normaltid", "CST",
- "Kuba, sommartid", "CDT"};
+ "Kuba, sommartid", "CDT",
+ "Kubansk tid", "CT"};
String DARWIN[] = new String[] {"Central standardtid (Nordterritoriet)", "CST",
- "Central sommartid (Nordterritoriet)", "CST"};
+ "Central sommartid (Nordterritoriet)", "CST",
+ "Central tid (Nordterritoriet)", "CT"};
String DUBLIN[] = new String[] {"Greenwichtid", "GMT",
- "Irland, sommartid", "IST"};
+ "Irland, sommartid", "IST",
+ "Irl\u00E4ndsk tid", "IT"};
String EAT[] = new String[] {"\u00d6stafrikansk tid", "EAT",
- "\u00d6stafrikansk sommartid", "EAST"};
+ "\u00d6stafrikansk sommartid", "EAST",
+ "\u00D6stafrikansk tid", "EAT"};
String EASTER[] = new String[] {"P\u00e5sk\u00f6n, normaltid", "EAST",
- "P\u00e5sk\u00f6n, sommartid", "EASST"};
+ "P\u00e5sk\u00f6n, sommartid", "EASST",
+ "P\u00E5sk\u00F6n-tid", "EAST"};
String EET[] = new String[] {"\u00d6steuropeisk tid", "EET",
- "\u00d6steuropeisk sommartid", "EEST"};
+ "\u00d6steuropeisk sommartid", "EEST",
+ "\u00d6steuropeisk tid", "EET"};
String EGT[] = new String[] {"\u00d6stgr\u00f6nl\u00e4ndsk tid", "EGT",
- "\u00d6stgr\u00f6nl\u00e4ndsk sommartid", "EGST"};
+ "\u00d6stgr\u00f6nl\u00e4ndsk sommartid", "EGST",
+ "\u00D6stgr\u00F6nl\u00E4ndsk tid", "EGT"};
String EST[] = new String[] {"Eastern, normaltid", "EST",
- "Eastern, sommartid", "EDT"};
+ "Eastern, sommartid", "EDT",
+ "\u00D6stlig tid", "ET"};
String EST_NSW[] = new String[] {"\u00D6stlig standardtid (New South Wales)", "EST",
- "\u00D6stlig sommartid (New South Wales)", "EST"};
+ "\u00D6stlig sommartid (New South Wales)", "EST",
+ "\u00D6stlig tid (New South Wales)", "ET"};
String FET[] = new String[] {"Kaliningradtid", "FET",
- "\u00D6steuropeisk sommartid", "FEST"};
+ "\u00D6steuropeisk sommartid", "FEST",
+ "Kaliningradtid", "FET"};
String GHMT[] = new String[] {"Ghana, normaltid", "GMT",
- "Ghana, sommartid", "GHST"};
+ "Ghana, sommartid", "GHST",
+ "Ghana, normaltid", "GMT"};
String GAMBIER[] = new String[] {"Gambier, normaltid", "GAMT",
- "Gambier, sommartid", "GAMST"};
+ "Gambier, sommartid", "GAMST",
+ "Gambier\u00F6arna-tid", "GAMT"};
String GMT[] = new String[] {"Greenwichtid", "GMT",
+ "Greenwichtid", "GMT",
"Greenwichtid", "GMT"};
String GMTBST[] = new String[] {"Greenwichtid", "GMT",
- "Brittisk sommartid", "BST"};
+ "Brittisk sommartid", "BST",
+ "Brittisk tid", "BT"};
String GST[] = new String[] {"Gulf-normaltid", "GST",
- "Gulf-sommartid", "GDT"};
+ "Gulf-sommartid", "GDT",
+ "Golfens tid", "GT"};
String HAST[] = new String[] {"Hawaii-Aleuterna, normaltid", "HAST",
- "Hawaii-Aleuterna, sommartid", "HADT"};
+ "Hawaii-Aleuterna, sommartid", "HADT",
+ "Hawaiiansk-aleutisk tid", "HAT"};
String HKT[] = new String[] {"Hong Kong, normaltid", "HKT",
- "Hong Kong, sommartid", "HKST"};
+ "Hong Kong, sommartid", "HKST",
+ "Hongkong-tid", "HKT"};
String HST[] = new String[] {"Hawaii, normaltid", "HST",
- "Hawaii, sommartid", "HDT"};
+ "Hawaii, sommartid", "HDT",
+ "Hawaiiansk tid", "HT"};
String ICT[] = new String[] {"Indokinesisk tid", "ICT",
- "Indokinesisk sommartid", "ICST"};
+ "Indokinesisk sommartid", "ICST",
+ "Indokinesisk tid", "ICT"};
String IRT[] = new String[] {"Iran, normaltid", "IRST",
- "Iran, sommartid", "IRDT"};
+ "Iran, sommartid", "IRDT",
+ "Iransk tid", "IRT"};
String ISRAEL[] = new String[] {"Israel, normaltid", "IST",
- "Israel, sommartid", "IDT"};
+ "Israel, sommartid", "IDT",
+ "Israelisk tid", "IT"};
String IST[] = new String[] {"Indien, normaltid", "IST",
- "Indien, sommartid", "IDT"};
+ "Indien, sommartid", "IDT",
+ "Indisk tid", "IT"};
String JST[] = new String[] {"Japan, normaltid", "JST",
- "Japan, sommartid", "JDT"};
+ "Japan, sommartid", "JDT",
+ "Japansk tid", "JT"};
String KST[] = new String[] {"Korea, normaltid", "KST",
- "Korea, sommartid", "KDT"};
+ "Korea, sommartid", "KDT",
+ "Koreansk tid", "KT"};
String LORD_HOWE[] = new String[] {"Lord Howe, normaltid", "LHST",
- "Lord Howe, sommartid", "LHST"};
+ "Lord Howe, sommartid", "LHST",
+ "Lord Howe-tid", "LHT"};
String MHT[] = new String[] {"Marshall\u00f6arna, normaltid", "MHT",
- "Marshall\u00f6arna, sommartid", "MHST"};
+ "Marshall\u00f6arna, sommartid", "MHST",
+ "Marshall\u00F6arna-tid", "MHT"};
String MSK[] = new String[] {"Moskva, normaltid", "MSK",
- "Moskva, sommartid", "MSD"};
+ "Moskva, sommartid", "MSD",
+ "Moskvas tid", "MT"};
String MST[] = new String[] {"Mountain, normaltid", "MST",
- "Mountain, sommartid", "MDT"};
+ "Mountain, sommartid", "MDT",
+ "Mountain-tid", "MT"};
String MYT[] = new String[] {"Malaysia, normaltid", "MYT",
- "Malaysia, sommartid", "MYST"};
+ "Malaysia, sommartid", "MYST",
+ "Malaysisk tid", "MYT"};
String NORONHA[] = new String[] {"Fernando de Noronha, normaltid", "FNT",
- "Fernando de Noronha, sommartid", "FNST"};
+ "Fernando de Noronha, sommartid", "FNST",
+ "Fernando de Noronha-tid", "FNT"};
String NOVT[] = new String[] {"Novosibirsk, normaltid", "NOVT",
- "Novosibirsk, sommartid", "NOVST"};
+ "Novosibirsk, sommartid", "NOVST",
+ "Sibirisk tid", "NOVT"};
String NPT[] = new String[] {"Nepal, normaltid", "NPT",
- "Nepal, sommartid", "NPST"};
+ "Nepal, sommartid", "NPST",
+ "Nepalesisk tid", "NPT"};
String NST[] = new String[] {"Newfoundland, normaltid", "NST",
- "Newfoundland, sommartid", "NDT"};
+ "Newfoundland, sommartid", "NDT",
+ "Newfoundl\u00E4ndsk tid", "NT"};
String NZST[] = new String[] {"Nya Zeeland, normaltid", "NZST",
- "Nya Zeeland, sommartid", "NZDT"};
+ "Nya Zeeland, sommartid", "NZDT",
+ "Nyzeel\u00E4ndsk tid", "NZT"};
String PITCAIRN[] = new String[] {"Pitcairn, normaltid", "PST",
- "Pitcairn, sommartid", "PDT"};
+ "Pitcairn, sommartid", "PDT",
+ "Pitcairn-tid", "PT"};
String PKT[] = new String[] {"Pakistan, normaltid", "PKT",
- "Pakistan, sommartid", "PKST"};
+ "Pakistan, sommartid", "PKST",
+ "Pakistansk tid", "PKT"};
String PONT[] = new String[] {"Pohnpei, normaltid", "PONT",
- "Pohnpei, sommartid", "PONST"};
+ "Pohnpei, sommartid", "PONST",
+ "Ponape-tid", "PONT"};
String PST[] = new String[] {"Stilla havet, normaltid", "PST",
- "Stilla havet, sommartid", "PDT"};
+ "Stilla havet, sommartid", "PDT",
+ "Stillahavet", "PT"};
String SAST[] = new String[] {"Sydafrika, normaltid", "SAST",
- "Sydafrika, sommartid", "SAST"};
+ "Sydafrika, sommartid", "SAST",
+ "Sydafrikansk tid", "SAT"};
String SBT[] = new String[] {"Salomon\u00f6arna, normaltid", "SBT",
- "Salomon\u00f6arna, sommartid", "SBST"};
+ "Salomon\u00f6arna, sommartid", "SBST",
+ "Salomon\u00F6arna-tid", "SBT"};
String SGT[] = new String[] {"Singapore, normaltid", "SGT",
- "Singapore, sommartid", "SGST"};
+ "Singapore, sommartid", "SGST",
+ "Singapore-tid", "SGT"};
String SLST[] = new String[] {"Greenwichtid", "GMT",
- "Sierra Leone, sommartid", "SLST"};
+ "Sierra Leone, sommartid", "SLST",
+ "Sierra Leone-tid", "SLT"};
String TASMANIA[] = new String[] {"\u00D6stlig standardtid (Tasmania)", "EST",
- "\u00D6stlig sommartid (Tasmanien)", "EST"};
+ "\u00D6stlig sommartid (Tasmanien)", "EST",
+ "\u00D6stlig tid (Tasmania)", "ET"};
String TMT[] = new String[] {"Turkmenistan, normaltid", "TMT",
- "Turkmenistan, sommartid", "TMST"};
+ "Turkmenistan, sommartid", "TMST",
+ "Turkmensk tid", "TMT"};
String ULAT[]= new String[] {"Ulaanbaatar, normaltid", "ULAT",
- "Ulaanbaatar, sommartid", "ULAST"};
+ "Ulaanbaatar, sommartid", "ULAST",
+ "Ulaanbaatar-tid", "ULAT"};
String WART[] = new String[] {"V\u00e4stargentina, normaltid", "WART",
"V\u00e4stargentina, sommartid", "WARST"};
String WAT[] = new String[] {"V\u00e4stafrikansk tid", "WAT",
- "V\u00e4stafrikansk sommartid", "WAST"};
+ "V\u00e4stafrikansk sommartid", "WAST",
+ "V\u00E4stafrikansk tid", "WAT"};
String WET[] = new String[] {"V\u00e4steuropeisk tid", "WET",
- "V\u00e4steuropeisk sommartid", "WEST"};
+ "V\u00e4steuropeisk sommartid", "WEST",
+ "V\u00E4steuropeisk tid", "WET"};
String WIT[] = new String[] {"V\u00e4stindonesisk tid", "WIB",
- "V\u00e4stindonesisk sommartid", "WIST"};
+ "V\u00e4stindonesisk sommartid", "WIST",
+ "V\u00E4stindonesisk tid", "WIB"};
String WST_AUS[] = new String[] {"Western Standard Time (Australien)", "WST",
- "V\u00E4stlig sommartid (Australien)", "WST"};
+ "V\u00E4stlig sommartid (Australien)", "WST",
+ "V\u00E4stlig tid (Australien)", "WT"};
String SAMOA[] = new String[] {"Samoa, normaltid", "SST",
- "Samoa, sommartid", "SDT"};
+ "Samoa, sommartid", "SDT",
+ "Samoansk tid", "ST"};
String WST_SAMOA[] = new String[] {"V\u00e4stsamoansk tid", "WST",
- "V\u00e4stsamoansk sommartid", "WSDT"};
+ "V\u00e4stsamoansk sommartid", "WSDT",
+ "V\u00E4stsamoansk tid", "WST"};
String ChST[] = new String[] {"Chamorro, normaltid", "ChST",
- "Chamorro, sommartid", "ChDT"};
+ "Chamorro, sommartid", "ChDT",
+ "Chamorros tid", "ChT"};
String VICTORIA[] = new String[] {"\u00D6stlig standardtid (Victoria)", "EST",
- "\u00D6stlig sommartid (Victoria)", "EST"};
+ "\u00D6stlig sommartid (Victoria)", "EST",
+ "\u00D6stlig tid (Victoria)", "ET"};
String UTC[] = new String[] {"Koordinerad universell tid", "UTC",
- "Koordinerad universell tid", "UTC"};
+ "Koordinerad universell tid", "UTC",
+ "UTC (koordinerad v\u00E4rldstid)", "UTC"};
String UZT[] = new String[] {"Uzbekistan, normaltid", "UZT",
- "Uzbekistan, sommartid", "UZST"};
+ "Uzbekistan, sommartid", "UZST",
+ "Uzbekisk tid", "UZT"};
return new Object[][] {
{"America/Los_Angeles", PST},
@@ -311,7 +387,8 @@
{"America/Argentina/Ushuaia", AGT},
{"America/Aruba", AST},
{"America/Asuncion", new String[] {"Paraguay, normaltid", "PYT",
- "Paraguay, sommartid", "PYST"}},
+ "Paraguay, sommartid", "PYST",
+ "Paraguayansk tid", "PYT"}},
{"America/Atikokan", EST},
{"America/Atka", HAST},
{"America/Bahia", BRT},
@@ -322,17 +399,20 @@
{"America/Blanc-Sablon", AST},
{"America/Boa_Vista", AMT},
{"America/Bogota", new String[] {"Colombia, normaltid", "COT",
- "Colombia, sommartid", "COST"}},
+ "Colombia, sommartid", "COST",
+ "Kolombiansk tid", "COT"}},
{"America/Boise", MST},
{"America/Buenos_Aires", AGT},
{"America/Cambridge_Bay", MST},
{"America/Campo_Grande", AMT},
{"America/Cancun", CST},
{"America/Caracas", new String[] {"Venezuela, normaltid", "VET",
- "Venezuela, sommartid", "VEST"}},
+ "Venezuela, sommartid", "VEST",
+ "Venezuelansk tid", "VET"}},
{"America/Catamarca", AGT},
{"America/Cayenne", new String[] {"Franska Guyana, normaltid", "GFT",
- "Franska Guyana, sommartid", "GFST"}},
+ "Franska Guyana, sommartid", "GFST",
+ "Franska Guyana-tid", "GFT"}},
{"America/Cayman", EST},
{"America/Chihuahua", MST},
{"America/Creston", MST},
@@ -354,16 +434,19 @@
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"V\u00e4stra Gr\u00f6nland, normaltid", "WGT",
- "V\u00e4stra Gr\u00f6nland, sommartid", "WGST"}},
+ "V\u00e4stra Gr\u00f6nland, sommartid", "WGST",
+ "V\u00E4stgr\u00F6nl\u00E4ndsk tid", "WGT"}},
{"America/Goose_Bay", AST},
{"America/Grand_Turk", EST},
{"America/Grenada", AST},
{"America/Guadeloupe", AST},
{"America/Guatemala", CST},
{"America/Guayaquil", new String[] {"Ecuador, normaltid", "ECT",
- "Ecuador, sommartid", "ECST"}},
+ "Ecuador, sommartid", "ECST",
+ "Ecuadoriansk tid", "ECT"}},
{"America/Guyana", new String[] {"Guyana, normaltid", "GYT",
- "Guyana, sommartid", "GYST"}},
+ "Guyana, sommartid", "GYST",
+ "Guyansk tid", "GYT"}},
{"America/Havana", CUBA},
{"America/Hermosillo", MST},
{"America/Indiana/Indianapolis", EST},
@@ -384,9 +467,11 @@
{"America/Knox_IN", CST},
{"America/Kralendijk", AST},
{"America/La_Paz", new String[] {"Bolivia, normaltid", "BOT",
- "Bolivia, sommartid", "BOST"}},
+ "Bolivia, sommartid", "BOST",
+ "Boliviansk tid", "BOT"}},
{"America/Lima", new String[] {"Peru, normaltid", "PET",
- "Peru, sommartid", "PEST"}},
+ "Peru, sommartid", "PEST",
+ "Peruansk tid", "PET"}},
{"America/Louisville", EST},
{"America/Lower_Princes", AST},
{"America/Maceio", BRT},
@@ -400,13 +485,16 @@
{"America/Menominee", CST},
{"America/Merida", CST},
{"America/Metlakatla", new String[] {"Metlakatla, normaltid", "MeST",
- "Metlakatla, sommartid", "MeDT"}},
+ "Metlakatla, sommartid", "MeDT",
+ "Metlakatla-tid", "MeT"}},
{"America/Mexico_City", CST},
{"America/Miquelon", new String[] {"Saint-Pierre-et-Miquelon, normaltid", "PMST",
- "Saint-Pierre-et-Miquelon, sommartid", "PMDT"}},
+ "Saint-Pierre-et-Miquelon, sommartid", "PMDT",
+ "Saint-Pierre och Miquelons tid", "PMT"}},
{"America/Moncton", AST},
{"America/Montevideo", new String[] {"Uruguay, normaltid", "UYT",
- "Uruguay, sommartid", "UYST"}},
+ "Uruguay, sommartid", "UYST",
+ "Uruguayansk tid", "UYT"}},
{"America/Monterrey", CST},
{"America/Montreal", EST},
{"America/Montserrat", AST},
@@ -421,7 +509,8 @@
{"America/Panama", EST},
{"America/Pangnirtung", EST},
{"America/Paramaribo", new String[] {"Surinam, normaltid", "SRT",
- "Surinam, sommartid", "SRST"}},
+ "Surinam, sommartid", "SRST",
+ "Surinamsk tid", "SRT"}},
{"America/Port-au-Prince", EST},
{"America/Port_of_Spain", AST},
{"America/Porto_Acre", ACT},
@@ -461,115 +550,146 @@
{"America/Yellowknife", MST},
{"Antarctica/Casey", WST_AUS},
{"Antarctica/Davis", new String[] {"Davis, normaltid", "DAVT",
- "Davis, sommartid", "DAVST"}},
+ "Davis, sommartid", "DAVST",
+ "Davis-tid", "DAVT"}},
{"Antarctica/DumontDUrville", new String[] {"Dumont-d'Urville, normaltid", "DDUT",
- "Dumont-d'Urville, sommartid", "DDUST"}},
+ "Dumont-d'Urville, sommartid", "DDUST",
+ "Dumont-d'Urville-tid", "DDUT"}},
{"Antarctica/Macquarie", new String[] {"Macquarie\u00F6n, normaltid", "MIST",
- "Macquarie\u00F6n, sommartid", "MIST"}},
+ "Macquarie\u00F6n, sommartid", "MIST",
+ "Macquarie\u00F6n, normaltid", "MIST"}},
{"Antarctica/Mawson", new String[] {"Mawson, normaltid", "MAWT",
- "Mawson, sommartid", "MAWST"}},
+ "Mawson, sommartid", "MAWST",
+ "Mawson-tid", "MAWT"}},
{"Antarctica/McMurdo", NZST},
{"Antarctica/Palmer", CLT},
{"Antarctica/Rothera", new String[] {"Rothera, normaltid", "ROTT",
- "Rothera, sommartid", "ROTST"}},
+ "Rothera, sommartid", "ROTST",
+ "Rothera-tid", "ROTT"}},
{"Antarctica/South_Pole", NZST},
{"Antarctica/Syowa", new String[] {"Syowa, normaltid", "SYOT",
- "Syowa, sommartid", "SYOST"}},
+ "Syowa, sommartid", "SYOST",
+ "Syowa-tid", "SYOT"}},
{"Antarctica/Vostok", new String[] {"Vostok, normaltid", "VOST",
- "Vostok, sommartid", "VOSST"}},
+ "Vostok, sommartid", "VOSST",
+ "Vostok-tid", "VOST"}},
{"Arctic/Longyearbyen", CET},
{"Asia/Aden", ARAST},
{"Asia/Almaty", new String[] {"Alma-Ata, normaltid", "ALMT",
- "Alma-Ata, sommartid", "ALMST"}},
+ "Alma-Ata, sommartid", "ALMST",
+ "Alma-Ata-tid", "ALMT"}},
{"Asia/Amman", ARAST},
{"Asia/Anadyr", new String[] {"Anadyr, normaltid", "ANAT",
- "Anadyr, sommartid", "ANAST"}},
+ "Anadyr, sommartid", "ANAST",
+ "Anadyr-tid", "ANAT"}},
{"Asia/Aqtau", new String[] {"Aqtau, normaltid", "AQTT",
- "Aqtau, sommartid", "AQTST"}},
+ "Aqtau, sommartid", "AQTST",
+ "Aqtau-tid", "AQTT"}},
{"Asia/Aqtobe", new String[] {"Aqtobe, normaltid", "AQTT",
- "Aqtobe, sommartid", "AQTST"}},
+ "Aqtobe, sommartid", "AQTST",
+ "Aqtobe-tid", "AQTT"}},
{"Asia/Ashgabat", TMT},
{"Asia/Ashkhabad", TMT},
{"Asia/Baghdad", ARAST},
{"Asia/Bahrain", ARAST},
{"Asia/Baku", new String[] {"Azerbajdzjan, normaltid", "AZT",
- "Azerbajdzjan, sommartid", "AZST"}},
+ "Azerbajdzjan, sommartid", "AZST",
+ "Azerbajdzjansk tid", "AZT"}},
{"Asia/Bangkok", ICT},
{"Asia/Beirut", EET},
{"Asia/Bishkek", new String[] {"Kirgizstan, normaltid", "KGT",
- "Kirgizstan, sommartid", "KGST"}},
+ "Kirgizstan, sommartid", "KGST",
+ "Kirgizisk tid", "KGT"}},
{"Asia/Brunei", new String[] {"Brunei, normaltid", "BNT",
- "Brunei, sommartid", "BNST"}},
+ "Brunei, sommartid", "BNST",
+ "Bruneisk tid", "BNT"}},
{"Asia/Calcutta", IST},
{"Asia/Choibalsan", new String[] {"Choibalsan, normaltid", "CHOT",
- "Choibalsan, sommartid", "CHOST"}},
+ "Choibalsan, sommartid", "CHOST",
+ "Choibalsan-tid", "CHOT"}},
{"Asia/Chongqing", CTT},
{"Asia/Chungking", CTT},
{"Asia/Colombo", IST},
{"Asia/Dacca", BDT},
{"Asia/Dhaka", BDT},
{"Asia/Dili", new String[] {"Timor-Leste, normaltid", "TLT",
- "Timor-Leste, sommartid", "TLST"}},
+ "Timor-Leste, sommartid", "TLST",
+ "\u00D6sttimor, normaltid", "TLT"}},
{"Asia/Damascus", EET},
{"Asia/Dubai", GST},
{"Asia/Dushanbe", new String[] {"Tadzjikistan, normaltid", "TJT",
- "Tadzjikistan, sommartid", "TJST"}},
+ "Tadzjikistan, sommartid", "TJST",
+ "Tadzjikisk tid", "TJT"}},
{"Asia/Gaza", EET},
{"Asia/Harbin", CTT},
{"Asia/Hebron", EET},
{"Asia/Ho_Chi_Minh", ICT},
{"Asia/Hong_Kong", HKT},
{"Asia/Hovd", new String[] {"Hovd, normaltid", "HOVT",
- "Hovd, sommartid", "HOVST"}},
+ "Hovd, sommartid", "HOVST",
+ "Hovd-tid", "HOVT"}},
{"Asia/Irkutsk", new String[] {"Irkutsk, normaltid", "IRKT",
- "Irkutsk, sommartid", "IRKST"}},
+ "Irkutsk, sommartid", "IRKST",
+ "Irkutsk-tid", "IRKT"}},
{"Asia/Istanbul", EET},
{"Asia/Jakarta", WIT},
{"Asia/Jayapura", new String[] {"\u00d6stindonesisk tid", "WIT",
- "\u00d6stindonesisk sommartid", "EIST"}},
+ "\u00d6stindonesisk sommartid", "EIST",
+ "\u00D6stindonesisk tid", "WIT"}},
{"Asia/Kabul", new String[] {"Afghanistan, normaltid", "AFT",
- "Afghanistan, sommartid", "AFST"}},
+ "Afghanistan, sommartid", "AFST",
+ "Afghansk tid", "AFT"}},
{"Asia/Kamchatka", new String[] {"Petropavlovsk-Kamtjatka, normaltid", "PETT",
- "Petropavlovsk-Kamtjatka, sommartid", "PETST"}},
+ "Petropavlovsk-Kamtjatka, sommartid", "PETST",
+ "Petropavlovsk-Kamtjatskij-tid", "PETT"}},
{"Asia/Karachi", PKT},
{"Asia/Kashgar", CTT},
{"Asia/Kathmandu", NPT},
{"Asia/Katmandu", NPT},
{"Asia/Khandyga", new String[] {"Khandyga, normaltid", "YAKT",
- "Khandyga, sommartid", "YAKST"}},
+ "Khandyga, sommartid", "YAKST",
+ "Khandyga, normaltid", "YAKT"}},
{"Asia/Kolkata", IST},
{"Asia/Krasnoyarsk", new String[] {"Krasnojarsk, normaltid", "KRAT",
- "Krasnojarsk, sommartid", "KRAST"}},
+ "Krasnojarsk, sommartid", "KRAST",
+ "Krasnojarsk-tid", "KRAT"}},
{"Asia/Kuala_Lumpur", MYT},
{"Asia/Kuching", MYT},
{"Asia/Kuwait", ARAST},
{"Asia/Macao", CTT},
{"Asia/Macau", CTT},
{"Asia/Magadan", new String[] {"Magadan, normaltid", "MAGT",
- "Magadan, sommartid", "MAGST"}},
+ "Magadan, sommartid", "MAGST",
+ "Magadan-tid", "MAGT"}},
{"Asia/Makassar", CIT},
{"Asia/Manila", new String[] {"Filippinerna, normaltid", "PHT",
- "Filippinerna, sommartid", "PHST"}},
+ "Filippinerna, sommartid", "PHST",
+ "Filippinsk tid", "PHT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", NOVT},
{"Asia/Novosibirsk", NOVT},
{"Asia/Oral", new String[] {"Oral, normaltid", "ORAT",
- "Oral, sommartid", "ORAST"}},
+ "Oral, sommartid", "ORAST",
+ "Oral-tid", "ORAT"}},
{"Asia/Omsk", new String[] {"Omsk, normaltid", "OMST",
- "Omsk, sommartid", "OMSST"}},
+ "Omsk, sommartid", "OMSST",
+ "Omsk-tid", "OMST"}},
{"Asia/Phnom_Penh", ICT},
{"Asia/Pontianak", WIT},
{"Asia/Pyongyang", KST},
{"Asia/Qatar", ARAST},
{"Asia/Qyzylorda", new String[] {"Qyzylorda, normaltid", "QYZT",
- "Qyzylorda, sommartid", "QYZST"}},
+ "Qyzylorda, sommartid", "QYZST",
+ "Qyzylorda-tid", "QYZT"}},
{"Asia/Rangoon", new String[] {"Myanmar, normaltid", "MMT",
- "Myanmar, sommartid", "MMST"}},
+ "Myanmar, sommartid", "MMST",
+ "Myanmar-tid", "MMT"}},
{"Asia/Riyadh", ARAST},
{"Asia/Saigon", ICT},
{"Asia/Sakhalin", new String[] {"Sakhalin, normaltid", "SAKT",
- "Sakhalin, sommartid", "SAKST"}},
+ "Sakhalin, sommartid", "SAKST",
+ "Sakhalin-tid", "SAKT"}},
{"Asia/Samarkand", UZT},
{"Asia/Seoul", KST},
{"Asia/Singapore", SGT},
@@ -577,7 +697,8 @@
{"Asia/Tel_Aviv", ISRAEL},
{"Asia/Tashkent", UZT},
{"Asia/Tbilisi", new String[] {"Georgien, normaltid", "GET",
- "Georgien, sommartid", "GEST"}},
+ "Georgien, sommartid", "GEST",
+ "Georgisk tid", "GET"}},
{"Asia/Tehran", IRT},
{"Asia/Thimbu", BTT},
{"Asia/Thimphu", BTT},
@@ -586,31 +707,39 @@
{"Asia/Ulan_Bator", ULAT},
{"Asia/Urumqi", CTT},
{"Asia/Ust-Nera", new String[] {"Ust-Nera, normaltid", "VLAT",
- "Ust-Nera, sommartid", "VLAST"}},
+ "Ust-Nera, sommartid", "VLAST",
+ "Ust-Nera, normaltid", "VLAT"}},
{"Asia/Vientiane", ICT},
{"Asia/Vladivostok", new String[] {"Vladivostok, normaltid", "VLAT",
- "Vladivostok, sommartid", "VLAST"}},
+ "Vladivostok, sommartid", "VLAST",
+ "Vladivostok-tid", "VLAT"}},
{"Asia/Yakutsk", new String[] {"Jakutsk, normaltid", "YAKT",
- "Jakutsk, sommartid", "YAKST"}},
+ "Jakutsk, sommartid", "YAKST",
+ "Jakutsk-tid", "YAKT"}},
{"Asia/Yekaterinburg", new String[] {"Jekaterinburg, normaltid", "YEKT",
- "Jekaterinburg, sommartid", "YEKST"}},
+ "Jekaterinburg, sommartid", "YEKST",
+ "Jekaterinburg-tid", "YEKT"}},
{"Asia/Yerevan", ARMT},
{"Atlantic/Azores", new String[] {"Azorerna, normaltid", "AZOT",
- "Azorerna, sommartid", "AZOST"}},
+ "Azorerna, sommartid", "AZOST",
+ "Azorerna-tid", "AZOT"}},
{"Atlantic/Bermuda", AST},
{"Atlantic/Canary", WET},
{"Atlantic/Cape_Verde", new String[] {"Kap Verde, normaltid", "CVT",
- "Kap Verde, sommartid", "CVST"}},
+ "Kap Verde, sommartid", "CVST",
+ "Kap Verde-tid", "CVT"}},
{"Atlantic/Faeroe", WET},
{"Atlantic/Faroe", WET},
{"Atlantic/Jan_Mayen", CET},
{"Atlantic/Madeira", WET},
{"Atlantic/Reykjavik", GMT},
{"Atlantic/South_Georgia", new String[] {"Sydgeorgien, normaltid", "GST",
- "Sydgeorgien, sommartid", "GDT"}},
+ "Sydgeorgien, sommartid", "GDT",
+ "Sydgeorgisk tid", "GT"}},
{"Atlantic/St_Helena", GMT},
{"Atlantic/Stanley", new String[] {"Falklands\u00f6arna, normaltid", "FKT",
- "Falklands\u00f6arna, sommartid", "FKST"}},
+ "Falklands\u00f6arna, sommartid", "FKST",
+ "Falklands\u00F6arna-tid", "FKT"}},
{"Australia/ACT", EST_NSW},
{"Australia/Adelaide", ADELAIDE},
{"Australia/Brisbane", BRISBANE},
@@ -619,7 +748,8 @@
{"Australia/Currie", EST_NSW},
{"Australia/Darwin", DARWIN},
{"Australia/Eucla", new String[] {"Central v\u00E4stlig normaltid (Australien)", "CWST",
- "Central v\u00E4stlig sommartid (Australien)", "CWST"}},
+ "Central v\u00E4stlig sommartid (Australien)", "CWST",
+ "Central v\u00E4stlig tid (Australien)", "CWT"}},
{"Australia/Hobart", TASMANIA},
{"Australia/LHI", LORD_HOWE},
{"Australia/Lindeman", BRISBANE},
@@ -704,7 +834,8 @@
{"Europe/Riga", EET},
{"Europe/Rome", CET},
{"Europe/Samara", new String[] {"Samara, normaltid", "SAMT",
- "Samara, sommartid", "SAMST"}},
+ "Samara, sommartid", "SAMST",
+ "Samara-tid", "SAMT"}},
{"Europe/San_Marino", CET},
{"Europe/Sarajevo", CET},
{"Europe/Simferopol", EET},
@@ -720,7 +851,8 @@
{"Europe/Vienna", CET},
{"Europe/Vilnius", EET},
{"Europe/Volgograd", new String[] {"Volgograd-tid", "VOLT",
- "Volgograd, sommartid", "VOLST"}},
+ "Volgograd, sommartid", "VOLST",
+ "Volgograd, normaltid", "VOLT"}},
{"Europe/Warsaw", CET},
{"Europe/Zagreb", CET},
{"Europe/Zaporozhye", EET},
@@ -734,30 +866,39 @@
{"IST", IST},
{"Indian/Antananarivo", EAT},
{"Indian/Chagos", new String[] {"Indiska oceanen, normaltid", "IOT",
- "Indiska oceanen, sommartid", "IOST"}},
+ "Indiska oceanen, sommartid", "IOST",
+ "Indiska Ocean\u00F6arna-tid", "IOT"}},
{"Indian/Christmas", new String[] {"Jul\u00f6n, normaltid", "CXT",
- "Jul\u00f6n, sommartid", "CXST"}},
+ "Jul\u00f6n, sommartid", "CXST",
+ "Jul\u00F6n-tid", "CIT"}},
{"Indian/Cocos", new String[] {"Cocos-Keeling\u00f6arna, normaltid", "CCT",
- "Cocos-Keeling\u00f6arna, sommartid", "CCST"}},
+ "Cocos-Keeling\u00f6arna, sommartid", "CCST",
+ "Kokos\u00F6arna-tid", "CCT"}},
{"Indian/Comoro", EAT},
{"Indian/Kerguelen", new String[] {"Franska s\u00f6dra och antarktiska omr\u00e5dena, normaltid", "TFT",
- "Franska s\u00f6dra och antarktiska omr\u00e5dena, sommartid", "TFST"}},
+ "Franska s\u00f6dra och antarktiska omr\u00e5dena, sommartid", "TFST",
+ "Franska s\u00F6dra och antarktiska \u00F6arna-tid", "TFT"}},
{"Indian/Mahe", new String[] {"Seychellerna, normaltid", "SCT",
- "Seychellerna, sommartid", "SCST"}},
+ "Seychellerna, sommartid", "SCST",
+ "Seychellisk tid", "SCT"}},
{"Indian/Maldives", new String[] {"Maldiverna, normaltid", "MVT",
- "Maldiverna, sommartid", "MVST"}},
+ "Maldiverna, sommartid", "MVST",
+ "Maldivisk tid", "MVT"}},
{"Indian/Mauritius", new String[] {"Mauritius, normaltid", "MUT",
- "Mauritius, sommartid", "MUST"}},
+ "Mauritius, sommartid", "MUST",
+ "Mauritiansk tid", "MUT"}},
{"Indian/Mayotte", EAT},
{"Indian/Reunion", new String[] {"Reunion, normaltid", "RET",
- "Reunion, sommartid", "REST"}},
+ "Reunion, sommartid", "REST",
+ "Reunion-tid", "RET"}},
{"Israel", ISRAEL},
{"Jamaica", EST},
{"Japan", JST},
{"Kwajalein", MHT},
{"Libya", EET},
{"MET", new String[] {"Mellaneuropeisk tid", "MET",
- "Mellaneuropeisk sommartid", "MEST"}},
+ "Mellaneuropeisk sommartid", "MEST",
+ "MET", "MET"}},
{"Mexico/BajaNorte", PST},
{"Mexico/BajaSur", MST},
{"Mexico/General", CST},
@@ -777,61 +918,82 @@
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
{"Pacific/Efate", new String[] {"Vanuatu, normaltid", "VUT",
- "Vanuatu, sommartid", "VUST"}},
+ "Vanuatu, sommartid", "VUST",
+ "Vanuatu-tid", "VUT"}},
{"Pacific/Enderbury", new String[] {"Phoenix-\u00f6arna, normaltid", "PHOT",
- "Phoenix-\u00f6arna, sommartid", "PHOST"}},
+ "Phoenix-\u00f6arna, sommartid", "PHOST",
+ "Phoenix\u00F6arna-tid", "PHOT"}},
{"Pacific/Fakaofo", new String[] {"Tokelau, normaltid", "TKT",
- "Tokelau, sommartid", "TKST"}},
+ "Tokelau, sommartid", "TKST",
+ "Tokelau-tid", "TKT"}},
{"Pacific/Fiji", new String[] {"Fiji, normaltid", "FJT",
- "Fiji, sommartid", "FJST"}},
+ "Fiji, sommartid", "FJST",
+ "Fijiansk tid", "FJT"}},
{"Pacific/Funafuti", new String[] {"Tuvalu, normaltid", "TVT",
- "Tuvalu, sommartid", "TVST"}},
+ "Tuvalu, sommartid", "TVST",
+ "Tuvalu-tid", "TVT"}},
{"Pacific/Galapagos", new String[] {"Galapagos, normaltid", "GALT",
- "Galapagos, sommartid", "GALST"}},
+ "Galapagos, sommartid", "GALST",
+ "Galapagos-tid", "GALT"}},
{"Pacific/Gambier", GAMBIER},
{"Pacific/Guadalcanal", SBT},
{"Pacific/Guam", ChST},
{"Pacific/Johnston", HST},
{"Pacific/Kiritimati", new String[] {"Line-\u00f6arna, normaltid", "LINT",
- "Line-\u00f6arna, sommartid", "LINST"}},
+ "Line-\u00f6arna, sommartid", "LINST",
+ "Line Islands-tid", "LINT"}},
{"Pacific/Kosrae", new String[] {"Kosrae, normaltid", "KOST",
- "Kosrae, sommartid", "KOSST"}},
+ "Kosrae, sommartid", "KOSST",
+ "Kosrae-tid", "KOST"}},
{"Pacific/Kwajalein", MHT},
{"Pacific/Majuro", MHT},
{"Pacific/Marquesas", new String[] {"Marquesas, normaltid", "MART",
- "Marquesas, sommartid", "MARST"}},
+ "Marquesas, sommartid", "MARST",
+ "Marquesas\u00F6arna-tid", "MART"}},
{"Pacific/Midway", SAMOA},
{"Pacific/Nauru", new String[] {"Nauru, normaltid", "NRT",
- "Nauru, sommartid", "NRST"}},
+ "Nauru, sommartid", "NRST",
+ "Nauruansk tid", "NRT"}},
{"Pacific/Niue", new String[] {"Niue, normaltid", "NUT",
- "Niue, sommartid", "NUST"}},
+ "Niue, sommartid", "NUST",
+ "Niue-tid", "NUT"}},
{"Pacific/Norfolk", new String[] {"Norfolk, normaltid", "NFT",
- "Norfolk, sommartid", "NFST"}},
+ "Norfolk, sommartid", "NFST",
+ "Norfolk-tid", "NFT"}},
{"Pacific/Noumea", new String[] {"Nya Caledonien, normaltid", "NCT",
- "Nya Caledonien, sommartid", "NCST"}},
+ "Nya Caledonien, sommartid", "NCST",
+ "Nya Kaledonien-tid", "NCT"}},
{"Pacific/Pago_Pago", SAMOA},
{"Pacific/Palau", new String[] {"Palau, normaltid", "PWT",
- "Palau, sommartid", "PWST"}},
+ "Palau, sommartid", "PWST",
+ "Palau-tid", "PWT"}},
{"Pacific/Pitcairn", PITCAIRN},
{"Pacific/Pohnpei", PONT},
{"Pacific/Ponape", PONT},
{"Pacific/Port_Moresby", new String[] {"Papua Nya Guinea, normaltid", "PGT",
- "Papua Nya Guinea, sommartid", "PGST"}},
+ "Papua Nya Guinea, sommartid", "PGST",
+ "Papua Nya Guinea-tid", "PGT"}},
{"Pacific/Rarotonga", new String[] {"Cook\u00f6arna, normaltid", "CKT",
- "Cook\u00f6arna, sommartid", "CKHST"}},
+ "Cook\u00f6arna, sommartid", "CKHST",
+ "Cook\u00F6arna-tid", "CKT"}},
{"Pacific/Saipan", ChST},
{"Pacific/Samoa", SAMOA},
{"Pacific/Tahiti", new String[] {"Tahiti, normaltid", "TAHT",
- "Tahiti, sommartid", "TAHST"}},
+ "Tahiti, sommartid", "TAHST",
+ "Tahiti-tid", "TAHT"}},
{"Pacific/Tarawa", new String[] {"Gilbert\u00f6arna, normaltid", "GILT",
- "Gilbert\u00f6arna, sommartid", "GILST"}},
+ "Gilbert\u00f6arna, sommartid", "GILST",
+ "Gilbert\u00F6arna-tid", "GILT"}},
{"Pacific/Tongatapu", new String[] {"Tonga, normaltid", "TOT",
- "Tonga, sommartid", "TOST"}},
+ "Tonga, sommartid", "TOST",
+ "Tonga-tid", "TOT"}},
{"Pacific/Truk", CHUT},
{"Pacific/Wake", new String[] {"Wake, normaltid", "WAKT",
- "Wake, sommartid", "WAKST"}},
+ "Wake, sommartid", "WAKST",
+ "Wake-tid", "WAKT"}},
{"Pacific/Wallis", new String[] {"Wallis & Futuna, normaltid", "WFT",
- "Wallis & Futuna, sommartid", "WFST"}},
+ "Wallis & Futuna, sommartid", "WFST",
+ "Wallis- och Futuna\u00F6arna-tid", "WFT"}},
{"Pacific/Yap", CHUT},
{"Poland", CET},
{"PRC", CTT},
--- a/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_CN.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_CN.java Wed Jul 05 19:27:58 2017 +0200
@@ -46,159 +46,235 @@
protected final Object[][] getContents() {
String ACT[] = new String[] {"Acre \u65f6\u95f4", "ACT",
- "Acre \u590f\u4ee4\u65f6", "ACST"};
+ "Acre \u590f\u4ee4\u65f6", "ACST",
+ "Acre \u65f6\u95f4", "ACT"};
String ADELAIDE[] = new String[] {"\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A)", "CST",
- "\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5357\u6FB3\u5927\u5229\u4E9A)", "CST"};
+ "\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5357\u6FB3\u5927\u5229\u4E9A)", "CST",
+ "\u4E2D\u90E8\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A)", "CT"};
String AGT[] = new String[] {"\u963f\u6839\u5ef7\u65f6\u95f4", "ART",
- "\u963f\u6839\u5ef7\u590f\u4ee4\u65f6", "ARST"};
+ "\u963f\u6839\u5ef7\u590f\u4ee4\u65f6", "ARST",
+ "\u963F\u6839\u5EF7\u65F6\u95F4", "ART"};
String AKST[] = new String[] {"\u963f\u62c9\u65af\u52a0\u6807\u51c6\u65f6\u95f4", "AKST",
- "\u963f\u62c9\u65af\u52a0\u590f\u4ee4\u65f6", "AKDT"};
+ "\u963f\u62c9\u65af\u52a0\u590f\u4ee4\u65f6", "AKDT",
+ "\u963F\u62C9\u65AF\u52A0\u65F6\u95F4", "AKT"};
String AMT[] = new String[] {"\u4e9a\u9a6c\u900a\u65f6\u95f4", "AMT",
- "\u4e9a\u9a6c\u900a\u590f\u4ee4\u65f6", "AMST"};
+ "\u4e9a\u9a6c\u900a\u590f\u4ee4\u65f6", "AMST",
+ "\u4E9A\u9A6C\u900A\u65F6\u95F4", "AMT"};
String ARAST[] = new String[] {"\u963f\u62c9\u4f2f\u6807\u51c6\u65f6\u95f4", "AST",
- "\u963f\u62c9\u4f2f\u590f\u4ee4\u65f6", "ADT"};
+ "\u963f\u62c9\u4f2f\u590f\u4ee4\u65f6", "ADT",
+ "\u963F\u62C9\u4F2F\u534A\u5C9B\u65F6\u95F4", "AT"};
String ARMT[] = new String[] {"\u4e9a\u7f8e\u5c3c\u4e9a\u65f6\u95f4", "AMT",
- "\u4e9a\u7f8e\u5c3c\u4e9a\u590f\u4ee4\u65f6", "AMST"};
+ "\u4e9a\u7f8e\u5c3c\u4e9a\u590f\u4ee4\u65f6", "AMST",
+ "\u4E9A\u7F8E\u5C3C\u4E9A\u65F6\u95F4", "AMT"};
String AST[] = new String[] {"\u5927\u897f\u6d0b\u6807\u51c6\u65f6\u95f4", "AST",
- "\u5927\u897f\u6d0b\u590f\u4ee4\u65f6", "ADT"};
+ "\u5927\u897f\u6d0b\u590f\u4ee4\u65f6", "ADT",
+ "\u5927\u897F\u6D0B\u65F6\u95F4", "AT"};
String BDT[] = new String[] {"\u5b5f\u52a0\u62c9\u65f6\u95f4", "BDT",
- "\u5b5f\u52a0\u62c9\u590f\u4ee4\u65f6", "BDST"};
+ "\u5b5f\u52a0\u62c9\u590f\u4ee4\u65f6", "BDST",
+ "\u5B5F\u52A0\u62C9\u65F6\u95F4", "BDT"};
String BRISBANE[] = new String[] {"\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u6606\u58EB\u5170)", "EST",
- "\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u6606\u58EB\u5170)", "EST"};
+ "\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u6606\u58EB\u5170)", "EST",
+ "\u4E1C\u90E8\u65F6\u95F4 (\u6606\u58EB\u5170)", "ET"};
String BROKEN_HILL[] = new String[] {"\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF)", "CST",
- "\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF)", "CST"};
+ "\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF)", "CST",
+ "\u4E2D\u90E8\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF)", "CT"};
String BRT[] = new String[] {"\u5df4\u897f\u5229\u4e9a\u65f6\u95f4", "BRT",
- "\u5df4\u897f\u5229\u4e9a\u590f\u4ee4\u65f6", "BRST"};
+ "\u5df4\u897f\u5229\u4e9a\u590f\u4ee4\u65f6", "BRST",
+ "\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4", "BRT"};
String BTT[] = new String[] {"\u4e0d\u4e39\u65f6\u95f4", "BTT",
- "\u4e0d\u4e39\u590f\u4ee4\u65f6", "BTST"};
+ "\u4e0d\u4e39\u590f\u4ee4\u65f6", "BTST",
+ "\u4E0D\u4E39\u65F6\u95F4", "BTT"};
String CAT[] = new String[] {"\u4e2d\u975e\u65f6\u95f4", "CAT",
- "\u4e2d\u975e\u590f\u4ee4\u65f6", "CAST"};
+ "\u4e2d\u975e\u590f\u4ee4\u65f6", "CAST",
+ "\u4E2D\u975E\u65F6\u95F4", "CAT"};
String CET[] = new String[] {"\u4e2d\u6b27\u65f6\u95f4", "CET",
- "\u4e2d\u6b27\u590f\u4ee4\u65f6", "CEST"};
+ "\u4e2d\u6b27\u590f\u4ee4\u65f6", "CEST",
+ "\u4E2D\u6B27\u65F6\u95F4", "CET"};
String CHAST[] = new String[] {"\u67e5\u8428\u59c6\u6807\u51c6\u65f6\u95f4", "CHAST",
- "\u67e5\u8428\u59c6\u590f\u4ee4\u65f6", "CHADT"};
+ "\u67e5\u8428\u59c6\u590f\u4ee4\u65f6", "CHADT",
+ "\u67E5\u5854\u59C6\u65F6\u95F4", "CHAT"};
String CHUT[] = new String[] {"\u4E18\u514B\u65F6\u95F4", "CHUT",
- "\u4E18\u514B\u590F\u4EE4\u65F6", "CHUST"};
+ "\u4E18\u514B\u590F\u4EE4\u65F6", "CHUST",
+ "\u4E18\u514B\u65F6\u95F4", "CHUT"};
String CIT[] = new String[] {"\u4e2d\u90e8\u5370\u5ea6\u5c3c\u897f\u4e9a\u65f6\u95f4", "WITA",
- "\u4e2d\u90e8\u5370\u5ea6\u5c3c\u897f\u4e9a\u590f\u4ee4\u65f6", "CIST"};
+ "\u4e2d\u90e8\u5370\u5ea6\u5c3c\u897f\u4e9a\u590f\u4ee4\u65f6", "CIST",
+ "\u4E2D\u90E8\u5370\u5EA6\u5C3C\u897F\u4E9A\u65F6\u95F4", "WITA"};
String CLT[] = new String[] {"\u667a\u5229\u65f6\u95f4", "CLT",
- "\u667a\u5229\u590f\u4ee4\u65f6", "CLST"};
+ "\u667a\u5229\u590f\u4ee4\u65f6", "CLST",
+ "\u667A\u5229\u65F6\u95F4", "CLT"};
String CST[] = new String[] {"\u4e2d\u592e\u6807\u51c6\u65f6\u95f4", "CST",
- "\u4e2d\u592e\u590f\u4ee4\u65f6", "CDT"};
+ "\u4e2d\u592e\u590f\u4ee4\u65f6", "CDT",
+ "\u4E2D\u90E8\u65F6\u95F4", "CT"};
String CTT[] = new String[] {"\u4e2d\u56fd\u6807\u51c6\u65f6\u95f4", "CST",
- "\u4e2d\u56fd\u590f\u4ee4\u65f6", "CDT"};
+ "\u4e2d\u56fd\u590f\u4ee4\u65f6", "CDT",
+ "\u4E2D\u56FD\u65F6\u95F4", "CT"};
String CUBA[] = new String[] {"\u53e4\u5df4\u6807\u51c6\u65f6\u95f4", "CST",
- "\u53e4\u5df4\u590f\u4ee4\u65f6", "CDT"};
+ "\u53e4\u5df4\u590f\u4ee4\u65f6", "CDT",
+ "\u53E4\u5DF4\u65F6\u95F4", "CT"};
String DARWIN[] = new String[] {"\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5317\u9886\u5730)", "CST",
- "\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5317\u9886\u5730)", "CST"};
+ "\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5317\u9886\u5730)", "CST",
+ "\u4E2D\u90E8\u65F6\u95F4 (\u5317\u90E8\u5730\u533A)", "CT"};
String DUBLIN[] = new String[] {"\u683c\u6797\u5a01\u6cbb\u65f6\u95f4", "GMT",
- "\u7231\u5c14\u5170\u590f\u4ee4\u65f6", "IST"};
+ "\u7231\u5c14\u5170\u590f\u4ee4\u65f6", "IST",
+ "\u7231\u5C14\u5170\u65F6\u95F4", "IT"};
String EAT[] = new String[] {"\u4e1c\u975e\u65f6\u95f4", "EAT",
- "\u4e1c\u975e\u590f\u4ee4\u65f6", "EAST"};
+ "\u4e1c\u975e\u590f\u4ee4\u65f6", "EAST",
+ "\u4E1C\u975E\u65F6\u95F4", "EAT"};
String EASTER[] = new String[] {"\u590d\u6d3b\u5c9b\u65f6\u95f4", "EAST",
- "\u590d\u6d3b\u5c9b\u590f\u4ee4\u65f6", "EASST"};
+ "\u590d\u6d3b\u5c9b\u590f\u4ee4\u65f6", "EASST",
+ "\u590D\u6D3B\u5C9B\u65F6\u95F4", "EAST"};
String EET[] = new String[] {"\u4e1c\u6b27\u65f6\u95f4", "EET",
- "\u4e1c\u6b27\u590f\u4ee4\u65f6", "EEST"};
+ "\u4e1c\u6b27\u590f\u4ee4\u65f6", "EEST",
+ "\u4e1c\u6b27\u65f6\u95f4", "EET"};
String EGT[] = new String[] {"\u4e1c\u683c\u6797\u5c9b\u65f6\u95f4", "EGT",
- "\u4e1c\u683c\u6797\u5c9b\u590f\u4ee4\u65f6", "EGST"};
+ "\u4e1c\u683c\u6797\u5c9b\u590f\u4ee4\u65f6", "EGST",
+ "\u4E1C\u683C\u6797\u5C9B\u65F6\u95F4", "EGT"};
String EST[] = new String[] {"\u4e1c\u90e8\u6807\u51c6\u65f6\u95f4", "EST",
- "\u4e1c\u90e8\u590f\u4ee4\u65f6", "EDT"};
+ "\u4e1c\u90e8\u590f\u4ee4\u65f6", "EDT",
+ "\u4E1C\u90E8\u65F6\u95F4", "ET"};
String EST_NSW[] = new String[] {"\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)", "EST",
- "\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u65B0\u5357\u5A01\u5C14\u65AF)", "EST"};
+ "\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u65B0\u5357\u5A01\u5C14\u65AF)", "EST",
+ "\u4E1C\u90E8\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)", "ET"};
String FET[] = new String[] {"\u8FDC\u4E1C\u6B27\u65F6\u95F4", "FET",
- "\u8FDC\u4E1C\u6B27\u590F\u4EE4\u65F6", "FEST"};
+ "\u8FDC\u4E1C\u6B27\u590F\u4EE4\u65F6", "FEST",
+ "\u8FDC\u4E1C\u6B27\u65F6\u95F4", "FET"};
String GHMT[] = new String[] {"\u52a0\u7eb3\u65f6\u95f4", "GMT",
- "\u52a0\u7eb3\u590f\u4ee4\u65f6", "GHST"};
+ "\u52a0\u7eb3\u590f\u4ee4\u65f6", "GHST",
+ "\u52A0\u7EB3\u65F6\u95F4", "GMT"};
String GAMBIER[] = new String[] {"\u5188\u6bd4\u4e9a\u65f6\u95f4", "GAMT",
- "\u5188\u6bd4\u4e9a\u590f\u4ee4\u65f6", "GAMST"};
+ "\u5188\u6bd4\u4e9a\u590f\u4ee4\u65f6", "GAMST",
+ "\u5188\u6BD4\u4E9A\u65F6\u95F4", "GAMT"};
String GMT[] = new String[] {"\u683c\u6797\u5a01\u6cbb\u65f6\u95f4", "GMT",
- "\u683c\u6797\u5a01\u6cbb\u65f6\u95f4", "GMT"};
+ "\u683c\u6797\u5a01\u6cbb\u65f6\u95f4", "GMT",
+ "\u683C\u6797\u5A01\u6CBB\u65F6\u95F4", "GMT"};
String GMTBST[] = new String[] {"\u683c\u6797\u5a01\u6cbb\u65f6\u95f4", "GMT",
- "\u82f1\u56fd\u590f\u4ee4\u65f6", "BST"};
+ "\u82f1\u56fd\u590f\u4ee4\u65f6", "BST",
+ "\u82F1\u56FD\u65F6\u95F4", "BT"};
String GST[] = new String[] {"\u6ce2\u65af\u6e7e\u6807\u51c6\u65f6\u95f4", "GST",
- "\u6ce2\u65af\u6e7e\u590f\u4ee4\u65f6", "GDT"};
+ "\u6ce2\u65af\u6e7e\u590f\u4ee4\u65f6", "GDT",
+ "\u6D77\u6E7E\u65F6\u95F4", "GT"};
String HAST[] = new String[] {"\u590f\u5a01\u5937-\u963f\u7559\u7533\u7fa4\u5c9b\u6807\u51c6\u65f6\u95f4", "HAST",
- "\u590f\u5a01\u5937-\u963f\u7559\u7533\u7fa4\u5c9b\u590f\u4ee4\u65f6", "HADT"};
+ "\u590f\u5a01\u5937-\u963f\u7559\u7533\u7fa4\u5c9b\u590f\u4ee4\u65f6", "HADT",
+ "\u590F\u5A01\u5937-\u963F\u7559\u7533\u65F6\u95F4", "HAT"};
String HKT[] = new String[] {"\u9999\u6e2f\u65f6\u95f4", "HKT",
- "\u9999\u6e2f\u590f\u4ee4\u65f6", "HKST"};
+ "\u9999\u6e2f\u590f\u4ee4\u65f6", "HKST",
+ "\u9999\u6E2F\u65F6\u95F4", "HKT"};
String HST[] = new String[] {"\u590f\u5a01\u5937\u6807\u51c6\u65f6\u95f4", "HST",
- "\u590f\u5a01\u5937\u590f\u4ee4\u65f6", "HDT"};
+ "\u590f\u5a01\u5937\u590f\u4ee4\u65f6", "HDT",
+ "\u590F\u5A01\u5937\u65F6\u95F4", "HT"};
String ICT[] = new String[] {"\u5370\u5ea6\u652f\u90a3\u65f6\u95f4", "ICT",
- "\u5370\u5ea6\u652f\u90a3\u590f\u4ee4\u65f6", "ICST"};
+ "\u5370\u5ea6\u652f\u90a3\u590f\u4ee4\u65f6", "ICST",
+ "\u5370\u5EA6\u652F\u90A3\u65F6\u95F4", "ICT"};
String IRT[] = new String[] {"\u4f0a\u6717\u6807\u51c6\u65f6\u95f4", "IRST",
- "\u4f0a\u6717\u590f\u4ee4\u65f6", "IRDT"};
+ "\u4f0a\u6717\u590f\u4ee4\u65f6", "IRDT",
+ "\u4F0A\u6717\u65F6\u95F4", "IRT"};
String ISRAEL[] = new String[] {"\u4ee5\u8272\u5217\u6807\u51c6\u65f6\u95f4", "IST",
- "\u4ee5\u8272\u5217\u590f\u4ee4\u65f6", "IDT"};
+ "\u4ee5\u8272\u5217\u590f\u4ee4\u65f6", "IDT",
+ "\u4EE5\u8272\u5217\u65F6\u95F4", "IT"};
String IST[] = new String[] {"\u5370\u5ea6\u6807\u51c6\u65f6\u95f4", "IST",
- "\u5370\u5ea6\u590f\u4ee4\u65f6", "IDT"};
+ "\u5370\u5ea6\u590f\u4ee4\u65f6", "IDT",
+ "\u5370\u5EA6\u65F6\u95F4", "IT"};
String JST[] = new String[] {"\u65e5\u672c\u6807\u51c6\u65f6\u95f4", "JST",
- "\u65e5\u672c\u590f\u4ee4\u65f6", "JDT"};
+ "\u65e5\u672c\u590f\u4ee4\u65f6", "JDT",
+ "\u65E5\u672C\u65F6\u95F4", "JT"};
String KST[] = new String[] {"\u97e9\u56fd\u6807\u51c6\u65f6\u95f4", "KST",
- "\u97e9\u56fd\u590f\u4ee4\u65f6", "KDT"};
+ "\u97e9\u56fd\u590f\u4ee4\u65f6", "KDT",
+ "\u97E9\u56FD\u65F6\u95F4", "KT"};
String LORD_HOWE[] = new String[] {"\u8c6a\u516c\u6807\u51c6\u65f6\u95f4", "LHST",
- "\u8c6a\u516c\u590f\u4ee4\u65f6", "LHST"};
+ "\u8c6a\u516c\u590f\u4ee4\u65f6", "LHST",
+ "\u8C6A\u516C\u65F6\u95F4", "LHT"};
String MHT[] = new String[] {"\u9a6c\u7ecd\u5c14\u7fa4\u5c9b\u65f6\u95f4", "MHT",
- "\u9a6c\u7ecd\u5c14\u7fa4\u5c9b\u590f\u4ee4\u65f6", "MHST"};
+ "\u9a6c\u7ecd\u5c14\u7fa4\u5c9b\u590f\u4ee4\u65f6", "MHST",
+ "\u9A6C\u7ECD\u5C14\u7FA4\u5C9B\u65F6\u95F4", "MHT"};
String MSK[] = new String[] {"\u83ab\u65af\u79d1\u6807\u51c6\u65f6\u95f4", "MSK",
- "\u83ab\u65af\u79d1\u590f\u4ee4\u65f6", "MSD"};
+ "\u83ab\u65af\u79d1\u590f\u4ee4\u65f6", "MSD",
+ "\u83AB\u65AF\u79D1\u65F6\u95F4", "MT"};
String MST[] = new String[] {"Mountain \u6807\u51c6\u65f6\u95f4", "MST",
- "Mountain \u590f\u4ee4\u65f6", "MDT"};
+ "Mountain \u590f\u4ee4\u65f6", "MDT",
+ "\u5C71\u5730\u65F6\u95F4", "MT"};
String MYT[] = new String[] {"\u9a6c\u6765\u897f\u4e9a\u65f6\u95f4", "MYT",
- "\u9a6c\u6765\u897f\u4e9a\u590f\u4ee4\u65f6", "MYST"};
+ "\u9a6c\u6765\u897f\u4e9a\u590f\u4ee4\u65f6", "MYST",
+ "\u9A6C\u6765\u897F\u4E9A\u65F6\u95F4", "MYT"};
String NORONHA[] = new String[] {"\u8d39\u5c14\u5357\u591a\u5fb7\u8bfa\u7f57\u5c3c\u4e9a\u65f6\u95f4", "FNT",
- "\u8d39\u5c14\u5357\u591a\u5fb7\u8bfa\u7f57\u5c3c\u4e9a\u590f\u4ee4\u65f6", "FNST"};
+ "\u8d39\u5c14\u5357\u591a\u5fb7\u8bfa\u7f57\u5c3c\u4e9a\u590f\u4ee4\u65f6", "FNST",
+ "\u8D39\u5C14\u5357\u591A\u5FB7\u8BFA\u7F57\u5C3C\u4E9A\u65F6\u95F4", "FNT"};
String NOVT[] = new String[] {"Novosibirsk \u65f6\u95f4", "NOVT",
- "Novosibirsk \u590f\u4ee4\u65f6", "NOVST"};
+ "Novosibirsk \u590f\u4ee4\u65f6", "NOVST",
+ "Novosibirsk \u65F6\u95F4", "NOVT"};
String NPT[] = new String[] {"\u5c3c\u6cca\u5c14\u65f6\u95f4", "NPT",
- "\u5c3c\u6cca\u5c14\u590f\u4ee4\u65f6", "NPST"};
+ "\u5c3c\u6cca\u5c14\u590f\u4ee4\u65f6", "NPST",
+ "\u5C3C\u6CCA\u5C14\u65F6\u95F4", "NPT"};
String NST[] = new String[] {"\u7ebd\u82ac\u5170\u6807\u51c6\u65f6\u95f4", "NST",
- "\u7ebd\u82ac\u5170\u590f\u4ee4\u65f6", "NDT"};
+ "\u7ebd\u82ac\u5170\u590f\u4ee4\u65f6", "NDT",
+ "\u7EBD\u82AC\u5170\u65F6\u95F4", "NT"};
String NZST[] = new String[] {"\u65b0\u897f\u5170\u6807\u51c6\u65f6\u95f4", "NZST",
- "\u65b0\u897f\u5170\u590f\u4ee4\u65f6", "NZDT"};
+ "\u65b0\u897f\u5170\u590f\u4ee4\u65f6", "NZDT",
+ "\u65B0\u897F\u5170\u65F6\u95F4", "NZT"};
String PITCAIRN[] = new String[] {"\u76ae\u7279\u5eb7\u5c9b\u6807\u51c6\u65f6\u95f4", "PST",
- "\u76ae\u7279\u5eb7\u5c9b\u590f\u4ee4\u65f6", "PDT"};
+ "\u76ae\u7279\u5eb7\u5c9b\u590f\u4ee4\u65f6", "PDT",
+ "\u76AE\u7279\u51EF\u6069\u65F6\u95F4", "PT"};
String PKT[] = new String[] {"\u5df4\u57fa\u65af\u5766\u65f6\u95f4", "PKT",
- "\u5df4\u57fa\u65af\u5766\u590f\u4ee4\u65f6", "PKST"};
+ "\u5df4\u57fa\u65af\u5766\u590f\u4ee4\u65f6", "PKST",
+ "\u5DF4\u57FA\u65AF\u5766\u65F6\u95F4", "PKT"};
String PONT[] = new String[] {"\u6CE2\u7EB3\u4F69\u65F6\u95F4", "PONT",
- "\u6CE2\u7EB3\u4F69\u590F\u4EE4\u65F6", "PONST"};
+ "\u6CE2\u7EB3\u4F69\u590F\u4EE4\u65F6", "PONST",
+ "\u6CE2\u7EB3\u4F69\u65F6\u95F4", "PONT"};
String PST[] = new String[] {"\u592a\u5e73\u6d0b\u6807\u51c6\u65f6\u95f4", "PST",
- "\u592a\u5e73\u6d0b\u590f\u4ee4\u65f6", "PDT"};
+ "\u592a\u5e73\u6d0b\u590f\u4ee4\u65f6", "PDT",
+ "\u592A\u5E73\u6D0B\u65F6\u95F4", "PT"};
String SAST[] = new String[] {"\u5357\u975e\u6807\u51c6\u65f6\u95f4", "SAST",
- "\u5357\u975e\u590f\u4ee4\u65f6", "SAST"};
+ "\u5357\u975e\u590f\u4ee4\u65f6", "SAST",
+ "\u5357\u975E\u65F6\u95F4", "SAT"};
String SBT[] = new String[] {"\u6240\u7f57\u95e8\u7fa4\u5c9b\u65f6\u95f4", "SBT",
- "\u6240\u7f57\u95e8\u7fa4\u5c9b\u590f\u4ee4\u65f6", "SBST"};
+ "\u6240\u7f57\u95e8\u7fa4\u5c9b\u590f\u4ee4\u65f6", "SBST",
+ "\u6240\u7F57\u95E8\u7FA4\u5C9B\u65F6\u95F4", "SBT"};
String SGT[] = new String[] {"\u65b0\u52a0\u5761\u65f6\u95f4", "SGT",
- "\u65b0\u52a0\u5761\u590f\u4ee4\u65f6", "SGST"};
+ "\u65b0\u52a0\u5761\u590f\u4ee4\u65f6", "SGST",
+ "\u65B0\u52A0\u5761\u65F6\u95F4", "SGT"};
String SLST[] = new String[] {"\u683c\u6797\u5a01\u6cbb\u65f6\u95f4", "GMT",
- "\u585e\u62c9\u5229\u6602\u590f\u4ee4\u65f6", "SLST"};
+ "\u585e\u62c9\u5229\u6602\u590f\u4ee4\u65f6", "SLST",
+ "\u585E\u62C9\u91CC\u6602\u65F6\u95F4", "SLT"};
String TASMANIA[] = new String[] {"\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u5854\u65AF\u9A6C\u5C3C\u4E9A)", "EST",
- "\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u5854\u65AF\u9A6C\u5C3C\u4E9A)", "EST"};
+ "\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u5854\u65AF\u9A6C\u5C3C\u4E9A)", "EST",
+ "\u4E1C\u90E8\u65F6\u95F4 (\u5854\u65AF\u9A6C\u5C3C\u4E9A)", "ET"};
String TMT[] = new String[] {"\u571f\u5e93\u66fc\u65f6\u95f4", "TMT",
- "\u571f\u5e93\u66fc\u590f\u4ee4\u65f6", "TMST"};
+ "\u571f\u5e93\u66fc\u590f\u4ee4\u65f6", "TMST",
+ "\u571F\u5E93\u66FC\u65F6\u95F4", "TMT"};
String ULAT[]= new String[] {"\u5e93\u4f26\u65f6\u95f4", "ULAT",
- "\u5e93\u4f26\u590f\u4ee4\u65f6", "ULAST"};
+ "\u5e93\u4f26\u590f\u4ee4\u65f6", "ULAST",
+ "\u5E93\u4F26\u65F6\u95F4", "ULAT"};
String WART[] = new String[] {"\u897f\u963f\u6839\u5ef7\u65f6\u95f4", "WART",
"\u897f\u963f\u6839\u5ef7\u590f\u4ee4\u65f6", "WARST"};
String WAT[] = new String[] {"\u897f\u975e\u65f6\u95f4", "WAT",
- "\u897f\u975e\u590f\u4ee4\u65f6", "WAST"};
+ "\u897f\u975e\u590f\u4ee4\u65f6", "WAST",
+ "\u897F\u975E\u65F6\u95F4", "WAT"};
String WET[] = new String[] {"\u897f\u6b27\u65f6\u95f4", "WET",
- "\u897f\u6b27\u590f\u4ee4\u65f6", "WEST"};
+ "\u897f\u6b27\u590f\u4ee4\u65f6", "WEST",
+ "\u897F\u6B27\u65F6\u95F4", "WET"};
String WIT[] = new String[] {"\u897f\u5370\u5ea6\u5c3c\u897f\u4e9a\u65f6\u95f4", "WIB",
- "\u897f\u5370\u5ea6\u5c3c\u897f\u4e9a\u590f\u4ee4\u65f6", "WIST"};
+ "\u897f\u5370\u5ea6\u5c3c\u897f\u4e9a\u590f\u4ee4\u65f6", "WIST",
+ "\u897F\u5370\u5EA6\u5C3C\u897F\u4E9A\u65F6\u95F4", "WIB"};
String WST_AUS[] = new String[] {"\u897F\u90E8\u6807\u51C6\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)", "WST",
- "\u897F\u90E8\u590F\u4EE4\u65F6 (\u6FB3\u5927\u5229\u4E9A)", "WST"};
+ "\u897F\u90E8\u590F\u4EE4\u65F6 (\u6FB3\u5927\u5229\u4E9A)", "WST",
+ "\u897F\u90E8\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)", "WT"};
String SAMOA[] = new String[] {"\u8428\u6469\u4e9a\u7fa4\u5c9b\u6807\u51c6\u65f6\u95f4", "SST",
- "\u8428\u6469\u4e9a\u7fa4\u5c9b\u590f\u4ee4\u65f6", "SDT"};
+ "\u8428\u6469\u4e9a\u7fa4\u5c9b\u590f\u4ee4\u65f6", "SDT",
+ "\u8428\u6469\u4E9A\u65F6\u95F4", "ST"};
String WST_SAMOA[] = new String[] {"\u897f\u8428\u6469\u4e9a\u65f6\u95f4", "WST",
- "\u897f\u8428\u6469\u4e9a\u590f\u4ee4\u65f6", "WSDT"};
+ "\u897f\u8428\u6469\u4e9a\u590f\u4ee4\u65f6", "WSDT",
+ "\u897F\u8428\u6469\u4E9A\u65F6\u95F4", "WST"};
String ChST[] = new String[] {"Chamorro \u6807\u51c6\u65f6\u95f4", "ChST",
- "Chamorro \u590f\u4ee4\u65f6", "ChDT"};
+ "Chamorro \u590f\u4ee4\u65f6", "ChDT",
+ "\u67E5\u6469\u6D1B\u65F6\u95F4", "ChT"};
String VICTORIA[] = new String[] {"\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u7EF4\u591A\u5229\u4E9A)", "EST",
- "\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u7EF4\u591A\u5229\u4E9A)", "EST"};
+ "\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u7EF4\u591A\u5229\u4E9A)", "EST",
+ "\u4E1C\u90E8\u65F6\u95F4 (\u7EF4\u591A\u5229\u4E9A)", "ET"};
String UTC[] = new String[] {"\u534f\u8c03\u4e16\u754c\u65f6\u95f4", "UTC",
- "\u534f\u8c03\u4e16\u754c\u65f6\u95f4", "UTC"};
+ "\u534f\u8c03\u4e16\u754c\u65f6\u95f4", "UTC",
+ "\u534F\u8C03\u4E16\u754C\u65F6\u95F4", "UTC"};
String UZT[] = new String[] {"\u4e4c\u5179\u522b\u514b\u65af\u5766\u65f6\u95f4", "UZT",
- "\u4e4c\u5179\u522b\u514b\u65af\u5766\u590f\u4ee4\u65f6", "UZST"};
+ "\u4e4c\u5179\u522b\u514b\u65af\u5766\u590f\u4ee4\u65f6", "UZST",
+ "\u4E4C\u5179\u522B\u514B\u65AF\u5766\u65F6\u95F4", "UZT"};
return new Object[][] {
{"America/Los_Angeles", PST},
@@ -311,7 +387,8 @@
{"America/Argentina/Ushuaia", AGT},
{"America/Aruba", AST},
{"America/Asuncion", new String[] {"\u5df4\u62c9\u572d\u65f6\u95f4", "PYT",
- "\u5df4\u62c9\u572d\u590f\u4ee4\u65f6", "PYST"}},
+ "\u5df4\u62c9\u572d\u590f\u4ee4\u65f6", "PYST",
+ "\u5DF4\u62C9\u572D\u65F6\u95F4", "PYT"}},
{"America/Atikokan", EST},
{"America/Atka", HAST},
{"America/Bahia", BRT},
@@ -322,17 +399,20 @@
{"America/Blanc-Sablon", AST},
{"America/Boa_Vista", AMT},
{"America/Bogota", new String[] {"\u54e5\u4f26\u6bd4\u4e9a\u65f6\u95f4", "COT",
- "\u54e5\u4f26\u6bd4\u4e9a\u590f\u4ee4\u65f6", "COST"}},
+ "\u54e5\u4f26\u6bd4\u4e9a\u590f\u4ee4\u65f6", "COST",
+ "\u54E5\u4F26\u6BD4\u4E9A\u65F6\u95F4", "COT"}},
{"America/Boise", MST},
{"America/Buenos_Aires", AGT},
{"America/Cambridge_Bay", MST},
{"America/Campo_Grande", AMT},
{"America/Cancun", CST},
{"America/Caracas", new String[] {"\u59d4\u5185\u745e\u62c9\u65f6\u95f4", "VET",
- "\u59d4\u5185\u745e\u62c9\u590f\u4ee4\u65f6", "VEST"}},
+ "\u59d4\u5185\u745e\u62c9\u590f\u4ee4\u65f6", "VEST",
+ "\u59D4\u5185\u745E\u62C9\u65F6\u95F4", "VET"}},
{"America/Catamarca", AGT},
{"America/Cayenne", new String[] {"\u6cd5\u5c5e\u572d\u4e9a\u90a3\u65f6\u95f4", "GFT",
- "\u6cd5\u5c5e\u572d\u4e9a\u90a3\u590f\u4ee4\u65f6", "GFST"}},
+ "\u6cd5\u5c5e\u572d\u4e9a\u90a3\u590f\u4ee4\u65f6", "GFST",
+ "\u6CD5\u5C5E\u572D\u4E9A\u90A3\u65F6\u95F4", "GFT"}},
{"America/Cayman", EST},
{"America/Chihuahua", MST},
{"America/Creston", MST},
@@ -354,16 +434,19 @@
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"\u897f\u683c\u6797\u5170\u5c9b\u65f6\u95f4", "WGT",
- "\u897f\u683c\u6797\u5170\u5c9b\u590f\u4ee4\u65f6", "WGST"}},
+ "\u897f\u683c\u6797\u5170\u5c9b\u590f\u4ee4\u65f6", "WGST",
+ "\u897F\u683C\u6797\u5170\u5C9B\u65F6\u95F4", "WGT"}},
{"America/Goose_Bay", AST},
{"America/Grand_Turk", EST},
{"America/Grenada", AST},
{"America/Guadeloupe", AST},
{"America/Guatemala", CST},
{"America/Guayaquil", new String[] {"\u5384\u74dc\u591a\u5c14\u65f6\u95f4", "ECT",
- "\u5384\u74dc\u591a\u5c14\u590f\u4ee4\u65f6", "ECST"}},
+ "\u5384\u74dc\u591a\u5c14\u590f\u4ee4\u65f6", "ECST",
+ "\u5384\u74DC\u591A\u5C14\u65F6\u95F4", "ECT"}},
{"America/Guyana", new String[] {"\u572d\u4e9a\u90a3\u65f6\u95f4", "GYT",
- "\u572d\u4e9a\u90a3\u590f\u4ee4\u65f6", "GYST"}},
+ "\u572d\u4e9a\u90a3\u590f\u4ee4\u65f6", "GYST",
+ "\u572D\u4E9A\u90A3\u65F6\u95F4", "GYT"}},
{"America/Havana", CUBA},
{"America/Hermosillo", MST},
{"America/Indiana/Indianapolis", EST},
@@ -384,9 +467,11 @@
{"America/Knox_IN", CST},
{"America/Kralendijk", AST},
{"America/La_Paz", new String[] {"\u73bb\u5229\u7ef4\u4e9a\u65f6\u95f4", "BOT",
- "\u73bb\u5229\u7ef4\u4e9a\u590f\u4ee4\u65f6", "BOST"}},
+ "\u73bb\u5229\u7ef4\u4e9a\u590f\u4ee4\u65f6", "BOST",
+ "\u73BB\u5229\u7EF4\u4E9A\u65F6\u95F4", "BOT"}},
{"America/Lima", new String[] {"\u79d8\u9c81\u65f6\u95f4", "PET",
- "\u79d8\u9c81\u590f\u4ee4\u65f6", "PEST"}},
+ "\u79d8\u9c81\u590f\u4ee4\u65f6", "PEST",
+ "\u79D8\u9C81\u65F6\u95F4", "PET"}},
{"America/Louisville", EST},
{"America/Lower_Princes", AST},
{"America/Maceio", BRT},
@@ -400,13 +485,16 @@
{"America/Menominee", CST},
{"America/Merida", CST},
{"America/Metlakatla", new String[] {"\u6885\u7279\u62C9\u5361\u7279\u62C9\u6807\u51C6\u65F6\u95F4", "MeST",
- "\u6885\u7279\u62C9\u5361\u7279\u62C9\u590F\u4EE4\u65F6", "MeDT"}},
+ "\u6885\u7279\u62C9\u5361\u7279\u62C9\u590F\u4EE4\u65F6", "MeDT",
+ "\u6885\u7279\u62C9\u5361\u7279\u62C9\u65F6\u95F4", "MeT"}},
{"America/Mexico_City", CST},
{"America/Miquelon", new String[] {"\u76ae\u57c3\u5c14\u5c9b\u53ca\u5bc6\u514b\u9686\u5c9b\u6807\u51c6\u65f6\u95f4", "PMST",
- "\u76ae\u57c3\u5c14\u5c9b\u53ca\u5bc6\u514b\u9686\u5c9b\u590f\u4ee4\u65f6", "PMDT"}},
+ "\u76ae\u57c3\u5c14\u5c9b\u53ca\u5bc6\u514b\u9686\u5c9b\u590f\u4ee4\u65f6", "PMDT",
+ "\u76AE\u57C3\u5C14\u548C\u5BC6\u514B\u9686\u5C9B\u65F6\u95F4", "PMT"}},
{"America/Moncton", AST},
{"America/Montevideo", new String[] {"\u4e4c\u62c9\u572d\u65f6\u95f4", "UYT",
- "\u4e4c\u62c9\u572d\u590f\u4ee4\u65f6", "UYST"}},
+ "\u4e4c\u62c9\u572d\u590f\u4ee4\u65f6", "UYST",
+ "\u4E4C\u62C9\u572D\u65F6\u95F4", "UYT"}},
{"America/Monterrey", CST},
{"America/Montreal", EST},
{"America/Montserrat", AST},
@@ -421,7 +509,8 @@
{"America/Panama", EST},
{"America/Pangnirtung", EST},
{"America/Paramaribo", new String[] {"\u82cf\u5229\u5357\u65f6\u95f4", "SRT",
- "\u82cf\u5229\u5357\u590f\u4ee4\u65f6", "SRST"}},
+ "\u82cf\u5229\u5357\u590f\u4ee4\u65f6", "SRST",
+ "\u82CF\u5229\u5357\u65F6\u95F4", "SRT"}},
{"America/Port-au-Prince", EST},
{"America/Port_of_Spain", AST},
{"America/Porto_Acre", ACT},
@@ -461,115 +550,146 @@
{"America/Yellowknife", MST},
{"Antarctica/Casey", WST_AUS},
{"Antarctica/Davis", new String[] {"\u6234\u7ef4\u65af\u65f6\u95f4", "DAVT",
- "\u6234\u7ef4\u65af\u590f\u4ee4\u65f6", "DAVST"}},
+ "\u6234\u7ef4\u65af\u590f\u4ee4\u65f6", "DAVST",
+ "\u6234\u7EF4\u65AF\u65F6\u95F4", "DAVT"}},
{"Antarctica/DumontDUrville", new String[] {"Dumont-d'Urville \u65f6\u95f4", "DDUT",
- "Dumont-d'Urville \u590f\u4ee4\u65f6", "DDUST"}},
+ "Dumont-d'Urville \u590f\u4ee4\u65f6", "DDUST",
+ "Dumont-d'Urville \u65F6\u95F4", "DDUT"}},
{"Antarctica/Macquarie", new String[] {"\u9EA6\u5938\u91CC\u5C9B\u65F6\u95F4", "MIST",
- "\u9EA6\u5938\u91CC\u5C9B\u590F\u4EE4\u65F6", "MIST"}},
+ "\u9EA6\u5938\u91CC\u5C9B\u590F\u4EE4\u65F6", "MIST",
+ "\u9EA6\u5938\u91CC\u5C9B\u65F6\u95F4", "MIST"}},
{"Antarctica/Mawson", new String[] {"\u83ab\u68ee\u65f6\u95f4", "MAWT",
- "\u83ab\u68ee\u590f\u4ee4\u65f6", "MAWST"}},
+ "\u83ab\u68ee\u590f\u4ee4\u65f6", "MAWST",
+ "\u83AB\u68EE\u65F6\u95F4", "MAWT"}},
{"Antarctica/McMurdo", NZST},
{"Antarctica/Palmer", CLT},
{"Antarctica/Rothera", new String[] {"\u7f57\u745f\u62c9\u65f6\u95f4", "ROTT",
- "\u7f57\u745f\u62c9\u590f\u4ee4\u65f6", "ROTST"}},
+ "\u7f57\u745f\u62c9\u590f\u4ee4\u65f6", "ROTST",
+ "\u7F57\u745F\u62C9\u65F6\u95F4", "ROTT"}},
{"Antarctica/South_Pole", NZST},
{"Antarctica/Syowa", new String[] {"Syowa \u65f6\u95f4", "SYOT",
- "Syowa \u590f\u4ee4\u65f6", "SYOST"}},
+ "Syowa \u590f\u4ee4\u65f6", "SYOST",
+ "Syowa \u65F6\u95F4", "SYOT"}},
{"Antarctica/Vostok", new String[] {"\u83ab\u65af\u6258\u514b\u65f6\u95f4", "VOST",
- "\u83ab\u65af\u6258\u514b\u590f\u4ee4\u65f6", "VOSST"}},
+ "\u83ab\u65af\u6258\u514b\u590f\u4ee4\u65f6", "VOSST",
+ "\u83AB\u65AF\u6258\u514B\u65F6\u95F4", "VOST"}},
{"Arctic/Longyearbyen", CET},
{"Asia/Aden", ARAST},
{"Asia/Almaty", new String[] {"Alma-Ata \u65f6\u95f4", "ALMT",
- "Alma-Ata \u590f\u4ee4\u65f6", "ALMST"}},
+ "Alma-Ata \u590f\u4ee4\u65f6", "ALMST",
+ "Alma-Ata \u65F6\u95F4", "ALMT"}},
{"Asia/Amman", ARAST},
{"Asia/Anadyr", new String[] {"\u963f\u90a3\u5e95\u6cb3\u65f6\u95f4", "ANAT",
- "\u963f\u90a3\u5e95\u6cb3\u590f\u4ee4\u65f6", "ANAST"}},
+ "\u963f\u90a3\u5e95\u6cb3\u590f\u4ee4\u65f6", "ANAST",
+ "\u963F\u90A3\u5E95\u6CB3\u65F6\u95F4", "ANAT"}},
{"Asia/Aqtau", new String[] {"Aqtau \u65f6\u95f4", "AQTT",
- "Aqtau \u590f\u4ee4\u65f6", "AQTST"}},
+ "Aqtau \u590f\u4ee4\u65f6", "AQTST",
+ "Aqtau \u65F6\u95F4", "AQTT"}},
{"Asia/Aqtobe", new String[] {"Aqtobe \u65f6\u95f4", "AQTT",
- "Aqtobe \u590f\u4ee4\u65f6", "AQTST"}},
+ "Aqtobe \u590f\u4ee4\u65f6", "AQTST",
+ "Aqtobe \u65F6\u95F4", "AQTT"}},
{"Asia/Ashgabat", TMT},
{"Asia/Ashkhabad", TMT},
{"Asia/Baghdad", ARAST},
{"Asia/Bahrain", ARAST},
{"Asia/Baku", new String[] {"\u4e9a\u585e\u62dc\u7136\u65f6\u95f4", "AZT",
- "\u4e9a\u585e\u62dc\u7136\u590f\u4ee4\u65f6", "AZST"}},
+ "\u4e9a\u585e\u62dc\u7136\u590f\u4ee4\u65f6", "AZST",
+ "\u4E9A\u585E\u62DC\u7136\u65F6\u95F4", "AZT"}},
{"Asia/Bangkok", ICT},
{"Asia/Beirut", EET},
{"Asia/Bishkek", new String[] {"\u5409\u5c14\u5409\u65af\u65af\u5766\u65f6\u95f4", "KGT",
- "\u5409\u5c14\u5409\u65af\u65af\u5766\u590f\u4ee4\u65f6", "KGST"}},
+ "\u5409\u5c14\u5409\u65af\u65af\u5766\u590f\u4ee4\u65f6", "KGST",
+ "\u5409\u5C14\u5409\u65AF\u65AF\u5766\u65F6\u95F4", "KGT"}},
{"Asia/Brunei", new String[] {"\u6587\u83b1\u65f6\u95f4", "BNT",
- "\u6587\u83b1\u590f\u4ee4\u65f6", "BNST"}},
+ "\u6587\u83b1\u590f\u4ee4\u65f6", "BNST",
+ "\u6587\u83B1\u65F6\u95F4", "BNT"}},
{"Asia/Calcutta", IST},
{"Asia/Choibalsan", new String[] {"Choibalsan \u65f6\u95f4", "CHOT",
- "Choibalsan \u590f\u4ee4\u65f6", "CHOST"}},
+ "Choibalsan \u590f\u4ee4\u65f6", "CHOST",
+ "Choibalsan \u65F6\u95F4", "CHOT"}},
{"Asia/Chongqing", CTT},
{"Asia/Chungking", CTT},
{"Asia/Colombo", IST},
{"Asia/Dacca", BDT},
{"Asia/Dhaka", BDT},
{"Asia/Dili", new String[] {"\u4e1c\u5e1d\u6c76\u65f6\u95f4", "TLT",
- "\u4e1c\u5e1d\u6c76\u590f\u4ee4\u65f6", "TLST"}},
+ "\u4e1c\u5e1d\u6c76\u590f\u4ee4\u65f6", "TLST",
+ "\u4E1C\u5E1D\u6C76\u65F6\u95F4", "TLT"}},
{"Asia/Damascus", EET},
{"Asia/Dubai", GST},
{"Asia/Dushanbe", new String[] {"\u5854\u5409\u514b\u65af\u5766\u65f6\u95f4", "TJT",
- "\u5854\u5409\u514b\u65af\u5766\u590f\u4ee4\u65f6", "TJST"}},
+ "\u5854\u5409\u514b\u65af\u5766\u590f\u4ee4\u65f6", "TJST",
+ "\u5854\u5409\u514B\u65AF\u5766\u65F6\u95F4", "TJT"}},
{"Asia/Gaza", EET},
{"Asia/Harbin", CTT},
{"Asia/Hebron", EET},
{"Asia/Ho_Chi_Minh", ICT},
{"Asia/Hong_Kong", HKT},
{"Asia/Hovd", new String[] {"\u79d1\u5e03\u591a\u65f6\u95f4", "HOVT",
- "\u79d1\u5e03\u591a\u590f\u4ee4\u65f6", "HOVST"}},
+ "\u79d1\u5e03\u591a\u590f\u4ee4\u65f6", "HOVST",
+ "\u79D1\u5E03\u591A\u65F6\u95F4", "HOVT"}},
{"Asia/Irkutsk", new String[] {"\u4f0a\u5c14\u5e93\u6b21\u514b\u65f6\u95f4", "IRKT",
- "\u4f0a\u5c14\u5e93\u6b21\u514b\u590f\u4ee4\u65f6", "IRKST"}},
+ "\u4f0a\u5c14\u5e93\u6b21\u514b\u590f\u4ee4\u65f6", "IRKST",
+ "\u4F0A\u5C14\u5E93\u6B21\u514B\u65F6\u95F4", "IRKT"}},
{"Asia/Istanbul", EET},
{"Asia/Jakarta", WIT},
{"Asia/Jayapura", new String[] {"\u4e1c\u5370\u5ea6\u5c3c\u897f\u4e9a\u65f6\u95f4", "WIT",
- "\u4e1c\u5370\u5ea6\u5c3c\u897f\u4e9a\u590f\u4ee4\u65f6", "EIST"}},
+ "\u4e1c\u5370\u5ea6\u5c3c\u897f\u4e9a\u590f\u4ee4\u65f6", "EIST",
+ "\u4E1C\u5370\u5EA6\u5C3C\u897F\u4E9A\u65F6\u95F4", "WIT"}},
{"Asia/Kabul", new String[] {"\u963f\u5bcc\u6c57\u65f6\u95f4", "AFT",
- "\u963f\u5bcc\u6c57\u590f\u4ee4\u65f6", "AFST"}},
+ "\u963f\u5bcc\u6c57\u590f\u4ee4\u65f6", "AFST",
+ "\u963F\u5BCC\u6C57\u65F6\u95F4", "AFT"}},
{"Asia/Kamchatka", new String[] {"\u5f7c\u5f97\u7f57\u5df4\u752b\u6d1b\u592b\u65af\u514b\u65f6\u95f4", "PETT",
- "\u5f7c\u5f97\u7f57\u5df4\u752b\u6d1b\u592b\u65af\u514b\u590f\u4ee4\u65f6", "PETST"}},
+ "\u5f7c\u5f97\u7f57\u5df4\u752b\u6d1b\u592b\u65af\u514b\u590f\u4ee4\u65f6", "PETST",
+ "\u5F7C\u5F97\u7F57\u5DF4\u752B\u6D1B\u592B\u65AF\u514B\u65F6\u95F4", "PETT"}},
{"Asia/Karachi", PKT},
{"Asia/Kashgar", CTT},
{"Asia/Kathmandu", NPT},
{"Asia/Katmandu", NPT},
{"Asia/Khandyga", new String[] {"\u6C49\u5FB7\u52A0\u65F6\u95F4", "YAKT",
- "\u6C49\u5FB7\u52A0\u590F\u4EE4\u65F6", "YAKST"}},
+ "\u6C49\u5FB7\u52A0\u590F\u4EE4\u65F6", "YAKST",
+ "\u6C49\u5FB7\u52A0\u65F6\u95F4", "YAKT"}},
{"Asia/Kolkata", IST},
{"Asia/Krasnoyarsk", new String[] {"\u514b\u62c9\u65af\u8bfa\u4e9a\u5c14\u65af\u514b\u65f6\u95f4", "KRAT",
- "\u514b\u62c9\u65af\u8bfa\u4e9a\u5c14\u65af\u514b\u590f\u4ee4\u65f6", "KRAST"}},
+ "\u514b\u62c9\u65af\u8bfa\u4e9a\u5c14\u65af\u514b\u590f\u4ee4\u65f6", "KRAST",
+ "\u514B\u62C9\u65AF\u8BFA\u4E9A\u5C14\u65AF\u514B\u65F6\u95F4", "KRAT"}},
{"Asia/Kuala_Lumpur", MYT},
{"Asia/Kuching", MYT},
{"Asia/Kuwait", ARAST},
{"Asia/Macao", CTT},
{"Asia/Macau", CTT},
{"Asia/Magadan", new String[] {"Magadan \u65f6\u95f4", "MAGT",
- "Magadan \u590f\u4ee4\u65f6", "MAGST"}},
+ "Magadan \u590f\u4ee4\u65f6", "MAGST",
+ "Magadan \u65F6\u95F4", "MAGT"}},
{"Asia/Makassar", CIT},
{"Asia/Manila", new String[] {"\u83f2\u5f8b\u5bbe\u65f6\u95f4", "PHT",
- "\u83f2\u5f8b\u5bbe\u590f\u4ee4\u65f6", "PHST"}},
+ "\u83f2\u5f8b\u5bbe\u590f\u4ee4\u65f6", "PHST",
+ "\u83F2\u5F8B\u5BBE\u65F6\u95F4", "PHT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", NOVT},
{"Asia/Novosibirsk", NOVT},
{"Asia/Oral", new String[] {"Oral \u65f6\u95f4", "ORAT",
- "Oral \u590f\u4ee4\u65f6", "ORAST"}},
+ "Oral \u590f\u4ee4\u65f6", "ORAST",
+ "Oral \u65F6\u95F4", "ORAT"}},
{"Asia/Omsk", new String[] {"\u9102\u6728\u65af\u514b\u65f6\u95f4", "OMST",
- "\u9102\u6728\u65af\u514b\u590f\u4ee4\u65f6", "OMSST"}},
+ "\u9102\u6728\u65af\u514b\u590f\u4ee4\u65f6", "OMSST",
+ "\u9102\u6728\u65AF\u514B\u65F6\u95F4", "OMST"}},
{"Asia/Phnom_Penh", ICT},
{"Asia/Pontianak", WIT},
{"Asia/Pyongyang", KST},
{"Asia/Qatar", ARAST},
{"Asia/Qyzylorda", new String[] {"Qyzylorda \u65f6\u95f4", "QYZT",
- "Qyzylorda \u590f\u4ee4\u65f6", "QYZST"}},
+ "Qyzylorda \u590f\u4ee4\u65f6", "QYZST",
+ "Qyzylorda \u65F6\u95F4", "QYZT"}},
{"Asia/Rangoon", new String[] {"\u7f05\u7538\u65f6\u95f4", "MMT",
- "\u7f05\u7538\u590f\u4ee4\u65f6", "MMST"}},
+ "\u7f05\u7538\u590f\u4ee4\u65f6", "MMST",
+ "\u7F05\u7538\u65F6\u95F4", "MMT"}},
{"Asia/Riyadh", ARAST},
{"Asia/Saigon", ICT},
{"Asia/Sakhalin", new String[] {"\u5e93\u9875\u5c9b\u65f6\u95f4", "SAKT",
- "\u5e93\u9875\u5c9b\u590f\u4ee4\u65f6", "SAKST"}},
+ "\u5e93\u9875\u5c9b\u590f\u4ee4\u65f6", "SAKST",
+ "\u5E93\u9875\u5C9B\u65F6\u95F4", "SAKT"}},
{"Asia/Samarkand", UZT},
{"Asia/Seoul", KST},
{"Asia/Singapore", SGT},
@@ -577,7 +697,8 @@
{"Asia/Tel_Aviv", ISRAEL},
{"Asia/Tashkent", UZT},
{"Asia/Tbilisi", new String[] {"\u4e54\u6cbb\u4e9a\u65f6\u95f4", "GET",
- "\u4e54\u6cbb\u4e9a\u590f\u4ee4\u65f6", "GEST"}},
+ "\u4e54\u6cbb\u4e9a\u590f\u4ee4\u65f6", "GEST",
+ "\u4E54\u6CBB\u4E9A\u65F6\u95F4", "GET"}},
{"Asia/Tehran", IRT},
{"Asia/Thimbu", BTT},
{"Asia/Thimphu", BTT},
@@ -586,31 +707,39 @@
{"Asia/Ulan_Bator", ULAT},
{"Asia/Urumqi", CTT},
{"Asia/Ust-Nera", new String[] {"\u4E4C\u65AF\u5B63\u6D85\u62C9\u65F6\u95F4", "VLAT",
- "\u4E4C\u65AF\u5B63\u6D85\u62C9\u590F\u4EE4\u65F6", "VLAST"}},
+ "\u4E4C\u65AF\u5B63\u6D85\u62C9\u590F\u4EE4\u65F6", "VLAST",
+ "\u4E4C\u65AF\u5B63\u6D85\u62C9\u65F6\u95F4", "VLAT"}},
{"Asia/Vientiane", ICT},
{"Asia/Vladivostok", new String[] {"\u6d77\u53c2\u5d34\u65f6\u95f4", "VLAT",
- "\u6d77\u53c2\u5d34\u590f\u4ee4\u65f6", "VLAST"}},
+ "\u6d77\u53c2\u5d34\u590f\u4ee4\u65f6", "VLAST",
+ "\u6D77\u53C2\u5D34\u65F6\u95F4", "VLAT"}},
{"Asia/Yakutsk", new String[] {"\u4e9a\u5e93\u6b21\u514b\u65f6\u95f4", "YAKT",
- "\u4e9a\u5e93\u6b21\u514b\u590f\u4ee4\u65f6", "YAKST"}},
+ "\u4e9a\u5e93\u6b21\u514b\u590f\u4ee4\u65f6", "YAKST",
+ "\u4E9A\u5E93\u6B21\u514B\u65F6\u95F4", "YAKT"}},
{"Asia/Yekaterinburg", new String[] {"Yekaterinburg \u65f6\u95f4", "YEKT",
- "Yekaterinburg \u590f\u4ee4\u65f6", "YEKST"}},
+ "Yekaterinburg \u590f\u4ee4\u65f6", "YEKST",
+ "Yekaterinburg \u65F6\u95F4", "YEKT"}},
{"Asia/Yerevan", ARMT},
{"Atlantic/Azores", new String[] {"\u4e9a\u901f\u5c14\u7fa4\u5c9b\u65f6\u95f4", "AZOT",
- "\u4e9a\u901f\u5c14\u7fa4\u5c9b\u590f\u4ee4\u65f6", "AZOST"}},
+ "\u4e9a\u901f\u5c14\u7fa4\u5c9b\u590f\u4ee4\u65f6", "AZOST",
+ "\u4E9A\u901F\u5C14\u7FA4\u5C9B\u65F6\u95F4", "AZOT"}},
{"Atlantic/Bermuda", AST},
{"Atlantic/Canary", WET},
{"Atlantic/Cape_Verde", new String[] {"\u4f5b\u5fb7\u89d2\u65f6\u95f4", "CVT",
- "\u4f5b\u5fb7\u89d2\u590f\u4ee4\u65f6", "CVST"}},
+ "\u4f5b\u5fb7\u89d2\u590f\u4ee4\u65f6", "CVST",
+ "\u4F5B\u5FB7\u89D2\u65F6\u95F4", "CVT"}},
{"Atlantic/Faeroe", WET},
{"Atlantic/Faroe", WET},
{"Atlantic/Jan_Mayen", CET},
{"Atlantic/Madeira", WET},
{"Atlantic/Reykjavik", GMT},
{"Atlantic/South_Georgia", new String[] {"\u5357\u4e54\u6cbb\u4e9a\u6807\u51c6\u65f6\u95f4", "GST",
- "\u5357\u4e54\u6cbb\u4e9a\u590f\u4ee4\u65f6", "GDT"}},
+ "\u5357\u4e54\u6cbb\u4e9a\u590f\u4ee4\u65f6", "GDT",
+ "\u5357\u4E54\u6CBB\u4E9A\u5C9B\u65F6\u95F4", "GT"}},
{"Atlantic/St_Helena", GMT},
{"Atlantic/Stanley", new String[] {"\u798f\u514b\u5170\u7fa4\u5c9b\u65f6\u95f4", "FKT",
- "\u798f\u514b\u5170\u7fa4\u5c9b\u590f\u4ee4\u65f6", "FKST"}},
+ "\u798f\u514b\u5170\u7fa4\u5c9b\u590f\u4ee4\u65f6", "FKST",
+ "\u798F\u514B\u5170\u7FA4\u5C9B\u65F6\u95F4", "FKT"}},
{"Australia/ACT", EST_NSW},
{"Australia/Adelaide", ADELAIDE},
{"Australia/Brisbane", BRISBANE},
@@ -619,7 +748,8 @@
{"Australia/Currie", EST_NSW},
{"Australia/Darwin", DARWIN},
{"Australia/Eucla", new String[] {"\u4E2D\u897F\u90E8\u6807\u51C6\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)", "CWST",
- "\u4E2D\u897F\u90E8\u590F\u4EE4\u65F6 (\u6FB3\u5927\u5229\u4E9A)", "CWST"}},
+ "\u4E2D\u897F\u90E8\u590F\u4EE4\u65F6 (\u6FB3\u5927\u5229\u4E9A)", "CWST",
+ "\u4E2D\u897F\u90E8\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)", "CWT"}},
{"Australia/Hobart", TASMANIA},
{"Australia/LHI", LORD_HOWE},
{"Australia/Lindeman", BRISBANE},
@@ -704,7 +834,8 @@
{"Europe/Riga", EET},
{"Europe/Rome", CET},
{"Europe/Samara", new String[] {"\u6c99\u9a6c\u62c9\u65f6\u95f4", "SAMT",
- "\u6c99\u9a6c\u62c9\u590f\u4ee4\u65f6", "SAMST"}},
+ "\u6c99\u9a6c\u62c9\u590f\u4ee4\u65f6", "SAMST",
+ "\u6C99\u9A6C\u62C9\u65F6\u95F4", "SAMT"}},
{"Europe/San_Marino", CET},
{"Europe/Sarajevo", CET},
{"Europe/Simferopol", EET},
@@ -720,7 +851,8 @@
{"Europe/Vienna", CET},
{"Europe/Vilnius", EET},
{"Europe/Volgograd", new String[] {"\u4f0f\u5c14\u52a0\u683c\u52d2\u65f6\u95f4", "VOLT",
- "\u4f0f\u5c14\u52a0\u683c\u52d2\u590f\u4ee4\u65f6", "VOLST"}},
+ "\u4f0f\u5c14\u52a0\u683c\u52d2\u590f\u4ee4\u65f6", "VOLST",
+ "\u4F0F\u5C14\u52A0\u683C\u52D2\u65F6\u95F4", "VOLT"}},
{"Europe/Warsaw", CET},
{"Europe/Zagreb", CET},
{"Europe/Zaporozhye", EET},
@@ -734,30 +866,39 @@
{"IST", IST},
{"Indian/Antananarivo", EAT},
{"Indian/Chagos", new String[] {"\u5370\u5ea6\u6d0b\u5730\u5e26\u65f6\u95f4", "IOT",
- "\u5370\u5ea6\u6d0b\u5730\u5e26\u590f\u4ee4\u65f6", "IOST"}},
+ "\u5370\u5ea6\u6d0b\u5730\u5e26\u590f\u4ee4\u65f6", "IOST",
+ "\u5370\u5EA6\u6D0B\u5730\u5E26\u65F6\u95F4", "IOT"}},
{"Indian/Christmas", new String[] {"\u5723\u8bde\u5c9b\u65f6\u95f4", "CXT",
- "\u5723\u8bde\u5c9b\u590f\u4ee4\u65f6", "CXST"}},
+ "\u5723\u8bde\u5c9b\u590f\u4ee4\u65f6", "CXST",
+ "\u5723\u8BDE\u5C9B\u65F6\u95F4", "CIT"}},
{"Indian/Cocos", new String[] {"\u53ef\u53ef\u65af\u7fa4\u5c9b\u65f6\u95f4", "CCT",
- "\u53ef\u53ef\u65af\u7fa4\u5c9b\u590f\u4ee4\u65f6", "CCST"}},
+ "\u53ef\u53ef\u65af\u7fa4\u5c9b\u590f\u4ee4\u65f6", "CCST",
+ "\u53EF\u53EF\u65AF\u7FA4\u5C9B\u65F6\u95F4", "CCT"}},
{"Indian/Comoro", EAT},
{"Indian/Kerguelen", new String[] {"\u6cd5\u5c5e\u5357\u6781\u65f6\u95f4", "TFT",
- "\u6cd5\u5c5e\u5357\u6781\u590f\u4ee4\u65f6", "TFST"}},
+ "\u6cd5\u5c5e\u5357\u6781\u590f\u4ee4\u65f6", "TFST",
+ "\u6CD5\u5C5E\u5357\u6781\u65F6\u95F4", "TFT"}},
{"Indian/Mahe", new String[] {"\u585e\u5e2d\u5c14\u7fa4\u5c9b\u65f6\u95f4", "SCT",
- "\u585e\u5e2d\u5c14\u7fa4\u5c9b\u590f\u4ee4\u65f6", "SCST"}},
+ "\u585e\u5e2d\u5c14\u7fa4\u5c9b\u590f\u4ee4\u65f6", "SCST",
+ "\u585E\u5E2D\u5C14\u7FA4\u5C9B\u65F6\u95F4", "SCT"}},
{"Indian/Maldives", new String[] {"\u9a6c\u5c14\u4ee3\u592b\u65f6\u95f4", "MVT",
- "\u9a6c\u5c14\u4ee3\u592b\u590f\u4ee4\u65f6", "MVST"}},
+ "\u9a6c\u5c14\u4ee3\u592b\u590f\u4ee4\u65f6", "MVST",
+ "\u9A6C\u5C14\u4EE3\u592B\u65F6\u95F4", "MVT"}},
{"Indian/Mauritius", new String[] {"\u6469\u91cc\u897f\u65af\u65f6\u95f4", "MUT",
- "\u6469\u91cc\u897f\u65af\u590f\u4ee4\u65f6", "MUST"}},
+ "\u6469\u91cc\u897f\u65af\u590f\u4ee4\u65f6", "MUST",
+ "\u6469\u91CC\u897F\u65AF\u65F6\u95F4", "MUT"}},
{"Indian/Mayotte", EAT},
{"Indian/Reunion", new String[] {"\u7559\u5c3c\u65fa\u5c9b\u65f6\u95f4", "RET",
- "\u7559\u5c3c\u65fa\u5c9b\u590f\u4ee4\u65f6", "REST"}},
+ "\u7559\u5c3c\u65fa\u5c9b\u590f\u4ee4\u65f6", "REST",
+ "\u7559\u5C3C\u65FA\u5C9B\u65F6\u95F4", "RET"}},
{"Israel", ISRAEL},
{"Jamaica", EST},
{"Japan", JST},
{"Kwajalein", MHT},
{"Libya", EET},
{"MET", new String[] {"\u4e2d\u6b27\u65f6\u95f4", "MET",
- "\u4e2d\u6b27\u590f\u4ee4\u65f6", "MEST"}},
+ "\u4e2d\u6b27\u590f\u4ee4\u65f6", "MEST",
+ "MET", "MET"}},
{"Mexico/BajaNorte", PST},
{"Mexico/BajaSur", MST},
{"Mexico/General", CST},
@@ -777,61 +918,82 @@
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
{"Pacific/Efate", new String[] {"\u74e6\u5974\u963f\u56fe\u65f6\u95f4", "VUT",
- "\u74e6\u5974\u963f\u56fe\u590f\u4ee4\u65f6", "VUST"}},
+ "\u74e6\u5974\u963f\u56fe\u590f\u4ee4\u65f6", "VUST",
+ "\u74E6\u5974\u963F\u56FE\u65F6\u95F4", "VUT"}},
{"Pacific/Enderbury", new String[] {"\u83f2\u5c3c\u514b\u65af\u7fa4\u5c9b\u65f6\u95f4", "PHOT",
- "\u83f2\u5c3c\u514b\u65af\u7fa4\u5c9b\u590f\u4ee4\u65f6", "PHOST"}},
+ "\u83f2\u5c3c\u514b\u65af\u7fa4\u5c9b\u590f\u4ee4\u65f6", "PHOST",
+ "\u83F2\u5C3C\u514B\u65AF\u7FA4\u5C9B\u65F6\u95F4", "PHOT"}},
{"Pacific/Fakaofo", new String[] {"\u6258\u514b\u52b3\u7fa4\u5c9b\u65f6\u95f4", "TKT",
- "\u6258\u514b\u52b3\u7fa4\u5c9b\u590f\u4ee4\u65f6", "TKST"}},
+ "\u6258\u514b\u52b3\u7fa4\u5c9b\u590f\u4ee4\u65f6", "TKST",
+ "\u6258\u514B\u52B3\u7FA4\u5C9B\u65F6\u95F4", "TKT"}},
{"Pacific/Fiji", new String[] {"\u6590\u6d4e\u65f6\u95f4", "FJT",
- "\u6590\u6d4e\u590f\u4ee4\u65f6", "FJST"}},
+ "\u6590\u6d4e\u590f\u4ee4\u65f6", "FJST",
+ "\u6590\u6D4E\u65F6\u95F4", "FJT"}},
{"Pacific/Funafuti", new String[] {"\u5410\u9c81\u74e6\u65f6\u95f4", "TVT",
- "\u5410\u9c81\u74e6\u590f\u4ee4\u65f6", "TVST"}},
+ "\u5410\u9c81\u74e6\u590f\u4ee4\u65f6", "TVST",
+ "\u5410\u9C81\u74E6\u65F6\u95F4", "TVT"}},
{"Pacific/Galapagos", new String[] {"\u52a0\u62c9\u5df4\u54e5\u65f6\u95f4", "GALT",
- "\u52a0\u62c9\u5df4\u54e5\u590f\u4ee4\u65f6", "GALST"}},
+ "\u52a0\u62c9\u5df4\u54e5\u590f\u4ee4\u65f6", "GALST",
+ "\u52A0\u62C9\u5DF4\u54E5\u65F6\u95F4", "GALT"}},
{"Pacific/Gambier", GAMBIER},
{"Pacific/Guadalcanal", SBT},
{"Pacific/Guam", ChST},
{"Pacific/Johnston", HST},
{"Pacific/Kiritimati", new String[] {"Line \u5c9b\u65f6\u95f4", "LINT",
- "Line \u5c9b\u590f\u4ee4\u65f6", "LINST"}},
+ "Line \u5c9b\u590f\u4ee4\u65f6", "LINST",
+ "Line \u5C9B\u65F6\u95F4", "LINT"}},
{"Pacific/Kosrae", new String[] {"Kosrae \u65f6\u95f4", "KOST",
- "Kosrae \u590f\u4ee4\u65f6", "KOSST"}},
+ "Kosrae \u590f\u4ee4\u65f6", "KOSST",
+ "Kosrae \u65F6\u95F4", "KOST"}},
{"Pacific/Kwajalein", MHT},
{"Pacific/Majuro", MHT},
{"Pacific/Marquesas", new String[] {"\u9a6c\u514b\u8428\u65af\u65f6\u95f4", "MART",
- "\u9a6c\u514b\u8428\u65af\u590f\u4ee4\u65f6", "MARST"}},
+ "\u9a6c\u514b\u8428\u65af\u590f\u4ee4\u65f6", "MARST",
+ "\u9A6C\u514B\u8428\u65AF\u65F6\u95F4", "MART"}},
{"Pacific/Midway", SAMOA},
{"Pacific/Nauru", new String[] {"\u8bfa\u9c81\u65f6\u95f4", "NRT",
- "\u8bfa\u9c81\u590f\u4ee4\u65f6", "NRST"}},
+ "\u8bfa\u9c81\u590f\u4ee4\u65f6", "NRST",
+ "\u8BFA\u9C81\u65F6\u95F4", "NRT"}},
{"Pacific/Niue", new String[] {"\u7ebd\u5a01\u5c9b\u65f6\u95f4", "NUT",
- "\u7ebd\u5a01\u5c9b\u590f\u4ee4\u65f6", "NUST"}},
+ "\u7ebd\u5a01\u5c9b\u590f\u4ee4\u65f6", "NUST",
+ "\u7EBD\u5A01\u5C9B\u65F6\u95F4", "NUT"}},
{"Pacific/Norfolk", new String[] {"\u8bfa\u798f\u514b\u65f6\u95f4", "NFT",
- "\u8bfa\u798f\u514b\u590f\u4ee4\u65f6", "NFST"}},
+ "\u8bfa\u798f\u514b\u590f\u4ee4\u65f6", "NFST",
+ "\u8BFA\u798F\u514B\u65F6\u95F4", "NFT"}},
{"Pacific/Noumea", new String[] {"\u65b0\u52a0\u52d2\u591a\u5c3c\u4e9a\u65f6\u95f4", "NCT",
- "\u65b0\u52a0\u52d2\u591a\u5c3c\u4e9a\u590f\u4ee4\u65f6", "NCST"}},
+ "\u65b0\u52a0\u52d2\u591a\u5c3c\u4e9a\u590f\u4ee4\u65f6", "NCST",
+ "\u65B0\u52A0\u52D2\u591A\u5C3C\u4E9A\u65F6\u95F4", "NCT"}},
{"Pacific/Pago_Pago", SAMOA},
{"Pacific/Palau", new String[] {"\u5e1b\u7409\u65f6\u95f4", "PWT",
- "\u5e1b\u7409\u590f\u4ee4\u65f6", "PWST"}},
+ "\u5e1b\u7409\u590f\u4ee4\u65f6", "PWST",
+ "\u5E1B\u7409\u65F6\u95F4", "PWT"}},
{"Pacific/Pitcairn", PITCAIRN},
{"Pacific/Pohnpei", PONT},
{"Pacific/Ponape", PONT},
{"Pacific/Port_Moresby", new String[] {"\u5df4\u5e03\u4e9a\u65b0\u51e0\u5185\u4e9a\u65f6\u95f4", "PGT",
- "\u5df4\u5e03\u4e9a\u65b0\u51e0\u5185\u4e9a\u590f\u4ee4\u65f6", "PGST"}},
+ "\u5df4\u5e03\u4e9a\u65b0\u51e0\u5185\u4e9a\u590f\u4ee4\u65f6", "PGST",
+ "\u5DF4\u5E03\u4E9A\u65B0\u51E0\u5185\u4E9A\u65F6\u95F4", "PGT"}},
{"Pacific/Rarotonga", new String[] {"\u5e93\u514b\u7fa4\u5c9b\u65f6\u95f4", "CKT",
- "\u5e93\u514b\u7fa4\u5c9b\u590f\u4ee4\u65f6", "CKHST"}},
+ "\u5e93\u514b\u7fa4\u5c9b\u590f\u4ee4\u65f6", "CKHST",
+ "\u5E93\u514B\u7FA4\u5C9B\u65F6\u95F4", "CKT"}},
{"Pacific/Saipan", ChST},
{"Pacific/Samoa", SAMOA},
{"Pacific/Tahiti", new String[] {"\u5927\u6eaa\u5730\u5c9b\u65f6\u95f4", "TAHT",
- "\u5927\u6eaa\u5730\u5c9b\u590f\u4ee4\u65f6", "TAHST"}},
+ "\u5927\u6eaa\u5730\u5c9b\u590f\u4ee4\u65f6", "TAHST",
+ "\u5927\u6EAA\u5730\u5C9B\u65F6\u95F4", "TAHT"}},
{"Pacific/Tarawa", new String[] {"\u5409\u4f2f\u7279\u7fa4\u5c9b\u65f6\u95f4", "GILT",
- "\u5409\u4f2f\u7279\u7fa4\u5c9b\u590f\u4ee4\u65f6", "GILST"}},
+ "\u5409\u4f2f\u7279\u7fa4\u5c9b\u590f\u4ee4\u65f6", "GILST",
+ "\u5409\u4F2F\u7279\u7FA4\u5C9B\u65F6\u95F4", "GILT"}},
{"Pacific/Tongatapu", new String[] {"\u4e1c\u52a0\u65f6\u95f4", "TOT",
- "\u4e1c\u52a0\u590f\u4ee4\u65f6", "TOST"}},
+ "\u4e1c\u52a0\u590f\u4ee4\u65f6", "TOST",
+ "\u4E1C\u52A0\u65F6\u95F4", "TOT"}},
{"Pacific/Truk", CHUT},
{"Pacific/Wake", new String[] {"\u5a01\u514b\u65f6\u95f4", "WAKT",
- "\u5a01\u514b\u590f\u4ee4\u65f6", "WAKST"}},
+ "\u5a01\u514b\u590f\u4ee4\u65f6", "WAKST",
+ "\u5A01\u514B\u65F6\u95F4", "WAKT"}},
{"Pacific/Wallis", new String[] {"\u74e6\u5229\u65af\u53ca\u798f\u675c\u7eb3\u7fa4\u5c9b\u65f6\u95f4", "WFT",
- "\u74e6\u5229\u65af\u53ca\u798f\u675c\u7eb3\u7fa4\u5c9b\u590f\u4ee4\u65f6", "WFST"}},
+ "\u74e6\u5229\u65af\u53ca\u798f\u675c\u7eb3\u7fa4\u5c9b\u590f\u4ee4\u65f6", "WFST",
+ "\u74E6\u5229\u65AF\u53CA\u798F\u675C\u7EB3\u7FA4\u5C9B\u65F6\u95F4", "WFT"}},
{"Pacific/Yap", CHUT},
{"Poland", CET},
{"PRC", CTT},
--- a/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_TW.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/classes/sun/util/resources/zh/TimeZoneNames_zh_TW.java Wed Jul 05 19:27:58 2017 +0200
@@ -46,159 +46,235 @@
protected final Object[][] getContents() {
String ACT[] = new String[] {"Acre \u6642\u9593", "ACT",
- "Acre \u590f\u4ee4\u6642\u9593", "ACST"};
+ "Acre \u590f\u4ee4\u6642\u9593", "ACST",
+ "Acre \u6642\u9593", "ACT"};
String ADELAIDE[] = new String[] {"\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8)", "CST",
- "\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340)", "CST"};
+ "\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340)", "CST",
+ "\u4E2D\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8)", "CT"};
String AGT[] = new String[] {"\u963f\u6839\u5ef7\u6642\u9593", "ART",
- "\u963f\u6839\u5ef7\u590f\u4ee4\u6642\u9593", "ARST"};
+ "\u963f\u6839\u5ef7\u590f\u4ee4\u6642\u9593", "ARST",
+ "\u963F\u6839\u5EF7\u6642\u9593", "ART"};
String AKST[] = new String[] {"\u963f\u62c9\u65af\u52a0\u6a19\u6e96\u6642\u9593", "AKST",
- "\u963f\u62c9\u65af\u52a0\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "AKDT"};
+ "\u963f\u62c9\u65af\u52a0\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "AKDT",
+ "\u963F\u62C9\u65AF\u52A0\u6642\u9593", "AKT"};
String AMT[] = new String[] {"\u4e9e\u99ac\u905c\u6642\u9593", "AMT",
- "\u4e9e\u99ac\u905c\u590f\u4ee4\u6642\u9593", "AMST"};
+ "\u4e9e\u99ac\u905c\u590f\u4ee4\u6642\u9593", "AMST",
+ "\u4E9E\u99AC\u905C\u6642\u9593", "AMT"};
String ARAST[] = new String[] {"\u963f\u62c9\u4f2f\u6a19\u6e96\u6642\u9593", "AST",
- "\u963f\u62c9\u4f2f\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "ADT"};
+ "\u963f\u62c9\u4f2f\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "ADT",
+ "\u963F\u62C9\u4F2F\u6642\u9593", "AT"};
String ARMT[] = new String[] {"\u4e9e\u7f8e\u5c3c\u4e9e\u6642\u9593", "AMT",
- "\u4e9e\u7f8e\u5c3c\u4e9e\u590f\u4ee4\u6642\u9593", "AMST"};
+ "\u4e9e\u7f8e\u5c3c\u4e9e\u590f\u4ee4\u6642\u9593", "AMST",
+ "\u4E9E\u7F8E\u5C3C\u4E9E\u6642\u9593", "AMT"};
String AST[] = new String[] {"\u5927\u897f\u6d0b\u6a19\u6e96\u6642\u9593", "AST",
- "\u5927\u897f\u6d0b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "ADT"};
+ "\u5927\u897f\u6d0b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "ADT",
+ "\u5927\u897F\u6D0B\u6642\u9593", "AT"};
String BDT[] = new String[] {"\u5b5f\u52a0\u62c9\u6642\u9593", "BDT",
- "\u5b5f\u52a0\u62c9\u590f\u4ee4\u6642\u9593", "BDST"};
+ "\u5b5f\u52a0\u62c9\u590f\u4ee4\u6642\u9593", "BDST",
+ "\u5B5F\u52A0\u62C9\u6642\u9593", "BDT"};
String BRISBANE[] = new String[] {"\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u6606\u58EB\u862D)", "EST",
- "\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u6606\u58EB\u862D)", "EST"};
+ "\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u6606\u58EB\u862D)", "EST",
+ "\u6771\u90E8\u6642\u9593 (\u6606\u58EB\u862D)", "ET"};
String BROKEN_HILL[] = new String[] {"\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340/\u65B0\u5357\u5A01\u723E\u65AF)", "CST",
- "\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340/\u65B0\u5357\u5A01\u723E\u65AF)", "CST"};
+ "\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340/\u65B0\u5357\u5A01\u723E\u65AF)", "CST",
+ "\u4E2D\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8/\u65B0\u5357\u5A01\u723E\u65AF)", "CT"};
String BRT[] = new String[] {"\u5df4\u897f\u5229\u4e9e\u6642\u9593", "BRT",
- "\u5df4\u897f\u5229\u4e9e\u590f\u4ee4\u6642\u9593", "BRST"};
+ "\u5df4\u897f\u5229\u4e9e\u590f\u4ee4\u6642\u9593", "BRST",
+ "\u5DF4\u897F\u5229\u4E9E\u6642\u9593", "BRT"};
String BTT[] = new String[] {"\u4e0d\u4e39\u6642\u9593", "BTT",
- "\u4e0d\u4e39\u590f\u4ee4\u6642\u9593", "BTST"};
+ "\u4e0d\u4e39\u590f\u4ee4\u6642\u9593", "BTST",
+ "\u4E0D\u4E39\u6642\u9593", "BTT"};
String CAT[] = new String[] {"\u4e2d\u975e\u6642\u9593", "CAT",
- "\u4e2d\u975e\u590f\u4ee4\u6642\u9593", "CAST"};
+ "\u4e2d\u975e\u590f\u4ee4\u6642\u9593", "CAST",
+ "\u4E2D\u975E\u6642\u9593", "CAT"};
String CET[] = new String[] {"\u4e2d\u6b50\u6642\u9593", "CET",
- "\u4e2d\u6b50\u590f\u4ee4\u6642\u9593", "CEST"};
+ "\u4e2d\u6b50\u590f\u4ee4\u6642\u9593", "CEST",
+ "\u4E2D\u6B50\u6642\u9593", "CET"};
String CHAST[] = new String[] {"\u67e5\u5766\u6a19\u6e96\u6642\u9593", "CHAST",
- "\u67e5\u5766\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "CHADT"};
+ "\u67e5\u5766\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "CHADT",
+ "\u67E5\u5766\u6642\u9593", "CHAT"};
String CHUT[] = new String[] {"\u695A\u514B\u6642\u9593", "CHUT",
- "\u695A\u514B\u590F\u4EE4\u6642\u9593", "CHUST"};
+ "\u695A\u514B\u590F\u4EE4\u6642\u9593", "CHUST",
+ "\u695A\u514B\u6642\u9593", "CHUT"};
String CIT[] = new String[] {"\u4e2d\u5370\u5ea6\u5c3c\u897f\u4e9e\u6642\u9593", "WITA",
- "\u4e2d\u5370\u5ea6\u5c3c\u897f\u4e9e\u590f\u4ee4\u6642\u9593", "CIST"};
+ "\u4e2d\u5370\u5ea6\u5c3c\u897f\u4e9e\u590f\u4ee4\u6642\u9593", "CIST",
+ "\u4E2D\u5370\u5EA6\u5C3C\u897F\u4E9E\u6642\u9593", "WITA"};
String CLT[] = new String[] {"\u667a\u5229\u6642\u9593", "CLT",
- "\u667a\u5229\u590f\u4ee4\u6642\u9593", "CLST"};
+ "\u667a\u5229\u590f\u4ee4\u6642\u9593", "CLST",
+ "\u667A\u5229\u6642\u9593", "CLT"};
String CST[] = new String[] {"\u4e2d\u592e\u6a19\u6e96\u6642\u9593", "CST",
- "\u4e2d\u592e\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "CDT"};
+ "\u4e2d\u592e\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "CDT",
+ "\u7F8E\u570B\u4E2D\u90E8\u6642\u9593", "CT"};
String CTT[] = new String[] {"\u4e2d\u570b\u6a19\u6e96\u6642\u9593", "CST",
- "\u4e2d\u570b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "CDT"};
+ "\u4e2d\u570b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "CDT",
+ "\u4E2D\u570B\u6642\u9593", "CT"};
String CUBA[] = new String[] {"\u53e4\u5df4\u6a19\u6e96\u6642\u9593", "CST",
- "\u53e4\u5df4\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "CDT"};
+ "\u53e4\u5df4\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "CDT",
+ "\u53E4\u5DF4\u6642\u9593", "CT"};
String DARWIN[] = new String[] {"\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u5317\u90E8\u5404\u5730\u5340)", "CST",
- "\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u5317\u90E8\u5404\u5730\u5340)", "CST"};
+ "\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u5317\u90E8\u5404\u5730\u5340)", "CST",
+ "\u6FB3\u5927\u5229\u4E9E\u4E2D\u90E8\u6642\u9593 (\u5317\u65B9\u5340\u57DF)", "CT"};
String DUBLIN[] = new String[] {"\u683c\u6797\u5a01\u6cbb\u5e73\u5747\u6642\u9593", "GMT",
- "\u611b\u723e\u862d\u590f\u4ee4\u6642\u9593", "IST"};
+ "\u611b\u723e\u862d\u590f\u4ee4\u6642\u9593", "IST",
+ "\u611B\u723E\u862D\u6587\u6642\u9593", "IT"};
String EAT[] = new String[] {"\u6771\u975e\u6642\u9593", "EAT",
- "\u6771\u975e\u590f\u4ee4\u6642\u9593", "EAST"};
+ "\u6771\u975e\u590f\u4ee4\u6642\u9593", "EAST",
+ "\u6771\u975E\u6642\u9593", "EAT"};
String EASTER[] = new String[] {"\u5fa9\u6d3b\u5cf6\u6642\u9593", "EAST",
- "\u5fa9\u6d3b\u5cf6\u590f\u4ee4\u6642\u9593", "EASST"};
+ "\u5fa9\u6d3b\u5cf6\u590f\u4ee4\u6642\u9593", "EASST",
+ "\u5FA9\u6D3B\u5CF6\u6642\u9593", "EAST"};
String EET[] = new String[] {"\u6771\u6b50\u6642\u9593", "EET",
- "\u6771\u6b50\u590f\u4ee4\u6642\u9593", "EEST"};
+ "\u6771\u6b50\u590f\u4ee4\u6642\u9593", "EEST",
+ "\u6771\u6b50\u6642\u9593", "EET"};
String EGT[] = new String[] {"\u6771\u683c\u6797\u5cf6\u6642\u9593", "EGT",
- "\u6771\u683c\u6797\u5cf6\u590f\u4ee4\u6642\u9593", "EGST"};
+ "\u6771\u683c\u6797\u5cf6\u590f\u4ee4\u6642\u9593", "EGST",
+ "\u6771\u683C\u9675\u862D\u6642\u9593", "EGT"};
String EST[] = new String[] {"\u6771\u65b9\u6a19\u6e96\u6642\u9593", "EST",
- "\u6771\u65b9\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "EDT"};
+ "\u6771\u65b9\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "EDT",
+ "\u7F8E\u570B\u6771\u90E8\u6642\u9593", "ET"};
String EST_NSW[] = new String[] {"\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)", "EST",
- "\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)", "EST"};
+ "\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)", "EST",
+ "\u6771\u90E8\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)", "ET"};
String FET[] = new String[] {"\u6771\u6B50\u5167\u9678\u6642\u9593", "FET",
- "\u6771\u6B50\u5167\u9678\u590F\u4EE4\u6642\u9593", "FEST"};
+ "\u6771\u6B50\u5167\u9678\u590F\u4EE4\u6642\u9593", "FEST",
+ "\u6771\u6B50\u5167\u9678\u6642\u9593", "FET"};
String GHMT[] = new String[] {"\u8fe6\u7d0d\u5e73\u5747\u6642\u9593", "GMT",
- "\u8fe6\u7d0d\u590f\u4ee4\u6642\u9593", "GHST"};
+ "\u8fe6\u7d0d\u590f\u4ee4\u6642\u9593", "GHST",
+ "\u8FE6\u7D0D\u6642\u9593", "GMT"};
String GAMBIER[] = new String[] {"\u7518\u6bd4\u723e\u6642\u9593", "GAMT",
- "\u7518\u6bd4\u723e\u590f\u4ee4\u6642\u9593", "GAMST"};
+ "\u7518\u6bd4\u723e\u590f\u4ee4\u6642\u9593", "GAMST",
+ "\u7518\u6BD4\u723E\u6642\u9593", "GAMT"};
String GMT[] = new String[] {"\u683c\u6797\u5a01\u6cbb\u6642\u9593", "GMT",
- "\u683c\u6797\u5a01\u6cbb\u6642\u9593", "GMT"};
+ "\u683c\u6797\u5a01\u6cbb\u6642\u9593", "GMT",
+ "\u683C\u6797\u5A01\u6CBB\u6642\u9593", "GMT"};
String GMTBST[] = new String[] {"\u683c\u6797\u5a01\u6cbb\u5e73\u5747\u6642\u9593", "GMT",
- "\u82f1\u570b\u590f\u4ee4\u6642\u9593", "BST"};
+ "\u82f1\u570b\u590f\u4ee4\u6642\u9593", "BST",
+ "\u82F1\u570B\u6642\u9593", "BT"};
String GST[] = new String[] {"\u6ce2\u65af\u7063\u6a19\u6e96\u6642\u9593", "GST",
- "\u6ce2\u65af\u7063\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "GDT"};
+ "\u6ce2\u65af\u7063\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "GDT",
+ "\u6CE2\u65AF\u7063\u6642\u9593", "GT"};
String HAST[] = new String[] {"\u590f\u5a01\u5937-\u963f\u7559\u7533\u7fa4\u5cf6\u6a19\u6e96\u6642\u9593", "HAST",
- "\u590f\u5a01\u5937-\u963f\u7559\u7533\u7fa4\u5cf6\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "HADT"};
+ "\u590f\u5a01\u5937-\u963f\u7559\u7533\u7fa4\u5cf6\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "HADT",
+ "\u590F\u5A01\u5937-\u963F\u7559\u7533\u6642\u9593", "HAT"};
String HKT[] = new String[] {"\u9999\u6e2f\u6642\u9593", "HKT",
- "\u9999\u6e2f\u590f\u4ee4\u6642\u9593", "HKST"};
+ "\u9999\u6e2f\u590f\u4ee4\u6642\u9593", "HKST",
+ "\u9999\u6E2F\u6642\u9593", "HKT"};
String HST[] = new String[] {"\u590f\u5a01\u5937\u6a19\u6e96\u6642\u9593", "HST",
- "\u590f\u5a01\u5937\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "HDT"};
+ "\u590f\u5a01\u5937\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "HDT",
+ "\u590F\u5A01\u5937\u6642\u9593", "HT"};
String ICT[] = new String[] {"\u5370\u5ea6\u652f\u90a3\u6642\u9593", "ICT",
- "\u5370\u5ea6\u652f\u90a3\u590f\u4ee4\u6642\u9593", "ICST"};
+ "\u5370\u5ea6\u652f\u90a3\u590f\u4ee4\u6642\u9593", "ICST",
+ "\u5370\u5EA6\u652F\u90A3\u6642\u9593", "ICT"};
String IRT[] = new String[] {"\u4f0a\u6717\u6a19\u6e96\u6642\u9593", "IRST",
- "\u4f0a\u6717\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "IRDT"};
+ "\u4f0a\u6717\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "IRDT",
+ "\u4F0A\u6717\u6642\u9593", "IRT"};
String ISRAEL[] = new String[] {"\u4ee5\u8272\u5217\u6a19\u6e96\u6642\u9593", "IST",
- "\u4ee5\u8272\u5217\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "IDT"};
+ "\u4ee5\u8272\u5217\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "IDT",
+ "\u4EE5\u8272\u5217\u6642\u9593", "IT"};
String IST[] = new String[] {"\u5370\u5ea6\u6a19\u6e96\u6642\u9593", "IST",
- "\u5370\u5ea6\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "IDT"};
+ "\u5370\u5ea6\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "IDT",
+ "\u5370\u5EA6\u6642\u9593", "IT"};
String JST[] = new String[] {"\u65e5\u672c\u6a19\u6e96\u6642\u9593", "JST",
- "\u65e5\u672c\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "JDT"};
+ "\u65e5\u672c\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "JDT",
+ "\u65E5\u672C\u6642\u9593", "JT"};
String KST[] = new String[] {"\u97d3\u570b\u6a19\u6e96\u6642\u9593", "KST",
- "\u97d3\u570b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "KDT"};
+ "\u97d3\u570b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "KDT",
+ "\u97D3\u570B\u6642\u9593", "KT"};
String LORD_HOWE[] = new String[] {"\u8c6a\u52f3\u7235\u5cf6\u6a19\u6e96\u6642\u9593", "LHST",
- "\u8c6a\u52f3\u7235\u5cf6\u590f\u4ee4\u6642\u9593", "LHST"};
+ "\u8c6a\u52f3\u7235\u5cf6\u590f\u4ee4\u6642\u9593", "LHST",
+ "\u8C6A\u52F3\u7235\u5CF6\u6642\u9593", "LHT"};
String MHT[] = new String[] {"\u99ac\u7d39\u723e\u7fa4\u5cf6\u6642\u9593", "MHT",
- "\u99ac\u7d39\u723e\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "MHST"};
+ "\u99ac\u7d39\u723e\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "MHST",
+ "\u99AC\u7D39\u723E\u7FA4\u5CF6\u6642\u9593", "MHT"};
String MSK[] = new String[] {"\u83ab\u65af\u79d1\u6a19\u6e96\u6642\u9593", "MSK",
- "\u83ab\u65af\u79d1\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "MSD"};
+ "\u83ab\u65af\u79d1\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "MSD",
+ "\u83AB\u65AF\u79D1\u6642\u9593", "MT"};
String MST[] = new String[] {"\u5c71\u5340\u6a19\u6e96\u6642\u9593", "MST",
- "\u5c71\u5340\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "MDT"};
+ "\u5c71\u5340\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "MDT",
+ "\u7F8E\u570B\u5C71\u5340\u6642\u9593", "MT"};
String MYT[] = new String[] {"\u99ac\u4f86\u897f\u4e9e\u6642\u9593", "MYT",
- "\u99ac\u4f86\u897f\u4e9e\u590f\u4ee4\u6642\u9593", "MYST"};
+ "\u99ac\u4f86\u897f\u4e9e\u590f\u4ee4\u6642\u9593", "MYST",
+ "\u99AC\u4F86\u897F\u4E9E\u6642\u9593", "MYT"};
String NORONHA[] = new String[] {"\u8cbb\u723e\u5357\u591a-\u8fea\u8afe\u7f85\u5c3c\u4e9e\u6642\u9593", "FNT",
- "\u8cbb\u723e\u5357\u591a-\u8fea\u8afe\u7f85\u5c3c\u4e9e\u590f\u4ee4\u6642\u9593", "FNST"};
+ "\u8cbb\u723e\u5357\u591a-\u8fea\u8afe\u7f85\u5c3c\u4e9e\u590f\u4ee4\u6642\u9593", "FNST",
+ "\u8CBB\u723E\u5357\u591A-\u8FEA\u8AFE\u7F85\u5C3C\u4E9E\u6642\u9593", "FNT"};
String NOVT[] = new String[] {"Novosibirsk \u6642\u9593", "NOVT",
- "Novosibirsk \u590f\u4ee4\u6642\u9593", "NOVST"};
+ "Novosibirsk \u590f\u4ee4\u6642\u9593", "NOVST",
+ "\u65B0\u897F\u4F2F\u5229\u4E9E\u6642\u9593", "NOVT"};
String NPT[] = new String[] {"\u5c3c\u6cca\u723e\u6642\u9593", "NPT",
- "\u5c3c\u6cca\u723e\u590f\u4ee4\u6642\u9593", "NPST"};
+ "\u5c3c\u6cca\u723e\u590f\u4ee4\u6642\u9593", "NPST",
+ "\u5C3C\u6CCA\u723E\u6642\u9593", "NPT"};
String NST[] = new String[] {"\u7d10\u82ac\u862d\u6a19\u6e96\u6642\u9593", "NST",
- "\u7d10\u82ac\u862d\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "NDT"};
+ "\u7d10\u82ac\u862d\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "NDT",
+ "\u7D10\u82AC\u862D\u6642\u9593", "NT"};
String NZST[] = new String[] {"\u7d10\u897f\u862d\u6a19\u6e96\u6642\u9593", "NZST",
- "\u7d10\u897f\u862d\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "NZDT"};
+ "\u7d10\u897f\u862d\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "NZDT",
+ "\u7D10\u897F\u862D\u6642\u9593", "NZT"};
String PITCAIRN[] = new String[] {"\u76ae\u7279\u5eb7\u6a19\u6e96\u6642\u9593", "PST",
- "\u76ae\u7279\u5eb7\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "PDT"};
+ "\u76ae\u7279\u5eb7\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "PDT",
+ "\u76AE\u7279\u5EB7\u6642\u9593", "PT"};
String PKT[] = new String[] {"\u5df4\u57fa\u65af\u5766\u6642\u9593", "PKT",
- "\u5df4\u57fa\u65af\u5766\u590f\u4ee4\u6642\u9593", "PKST"};
+ "\u5df4\u57fa\u65af\u5766\u590f\u4ee4\u6642\u9593", "PKST",
+ "\u5DF4\u57FA\u65AF\u5766\u6642\u9593", "PKT"};
String PONT[] = new String[] {"\u6CE2\u7D0D\u4F69\u6642\u9593", "PONT",
- "\u6CE2\u7D0D\u4F69\u590F\u4EE4\u6642\u9593", "PONST"};
+ "\u6CE2\u7D0D\u4F69\u590F\u4EE4\u6642\u9593", "PONST",
+ "\u6CE2\u7D0D\u4F69\u5CF6\u6642\u9593", "PONT"};
String PST[] = new String[] {"\u592a\u5e73\u6d0b\u6a19\u6e96\u6642\u9593", "PST",
- "\u592a\u5e73\u6d0b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "PDT"};
+ "\u592a\u5e73\u6d0b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "PDT",
+ "\u592A\u5E73\u6D0B\u6642\u9593", "PT"};
String SAST[] = new String[] {"\u5357\u975e\u6a19\u6e96\u6642\u9593", "SAST",
- "\u5357\u975e\u590f\u4ee4\u6642\u9593", "SAST"};
+ "\u5357\u975e\u590f\u4ee4\u6642\u9593", "SAST",
+ "\u5357\u975E\u6642\u9593", "SAT"};
String SBT[] = new String[] {"\u6240\u7f85\u9580\u7fa4\u5cf6\u6642\u9593", "SBT",
- "\u6240\u7f85\u9580\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "SBST"};
+ "\u6240\u7f85\u9580\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "SBST",
+ "\u6240\u7F85\u9580\u7FA4\u5CF6\u6642\u9593", "SBT"};
String SGT[] = new String[] {"\u65b0\u52a0\u5761\u6642\u9593", "SGT",
- "\u65b0\u52a0\u5761\u590f\u4ee4\u6642\u9593", "SGST"};
+ "\u65b0\u52a0\u5761\u590f\u4ee4\u6642\u9593", "SGST",
+ "\u65B0\u52A0\u5761\u6642\u9593", "SGT"};
String SLST[] = new String[] {"\u683c\u6797\u5a01\u6cbb\u5e73\u5747\u6642\u9593", "GMT",
- "\u7345\u5b50\u5c71\u590f\u4ee4\u6642\u9593", "SLST"};
+ "\u7345\u5b50\u5c71\u590f\u4ee4\u6642\u9593", "SLST",
+ "\u7345\u5B50\u5C71\u6642\u9593", "SLT"};
String TASMANIA[] = new String[] {"\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u5854\u65AF\u6885\u5C3C\u4E9E\u5CF6)", "EST",
- "\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u5854\u65AF\u6885\u5C3C\u4E9E\u5CF6)", "EST"};
+ "\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u5854\u65AF\u6885\u5C3C\u4E9E\u5CF6)", "EST",
+ "\u6FB3\u5927\u5229\u4E9E\u6771\u90E8\u6642\u9593 (\u5854\u65AF\u99AC\u5C3C\u4E9E\u5CF6)", "ET"};
String TMT[] = new String[] {"\u571f\u5eab\u66fc\u6642\u9593", "TMT",
- "\u571f\u5eab\u66fc\u590f\u4ee4\u6642\u9593", "TMST"};
+ "\u571f\u5eab\u66fc\u590f\u4ee4\u6642\u9593", "TMST",
+ "\u571F\u5EAB\u66FC\u6642\u9593", "TMT"};
String ULAT[]= new String[] {"\u5eab\u502b\u6642\u9593", "ULAT",
- "\u5eab\u502b\u590f\u4ee4\u6642\u9593", "ULAST"};
+ "\u5eab\u502b\u590f\u4ee4\u6642\u9593", "ULAST",
+ "\u5EAB\u502B\u6642\u9593", "ULAT"};
String WART[] = new String[] {"\u897f\u963f\u6839\u5ef7\u6642\u9593", "WART",
"\u897f\u963f\u6839\u5ef7\u590f\u4ee4\u6642\u9593", "WARST"};
String WAT[] = new String[] {"\u897f\u975e\u6642\u9593", "WAT",
- "\u897f\u975e\u590f\u4ee4\u6642\u9593", "WAST"};
+ "\u897f\u975e\u590f\u4ee4\u6642\u9593", "WAST",
+ "\u897F\u975E\u6642\u9593", "WAT"};
String WET[] = new String[] {"\u897f\u6b50\u6642\u9593", "WET",
- "\u897f\u6b50\u590f\u4ee4\u6642\u9593", "WEST"};
+ "\u897f\u6b50\u590f\u4ee4\u6642\u9593", "WEST",
+ "\u897F\u6B50\u6642\u9593", "WET"};
String WIT[] = new String[] {"\u897f\u5370\u5c3c\u6642\u9593", "WIB",
- "\u897f\u5370\u5c3c\u590f\u4ee4\u6642\u9593", "WIST"};
+ "\u897f\u5370\u5c3c\u590f\u4ee4\u6642\u9593", "WIST",
+ "\u897F\u5370\u5C3C\u6642\u9593", "WIB"};
String WST_AUS[] = new String[] {"\u897F\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)", "WST",
- "\u897F\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)", "WST"};
+ "\u897F\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)", "WST",
+ "\u897F\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)", "WT"};
String SAMOA[] = new String[] {"\u85a9\u6469\u4e9e\u6a19\u6e96\u6642\u9593", "SST",
- "\u85a9\u6469\u4e9e\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "SDT"};
+ "\u85a9\u6469\u4e9e\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "SDT",
+ "\u85A9\u6469\u4E9E\u6642\u9593", "ST"};
String WST_SAMOA[] = new String[] {"\u897f\u85a9\u6469\u4e9e\u6642\u9593", "WST",
- "\u897f\u85a9\u6469\u4e9e\u590f\u4ee4\u6642\u9593", "WSDT"};
+ "\u897f\u85a9\u6469\u4e9e\u590f\u4ee4\u6642\u9593", "WSDT",
+ "\u897F\u85A9\u6469\u4E9E\u6642\u9593", "WST"};
String ChST[] = new String[] {"\u67e5\u83ab\u6d1b\u6a19\u6e96\u6642\u9593", "ChST",
- "\u67e5\u83ab\u6d1b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "ChDT"};
+ "\u67e5\u83ab\u6d1b\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "ChDT",
+ "\u67E5\u83AB\u7F85\u6642\u9593", "ChT"};
String VICTORIA[] = new String[] {"\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E\u90A6)", "EST",
- "\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E\u90A6)", "EST"};
+ "\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E\u90A6)", "EST",
+ "\u6771\u90E8\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E)", "ET"};
String UTC[] = new String[] {"\u5354\u8abf\u4e16\u754c\u6642\u9593", "UTC",
- "\u5354\u8abf\u4e16\u754c\u6642\u9593", "UTC"};
+ "\u5354\u8abf\u4e16\u754c\u6642\u9593", "UTC",
+ "\u5354\u8ABF\u4E16\u754C\u6642\u9593", "UTC"};
String UZT[] = new String[] {"\u70cf\u8332\u5225\u514b\u65af\u5766\u6642\u9593", "UZT",
- "\u70cf\u8332\u5225\u514b\u65af\u5766\u590f\u4ee4\u6642\u9593", "UZST"};
+ "\u70cf\u8332\u5225\u514b\u65af\u5766\u590f\u4ee4\u6642\u9593", "UZST",
+ "\u70CF\u8332\u5225\u514B\u65AF\u5766\u6642\u9593", "UZT"};
return new Object[][] {
{"America/Los_Angeles", PST},
@@ -311,7 +387,8 @@
{"America/Argentina/Ushuaia", AGT},
{"America/Aruba", AST},
{"America/Asuncion", new String[] {"\u5df4\u62c9\u572d\u6642\u9593", "PYT",
- "\u5df4\u62c9\u572d\u590f\u4ee4\u6642\u9593", "PYST"}},
+ "\u5df4\u62c9\u572d\u590f\u4ee4\u6642\u9593", "PYST",
+ "\u5DF4\u62C9\u572D\u6642\u9593", "PYT"}},
{"America/Atikokan", EST},
{"America/Atka", HAST},
{"America/Bahia", BRT},
@@ -322,17 +399,20 @@
{"America/Blanc-Sablon", AST},
{"America/Boa_Vista", AMT},
{"America/Bogota", new String[] {"\u54e5\u502b\u6bd4\u4e9e\u6642\u9593", "COT",
- "\u54e5\u502b\u6bd4\u4e9e\u590f\u4ee4\u6642\u9593", "COST"}},
+ "\u54e5\u502b\u6bd4\u4e9e\u590f\u4ee4\u6642\u9593", "COST",
+ "\u54E5\u502B\u6BD4\u4E9E\u6642\u9593", "COT"}},
{"America/Boise", MST},
{"America/Buenos_Aires", AGT},
{"America/Cambridge_Bay", MST},
{"America/Campo_Grande", AMT},
{"America/Cancun", CST},
{"America/Caracas", new String[] {"\u59d4\u5167\u745e\u62c9\u6642\u9593", "VET",
- "\u59d4\u5167\u745e\u62c9\u590f\u4ee4\u6642\u9593", "VEST"}},
+ "\u59d4\u5167\u745e\u62c9\u590f\u4ee4\u6642\u9593", "VEST",
+ "\u59D4\u5167\u745E\u62C9\u6642\u9593", "VET"}},
{"America/Catamarca", AGT},
{"America/Cayenne", new String[] {"\u6cd5\u5c6c\u572d\u4e9e\u90a3\u6642\u9593", "GFT",
- "\u6cd5\u5c6c\u572d\u4e9e\u90a3\u590f\u4ee4\u6642\u9593", "GFST"}},
+ "\u6cd5\u5c6c\u572d\u4e9e\u90a3\u590f\u4ee4\u6642\u9593", "GFST",
+ "\u6CD5\u5C6C\u572D\u4E9E\u90A3\u6642\u9593", "GFT"}},
{"America/Cayman", EST},
{"America/Chihuahua", MST},
{"America/Creston", MST},
@@ -354,16 +434,19 @@
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"\u897f\u683c\u6797\u862d\u5cf6\u6642\u9593", "WGT",
- "\u897f\u683c\u6797\u862d\u5cf6\u590f\u4ee4\u6642\u9593", "WGST"}},
+ "\u897f\u683c\u6797\u862d\u5cf6\u590f\u4ee4\u6642\u9593", "WGST",
+ "\u897F\u683C\u9675\u862D\u6642\u9593", "WGT"}},
{"America/Goose_Bay", AST},
{"America/Grand_Turk", EST},
{"America/Grenada", AST},
{"America/Guadeloupe", AST},
{"America/Guatemala", CST},
{"America/Guayaquil", new String[] {"\u5384\u74dc\u591a\u723e\u6642\u9593", "ECT",
- "\u5384\u74dc\u591a\u723e\u590f\u4ee4\u6642\u9593", "ECST"}},
+ "\u5384\u74dc\u591a\u723e\u590f\u4ee4\u6642\u9593", "ECST",
+ "\u5384\u74DC\u591A\u723E\u6642\u9593", "ECT"}},
{"America/Guyana", new String[] {"\u84cb\u4e9e\u90a3\u6642\u9593", "GYT",
- "\u84cb\u4e9e\u90a3\u590f\u4ee4\u6642\u9593", "GYST"}},
+ "\u84cb\u4e9e\u90a3\u590f\u4ee4\u6642\u9593", "GYST",
+ "\u84CB\u4E9E\u90A3\u6642\u9593", "GYT"}},
{"America/Havana", CUBA},
{"America/Hermosillo", MST},
{"America/Indiana/Indianapolis", EST},
@@ -384,9 +467,11 @@
{"America/Knox_IN", CST},
{"America/Kralendijk", AST},
{"America/La_Paz", new String[] {"\u73bb\u5229\u7dad\u4e9e\u6642\u9593", "BOT",
- "\u73bb\u5229\u7dad\u4e9e\u590f\u4ee4\u6642\u9593", "BOST"}},
+ "\u73bb\u5229\u7dad\u4e9e\u590f\u4ee4\u6642\u9593", "BOST",
+ "\u73BB\u5229\u7DAD\u4E9E\u6642\u9593", "BOT"}},
{"America/Lima", new String[] {"\u7955\u9b6f\u6642\u9593", "PET",
- "\u7955\u9b6f\u590f\u4ee4\u6642\u9593", "PEST"}},
+ "\u7955\u9b6f\u590f\u4ee4\u6642\u9593", "PEST",
+ "\u7955\u9B6F\u6642\u9593", "PET"}},
{"America/Louisville", EST},
{"America/Lower_Princes", AST},
{"America/Maceio", BRT},
@@ -400,13 +485,16 @@
{"America/Menominee", CST},
{"America/Merida", CST},
{"America/Metlakatla", new String[] {"\u6885\u7279\u62C9\u5361\u7279\u62C9\u6A19\u6E96\u6642\u9593", "MeST",
- "\u6885\u7279\u62C9\u5361\u7279\u62C9\u65E5\u5149\u7BC0\u7D04\u6642\u9593", "MeDT"}},
+ "\u6885\u7279\u62C9\u5361\u7279\u62C9\u65E5\u5149\u7BC0\u7D04\u6642\u9593", "MeDT",
+ "\u6885\u7279\u62C9\u5361\u7279\u62C9\u6642\u9593", "MeT"}},
{"America/Mexico_City", CST},
{"America/Miquelon", new String[] {"\u76ae\u57c3\u723e\u5cf6\u53ca\u5bc6\u514b\u9686\u5cf6\u6a19\u6e96\u6642\u9593", "PMST",
- "\u76ae\u57c3\u723e\u5cf6\u53ca\u5bc6\u514b\u9686\u5cf6\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "PMDT"}},
+ "\u76ae\u57c3\u723e\u5cf6\u53ca\u5bc6\u514b\u9686\u5cf6\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "PMDT",
+ "\u8056\u5F7C\u5FB7\u8207\u5BC6\u555F\u5D19\u6642\u9593", "PMT"}},
{"America/Moncton", AST},
{"America/Montevideo", new String[] {"\u70cf\u62c9\u572d\u6642\u9593", "UYT",
- "\u70cf\u62c9\u572d\u590f\u4ee4\u6642\u9593", "UYST"}},
+ "\u70cf\u62c9\u572d\u590f\u4ee4\u6642\u9593", "UYST",
+ "\u70CF\u62C9\u572D\u6642\u9593", "UYT"}},
{"America/Monterrey", CST},
{"America/Montreal", EST},
{"America/Montserrat", AST},
@@ -421,7 +509,8 @@
{"America/Panama", EST},
{"America/Pangnirtung", EST},
{"America/Paramaribo", new String[] {"\u8607\u5229\u5357\u6642\u9593", "SRT",
- "\u8607\u5229\u5357\u590f\u4ee4\u6642\u9593", "SRST"}},
+ "\u8607\u5229\u5357\u590f\u4ee4\u6642\u9593", "SRST",
+ "\u8607\u5229\u5357\u6642\u9593", "SRT"}},
{"America/Port-au-Prince", EST},
{"America/Port_of_Spain", AST},
{"America/Porto_Acre", ACT},
@@ -461,124 +550,157 @@
{"America/Yellowknife", MST},
{"Antarctica/Casey", WST_AUS},
{"Antarctica/Davis", new String[] {"\u81fa\u7dad\u65af\u6642\u9593", "DAVT",
- "\u81fa\u7dad\u65af\u590f\u4ee4\u6642\u9593", "DAVST"}},
+ "\u81fa\u7dad\u65af\u590f\u4ee4\u6642\u9593", "DAVST",
+ "\u81FA\u7DAD\u65AF\u6642\u9593", "DAVT"}},
{"Antarctica/DumontDUrville", new String[] {"Dumont-d'Urville \u6642\u9593", "DDUT",
- "Dumont-d'Urville \u590f\u4ee4\u6642\u9593", "DDUST"}},
+ "Dumont-d'Urville \u590f\u4ee4\u6642\u9593", "DDUST",
+ "Dumont-d'Urville \u6642\u9593", "DDUT"}},
{"Antarctica/Macquarie", new String[] {"\u9EA5\u5938\u5229\u5CF6\u6642\u9593", "MIST",
- "\u9EA5\u5938\u5229\u5CF6\u590F\u4EE4\u6642\u9593", "MIST"}},
+ "\u9EA5\u5938\u5229\u5CF6\u590F\u4EE4\u6642\u9593", "MIST",
+ "\u9EA5\u5938\u5229\u5CF6\u6642\u9593", "MIST"}},
{"Antarctica/Mawson", new String[] {"\u83ab\u68ee\u6642\u9593", "MAWT",
- "\u83ab\u68ee\u590f\u4ee4\u6642\u9593", "MAWST"}},
+ "\u83ab\u68ee\u590f\u4ee4\u6642\u9593", "MAWST",
+ "\u83AB\u68EE\u6642\u9593", "MAWT"}},
{"Antarctica/McMurdo", NZST},
{"Antarctica/Palmer", CLT},
{"Antarctica/Rothera", new String[] {"\u7f85\u897f\u62c9\u6642\u9593", "ROTT",
- "\u7f85\u897f\u62c9\u590f\u4ee4\u6642\u9593", "ROTST"}},
+ "\u7f85\u897f\u62c9\u590f\u4ee4\u6642\u9593", "ROTST",
+ "\u7F85\u897F\u62C9\u6642\u9593", "ROTT"}},
{"Antarctica/South_Pole", NZST},
{"Antarctica/Syowa", new String[] {"\u5915\u6b50\u74e6 (Syowa) \u6642\u9593", "SYOT",
- "\u5915\u6b50\u74e6 (Syowa) \u590f\u4ee4\u6642\u9593", "SYOST"}},
+ "\u5915\u6b50\u74e6 (Syowa) \u590f\u4ee4\u6642\u9593", "SYOST",
+ "\u5915\u6B50\u74E6 (Syowa) \u6642\u9593", "SYOT"}},
{"Antarctica/Vostok", new String[] {"\u4f5b\u65af\u6258 (Vostok) \u6642\u9593", "VOST",
- "\u4f5b\u65af\u6258 (Vostok) \u590f\u4ee4\u6642\u9593", "VOSST"}},
+ "\u4f5b\u65af\u6258 (Vostok) \u590f\u4ee4\u6642\u9593", "VOSST",
+ "\u4F5B\u65AF\u6258 (Vostok) \u6642\u9593", "VOST"}},
{"Arctic/Longyearbyen", CET},
{"Asia/Aden", ARAST},
{"Asia/Almaty", new String[] {"Alma-Ata \u6642\u9593", "ALMT",
- "Alma-Ata \u590f\u4ee4\u6642\u9593", "ALMST"}},
+ "Alma-Ata \u590f\u4ee4\u6642\u9593", "ALMST",
+ "\u963F\u62C9\u6728\u5716\u6642\u9593", "ALMT"}},
{"Asia/Amman", ARAST},
{"Asia/Anadyr", new String[] {"\u963f\u90a3\u5e95\u6cb3\u6642\u9593", "ANAT",
- "\u963f\u90a3\u5e95\u6cb3\u590f\u4ee4\u6642\u9593", "ANAST"}},
+ "\u963f\u90a3\u5e95\u6cb3\u590f\u4ee4\u6642\u9593", "ANAST",
+ "\u963F\u90A3\u5E95\u6CB3\u6642\u9593", "ANAT"}},
{"Asia/Aqtau", new String[] {"Aqtau \u6642\u9593", "AQTT",
- "Aqtau \u590f\u4ee4\u6642\u9593", "AQTST"}},
+ "Aqtau \u590f\u4ee4\u6642\u9593", "AQTST",
+ "\u963F\u514B\u5957\u6642\u9593", "AQTT"}},
{"Asia/Aqtobe", new String[] {"Aqtobe \u6642\u9593", "AQTT",
- "Aqtobe \u590f\u4ee4\u6642\u9593", "AQTST"}},
+ "Aqtobe \u590f\u4ee4\u6642\u9593", "AQTST",
+ "\u963F\u514B\u6258\u5225\u6642\u9593", "AQTT"}},
{"Asia/Ashgabat", TMT},
{"Asia/Ashkhabad", TMT},
{"Asia/Baghdad", ARAST},
{"Asia/Bahrain", ARAST},
{"Asia/Baku", new String[] {"\u4e9e\u585e\u62dc\u7136\u6642\u9593", "AZT",
- "\u4e9e\u585e\u62dc\u7136\u590f\u4ee4\u6642\u9593", "AZST"}},
+ "\u4e9e\u585e\u62dc\u7136\u590f\u4ee4\u6642\u9593", "AZST",
+ "\u4E9E\u585E\u62DC\u7136\u6642\u9593", "AZT"}},
{"Asia/Bangkok", ICT},
{"Asia/Beirut", EET},
{"Asia/Bishkek", new String[] {"Kirgizstan \u6642\u9593", "KGT",
- "Kirgizstan \u590f\u4ee4\u6642\u9593", "KGST"}},
+ "Kirgizstan \u590f\u4ee4\u6642\u9593", "KGST",
+ "\u5409\u723E\u5409\u65AF\u6642\u9593", "KGT"}},
{"Asia/Brunei", new String[] {"\u6c76\u840a\u6642\u9593", "BNT",
- "\u6c76\u840a\u590f\u4ee4\u6642\u9593", "BNST"}},
+ "\u6c76\u840a\u590f\u4ee4\u6642\u9593", "BNST",
+ "\u6C76\u840A\u6642\u9593", "BNT"}},
{"Asia/Calcutta", IST},
{"Asia/Choibalsan", new String[] {"\u5de7\u5df4\u5c71 (Choibalsan) \u6642\u9593", "CHOT",
- "\u5de7\u5df4\u5c71 (Choibalsan) \u590f\u4ee4\u6642\u9593", "CHOST"}},
+ "\u5de7\u5df4\u5c71 (Choibalsan) \u590f\u4ee4\u6642\u9593", "CHOST",
+ "\u5DE7\u5DF4\u5C71 (Choibalsan) \u6642\u9593", "CHOT"}},
{"Asia/Chongqing", CTT},
{"Asia/Chungking", CTT},
{"Asia/Colombo", IST},
{"Asia/Dacca", BDT},
{"Asia/Dhaka", BDT},
{"Asia/Dili", new String[] {"\u6771\u5e1d\u6c76\u6642\u9593", "TLT",
- "\u6771\u5e1d\u6c76\u590f\u4ee4\u6642\u9593", "TLST"}},
+ "\u6771\u5e1d\u6c76\u590f\u4ee4\u6642\u9593", "TLST",
+ "\u6771\u5E1D\u6C76\u6642\u9593", "TLT"}},
{"Asia/Damascus", EET},
{"Asia/Dubai", GST},
{"Asia/Dushanbe", new String[] {"\u5854\u5409\u514b\u6642\u9593", "TJT",
- "\u5854\u5409\u514b\u590f\u4ee4\u6642\u9593", "TJST"}},
+ "\u5854\u5409\u514b\u590f\u4ee4\u6642\u9593", "TJST",
+ "\u5854\u5409\u514B\u6642\u9593", "TJT"}},
{"Asia/Gaza", EET},
{"Asia/Harbin", CTT},
{"Asia/Hebron", EET},
{"Asia/Ho_Chi_Minh", ICT},
{"Asia/Hong_Kong", HKT},
{"Asia/Hovd", new String[] {"\u4faf\u5fb7 (Hovd) \u6642\u9593", "HOVT",
- "\u4faf\u5fb7 (Hovd) \u590f\u4ee4\u6642\u9593", "HOVST"}},
+ "\u4faf\u5fb7 (Hovd) \u590f\u4ee4\u6642\u9593", "HOVST",
+ "\u4FAF\u5FB7 (Hovd) \u6642\u9593", "HOVT"}},
{"Asia/Irkutsk", new String[] {"Irkutsk \u6642\u9593", "IRKT",
- "Irkutsk \u590f\u4ee4\u6642\u9593", "IRKST"}},
+ "Irkutsk \u590f\u4ee4\u6642\u9593", "IRKST",
+ "\u4F0A\u723E\u5EAB\u6B21\u514B\u6642\u9593", "IRKT"}},
{"Asia/Istanbul", EET},
{"Asia/Jakarta", WIT},
{"Asia/Jayapura", new String[] {"\u6771\u5370\u5ea6\u5c3c\u897f\u4e9e\u6642\u9593", "WIT",
- "\u6771\u5370\u5ea6\u5c3c\u897f\u4e9e\u590f\u65e5\u6642\u9593", "EIST"}},
+ "\u6771\u5370\u5ea6\u5c3c\u897f\u4e9e\u590f\u65e5\u6642\u9593", "EIST",
+ "\u6771\u5370\u5EA6\u5C3C\u897F\u4E9E\u6642\u9593", "WIT"}},
{"Asia/Kabul", new String[] {"\u963f\u5bcc\u6c57\u6642\u9593", "AFT",
- "\u963f\u5bcc\u6c57\u590f\u4ee4\u6642\u9593", "AFST"}},
+ "\u963f\u5bcc\u6c57\u590f\u4ee4\u6642\u9593", "AFST",
+ "\u963F\u5BCC\u6C57\u6642\u9593", "AFT"}},
{"Asia/Kamchatka", new String[] {"Petropavlovsk-Kamchatski \u6642\u9593", "PETT",
- "Petropavlovsk-Kamchatski \u590f\u4ee4\u6642\u9593", "PETST"}},
+ "Petropavlovsk-Kamchatski \u590f\u4ee4\u6642\u9593", "PETST",
+ "Petropavlovsk-Kamchatski \u6642\u9593", "PETT"}},
{"Asia/Karachi", PKT},
{"Asia/Kashgar", CTT},
{"Asia/Kathmandu", NPT},
{"Asia/Katmandu", NPT},
{"Asia/Khandyga", new String[] {"\u6F22\u5730\u52A0 (Khandyga) \u6642\u9593", "YAKT",
- "\u6F22\u5730\u52A0 (Khandyga) \u590F\u4EE4\u6642\u9593", "YAKST"}},
+ "\u6F22\u5730\u52A0 (Khandyga) \u590F\u4EE4\u6642\u9593", "YAKST",
+ "\u6F22\u5730\u52A0 (Khandyga) \u6642\u9593", "YAKT"}},
{"Asia/Kolkata", IST},
{"Asia/Krasnoyarsk", new String[] {"\u514b\u62c9\u65af\u8afe\u4e9e\u723e\u65af\u514b\u6642\u9593", "KRAT",
- "\u514b\u62c9\u65af\u8afe\u4e9e\u723e\u65af\u514b\u590f\u4ee4\u6642\u9593", "KRAST"}},
+ "\u514b\u62c9\u65af\u8afe\u4e9e\u723e\u65af\u514b\u590f\u4ee4\u6642\u9593", "KRAST",
+ "\u514B\u62C9\u65AF\u8AFE\u4E9E\u723E\u65AF\u514B\u6642\u9593", "KRAT"}},
{"Asia/Kuala_Lumpur", MYT},
{"Asia/Kuching", MYT},
{"Asia/Kuwait", ARAST},
{"Asia/Macao", CTT},
{"Asia/Macau", CTT},
{"Asia/Magadan", new String[] {"Magadan \u6642\u9593", "MAGT",
- "Magadan \u590f\u4ee4\u6642\u9593", "MAGST"}},
+ "Magadan \u590f\u4ee4\u6642\u9593", "MAGST",
+ "\u99AC\u52A0\u4E39\u6642\u9593", "MAGT"}},
{"Asia/Makassar", CIT},
{"Asia/Manila", new String[] {"\u83f2\u5f8b\u8cd3\u6642\u9593", "PHT",
- "\u83f2\u5f8b\u8cd3\u590f\u4ee4\u6642\u9593", "PHST"}},
+ "\u83f2\u5f8b\u8cd3\u590f\u4ee4\u6642\u9593", "PHST",
+ "\u83F2\u5F8B\u8CD3\u6642\u9593", "PHT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", NOVT},
{"Asia/Novosibirsk", NOVT},
{"Asia/Oral", new String[] {"\u6b50\u4f5b\u6642\u9593", "ORAT",
- "\u6b50\u4f5b\u590f\u4ee4\u6642\u9593", "ORAST"}},
+ "\u6b50\u4f5b\u590f\u4ee4\u6642\u9593", "ORAST",
+ "\u6B50\u4F5B\u6642\u9593", "ORAT"}},
{"Asia/Omsk", new String[] {"\u6b50\u59c6\u65af\u514b (Omsk) \u6642\u9593", "OMST",
- "\u6b50\u59c6\u65af\u514b (Omsk) \u590f\u4ee4\u6642\u9593", "OMSST"}},
+ "\u6b50\u59c6\u65af\u514b (Omsk) \u590f\u4ee4\u6642\u9593", "OMSST",
+ "\u6B50\u59C6\u65AF\u514B (Omsk) \u6642\u9593", "OMST"}},
{"Asia/Phnom_Penh", ICT},
{"Asia/Pontianak", WIT},
{"Asia/Pyongyang", KST},
{"Asia/Qatar", ARAST},
{"Asia/Qyzylorda", new String[] {"Qyzylorda \u6642\u9593", "QYZT",
- "Qyzylorda \u590f\u4ee4\u6642\u9593", "QYZST"}},
+ "Qyzylorda \u590f\u4ee4\u6642\u9593", "QYZST",
+ "\u514B\u5B5C\u6D1B\u723E\u9054\u6642\u9593", "QYZT"}},
{"Asia/Rangoon", new String[] {"\u7dec\u7538\u6642\u9593", "MMT",
- "\u7dec\u7538\u590f\u4ee4\u6642\u9593", "MMST"}},
+ "\u7dec\u7538\u590f\u4ee4\u6642\u9593", "MMST",
+ "\u7DEC\u7538\u6642\u9593", "MMT"}},
{"Asia/Riyadh", ARAST},
{"Asia/Saigon", ICT},
{"Asia/Sakhalin", new String[] {"\u5eab\u9801\u5cf6\u6642\u9593", "SAKT",
- "\u5eab\u9801\u5cf6\u590f\u4ee4\u6642\u9593", "SAKST"}},
+ "\u5eab\u9801\u5cf6\u590f\u4ee4\u6642\u9593", "SAKST",
+ "\u5EAB\u9801\u5CF6\u6642\u9593", "SAKT"}},
{"Asia/Samarkand", UZT},
{"Asia/Seoul", KST},
{"Asia/Singapore", SGT},
{"Asia/Taipei", new String[] {"\u53f0\u7063\u6a19\u6e96\u6642\u9593", "TST",
- "\u53f0\u7063\u590f\u4ee4\u6642\u9593", "TDT"}},
+ "\u53f0\u7063\u590f\u4ee4\u6642\u9593", "TDT",
+ "\u53f0\u7063\u6642\u9593", "TT"}},
{"Asia/Tel_Aviv", ISRAEL},
{"Asia/Tashkent", UZT},
{"Asia/Tbilisi", new String[] {"\u55ac\u6cbb\u4e9e\u6642\u9593", "GET",
- "\u55ac\u6cbb\u4e9e\u590f\u4ee4\u6642\u9593", "GEST"}},
+ "\u55ac\u6cbb\u4e9e\u590f\u4ee4\u6642\u9593", "GEST",
+ "\u55AC\u6CBB\u4E9E\u6642\u9593", "GET"}},
{"Asia/Tehran", IRT},
{"Asia/Thimbu", BTT},
{"Asia/Thimphu", BTT},
@@ -587,31 +709,39 @@
{"Asia/Ulan_Bator", ULAT},
{"Asia/Urumqi", CTT},
{"Asia/Ust-Nera", new String[] {"\u70CF\u65AF\u5167\u62C9 (Ust-Nera) \u6642\u9593", "VLAT",
- "\u70CF\u65AF\u5167\u62C9 (Ust-Nera) \u590F\u4EE4\u6642\u9593", "VLAST"}},
+ "\u70CF\u65AF\u5167\u62C9 (Ust-Nera) \u590F\u4EE4\u6642\u9593", "VLAST",
+ "\u70CF\u65AF\u5167\u62C9 (Ust-Nera) \u6642\u9593", "VLAT"}},
{"Asia/Vientiane", ICT},
{"Asia/Vladivostok", new String[] {"\u6d77\u53c3\u5d34\u6642\u9593", "VLAT",
- "\u6d77\u53c3\u5d34\u590f\u4ee4\u6642\u9593", "VLAST"}},
+ "\u6d77\u53c3\u5d34\u590f\u4ee4\u6642\u9593", "VLAST",
+ "\u6D77\u53C3\u5D34\u6642\u9593", "VLAT"}},
{"Asia/Yakutsk", new String[] {"\u4e9e\u5eab\u6b21\u514b\u6642\u9593", "YAKT",
- "\u4e9e\u5eab\u6b21\u514b\u590f\u4ee4\u6642\u9593", "YAKST"}},
+ "\u4e9e\u5eab\u6b21\u514b\u590f\u4ee4\u6642\u9593", "YAKST",
+ "\u4E9E\u5EAB\u6B21\u514B\u6642\u9593", "YAKT"}},
{"Asia/Yekaterinburg", new String[] {"Yekaterinburg \u6642\u9593", "YEKT",
- "Yekaterinburg \u590f\u4ee4\u6642\u9593", "YEKST"}},
+ "Yekaterinburg \u590f\u4ee4\u6642\u9593", "YEKST",
+ "\u8449\u5361\u6377\u7433\u5821\u6642\u9593", "YEKT"}},
{"Asia/Yerevan", ARMT},
{"Atlantic/Azores", new String[] {"\u4e9e\u901f\u723e\u7fa4\u5cf6\u6642\u9593", "AZOT",
- "\u4e9e\u901f\u723e\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "AZOST"}},
+ "\u4e9e\u901f\u723e\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "AZOST",
+ "\u4E9E\u901F\u723E\u7FA4\u5CF6\u6642\u9593", "AZOT"}},
{"Atlantic/Bermuda", AST},
{"Atlantic/Canary", WET},
{"Atlantic/Cape_Verde", new String[] {"\u4f5b\u5fb7\u89d2\u6642\u9593", "CVT",
- "\u4f5b\u5fb7\u89d2\u590f\u4ee4\u6642\u9593", "CVST"}},
+ "\u4f5b\u5fb7\u89d2\u590f\u4ee4\u6642\u9593", "CVST",
+ "\u4F5B\u5FB7\u89D2\u6642\u9593", "CVT"}},
{"Atlantic/Faeroe", WET},
{"Atlantic/Faroe", WET},
{"Atlantic/Jan_Mayen", CET},
{"Atlantic/Madeira", WET},
{"Atlantic/Reykjavik", GMT},
{"Atlantic/South_Georgia", new String[] {"\u5357\u55ac\u6cbb\u4e9e\u6a19\u6e96\u6642\u9593", "GST",
- "\u5357\u55ac\u6cbb\u4e9e\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "GDT"}},
+ "\u5357\u55ac\u6cbb\u4e9e\u65e5\u5149\u7bc0\u7d04\u6642\u9593", "GDT",
+ "\u5357\u55AC\u6CBB\u4E9E\u6642\u9593", "GT"}},
{"Atlantic/St_Helena", GMT},
{"Atlantic/Stanley", new String[] {"\u798f\u514b\u862d\u7fa4\u5cf6\u6642\u9593", "FKT",
- "\u798f\u514b\u862d\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "FKST"}},
+ "\u798f\u514b\u862d\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "FKST",
+ "\u798F\u514B\u862D\u7FA4\u5CF6\u6642\u9593", "FKT"}},
{"Australia/ACT", EST_NSW},
{"Australia/Adelaide", ADELAIDE},
{"Australia/Brisbane", BRISBANE},
@@ -620,7 +750,8 @@
{"Australia/Currie", EST_NSW},
{"Australia/Darwin", DARWIN},
{"Australia/Eucla", new String[] {"\u4E2D\u897F\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)", "CWST",
- "\u4E2D\u897F\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)", "CWST"}},
+ "\u4E2D\u897F\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)", "CWST",
+ "\u4E2D\u897F\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)", "CWT"}},
{"Australia/Hobart", TASMANIA},
{"Australia/LHI", LORD_HOWE},
{"Australia/Lindeman", BRISBANE},
@@ -705,7 +836,8 @@
{"Europe/Riga", EET},
{"Europe/Rome", CET},
{"Europe/Samara", new String[] {"\u6c99\u99ac\u62c9\u6642\u9593", "SAMT",
- "\u6c99\u99ac\u62c9\u590f\u4ee4\u6642\u9593", "SAMST"}},
+ "\u6c99\u99ac\u62c9\u590f\u4ee4\u6642\u9593", "SAMST",
+ "\u6C99\u99AC\u62C9\u6642\u9593", "SAMT"}},
{"Europe/San_Marino", CET},
{"Europe/Sarajevo", CET},
{"Europe/Simferopol", EET},
@@ -721,7 +853,8 @@
{"Europe/Vienna", CET},
{"Europe/Vilnius", EET},
{"Europe/Volgograd", new String[] {"\u4f0f\u723e\u52a0\u683c\u52d2\u6642\u9593", "VOLT",
- "\u4f0f\u723e\u52a0\u683c\u52d2\u590f\u4ee4\u6642\u9593", "VOLST"}},
+ "\u4f0f\u723e\u52a0\u683c\u52d2\u590f\u4ee4\u6642\u9593", "VOLST",
+ "\u4F0F\u723E\u52A0\u683C\u52D2\u6642\u9593", "VOLT"}},
{"Europe/Warsaw", CET},
{"Europe/Zagreb", CET},
{"Europe/Zaporozhye", EET},
@@ -735,30 +868,39 @@
{"IST", IST},
{"Indian/Antananarivo", EAT},
{"Indian/Chagos", new String[] {"\u5370\u5ea6\u6d0b\u5730\u5340\u6642\u9593", "IOT",
- "\u5370\u5ea6\u6d0b\u5730\u5340\u590f\u4ee4\u6642\u9593", "IOST"}},
+ "\u5370\u5ea6\u6d0b\u5730\u5340\u590f\u4ee4\u6642\u9593", "IOST",
+ "\u82F1\u5C6C\u5370\u5EA6\u6D0B\u5730\u5340", "IOT"}},
{"Indian/Christmas", new String[] {"\u8056\u8a95\u5cf6\u6642\u9593", "CXT",
- "\u8056\u8a95\u5cf6\u590f\u4ee4\u6642\u9593", "CXST"}},
+ "\u8056\u8a95\u5cf6\u590f\u4ee4\u6642\u9593", "CXST",
+ "\u8056\u8A95\u5CF6\u6642\u9593", "CIT"}},
{"Indian/Cocos", new String[] {"\u53ef\u53ef\u65af\u7fa4\u5cf6\u6642\u9593", "CCT",
- "\u53ef\u53ef\u65af\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "CCST"}},
+ "\u53ef\u53ef\u65af\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "CCST",
+ "\u53EF\u53EF\u65AF\u7FA4\u5CF6\u6642\u9593", "CCT"}},
{"Indian/Comoro", EAT},
{"Indian/Kerguelen", new String[] {"\u6cd5\u570b\u5357\u534a\u7403\u53ca\u5357\u6975\u5c6c\u5730\u6642\u9593", "TFT",
- "\u6cd5\u570b\u5357\u534a\u7403\u53ca\u5357\u6975\u5c6c\u5730\u590f\u4ee4\u6642\u9593", "TFST"}},
+ "\u6cd5\u570b\u5357\u534a\u7403\u53ca\u5357\u6975\u5c6c\u5730\u590f\u4ee4\u6642\u9593", "TFST",
+ "\u6CD5\u570B\u5357\u534A\u7403\u53CA\u5357\u6975\u5C6C\u5730\u6642\u9593", "TFT"}},
{"Indian/Mahe", new String[] {"\u585e\u5e2d\u723e\u7fa4\u5cf6\u6642\u9593", "SCT",
- "\u585e\u5e2d\u723e\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "SCST"}},
+ "\u585e\u5e2d\u723e\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "SCST",
+ "\u585E\u5E2D\u723E\u7FA4\u5CF6\u6642\u9593", "SCT"}},
{"Indian/Maldives", new String[] {"\u99ac\u723e\u5730\u592b\u6642\u9593", "MVT",
- "\u99ac\u723e\u5730\u592b\u590f\u4ee4\u6642\u9593", "MVST"}},
+ "\u99ac\u723e\u5730\u592b\u590f\u4ee4\u6642\u9593", "MVST",
+ "\u99AC\u723E\u5730\u592B\u6642\u9593", "MVT"}},
{"Indian/Mauritius", new String[] {"\u6469\u91cc\u897f\u65af\u6642\u9593", "MUT",
- "\u6469\u91cc\u897f\u65af\u590f\u4ee4\u6642\u9593", "MUST"}},
+ "\u6469\u91cc\u897f\u65af\u590f\u4ee4\u6642\u9593", "MUST",
+ "\u6469\u91CC\u897F\u65AF\u6642\u9593", "MUT"}},
{"Indian/Mayotte", EAT},
{"Indian/Reunion", new String[] {"\u7559\u5c3c\u65fa\u5cf6\u6642\u9593", "RET",
- "\u7559\u5c3c\u65fa\u5cf6\u590f\u4ee4\u6642\u9593", "REST"}},
+ "\u7559\u5c3c\u65fa\u5cf6\u590f\u4ee4\u6642\u9593", "REST",
+ "\u7559\u5C3C\u65FA\u5CF6\u6642\u9593", "RET"}},
{"Israel", ISRAEL},
{"Jamaica", EST},
{"Japan", JST},
{"Kwajalein", MHT},
{"Libya", EET},
{"MET", new String[] {"\u4e2d\u6b50\u6642\u9593", "MET",
- "\u4e2d\u6b50\u590f\u4ee4\u6642\u9593", "MEST"}},
+ "\u4e2d\u6b50\u590f\u4ee4\u6642\u9593", "MEST",
+ "MET", "MET"}},
{"Mexico/BajaNorte", PST},
{"Mexico/BajaSur", MST},
{"Mexico/General", CST},
@@ -778,61 +920,82 @@
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
{"Pacific/Efate", new String[] {"\u74e6\u5974\u963f\u5716\u6642\u9593", "VUT",
- "\u74e6\u5974\u963f\u5716\u590f\u4ee4\u6642\u9593", "VUST"}},
+ "\u74e6\u5974\u963f\u5716\u590f\u4ee4\u6642\u9593", "VUST",
+ "\u74E6\u5974\u963F\u5716\u6642\u9593", "VUT"}},
{"Pacific/Enderbury", new String[] {"\u83f2\u5c3c\u514b\u65af\u7fa4\u5cf6\u6642\u9593", "PHOT",
- "\u83f2\u5c3c\u514b\u65af\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "PHOST"}},
+ "\u83f2\u5c3c\u514b\u65af\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "PHOST",
+ "\u83F2\u5C3C\u514B\u65AF\u7FA4\u5CF6\u6642\u9593", "PHOT"}},
{"Pacific/Fakaofo", new String[] {"\u6258\u514b\u52de\u7fa4\u5cf6\u6642\u9593", "TKT",
- "\u6258\u514b\u52de\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "TKST"}},
+ "\u6258\u514b\u52de\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "TKST",
+ "\u6258\u514B\u52DE\u7FA4\u5CF6\u6642\u9593", "TKT"}},
{"Pacific/Fiji", new String[] {"\u6590\u6fdf\u6642\u9593", "FJT",
- "\u6590\u6fdf\u590f\u4ee4\u6642\u9593", "FJST"}},
+ "\u6590\u6fdf\u590f\u4ee4\u6642\u9593", "FJST",
+ "\u6590\u6FDF\u6642\u9593", "FJT"}},
{"Pacific/Funafuti", new String[] {"\u5410\u9b6f\u74e6\u6642\u9593", "TVT",
- "\u5410\u9b6f\u74e6\u590f\u4ee4\u6642\u9593", "TVST"}},
+ "\u5410\u9b6f\u74e6\u590f\u4ee4\u6642\u9593", "TVST",
+ "\u5410\u74E6\u9B6F\u6642\u9593", "TVT"}},
{"Pacific/Galapagos", new String[] {"\u52a0\u62c9\u5df4\u54e5\u6642\u9593", "GALT",
- "\u52a0\u62c9\u5df4\u54e5\u590f\u4ee4\u6642\u9593", "GALST"}},
+ "\u52a0\u62c9\u5df4\u54e5\u590f\u4ee4\u6642\u9593", "GALST",
+ "\u52A0\u62C9\u5DF4\u54E5\u6642\u9593", "GALT"}},
{"Pacific/Gambier", GAMBIER},
{"Pacific/Guadalcanal", SBT},
{"Pacific/Guam", ChST},
{"Pacific/Johnston", HST},
{"Pacific/Kiritimati", new String[] {"Line Is. \u6642\u9593", "LINT",
- "Line Is. \u590f\u4ee4\u6642\u9593", "LINST"}},
+ "Line Is. \u590f\u4ee4\u6642\u9593", "LINST",
+ "\u5217\u5DBC\u7FA4\u5CF6\u6642\u9593", "LINT"}},
{"Pacific/Kosrae", new String[] {"Kosrae \u6642\u9593", "KOST",
- "Kosrae \u590f\u4ee4\u6642\u9593", "KOSST"}},
+ "Kosrae \u590f\u4ee4\u6642\u9593", "KOSST",
+ "Kosrae \u6642\u9593", "KOST"}},
{"Pacific/Kwajalein", MHT},
{"Pacific/Majuro", MHT},
{"Pacific/Marquesas", new String[] {"\u99ac\u514b\u85a9\u65af\u6642\u9593", "MART",
- "\u99ac\u514b\u85a9\u65af\u590f\u4ee4\u6642\u9593", "MARST"}},
+ "\u99ac\u514b\u85a9\u65af\u590f\u4ee4\u6642\u9593", "MARST",
+ "\u99AC\u514B\u85A9\u65AF\u6642\u9593", "MART"}},
{"Pacific/Midway", SAMOA},
{"Pacific/Nauru", new String[] {"\u8afe\u9b6f\u6642\u9593", "NRT",
- "\u8afe\u9b6f\u590f\u4ee4\u6642\u9593", "NRST"}},
+ "\u8afe\u9b6f\u590f\u4ee4\u6642\u9593", "NRST",
+ "\u8AFE\u9B6F\u6642\u9593", "NRT"}},
{"Pacific/Niue", new String[] {"\u7d10\u5a01\u5cf6\u6642\u9593", "NUT",
- "\u7d10\u5a01\u5cf6\u590f\u4ee4\u6642\u9593", "NUST"}},
+ "\u7d10\u5a01\u5cf6\u590f\u4ee4\u6642\u9593", "NUST",
+ "\u7D10\u5A01\u5CF6\u6642\u9593", "NUT"}},
{"Pacific/Norfolk", new String[] {"\u8afe\u798f\u514b\u6642\u9593", "NFT",
- "\u8afe\u798f\u514b\u590f\u4ee4\u6642\u9593", "NFST"}},
+ "\u8afe\u798f\u514b\u590f\u4ee4\u6642\u9593", "NFST",
+ "\u8AFE\u798F\u514B\u6642\u9593", "NFT"}},
{"Pacific/Noumea", new String[] {"\u65b0\u52a0\u52d2\u591a\u5c3c\u4e9e\u6642\u9593", "NCT",
- "\u65b0\u52a0\u52d2\u591a\u5c3c\u4e9e\u590f\u4ee4\u6642\u9593", "NCST"}},
+ "\u65b0\u52a0\u52d2\u591a\u5c3c\u4e9e\u590f\u4ee4\u6642\u9593", "NCST",
+ "\u65B0\u52A0\u52D2\u591A\u5C3C\u4E9E\u6642\u9593", "NCT"}},
{"Pacific/Pago_Pago", SAMOA},
{"Pacific/Palau", new String[] {"\u5e1b\u7409\u6642\u9593", "PWT",
- "\u5e1b\u7409\u590f\u4ee4\u6642\u9593", "PWST"}},
+ "\u5e1b\u7409\u590f\u4ee4\u6642\u9593", "PWST",
+ "\u5E1B\u7409\u6642\u9593", "PWT"}},
{"Pacific/Pitcairn", PITCAIRN},
{"Pacific/Pohnpei", PONT},
{"Pacific/Ponape", PONT},
{"Pacific/Port_Moresby", new String[] {"\u5df4\u5e03\u4e9e\u65b0\u5e7e\u5167\u4e9e\u6642\u9593", "PGT",
- "\u5df4\u5e03\u4e9e\u65b0\u5e7e\u5167\u4e9e\u590f\u4ee4\u6642\u9593", "PGST"}},
+ "\u5df4\u5e03\u4e9e\u65b0\u5e7e\u5167\u4e9e\u590f\u4ee4\u6642\u9593", "PGST",
+ "\u5DF4\u5E03\u4E9E\u65B0\u5E7E\u5167\u4E9E\u6642\u9593", "PGT"}},
{"Pacific/Rarotonga", new String[] {"\u5eab\u514b\u7fa4\u5cf6\u6642\u9593", "CKT",
- "\u5eab\u514b\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "CKHST"}},
+ "\u5eab\u514b\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "CKHST",
+ "\u5EAB\u514B\u7FA4\u5CF6\u6642\u9593", "CKT"}},
{"Pacific/Saipan", ChST},
{"Pacific/Samoa", SAMOA},
{"Pacific/Tahiti", new String[] {"\u5927\u6eaa\u5730\u5cf6\u6642\u9593", "TAHT",
- "\u5927\u6eaa\u5730\u5cf6\u590f\u4ee4\u6642\u9593", "TAHST"}},
+ "\u5927\u6eaa\u5730\u5cf6\u590f\u4ee4\u6642\u9593", "TAHST",
+ "\u5927\u6EAA\u5730\u6642\u9593", "TAHT"}},
{"Pacific/Tarawa", new String[] {"\u5409\u4f2f\u7279\u7fa4\u5cf6\u6642\u9593", "GILT",
- "\u5409\u4f2f\u7279\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "GILST"}},
+ "\u5409\u4f2f\u7279\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "GILST",
+ "\u5409\u4F2F\u7279\u7FA4\u5CF6\u6642\u9593", "GILT"}},
{"Pacific/Tongatapu", new String[] {"\u6771\u52a0\u6642\u9593", "TOT",
- "\u6771\u52a0\u590f\u4ee4\u6642\u9593", "TOST"}},
+ "\u6771\u52a0\u590f\u4ee4\u6642\u9593", "TOST",
+ "\u6771\u52A0\u6642\u9593", "TOT"}},
{"Pacific/Truk", CHUT},
{"Pacific/Wake", new String[] {"\u5a01\u514b\u6642\u9593", "WAKT",
- "\u5a01\u514b\u590f\u4ee4\u6642\u9593", "WAKST"}},
+ "\u5a01\u514b\u590f\u4ee4\u6642\u9593", "WAKST",
+ "\u5A01\u514B\u6642\u9593", "WAKT"}},
{"Pacific/Wallis", new String[] {"\u74e6\u5229\u65af\u53ca\u798f\u675c\u7d0d\u7fa4\u5cf6\u6642\u9593", "WFT",
- "\u74e6\u5229\u65af\u53ca\u798f\u675c\u7d0d\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "WFST"}},
+ "\u74e6\u5229\u65af\u53ca\u798f\u675c\u7d0d\u7fa4\u5cf6\u590f\u4ee4\u6642\u9593", "WFST",
+ "\u74E6\u5229\u65AF\u53CA\u798F\u675C\u7D0D\u7FA4\u5CF6\u6642\u9593", "WFT"}},
{"Pacific/Yap", CHUT},
{"Poland", CET},
{"PRC", CTT},
--- a/jdk/src/share/javavm/export/jmm.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/javavm/export/jmm.h Wed Jul 05 19:27:58 2017 +0200
@@ -153,6 +153,7 @@
JMM_VMGLOBAL_ORIGIN_ENVIRON_VAR = 4, /* Set via environment variables */
JMM_VMGLOBAL_ORIGIN_CONFIG_FILE = 5, /* Set via config file (such as .hotspotrc) */
JMM_VMGLOBAL_ORIGIN_ERGONOMIC = 6, /* Set via ergonomic */
+ JMM_VMGLOBAL_ORIGIN_ATTACH_ON_DEMAND = 7, /* Set via attach */
JMM_VMGLOBAL_ORIGIN_OTHER = 99 /* Set via some other mechanism */
} jmmVMGlobalOrigin;
--- a/jdk/src/share/lib/security/java.policy Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/lib/security/java.policy Wed Jul 05 19:27:58 2017 +0200
@@ -2,48 +2,48 @@
// Standard extensions get all permissions by default
grant codeBase "file:${{java.ext.dirs}}/*" {
- permission java.security.AllPermission;
+ permission java.security.AllPermission;
};
// default permissions granted to all domains
-grant {
- // Allows any thread to stop itself using the java.lang.Thread.stop()
- // method that takes no argument.
- // Note that this permission is granted by default only to remain
- // backwards compatible.
- // It is strongly recommended that you either remove this permission
- // from this policy file or further restrict it to code sources
- // that you specify, because Thread.stop() is potentially unsafe.
- // See the API specification of java.lang.Thread.stop() for more
+grant {
+ // Allows any thread to stop itself using the java.lang.Thread.stop()
+ // method that takes no argument.
+ // Note that this permission is granted by default only to remain
+ // backwards compatible.
+ // It is strongly recommended that you either remove this permission
+ // from this policy file or further restrict it to code sources
+ // that you specify, because Thread.stop() is potentially unsafe.
+ // See the API specification of java.lang.Thread.stop() for more
// information.
- permission java.lang.RuntimePermission "stopThread";
+ permission java.lang.RuntimePermission "stopThread";
- // allows anyone to listen on un-privileged ports
- permission java.net.SocketPermission "localhost:1024-", "listen";
+ // allows anyone to listen on dynamic ports
+ permission java.net.SocketPermission "localhost:0", "listen";
- // "standard" properies that can be read by anyone
+ // "standard" properies that can be read by anyone
- permission java.util.PropertyPermission "java.version", "read";
- permission java.util.PropertyPermission "java.vendor", "read";
- permission java.util.PropertyPermission "java.vendor.url", "read";
- permission java.util.PropertyPermission "java.class.version", "read";
- permission java.util.PropertyPermission "os.name", "read";
- permission java.util.PropertyPermission "os.version", "read";
- permission java.util.PropertyPermission "os.arch", "read";
- permission java.util.PropertyPermission "file.separator", "read";
- permission java.util.PropertyPermission "path.separator", "read";
- permission java.util.PropertyPermission "line.separator", "read";
+ permission java.util.PropertyPermission "java.version", "read";
+ permission java.util.PropertyPermission "java.vendor", "read";
+ permission java.util.PropertyPermission "java.vendor.url", "read";
+ permission java.util.PropertyPermission "java.class.version", "read";
+ permission java.util.PropertyPermission "os.name", "read";
+ permission java.util.PropertyPermission "os.version", "read";
+ permission java.util.PropertyPermission "os.arch", "read";
+ permission java.util.PropertyPermission "file.separator", "read";
+ permission java.util.PropertyPermission "path.separator", "read";
+ permission java.util.PropertyPermission "line.separator", "read";
- permission java.util.PropertyPermission "java.specification.version", "read";
- permission java.util.PropertyPermission "java.specification.vendor", "read";
- permission java.util.PropertyPermission "java.specification.name", "read";
+ permission java.util.PropertyPermission "java.specification.version", "read";
+ permission java.util.PropertyPermission "java.specification.vendor", "read";
+ permission java.util.PropertyPermission "java.specification.name", "read";
- permission java.util.PropertyPermission "java.vm.specification.version", "read";
- permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
- permission java.util.PropertyPermission "java.vm.specification.name", "read";
- permission java.util.PropertyPermission "java.vm.version", "read";
- permission java.util.PropertyPermission "java.vm.vendor", "read";
- permission java.util.PropertyPermission "java.vm.name", "read";
+ permission java.util.PropertyPermission "java.vm.specification.version", "read";
+ permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
+ permission java.util.PropertyPermission "java.vm.specification.name", "read";
+ permission java.util.PropertyPermission "java.vm.version", "read";
+ permission java.util.PropertyPermission "java.vm.vendor", "read";
+ permission java.util.PropertyPermission "java.vm.name", "read";
};
--- a/jdk/src/share/lib/security/java.security-linux Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/lib/security/java.security-linux Wed Jul 05 19:27:58 2017 +0200
@@ -182,6 +182,7 @@
com.sun.istack.internal.,\
com.sun.jmx.,\
com.sun.media.sound.,\
+ com.sun.naming.internal.,\
com.sun.proxy.,\
com.sun.corba.se.,\
com.sun.org.apache.bcel.internal.,\
@@ -205,7 +206,7 @@
com.sun.org.glassfish.,\
com.oracle.xmlns.internal.,\
com.oracle.webservices.internal.,\
- oracle.jrockit.jfr.,\
+ oracle.jrockit.jfr.,\
org.jcp.xml.dsig.internal.,\
jdk.internal.,\
jdk.nashorn.internal.,\
@@ -228,6 +229,7 @@
com.sun.istack.internal.,\
com.sun.jmx.,\
com.sun.media.sound.,\
+ com.sun.naming.internal.,\
com.sun.proxy.,\
com.sun.corba.se.,\
com.sun.org.apache.bcel.internal.,\
@@ -251,7 +253,7 @@
com.sun.org.glassfish.,\
com.oracle.xmlns.internal.,\
com.oracle.webservices.internal.,\
- oracle.jrockit.jfr.,\
+ oracle.jrockit.jfr.,\
org.jcp.xml.dsig.internal.,\
jdk.internal.,\
jdk.nashorn.internal.,\
@@ -470,7 +472,7 @@
# jdk.certpath.disabledAlgorithms=MD2, DSA, RSA keySize < 2048
#
#
-jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
+jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024
# Algorithm restrictions for Secure Socket Layer/Transport Layer Security
# (SSL/TLS) processing
@@ -494,4 +496,3 @@
#
# Example:
# jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048
-
--- a/jdk/src/share/lib/security/java.security-macosx Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/lib/security/java.security-macosx Wed Jul 05 19:27:58 2017 +0200
@@ -183,6 +183,7 @@
com.sun.istack.internal.,\
com.sun.jmx.,\
com.sun.media.sound.,\
+ com.sun.naming.internal.,\
com.sun.proxy.,\
com.sun.corba.se.,\
com.sun.org.apache.bcel.internal.,\
@@ -229,6 +230,7 @@
com.sun.istack.internal.,\
com.sun.jmx.,\
com.sun.media.sound.,\
+ com.sun.naming.internal.,\
com.sun.proxy.,\
com.sun.corba.se.,\
com.sun.org.apache.bcel.internal.,\
@@ -471,7 +473,7 @@
# jdk.certpath.disabledAlgorithms=MD2, DSA, RSA keySize < 2048
#
#
-jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
+jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024
# Algorithm restrictions for Secure Socket Layer/Transport Layer Security
# (SSL/TLS) processing
@@ -495,4 +497,3 @@
#
# Example:
# jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048
-
--- a/jdk/src/share/lib/security/java.security-solaris Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/lib/security/java.security-solaris Wed Jul 05 19:27:58 2017 +0200
@@ -184,6 +184,7 @@
com.sun.istack.internal.,\
com.sun.jmx.,\
com.sun.media.sound.,\
+ com.sun.naming.internal.,\
com.sun.proxy.,\
com.sun.corba.se.,\
com.sun.org.apache.bcel.internal.,\
@@ -207,7 +208,7 @@
com.sun.org.glassfish.,\
com.oracle.xmlns.internal.,\
com.oracle.webservices.internal.,\
- oracle.jrockit.jfr.,\
+ oracle.jrockit.jfr.,\
org.jcp.xml.dsig.internal.,\
jdk.internal.,\
jdk.nashorn.internal.,\
@@ -229,6 +230,7 @@
com.sun.istack.internal.,\
com.sun.jmx.,\
com.sun.media.sound.,\
+ com.sun.naming.internal.,\
com.sun.proxy.,\
com.sun.corba.se.,\
com.sun.org.apache.bcel.internal.,\
@@ -252,7 +254,7 @@
com.sun.org.glassfish.,\
com.oracle.xmlns.internal.,\
com.oracle.webservices.internal.,\
- oracle.jrockit.jfr.,\
+ oracle.jrockit.jfr.,\
org.jcp.xml.dsig.internal.,\
jdk.internal.,\
jdk.nashorn.internal.,\
@@ -470,7 +472,7 @@
# jdk.certpath.disabledAlgorithms=MD2, DSA, RSA keySize < 2048
#
#
-jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
+jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024
# Algorithm restrictions for Secure Socket Layer/Transport Layer Security
# (SSL/TLS) processing
@@ -494,4 +496,3 @@
#
# Example:
# jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048
-
--- a/jdk/src/share/lib/security/java.security-windows Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/lib/security/java.security-windows Wed Jul 05 19:27:58 2017 +0200
@@ -183,6 +183,7 @@
com.sun.istack.internal.,\
com.sun.jmx.,\
com.sun.media.sound.,\
+ com.sun.naming.internal.,\
com.sun.proxy.,\
com.sun.corba.se.,\
com.sun.org.apache.bcel.internal.,\
@@ -206,7 +207,7 @@
com.sun.org.glassfish.,\
com.oracle.xmlns.internal.,\
com.oracle.webservices.internal.,\
- oracle.jrockit.jfr.,\
+ oracle.jrockit.jfr.,\
org.jcp.xml.dsig.internal.,\
jdk.internal.,\
jdk.nashorn.internal.,\
@@ -229,6 +230,7 @@
com.sun.istack.internal.,\
com.sun.jmx.,\
com.sun.media.sound.,\
+ com.sun.naming.internal.,\
com.sun.proxy.,\
com.sun.corba.se.,\
com.sun.org.apache.bcel.internal.,\
@@ -252,7 +254,7 @@
com.sun.org.glassfish.,\
com.oracle.xmlns.internal.,\
com.oracle.webservices.internal.,\
- oracle.jrockit.jfr.,\
+ oracle.jrockit.jfr.,\
org.jcp.xml.dsig.internal.,\
jdk.internal.,\
jdk.nashorn.internal.,\
@@ -471,7 +473,7 @@
# jdk.certpath.disabledAlgorithms=MD2, DSA, RSA keySize < 2048
#
#
-jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
+jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024
# Algorithm restrictions for Secure Socket Layer/Transport Layer Security
# (SSL/TLS) processing
@@ -495,4 +497,3 @@
#
# Example:
# jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048
-
--- a/jdk/src/share/native/com/sun/java/util/jar/pack/coding.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/com/sun/java/util/jar/pack/coding.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -32,6 +32,8 @@
#include <stdlib.h>
#include <stdarg.h>
+#include "jni_util.h"
+
#include "defines.h"
#include "bytes.h"
#include "utils.h"
@@ -147,7 +149,7 @@
break;
}
coding* ptr = NEW(coding, 1);
- CHECK_NULL_0(ptr);
+ CHECK_NULL_RETURN(ptr, 0);
coding* c = ptr->initFrom(spec);
if (c == null) {
mtrace('f', ptr, 0);
--- a/jdk/src/share/native/com/sun/java/util/jar/pack/defines.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/com/sun/java/util/jar/pack/defines.h Wed Jul 05 19:27:58 2017 +0200
@@ -158,10 +158,6 @@
#define CHECK_(y) _CHECK_DO(aborting(), return y)
#define CHECK_0 _CHECK_DO(aborting(), return 0)
-#define CHECK_NULL(p) _CHECK_DO((p)==null, return)
-#define CHECK_NULL_(y,p) _CHECK_DO((p)==null, return y)
-#define CHECK_NULL_0(p) _CHECK_DO((p)==null, return 0)
-
#define CHECK_COUNT(t) if (t < 0){abort("bad value count");} CHECK
#define STR_TRUE "true"
--- a/jdk/src/share/native/common/jni_util.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/common/jni_util.h Wed Jul 05 19:27:58 2017 +0200
@@ -278,6 +278,15 @@
#define IS_NULL(obj) ((obj) == NULL)
#define JNU_IsNull(env,obj) ((obj) == NULL)
+/************************************************************************
+ * Miscellaneous utilities used by the class libraries to check for exceptions
+ */
+
+#define CHECK_NULL(x) if ((x) == NULL) return;
+#define CHECK_NULL_RETURN(x, y) if ((x) == NULL) return (y);
+
+#define CHECK_EXCEPTION(env) if ((*env)->ExceptionCheck(env)) return;
+#define CHECK_EXCEPTION_RETURN(env, y) if ((*env)->ExceptionCheck(env)) return (y);
/************************************************************************
* Debugging utilities
--- a/jdk/src/share/native/java/net/net_util.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/java/net/net_util.h Wed Jul 05 19:27:58 2017 +0200
@@ -42,9 +42,6 @@
#define NET_ERROR(env, ex, msg) \
{ if (!(*env)->ExceptionOccurred(env)) JNU_ThrowByName(env, ex, msg) }
-#define CHECK_NULL(x) if ((x) == NULL) return;
-#define CHECK_NULL_RETURN(x, y) if ((x) == NULL) return y;
-
/************************************************************************
* Cached field IDs
*
--- a/jdk/src/share/native/sun/awt/splashscreen/splashscreen_impl.c Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/awt/splashscreen/splashscreen_impl.c Wed Jul 05 19:27:58 2017 +0200
@@ -111,8 +111,9 @@
int
SplashIsStillLooping(Splash * splash)
{
- if (splash->currentFrame < 0)
+ if (splash->currentFrame < 0) {
return 0;
+ }
return splash->loopCount != 1 ||
splash->currentFrame + 1 < splash->frameCount;
}
@@ -121,17 +122,22 @@
SplashUpdateScreenData(Splash * splash)
{
ImageRect srcRect, dstRect;
+ if (splash->currentFrame < 0) {
+ return;
+ }
initRect(&srcRect, 0, 0, splash->width, splash->height, 1,
splash->width * sizeof(rgbquad_t),
splash->frames[splash->currentFrame].bitmapBits, &splash->imageFormat);
- if (splash->screenData)
+ if (splash->screenData) {
free(splash->screenData);
+ }
splash->screenStride = splash->width * splash->screenFormat.depthBytes;
- if (splash->byteAlignment > 1)
+ if (splash->byteAlignment > 1) {
splash->screenStride =
(splash->screenStride + splash->byteAlignment - 1) &
~(splash->byteAlignment - 1);
+ }
splash->screenData = malloc(splash->height * splash->screenStride);
initRect(&dstRect, 0, 0, splash->width, splash->height, 1,
splash->screenStride, splash->screenData, &splash->screenFormat);
@@ -146,16 +152,19 @@
void
SplashNextFrame(Splash * splash)
{
- if (splash->currentFrame < 0)
+ if (splash->currentFrame < 0) {
return;
+ }
do {
- if (!SplashIsStillLooping(splash))
+ if (!SplashIsStillLooping(splash)) {
return;
+ }
splash->time += splash->frames[splash->currentFrame].delay;
if (++splash->currentFrame >= splash->frameCount) {
splash->currentFrame = 0;
- if (splash->loopCount > 0)
+ if (splash->loopCount > 0) {
splash->loopCount--;
+ }
}
} while (splash->time + splash->frames[splash->currentFrame].delay -
SplashTime() <= 0);
@@ -183,8 +192,9 @@
pSrc += pSrcRect->depthBytes;
++i;
}
- if (i >= pSrcRect->numSamples)
+ if (i >= pSrcRect->numSamples) {
break;
+ }
i0 = i;
while (i < pSrcRect->numSamples &&
getRGBA(pSrc, pSrcRect->format) >= ALPHA_THRESHOLD) {
--- a/jdk/src/share/native/sun/font/layout/AlternateSubstSubtables.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/AlternateSubstSubtables.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -55,7 +55,7 @@
(const AlternateSetTable *) ((char *) this + alternateSetTableOffset));
TTGlyphID alternate = SWAPW(alternateSetTable->alternateArray[0]);
- if (filter == NULL || filter->accept(LE_SET_GLYPH(glyph, alternate))) {
+ if (filter == NULL || filter->accept(LE_SET_GLYPH(glyph, alternate), success)) {
glyphIterator->setCurrGlyphID(SWAPW(alternateSetTable->alternateArray[0]));
}
--- a/jdk/src/share/native/sun/font/layout/AnchorTables.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/AnchorTables.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -37,55 +37,54 @@
U_NAMESPACE_BEGIN
-void AnchorTable::getAnchor(LEGlyphID glyphID, const LEFontInstance *fontInstance,
- LEPoint &anchor) const
+void AnchorTable::getAnchor(const LETableReference &base, LEGlyphID glyphID, const LEFontInstance *fontInstance,
+ LEPoint &anchor, LEErrorCode &success) const
{
- switch(SWAPW(anchorFormat)) {
+ switch(SWAPW(anchorFormat)) {
case 1:
{
- const Format1AnchorTable *f1 = (const Format1AnchorTable *) this;
-
- f1->getAnchor(fontInstance, anchor);
+ LEReferenceTo<Format1AnchorTable> f1(base, success);
+ f1->getAnchor(f1, fontInstance, anchor, success);
break;
}
case 2:
{
- const Format2AnchorTable *f2 = (const Format2AnchorTable *) this;
-
- f2->getAnchor(glyphID, fontInstance, anchor);
+ LEReferenceTo<Format2AnchorTable> f2(base, success);
+ f2->getAnchor(f2, glyphID, fontInstance, anchor, success);
break;
}
case 3:
{
- const Format3AnchorTable *f3 = (const Format3AnchorTable *) this;
-
- f3->getAnchor(fontInstance, anchor);
+ LEReferenceTo<Format3AnchorTable> f3(base, success);
+ f3->getAnchor(f3, fontInstance, anchor, success);
break;
}
default:
+ {
// unknown format: just use x, y coordinate, like format 1...
- const Format1AnchorTable *f1 = (const Format1AnchorTable *) this;
-
- f1->getAnchor(fontInstance, anchor);
+ LEReferenceTo<Format1AnchorTable> f1(base, success);
+ f1->getAnchor(f1, fontInstance, anchor, success);
break;
}
+ }
}
-void Format1AnchorTable::getAnchor(const LEFontInstance *fontInstance, LEPoint &anchor) const
+void Format1AnchorTable::getAnchor(const LEReferenceTo<Format1AnchorTable>& base, const LEFontInstance *fontInstance, LEPoint &anchor, LEErrorCode &success) const
{
le_int16 x = SWAPW(xCoordinate);
le_int16 y = SWAPW(yCoordinate);
LEPoint pixels;
fontInstance->transformFunits(x, y, pixels);
-
fontInstance->pixelsToUnits(pixels, anchor);
}
-void Format2AnchorTable::getAnchor(LEGlyphID glyphID, const LEFontInstance *fontInstance, LEPoint &anchor) const
+void Format2AnchorTable::getAnchor(const LEReferenceTo<Format2AnchorTable>& base,
+ LEGlyphID glyphID, const LEFontInstance *fontInstance, LEPoint &anchor
+ , LEErrorCode &success) const
{
LEPoint point;
@@ -100,7 +99,8 @@
fontInstance->pixelsToUnits(point, anchor);
}
-void Format3AnchorTable::getAnchor(const LEFontInstance *fontInstance, LEPoint &anchor) const
+void Format3AnchorTable::getAnchor(const LEReferenceTo<Format3AnchorTable> &base, const LEFontInstance *fontInstance,
+ LEPoint &anchor, LEErrorCode &success) const
{
le_int16 x = SWAPW(xCoordinate);
le_int16 y = SWAPW(yCoordinate);
@@ -111,15 +111,15 @@
fontInstance->transformFunits(x, y, pixels);
if (dtxOffset != 0) {
- const DeviceTable *dtx = (const DeviceTable *) ((char *) this + dtxOffset);
- le_int16 adjx = dtx->getAdjustment((le_int16) fontInstance->getXPixelsPerEm());
+ LEReferenceTo<DeviceTable> dt(base, success, dtxOffset);
+ le_int16 adjx = dt->getAdjustment(dt, (le_int16) fontInstance->getXPixelsPerEm(), success);
pixels.fX += adjx;
}
if (dtyOffset != 0) {
- const DeviceTable *dty = (const DeviceTable *) ((char *) this + dtyOffset);
- le_int16 adjy = dty->getAdjustment((le_int16) fontInstance->getYPixelsPerEm());
+ LEReferenceTo<DeviceTable> dt(base, success, dtyOffset);
+ le_int16 adjy = dt->getAdjustment(dt, (le_int16) fontInstance->getYPixelsPerEm(), success);
pixels.fY += adjy;
}
--- a/jdk/src/share/native/sun/font/layout/AnchorTables.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/AnchorTables.h Wed Jul 05 19:27:58 2017 +0200
@@ -49,20 +49,23 @@
le_int16 xCoordinate;
le_int16 yCoordinate;
- void getAnchor(LEGlyphID glyphID, const LEFontInstance *fontInstance,
- LEPoint &anchor) const;
+ void getAnchor(const LETableReference &base, LEGlyphID glyphID, const LEFontInstance *fontInstance,
+ LEPoint &anchor, LEErrorCode &success) const;
};
struct Format1AnchorTable : AnchorTable
{
- void getAnchor(const LEFontInstance *fontInstance, LEPoint &anchor) const;
+ void getAnchor(const LEReferenceTo<Format1AnchorTable>& base,
+ const LEFontInstance *fontInstance, LEPoint &anchor, LEErrorCode &success) const;
};
struct Format2AnchorTable : AnchorTable
{
le_uint16 anchorPoint;
- void getAnchor(LEGlyphID glyphID, const LEFontInstance *fontInstance, LEPoint &anchor) const;
+ void getAnchor(const LEReferenceTo<Format2AnchorTable>& base,
+ LEGlyphID glyphID, const LEFontInstance *fontInstance,
+ LEPoint &anchor, LEErrorCode &success) const;
};
struct Format3AnchorTable : AnchorTable
@@ -70,7 +73,9 @@
Offset xDeviceTableOffset;
Offset yDeviceTableOffset;
- void getAnchor(const LEFontInstance *fontInstance, LEPoint &anchor) const;
+ void getAnchor(const LEReferenceTo<Format3AnchorTable>& base,
+ const LEFontInstance *fontInstance, LEPoint &anchor,
+ LEErrorCode &success) const;
};
U_NAMESPACE_END
--- a/jdk/src/share/native/sun/font/layout/ArabicLayoutEngine.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/ArabicLayoutEngine.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -51,7 +51,7 @@
U_NAMESPACE_BEGIN
-le_bool CharSubstitutionFilter::accept(LEGlyphID glyph) const
+le_bool CharSubstitutionFilter::accept(LEGlyphID glyph, LEErrorCode &/*success*/) const
{
return fFontInstance->canDisplay((LEUnicode) glyph);
}
@@ -147,7 +147,9 @@
GDEFMarkFilter filter(fGDEFTable, success);
adjustMarkGlyphs(glyphStorage, &filter, success);
} else {
- LEReferenceTo<GlyphDefinitionTableHeader> gdefTable(CanonShaping::glyphDefinitionTable, CanonShaping::glyphDefinitionTableLen);
+ LEReferenceTo<GlyphDefinitionTableHeader> gdefTable(LETableReference::kStaticData,
+ CanonShaping::glyphDefinitionTable,
+ CanonShaping::glyphDefinitionTableLen);
GDEFMarkFilter filter(gdefTable, success);
adjustMarkGlyphs(&chars[offset], count, reverse, glyphStorage, &filter, success);
@@ -157,9 +159,9 @@
UnicodeArabicOpenTypeLayoutEngine::UnicodeArabicOpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, le_int32 typoFlags, LEErrorCode &success)
: ArabicOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags | LE_CHAR_FILTER_FEATURE_FLAG, success)
{
- fGSUBTable = (const GlyphSubstitutionTableHeader *) CanonShaping::glyphSubstitutionTable;
- fGDEFTable = (const GlyphDefinitionTableHeader *) CanonShaping::glyphDefinitionTable;
- /* OpenTypeLayoutEngine will allocate a substitution filter */
+ fGSUBTable.setTo(LETableReference::kStaticData, (const GlyphSubstitutionTableHeader *) CanonShaping::glyphSubstitutionTable, CanonShaping::glyphSubstitutionTableLen);
+ fGDEFTable.setTo(LETableReference::kStaticData, (const GlyphDefinitionTableHeader *) CanonShaping::glyphDefinitionTable, CanonShaping::glyphDefinitionTableLen);
+ /* OpenTypeLayoutEngine will allocate a substitution filter */
}
UnicodeArabicOpenTypeLayoutEngine::~UnicodeArabicOpenTypeLayoutEngine()
--- a/jdk/src/share/native/sun/font/layout/ArabicShaping.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/ArabicShaping.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -59,7 +59,8 @@
ArabicShaping::ShapeType ArabicShaping::getShapeType(LEUnicode c)
{
LEErrorCode success = LE_NO_ERROR;
- const LEReferenceTo<ClassDefinitionTable> joiningTypes((const ClassDefinitionTable *) ArabicShaping::shapingTypeTable,
+ const LEReferenceTo<ClassDefinitionTable> joiningTypes(LETableReference::kStaticData,
+ (const ClassDefinitionTable *) ArabicShaping::shapingTypeTable,
ArabicShaping::shapingTypeTableLen);
le_int32 joiningType = joiningTypes->getGlyphClass(joiningTypes, c, success);
--- a/jdk/src/share/native/sun/font/layout/CanonShaping.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/CanonShaping.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -60,7 +60,7 @@
LEUnicode *outChars, LEGlyphStorage &glyphStorage)
{
LEErrorCode success = LE_NO_ERROR;
- LEReferenceTo<GlyphDefinitionTableHeader> gdefTable(CanonShaping::glyphDefinitionTable, CanonShaping::glyphDefinitionTableLen);
+ LEReferenceTo<GlyphDefinitionTableHeader> gdefTable(LETableReference::kStaticData, CanonShaping::glyphDefinitionTable, CanonShaping::glyphDefinitionTableLen);
LEReferenceTo<ClassDefinitionTable> classTable = gdefTable->getMarkAttachClassDefinitionTable(gdefTable, success);
le_int32 *combiningClasses = LE_NEW_ARRAY(le_int32, charCount);
le_int32 *indices = LE_NEW_ARRAY(le_int32, charCount);
--- a/jdk/src/share/native/sun/font/layout/CharSubstitutionFilter.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/CharSubstitutionFilter.h Wed Jul 05 19:27:58 2017 +0200
@@ -43,6 +43,8 @@
* This filter is used by character-based GSUB processors. It
* accepts only those characters which the given font can display.
*
+ * Note: Implementation is in ArabicLayoutEngine.cpp
+ *
* @internal
*/
class CharSubstitutionFilter : public UMemory, public LEGlyphFilter
@@ -97,7 +99,7 @@
*
* @internal
*/
- le_bool accept(LEGlyphID glyph) const;
+ le_bool accept(LEGlyphID glyph, LEErrorCode &success) const;
};
U_NAMESPACE_END
--- a/jdk/src/share/native/sun/font/layout/ClassDefinitionTables.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/ClassDefinitionTables.h Wed Jul 05 19:27:58 2017 +0200
@@ -49,6 +49,7 @@
le_int32 getGlyphClass(const LETableReference &base, LEGlyphID glyphID, LEErrorCode &success) const;
le_bool hasGlyphClass(const LETableReference &base, le_int32 glyphClass, LEErrorCode &success) const;
+#if LE_ENABLE_RAW
le_int32 getGlyphClass(LEGlyphID glyphID) const {
LETableReference base((const le_uint8*)this);
LEErrorCode ignored = LE_NO_ERROR;
@@ -60,6 +61,7 @@
LEErrorCode ignored = LE_NO_ERROR;
return hasGlyphClass(base,glyphClass,ignored);
}
+#endif
};
struct ClassDefFormat1Table : ClassDefinitionTable
--- a/jdk/src/share/native/sun/font/layout/ContextualSubstSubtables.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/ContextualSubstSubtables.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -48,7 +48,7 @@
*/
void ContextualSubstitutionBase::applySubstitutionLookups(
const LookupProcessor *lookupProcessor,
- const SubstitutionLookupRecord *substLookupRecordArray,
+ const LEReferenceToArrayOf<SubstitutionLookupRecord>& substLookupRecordArray,
le_uint16 substCount,
GlyphIterator *glyphIterator,
const LEFontInstance *fontInstance,
@@ -60,10 +60,11 @@
}
GlyphIterator tempIterator(*glyphIterator);
+ const SubstitutionLookupRecord *substLookupRecordArrayPtr = substLookupRecordArray.getAlias(); // OK to dereference, range checked against substCount below.
for (le_int16 subst = 0; subst < substCount && LE_SUCCESS(success); subst += 1) {
- le_uint16 sequenceIndex = SWAPW(substLookupRecordArray[subst].sequenceIndex);
- le_uint16 lookupListIndex = SWAPW(substLookupRecordArray[subst].lookupListIndex);
+ le_uint16 sequenceIndex = SWAPW(substLookupRecordArrayPtr[subst].sequenceIndex);
+ le_uint16 lookupListIndex = SWAPW(substLookupRecordArrayPtr[subst].lookupListIndex);
tempIterator.setCurrStreamPosition(position);
tempIterator.next(sequenceIndex);
@@ -72,7 +73,7 @@
}
}
-le_bool ContextualSubstitutionBase::matchGlyphIDs(const TTGlyphID *glyphArray, le_uint16 glyphCount,
+le_bool ContextualSubstitutionBase::matchGlyphIDs(const LEReferenceToArrayOf<TTGlyphID>& glyphArray, le_uint16 glyphCount,
GlyphIterator *glyphIterator, le_bool backtrack)
{
le_int32 direction = 1;
@@ -101,10 +102,13 @@
return TRUE;
}
-le_bool ContextualSubstitutionBase::matchGlyphClasses(const le_uint16 *classArray, le_uint16 glyphCount,
- GlyphIterator *glyphIterator,
- const ClassDefinitionTable *classDefinitionTable,
- le_bool backtrack)
+le_bool ContextualSubstitutionBase::matchGlyphClasses(
+ const LEReferenceToArrayOf<le_uint16> &classArray,
+ le_uint16 glyphCount,
+ GlyphIterator *glyphIterator,
+ const LEReferenceTo<ClassDefinitionTable> &classDefinitionTable,
+ LEErrorCode &success,
+ le_bool backtrack)
{
le_int32 direction = 1;
le_int32 match = 0;
@@ -120,7 +124,7 @@
}
LEGlyphID glyph = glyphIterator->getCurrGlyphID();
- le_int32 glyphClass = classDefinitionTable->getGlyphClass(glyph);
+ le_int32 glyphClass = classDefinitionTable->getGlyphClass(classDefinitionTable, glyph, success);
le_int32 matchClass = SWAPW(classArray[match]);
if (glyphClass != matchClass) {
@@ -128,7 +132,7 @@
// in the class array which aren't in the class definition
// table. If we're looking for such a class, pretend that
// we found it.
- if (classDefinitionTable->hasGlyphClass(matchClass)) {
+ if (classDefinitionTable->hasGlyphClass(classDefinitionTable, matchClass, success)) {
return FALSE;
}
}
@@ -140,8 +144,8 @@
return TRUE;
}
-le_bool ContextualSubstitutionBase::matchGlyphCoverages(const Offset *coverageTableOffsetArray, le_uint16 glyphCount,
- GlyphIterator *glyphIterator, const char *offsetBase, le_bool backtrack)
+le_bool ContextualSubstitutionBase::matchGlyphCoverages(const LEReferenceToArrayOf<Offset> &coverageTableOffsetArray, le_uint16 glyphCount,
+GlyphIterator *glyphIterator, const LETableReference &offsetBase, LEErrorCode &success, le_bool backtrack)
{
le_int32 direction = 1;
le_int32 glyph = 0;
@@ -153,13 +157,15 @@
while (glyphCount > 0) {
Offset coverageTableOffset = SWAPW(coverageTableOffsetArray[glyph]);
- const CoverageTable *coverageTable = (const CoverageTable *) (offsetBase + coverageTableOffset);
+ LEReferenceTo<CoverageTable> coverageTable(offsetBase, success, coverageTableOffset);
- if (! glyphIterator->next()) {
+ if (LE_FAILURE(success) || ! glyphIterator->next()) {
return FALSE;
}
- if (coverageTable->getGlyphCoverage((LEGlyphID) glyphIterator->getCurrGlyphID()) < 0) {
+ if (coverageTable->getGlyphCoverage(coverageTable,
+ (LEGlyphID) glyphIterator->getCurrGlyphID(),
+ success) < 0) {
return FALSE;
}
@@ -170,7 +176,7 @@
return TRUE;
}
-le_uint32 ContextualSubstitutionSubtable::process(const LookupProcessor *lookupProcessor,
+le_uint32 ContextualSubstitutionSubtable::process(const LETableReference &base, const LookupProcessor *lookupProcessor,
GlyphIterator *glyphIterator,
const LEFontInstance *fontInstance,
LEErrorCode& success) const
@@ -186,20 +192,29 @@
case 1:
{
- const ContextualSubstitutionFormat1Subtable *subtable = (const ContextualSubstitutionFormat1Subtable *) this;
- return subtable->process(lookupProcessor, glyphIterator, fontInstance, success);
+ LEReferenceTo<ContextualSubstitutionFormat1Subtable> subtable(base, success, (const ContextualSubstitutionFormat1Subtable *) this);
+ if( LE_FAILURE(success) ) {
+ return 0;
+ }
+ return subtable->process(subtable, lookupProcessor, glyphIterator, fontInstance, success);
}
case 2:
{
- const ContextualSubstitutionFormat2Subtable *subtable = (const ContextualSubstitutionFormat2Subtable *) this;
- return subtable->process(lookupProcessor, glyphIterator, fontInstance, success);
+ LEReferenceTo<ContextualSubstitutionFormat2Subtable> subtable(base, success, (const ContextualSubstitutionFormat2Subtable *) this);
+ if( LE_FAILURE(success) ) {
+ return 0;
+ }
+ return subtable->process(subtable, lookupProcessor, glyphIterator, fontInstance, success);
}
case 3:
{
- const ContextualSubstitutionFormat3Subtable *subtable = (const ContextualSubstitutionFormat3Subtable *) this;
- return subtable->process(lookupProcessor, glyphIterator, fontInstance, success);
+ LEReferenceTo<ContextualSubstitutionFormat3Subtable> subtable(base, success, (const ContextualSubstitutionFormat3Subtable *) this);
+ if( LE_FAILURE(success) ) {
+ return 0;
+ }
+ return subtable->process(subtable, lookupProcessor, glyphIterator, fontInstance, success);
}
default:
@@ -207,7 +222,7 @@
}
}
-le_uint32 ContextualSubstitutionFormat1Subtable::process(const LookupProcessor *lookupProcessor,
+le_uint32 ContextualSubstitutionFormat1Subtable::process(const LETableReference &base, const LookupProcessor *lookupProcessor,
GlyphIterator *glyphIterator,
const LEFontInstance *fontInstance,
LEErrorCode& success) const
@@ -227,22 +242,22 @@
if (coverageIndex < srSetCount) {
Offset subRuleSetTableOffset = SWAPW(subRuleSetTableOffsetArray[coverageIndex]);
- const SubRuleSetTable *subRuleSetTable =
- (const SubRuleSetTable *) ((char *) this + subRuleSetTableOffset);
+ LEReferenceTo<SubRuleSetTable>
+ subRuleSetTable(base, success, (const SubRuleSetTable *) ((char *) this + subRuleSetTableOffset));
le_uint16 subRuleCount = SWAPW(subRuleSetTable->subRuleCount);
le_int32 position = glyphIterator->getCurrStreamPosition();
for (le_uint16 subRule = 0; subRule < subRuleCount; subRule += 1) {
Offset subRuleTableOffset =
SWAPW(subRuleSetTable->subRuleTableOffsetArray[subRule]);
- const SubRuleTable *subRuleTable =
- (const SubRuleTable *) ((char *) subRuleSetTable + subRuleTableOffset);
+ LEReferenceTo<SubRuleTable>
+ subRuleTable(subRuleSetTable, success, subRuleTableOffset);
le_uint16 matchCount = SWAPW(subRuleTable->glyphCount) - 1;
le_uint16 substCount = SWAPW(subRuleTable->substCount);
-
- if (matchGlyphIDs(subRuleTable->inputGlyphArray, matchCount, glyphIterator)) {
- const SubstitutionLookupRecord *substLookupRecordArray =
- (const SubstitutionLookupRecord *) &subRuleTable->inputGlyphArray[matchCount];
+ LEReferenceToArrayOf<TTGlyphID> inputGlyphArray(base, success, subRuleTable->inputGlyphArray, matchCount+2);
+ if (matchGlyphIDs(inputGlyphArray, matchCount, glyphIterator)) {
+ LEReferenceToArrayOf<SubstitutionLookupRecord>
+ substLookupRecordArray(base, success, (const SubstitutionLookupRecord *) &subRuleTable->inputGlyphArray[matchCount], substCount);
applySubstitutionLookups(lookupProcessor, substLookupRecordArray, substCount, glyphIterator, fontInstance, position, success);
@@ -259,10 +274,11 @@
return 0;
}
-le_uint32 ContextualSubstitutionFormat2Subtable::process(const LookupProcessor *lookupProcessor,
- GlyphIterator *glyphIterator,
- const LEFontInstance *fontInstance,
- LEErrorCode& success) const
+le_uint32 ContextualSubstitutionFormat2Subtable::process(const LETableReference &base,
+ const LookupProcessor *lookupProcessor,
+ GlyphIterator *glyphIterator,
+ const LEFontInstance *fontInstance,
+ LEErrorCode& success) const
{
if (LE_FAILURE(success)) {
return 0;
@@ -275,29 +291,33 @@
}
if (coverageIndex >= 0) {
- const ClassDefinitionTable *classDefinitionTable =
- (const ClassDefinitionTable *) ((char *) this + SWAPW(classDefTableOffset));
+ LEReferenceTo<ClassDefinitionTable> classDefinitionTable(base, success,
+ (const ClassDefinitionTable *) ((char *) this + SWAPW(classDefTableOffset)));
le_uint16 scSetCount = SWAPW(subClassSetCount);
- le_int32 setClass = classDefinitionTable->getGlyphClass(glyphIterator->getCurrGlyphID());
+ le_int32 setClass = classDefinitionTable->getGlyphClass(classDefinitionTable,
+ glyphIterator->getCurrGlyphID(),
+ success);
if (setClass < scSetCount && subClassSetTableOffsetArray[setClass] != 0) {
Offset subClassSetTableOffset = SWAPW(subClassSetTableOffsetArray[setClass]);
- const SubClassSetTable *subClassSetTable =
- (const SubClassSetTable *) ((char *) this + subClassSetTableOffset);
+ LEReferenceTo<SubClassSetTable>
+ subClassSetTable(base, success, (const SubClassSetTable *) ((char *) this + subClassSetTableOffset));
le_uint16 subClassRuleCount = SWAPW(subClassSetTable->subClassRuleCount);
le_int32 position = glyphIterator->getCurrStreamPosition();
for (le_uint16 scRule = 0; scRule < subClassRuleCount; scRule += 1) {
Offset subClassRuleTableOffset =
SWAPW(subClassSetTable->subClassRuleTableOffsetArray[scRule]);
- const SubClassRuleTable *subClassRuleTable =
- (const SubClassRuleTable *) ((char *) subClassSetTable + subClassRuleTableOffset);
+ LEReferenceTo<SubClassRuleTable>
+ subClassRuleTable(subClassSetTable, success, subClassRuleTableOffset);
le_uint16 matchCount = SWAPW(subClassRuleTable->glyphCount) - 1;
le_uint16 substCount = SWAPW(subClassRuleTable->substCount);
- if (matchGlyphClasses(subClassRuleTable->classArray, matchCount, glyphIterator, classDefinitionTable)) {
- const SubstitutionLookupRecord *substLookupRecordArray =
- (const SubstitutionLookupRecord *) &subClassRuleTable->classArray[matchCount];
+ LEReferenceToArrayOf<le_uint16> classArray(base, success, subClassRuleTable->classArray, matchCount+1);
+
+ if (matchGlyphClasses(classArray, matchCount, glyphIterator, classDefinitionTable, success)) {
+ LEReferenceToArrayOf<SubstitutionLookupRecord>
+ substLookupRecordArray(base, success, (const SubstitutionLookupRecord *) &subClassRuleTable->classArray[matchCount], substCount);
applySubstitutionLookups(lookupProcessor, substLookupRecordArray, substCount, glyphIterator, fontInstance, position, success);
@@ -314,7 +334,8 @@
return 0;
}
-le_uint32 ContextualSubstitutionFormat3Subtable::process(const LookupProcessor *lookupProcessor,
+le_uint32 ContextualSubstitutionFormat3Subtable::process(const LETableReference &base,
+ const LookupProcessor *lookupProcessor,
GlyphIterator *glyphIterator,
const LEFontInstance *fontInstance,
LEErrorCode& success)const
@@ -333,9 +354,13 @@
// that matched when we're done.
glyphIterator->prev();
- if (ContextualSubstitutionBase::matchGlyphCoverages(coverageTableOffsetArray, gCount, glyphIterator, (const char *) this)) {
- const SubstitutionLookupRecord *substLookupRecordArray =
- (const SubstitutionLookupRecord *) &coverageTableOffsetArray[gCount];
+ LEReferenceToArrayOf<Offset> covTableOffsetArray(base, success, coverageTableOffsetArray, gCount);
+
+ if( LE_FAILURE(success) ) { return 0; }
+
+ if (ContextualSubstitutionBase::matchGlyphCoverages(covTableOffsetArray, gCount, glyphIterator, base, success)) {
+ LEReferenceToArrayOf<SubstitutionLookupRecord>
+ substLookupRecordArray(base, success, (const SubstitutionLookupRecord *) &coverageTableOffsetArray[gCount], subCount);
ContextualSubstitutionBase::applySubstitutionLookups(lookupProcessor, substLookupRecordArray, subCount, glyphIterator, fontInstance, position, success);
@@ -347,7 +372,8 @@
return 0;
}
-le_uint32 ChainingContextualSubstitutionSubtable::process(const LookupProcessor *lookupProcessor,
+le_uint32 ChainingContextualSubstitutionSubtable::process(const LEReferenceTo<ChainingContextualSubstitutionSubtable> &base,
+ const LookupProcessor *lookupProcessor,
GlyphIterator *glyphIterator,
const LEFontInstance *fontInstance,
LEErrorCode& success) const
@@ -363,20 +389,23 @@
case 1:
{
- const ChainingContextualSubstitutionFormat1Subtable *subtable = (const ChainingContextualSubstitutionFormat1Subtable *) this;
- return subtable->process(lookupProcessor, glyphIterator, fontInstance, success);
+ LEReferenceTo<ChainingContextualSubstitutionFormat1Subtable> subtable(base, success, (ChainingContextualSubstitutionFormat1Subtable *) this);
+ if(LE_FAILURE(success)) return 0;
+ return subtable->process(subtable, lookupProcessor, glyphIterator, fontInstance, success);
}
case 2:
{
- const ChainingContextualSubstitutionFormat2Subtable *subtable = (const ChainingContextualSubstitutionFormat2Subtable *) this;
- return subtable->process(lookupProcessor, glyphIterator, fontInstance, success);
+ LEReferenceTo<ChainingContextualSubstitutionFormat2Subtable> subtable(base, success, (const ChainingContextualSubstitutionFormat2Subtable *) this);
+ if( LE_FAILURE(success) ) { return 0; }
+ return subtable->process(subtable, lookupProcessor, glyphIterator, fontInstance, success);
}
case 3:
{
- const ChainingContextualSubstitutionFormat3Subtable *subtable = (const ChainingContextualSubstitutionFormat3Subtable *) this;
- return subtable->process(lookupProcessor, glyphIterator, fontInstance, success);
+ LEReferenceTo<ChainingContextualSubstitutionFormat3Subtable> subtable(base, success, (const ChainingContextualSubstitutionFormat3Subtable *) this);
+ if( LE_FAILURE(success) ) { return 0; }
+ return subtable->process(subtable, lookupProcessor, glyphIterator, fontInstance, success);
}
default:
@@ -390,7 +419,7 @@
// emptyFeatureList matches an le_uint32 or an le_uint16...
static const FeatureMask emptyFeatureList = 0x00000000UL;
-le_uint32 ChainingContextualSubstitutionFormat1Subtable::process(const LookupProcessor *lookupProcessor,
+le_uint32 ChainingContextualSubstitutionFormat1Subtable::process(const LETableReference &base, const LookupProcessor *lookupProcessor,
GlyphIterator *glyphIterator,
const LEFontInstance *fontInstance,
LEErrorCode& success) const
@@ -410,8 +439,8 @@
if (coverageIndex < srSetCount) {
Offset chainSubRuleSetTableOffset = SWAPW(chainSubRuleSetTableOffsetArray[coverageIndex]);
- const ChainSubRuleSetTable *chainSubRuleSetTable =
- (const ChainSubRuleSetTable *) ((char *) this + chainSubRuleSetTableOffset);
+ LEReferenceTo<ChainSubRuleSetTable>
+ chainSubRuleSetTable(base, success, (const ChainSubRuleSetTable *) ((char *) this + chainSubRuleSetTableOffset));
le_uint16 chainSubRuleCount = SWAPW(chainSubRuleSetTable->chainSubRuleCount);
le_int32 position = glyphIterator->getCurrStreamPosition();
GlyphIterator tempIterator(*glyphIterator, emptyFeatureList);
@@ -419,13 +448,19 @@
for (le_uint16 subRule = 0; subRule < chainSubRuleCount; subRule += 1) {
Offset chainSubRuleTableOffset =
SWAPW(chainSubRuleSetTable->chainSubRuleTableOffsetArray[subRule]);
- const ChainSubRuleTable *chainSubRuleTable =
- (const ChainSubRuleTable *) ((char *) chainSubRuleSetTable + chainSubRuleTableOffset);
+ LEReferenceTo<ChainSubRuleTable>
+ chainSubRuleTable = LEReferenceTo<ChainSubRuleTable>(chainSubRuleSetTable, success, chainSubRuleTableOffset);
+ if( LE_FAILURE(success) ) { return 0; }
le_uint16 backtrackGlyphCount = SWAPW(chainSubRuleTable->backtrackGlyphCount);
+ LEReferenceToArrayOf<TTGlyphID> backtrackGlyphArray(base, success, chainSubRuleTable->backtrackGlyphArray, backtrackGlyphCount);
+ if( LE_FAILURE(success) ) { return 0; }
le_uint16 inputGlyphCount = (le_uint16) SWAPW(chainSubRuleTable->backtrackGlyphArray[backtrackGlyphCount]) - 1;
- const TTGlyphID *inputGlyphArray = &chainSubRuleTable->backtrackGlyphArray[backtrackGlyphCount + 1];
+ LEReferenceToArrayOf<TTGlyphID> inputGlyphArray(base, success, &chainSubRuleTable->backtrackGlyphArray[backtrackGlyphCount + 1], inputGlyphCount+2);
+
+ if( LE_FAILURE(success) ) { return 0; }
le_uint16 lookaheadGlyphCount = (le_uint16) SWAPW(inputGlyphArray[inputGlyphCount]);
- const TTGlyphID *lookaheadGlyphArray = &inputGlyphArray[inputGlyphCount + 1];
+ LEReferenceToArrayOf<TTGlyphID> lookaheadGlyphArray(base, success, inputGlyphArray.getAlias(inputGlyphCount + 1,success), lookaheadGlyphCount+2);
+ if( LE_FAILURE(success) ) { return 0; }
le_uint16 substCount = (le_uint16) SWAPW(lookaheadGlyphArray[lookaheadGlyphCount]);
tempIterator.setCurrStreamPosition(position);
@@ -435,7 +470,8 @@
}
tempIterator.prev();
- if (! matchGlyphIDs(chainSubRuleTable->backtrackGlyphArray, backtrackGlyphCount, &tempIterator, TRUE)) {
+
+ if (! matchGlyphIDs(backtrackGlyphArray, backtrackGlyphCount, &tempIterator, TRUE)) {
continue;
}
@@ -446,8 +482,8 @@
}
if (matchGlyphIDs(inputGlyphArray, inputGlyphCount, glyphIterator)) {
- const SubstitutionLookupRecord *substLookupRecordArray =
- (const SubstitutionLookupRecord *) &lookaheadGlyphArray[lookaheadGlyphCount + 1];
+ LEReferenceToArrayOf<SubstitutionLookupRecord>
+ substLookupRecordArray(base, success, (const SubstitutionLookupRecord *) lookaheadGlyphArray.getAlias(lookaheadGlyphCount + 1,success), substCount);
applySubstitutionLookups(lookupProcessor, substLookupRecordArray, substCount, glyphIterator, fontInstance, position, success);
@@ -464,7 +500,7 @@
return 0;
}
-le_uint32 ChainingContextualSubstitutionFormat2Subtable::process(const LookupProcessor *lookupProcessor,
+le_uint32 ChainingContextualSubstitutionFormat2Subtable::process(const LETableReference &base, const LookupProcessor *lookupProcessor,
GlyphIterator *glyphIterator,
const LEFontInstance *fontInstance,
LEErrorCode& success) const
@@ -480,19 +516,21 @@
}
if (coverageIndex >= 0) {
- const ClassDefinitionTable *backtrackClassDefinitionTable =
- (const ClassDefinitionTable *) ((char *) this + SWAPW(backtrackClassDefTableOffset));
- const ClassDefinitionTable *inputClassDefinitionTable =
- (const ClassDefinitionTable *) ((char *) this + SWAPW(inputClassDefTableOffset));
- const ClassDefinitionTable *lookaheadClassDefinitionTable =
- (const ClassDefinitionTable *) ((char *) this + SWAPW(lookaheadClassDefTableOffset));
+ LEReferenceTo<ClassDefinitionTable>
+ backtrackClassDefinitionTable(base, success, (const ClassDefinitionTable *) ((char *) this + SWAPW(backtrackClassDefTableOffset)));
+ LEReferenceTo<ClassDefinitionTable>
+ inputClassDefinitionTable(base, success, (const ClassDefinitionTable *) ((char *) this + SWAPW(inputClassDefTableOffset)));
+ LEReferenceTo<ClassDefinitionTable>
+ lookaheadClassDefinitionTable(base, success, (const ClassDefinitionTable *) ((char *) this + SWAPW(lookaheadClassDefTableOffset)));
le_uint16 scSetCount = SWAPW(chainSubClassSetCount);
- le_int32 setClass = inputClassDefinitionTable->getGlyphClass(glyphIterator->getCurrGlyphID());
+ le_int32 setClass = inputClassDefinitionTable->getGlyphClass(inputClassDefinitionTable,
+ glyphIterator->getCurrGlyphID(),
+ success);
if (setClass < scSetCount && chainSubClassSetTableOffsetArray[setClass] != 0) {
Offset chainSubClassSetTableOffset = SWAPW(chainSubClassSetTableOffsetArray[setClass]);
- const ChainSubClassSetTable *chainSubClassSetTable =
- (const ChainSubClassSetTable *) ((char *) this + chainSubClassSetTableOffset);
+ LEReferenceTo<ChainSubClassSetTable>
+ chainSubClassSetTable(base, success, (const ChainSubClassSetTable *) ((char *) this + chainSubClassSetTableOffset));
le_uint16 chainSubClassRuleCount = SWAPW(chainSubClassSetTable->chainSubClassRuleCount);
le_int32 position = glyphIterator->getCurrStreamPosition();
GlyphIterator tempIterator(*glyphIterator, emptyFeatureList);
@@ -500,13 +538,15 @@
for (le_uint16 scRule = 0; scRule < chainSubClassRuleCount; scRule += 1) {
Offset chainSubClassRuleTableOffset =
SWAPW(chainSubClassSetTable->chainSubClassRuleTableOffsetArray[scRule]);
- const ChainSubClassRuleTable *chainSubClassRuleTable =
- (const ChainSubClassRuleTable *) ((char *) chainSubClassSetTable + chainSubClassRuleTableOffset);
+ LEReferenceTo<ChainSubClassRuleTable>
+ chainSubClassRuleTable(chainSubClassSetTable, success, chainSubClassRuleTableOffset);
le_uint16 backtrackGlyphCount = SWAPW(chainSubClassRuleTable->backtrackGlyphCount);
le_uint16 inputGlyphCount = SWAPW(chainSubClassRuleTable->backtrackClassArray[backtrackGlyphCount]) - 1;
- const le_uint16 *inputClassArray = &chainSubClassRuleTable->backtrackClassArray[backtrackGlyphCount + 1];
- le_uint16 lookaheadGlyphCount = SWAPW(inputClassArray[inputGlyphCount]);
- const le_uint16 *lookaheadClassArray = &inputClassArray[inputGlyphCount + 1];
+ LEReferenceToArrayOf<le_uint16> inputClassArray(base, success, &chainSubClassRuleTable->backtrackClassArray[backtrackGlyphCount + 1],inputGlyphCount+2); // +2 for the lookaheadGlyphCount count
+ le_uint16 lookaheadGlyphCount = SWAPW(inputClassArray.getObject(inputGlyphCount, success));
+ LEReferenceToArrayOf<le_uint16> lookaheadClassArray(base, success, inputClassArray.getAlias(inputGlyphCount + 1,success), lookaheadGlyphCount+2); // +2 for the substCount
+
+ if( LE_FAILURE(success) ) { return 0; }
le_uint16 substCount = SWAPW(lookaheadClassArray[lookaheadGlyphCount]);
@@ -517,20 +557,22 @@
}
tempIterator.prev();
- if (! matchGlyphClasses(chainSubClassRuleTable->backtrackClassArray, backtrackGlyphCount,
- &tempIterator, backtrackClassDefinitionTable, TRUE)) {
+ LEReferenceToArrayOf<le_uint16> backtrackClassArray(base, success, chainSubClassRuleTable->backtrackClassArray, backtrackGlyphCount);
+ if( LE_FAILURE(success) ) { return 0; }
+ if (! matchGlyphClasses(backtrackClassArray, backtrackGlyphCount,
+ &tempIterator, backtrackClassDefinitionTable, success, TRUE)) {
continue;
}
tempIterator.setCurrStreamPosition(position);
tempIterator.next(inputGlyphCount);
- if (! matchGlyphClasses(lookaheadClassArray, lookaheadGlyphCount, &tempIterator, lookaheadClassDefinitionTable)) {
+ if (! matchGlyphClasses(lookaheadClassArray, lookaheadGlyphCount, &tempIterator, lookaheadClassDefinitionTable, success)) {
continue;
}
- if (matchGlyphClasses(inputClassArray, inputGlyphCount, glyphIterator, inputClassDefinitionTable)) {
- const SubstitutionLookupRecord *substLookupRecordArray =
- (const SubstitutionLookupRecord *) &lookaheadClassArray[lookaheadGlyphCount + 1];
+ if (matchGlyphClasses(inputClassArray, inputGlyphCount, glyphIterator, inputClassDefinitionTable, success)) {
+ LEReferenceToArrayOf<SubstitutionLookupRecord>
+ substLookupRecordArray(base, success, (const SubstitutionLookupRecord *) lookaheadClassArray.getAlias(lookaheadGlyphCount + 1, success), substCount);
applySubstitutionLookups(lookupProcessor, substLookupRecordArray, substCount, glyphIterator, fontInstance, position, success);
@@ -547,7 +589,7 @@
return 0;
}
-le_uint32 ChainingContextualSubstitutionFormat3Subtable::process(const LookupProcessor *lookupProcessor,
+le_uint32 ChainingContextualSubstitutionFormat3Subtable::process(const LETableReference &base, const LookupProcessor *lookupProcessor,
GlyphIterator *glyphIterator,
const LEFontInstance *fontInstance,
LEErrorCode & success) const
@@ -558,9 +600,13 @@
le_uint16 backtrkGlyphCount = SWAPW(backtrackGlyphCount);
le_uint16 inputGlyphCount = (le_uint16) SWAPW(backtrackCoverageTableOffsetArray[backtrkGlyphCount]);
- const Offset *inputCoverageTableOffsetArray = &backtrackCoverageTableOffsetArray[backtrkGlyphCount + 1];
+ LEReferenceToArrayOf<Offset> inputCoverageTableOffsetArray(base, success, &backtrackCoverageTableOffsetArray[backtrkGlyphCount + 1], inputGlyphCount+2); // offset
const le_uint16 lookaheadGlyphCount = (le_uint16) SWAPW(inputCoverageTableOffsetArray[inputGlyphCount]);
- const Offset *lookaheadCoverageTableOffsetArray = &inputCoverageTableOffsetArray[inputGlyphCount + 1];
+
+ if( LE_FAILURE(success) ) { return 0; }
+ LEReferenceToArrayOf<Offset> lookaheadCoverageTableOffsetArray(base, success, inputCoverageTableOffsetArray.getAlias(inputGlyphCount + 1, success), lookaheadGlyphCount+2);
+
+ if( LE_FAILURE(success) ) { return 0; }
le_uint16 substCount = (le_uint16) SWAPW(lookaheadCoverageTableOffsetArray[lookaheadGlyphCount]);
le_int32 position = glyphIterator->getCurrStreamPosition();
GlyphIterator tempIterator(*glyphIterator, emptyFeatureList);
@@ -571,14 +617,14 @@
tempIterator.prev();
if (! ContextualSubstitutionBase::matchGlyphCoverages(backtrackCoverageTableOffsetArray,
- backtrkGlyphCount, &tempIterator, (const char *) this, TRUE)) {
+ backtrkGlyphCount, &tempIterator, base, success, TRUE)) {
return 0;
}
tempIterator.setCurrStreamPosition(position);
tempIterator.next(inputGlyphCount - 1);
if (! ContextualSubstitutionBase::matchGlyphCoverages(lookaheadCoverageTableOffsetArray,
- lookaheadGlyphCount, &tempIterator, (const char *) this)) {
+ lookaheadGlyphCount, &tempIterator, base, success)) {
return 0;
}
@@ -589,9 +635,10 @@
glyphIterator->prev();
if (ContextualSubstitutionBase::matchGlyphCoverages(inputCoverageTableOffsetArray,
- inputGlyphCount, glyphIterator, (const char *) this)) {
- const SubstitutionLookupRecord *substLookupRecordArray =
- (const SubstitutionLookupRecord *) &lookaheadCoverageTableOffsetArray[lookaheadGlyphCount + 1];
+ inputGlyphCount, glyphIterator, base, success)) {
+ LEReferenceToArrayOf<SubstitutionLookupRecord>
+ substLookupRecordArray(base, success,
+ (const SubstitutionLookupRecord *) lookaheadCoverageTableOffsetArray.getAlias(lookaheadGlyphCount + 1,success), substCount);
ContextualSubstitutionBase::applySubstitutionLookups(lookupProcessor, substLookupRecordArray, substCount, glyphIterator, fontInstance, position, success);
--- a/jdk/src/share/native/sun/font/layout/ContextualSubstSubtables.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/ContextualSubstSubtables.h Wed Jul 05 19:27:58 2017 +0200
@@ -56,20 +56,32 @@
struct ContextualSubstitutionBase : GlyphSubstitutionSubtable
{
static le_bool matchGlyphIDs(
- const TTGlyphID *glyphArray, le_uint16 glyphCount, GlyphIterator *glyphIterator,
+ const LEReferenceToArrayOf<TTGlyphID> &glyphArray, le_uint16 glyphCount, GlyphIterator *glyphIterator,
le_bool backtrack = FALSE);
static le_bool matchGlyphClasses(
- const le_uint16 *classArray, le_uint16 glyphCount, GlyphIterator *glyphIterator,
- const ClassDefinitionTable *classDefinitionTable, le_bool backtrack = FALSE);
+ const LEReferenceToArrayOf<le_uint16> &classArray, le_uint16 glyphCount, GlyphIterator *glyphIterator,
+ const LEReferenceTo<ClassDefinitionTable> &classDefinitionTable, LEErrorCode &success, le_bool backtrack = FALSE);
static le_bool matchGlyphCoverages(
- const Offset *coverageTableOffsetArray, le_uint16 glyphCount,
- GlyphIterator *glyphIterator, const char *offsetBase, le_bool backtrack = FALSE);
+ const LEReferenceToArrayOf<Offset> &coverageTableOffsetArray, le_uint16 glyphCount,
+ GlyphIterator *glyphIterator, const LETableReference& offsetBase, LEErrorCode &success, le_bool backtrack = FALSE);
+
+ /**
+ * little shim to wrap the Offset array in range checking
+ * @private
+ */
+ static le_bool matchGlyphCoverages(
+ const Offset *coverageTableOffsetArray, le_uint16 glyphCount,
+ GlyphIterator *glyphIterator, const LETableReference& offsetBase, LEErrorCode &success, le_bool backtrack = FALSE) {
+ LEReferenceToArrayOf<Offset> ref(offsetBase, success, coverageTableOffsetArray, glyphCount);
+ if( LE_FAILURE(success) ) { return FALSE; }
+ return matchGlyphCoverages(ref, glyphCount, glyphIterator, offsetBase, success, backtrack);
+ }
static void applySubstitutionLookups(
const LookupProcessor *lookupProcessor,
- const SubstitutionLookupRecord *substLookupRecordArray,
+ const LEReferenceToArrayOf<SubstitutionLookupRecord>& substLookupRecordArray,
le_uint16 substCount,
GlyphIterator *glyphIterator,
const LEFontInstance *fontInstance,
@@ -79,7 +91,8 @@
struct ContextualSubstitutionSubtable : ContextualSubstitutionBase
{
- le_uint32 process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
+ le_uint32 process(const LETableReference &base, const LookupProcessor *lookupProcessor,
+ GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
};
struct ContextualSubstitutionFormat1Subtable : ContextualSubstitutionSubtable
@@ -87,7 +100,8 @@
le_uint16 subRuleSetCount;
Offset subRuleSetTableOffsetArray[ANY_NUMBER];
- le_uint32 process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
+ le_uint32 process(const LETableReference &base, const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator,
+ const LEFontInstance *fontInstance, LEErrorCode& success) const;
};
LE_VAR_ARRAY(ContextualSubstitutionFormat1Subtable, subRuleSetTableOffsetArray)
@@ -116,7 +130,7 @@
le_uint16 subClassSetCount;
Offset subClassSetTableOffsetArray[ANY_NUMBER];
- le_uint32 process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
+ le_uint32 process(const LETableReference &base, const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
};
LE_VAR_ARRAY(ContextualSubstitutionFormat2Subtable, subClassSetTableOffsetArray)
@@ -152,13 +166,15 @@
Offset coverageTableOffsetArray[ANY_NUMBER];
//SubstitutionLookupRecord substLookupRecord[ANY_NUMBER];
- le_uint32 process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
+ le_uint32 process(const LETableReference &base, const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator,
+ const LEFontInstance *fontInstance, LEErrorCode& success) const;
};
LE_VAR_ARRAY(ContextualSubstitutionFormat3Subtable, coverageTableOffsetArray)
struct ChainingContextualSubstitutionSubtable : ContextualSubstitutionBase
{
- le_uint32 process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
+ le_uint32 process(const LEReferenceTo<ChainingContextualSubstitutionSubtable> &base, const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator,
+ const LEFontInstance *fontInstance, LEErrorCode& success) const;
};
struct ChainingContextualSubstitutionFormat1Subtable : ChainingContextualSubstitutionSubtable
@@ -166,7 +182,8 @@
le_uint16 chainSubRuleSetCount;
Offset chainSubRuleSetTableOffsetArray[ANY_NUMBER];
- le_uint32 process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
+ le_uint32 process(const LETableReference &base, const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator,
+ const LEFontInstance *fontInstance, LEErrorCode& success) const;
};
LE_VAR_ARRAY(ChainingContextualSubstitutionFormat1Subtable, chainSubRuleSetTableOffsetArray)
@@ -201,7 +218,8 @@
le_uint16 chainSubClassSetCount;
Offset chainSubClassSetTableOffsetArray[ANY_NUMBER];
- le_uint32 process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
+ le_uint32 process(const LETableReference &base, const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator,
+ const LEFontInstance *fontInstance, LEErrorCode& success) const;
};
LE_VAR_ARRAY(ChainingContextualSubstitutionFormat2Subtable, chainSubClassSetTableOffsetArray)
@@ -243,7 +261,8 @@
//le_uint16 substCount;
//SubstitutionLookupRecord substLookupRecord[ANY_NUMBER];
- le_uint32 process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
+ le_uint32 process(const LETableReference &base, const LookupProcessor *lookupProcessor,
+ GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
};
LE_VAR_ARRAY(ChainingContextualSubstitutionFormat3Subtable, backtrackCoverageTableOffsetArray)
--- a/jdk/src/share/native/sun/font/layout/CoverageTables.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/CoverageTables.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -37,8 +37,10 @@
U_NAMESPACE_BEGIN
-le_int32 CoverageTable::getGlyphCoverage(LEGlyphID glyphID) const
+le_int32 CoverageTable::getGlyphCoverage(const LETableReference &base, LEGlyphID glyphID, LEErrorCode &success) const
{
+ if(LE_FAILURE(success)) return -1;
+
switch(SWAPW(coverageFormat))
{
case 0:
@@ -46,16 +48,16 @@
case 1:
{
- const CoverageFormat1Table *f1Table = (const CoverageFormat1Table *) this;
+ LEReferenceTo<CoverageFormat1Table> f1Table(base, success);
- return f1Table->getGlyphCoverage(glyphID);
+ return f1Table->getGlyphCoverage(f1Table, glyphID, success);
}
case 2:
{
- const CoverageFormat2Table *f2Table = (const CoverageFormat2Table *) this;
+ LEReferenceTo<CoverageFormat2Table> f2Table(base, success);
- return f2Table->getGlyphCoverage(glyphID);
+ return f2Table->getGlyphCoverage(f2Table, glyphID, success);
}
default:
@@ -63,8 +65,10 @@
}
}
-le_int32 CoverageFormat1Table::getGlyphCoverage(LEGlyphID glyphID) const
+le_int32 CoverageFormat1Table::getGlyphCoverage(LEReferenceTo<CoverageFormat1Table> &base, LEGlyphID glyphID, LEErrorCode &success) const
{
+ if(LE_FAILURE(success)) return -1;
+
TTGlyphID ttGlyphID = (TTGlyphID) LE_GET_GLYPH(glyphID);
le_uint16 count = SWAPW(glyphCount);
le_uint8 bit = OpenTypeUtilities::highBit(count);
@@ -73,37 +77,45 @@
le_uint16 probe = power;
le_uint16 index = 0;
- if (count == 0) {
- return -1;
- }
+ if (count == 0) {
+ return -1;
+ }
+
+ LEReferenceToArrayOf<TTGlyphID>(base, success, glyphArray, count);
+ if(LE_FAILURE(success)) return -1; // range checks array
+
if (SWAPW(glyphArray[extra]) <= ttGlyphID) {
- index = extra;
+ index = extra;
}
while (probe > (1 << 0)) {
- probe >>= 1;
+ probe >>= 1;
- if (SWAPW(glyphArray[index + probe]) <= ttGlyphID) {
- index += probe;
- }
+ if (SWAPW(glyphArray[index + probe]) <= ttGlyphID) {
+ index += probe;
+ }
}
if (SWAPW(glyphArray[index]) == ttGlyphID) {
- return index;
+ return index;
}
return -1;
}
-le_int32 CoverageFormat2Table::getGlyphCoverage(LEGlyphID glyphID) const
+le_int32 CoverageFormat2Table::getGlyphCoverage(LEReferenceTo<CoverageFormat2Table> &base, LEGlyphID glyphID, LEErrorCode &success) const
{
+ if(LE_FAILURE(success)) return -1;
+
TTGlyphID ttGlyphID = (TTGlyphID) LE_GET_GLYPH(glyphID);
le_uint16 count = SWAPW(rangeCount);
+
+ LEReferenceToArrayOf<GlyphRangeRecord> rangeRecordArrayRef(base, success, rangeRecordArray, count);
le_int32 rangeIndex =
- OpenTypeUtilities::getGlyphRangeIndex(ttGlyphID, rangeRecordArray, count);
+ OpenTypeUtilities::getGlyphRangeIndex(ttGlyphID, rangeRecordArrayRef, success);
- if (rangeIndex < 0) {
+ if (rangeIndex < 0 || LE_FAILURE(success)) { // could fail if array out of bounds
return -1;
}
--- a/jdk/src/share/native/sun/font/layout/CoverageTables.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/CoverageTables.h Wed Jul 05 19:27:58 2017 +0200
@@ -46,7 +46,7 @@
{
le_uint16 coverageFormat;
- le_int32 getGlyphCoverage(LEGlyphID glyphID) const;
+ le_int32 getGlyphCoverage(const LETableReference &base, LEGlyphID glyphID, LEErrorCode &success) const;
};
struct CoverageFormat1Table : CoverageTable
@@ -54,7 +54,7 @@
le_uint16 glyphCount;
TTGlyphID glyphArray[ANY_NUMBER];
- le_int32 getGlyphCoverage(LEGlyphID glyphID) const;
+ le_int32 getGlyphCoverage(LEReferenceTo<CoverageFormat1Table> &base, LEGlyphID glyphID, LEErrorCode &success) const;
};
LE_VAR_ARRAY(CoverageFormat1Table, glyphArray)
@@ -64,7 +64,7 @@
le_uint16 rangeCount;
GlyphRangeRecord rangeRecordArray[ANY_NUMBER];
- le_int32 getGlyphCoverage(LEGlyphID glyphID) const;
+ le_int32 getGlyphCoverage(LEReferenceTo<CoverageFormat2Table> &base, LEGlyphID glyphID, LEErrorCode &success) const;
};
LE_VAR_ARRAY(CoverageFormat2Table, rangeRecordArray)
--- a/jdk/src/share/native/sun/font/layout/CursiveAttachmentSubtables.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/CursiveAttachmentSubtables.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -51,23 +51,27 @@
}
LEPoint entryAnchor, exitAnchor;
- Offset entryOffset = SWAPW(entryExitRecords[coverageIndex].entryAnchor); // TODO
+ Offset entryOffset = SWAPW(entryExitRecords[coverageIndex].entryAnchor);
Offset exitOffset = SWAPW(entryExitRecords[coverageIndex].exitAnchor);
if (entryOffset != 0) {
- const AnchorTable *entryAnchorTable = (const AnchorTable *) ((char *) this + entryOffset);
+ LEReferenceTo<AnchorTable> entryAnchorTable(base, success, entryOffset);
- entryAnchorTable->getAnchor(glyphID, fontInstance, entryAnchor);
- glyphIterator->setCursiveEntryPoint(entryAnchor);
+ if( LE_SUCCESS(success) ) {
+ entryAnchorTable->getAnchor(entryAnchorTable, glyphID, fontInstance, entryAnchor, success);
+ glyphIterator->setCursiveEntryPoint(entryAnchor);
+ }
} else {
//glyphIterator->clearCursiveEntryPoint();
}
if (exitOffset != 0) {
- const AnchorTable *exitAnchorTable = (const AnchorTable *) ((char *) this + exitOffset);
+ LEReferenceTo<AnchorTable> exitAnchorTable(base, success, exitOffset);
- exitAnchorTable->getAnchor(glyphID, fontInstance, exitAnchor);
- glyphIterator->setCursiveExitPoint(exitAnchor);
+ if( LE_SUCCESS(success) ) {
+ exitAnchorTable->getAnchor(exitAnchorTable, glyphID, fontInstance, exitAnchor, success);
+ glyphIterator->setCursiveExitPoint(exitAnchor);
+ }
} else {
//glyphIterator->clearCursiveExitPoint();
}
--- a/jdk/src/share/native/sun/font/layout/DeviceTables.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/DeviceTables.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -43,7 +43,7 @@
#define FORMAT_COUNT LE_ARRAY_SIZE(fieldBits)
-le_int16 DeviceTable::getAdjustment(le_uint16 ppem) const
+le_int16 DeviceTable::getAdjustment(const LEReferenceTo<DeviceTable>&base, le_uint16 ppem, LEErrorCode &success) const
{
le_uint16 start = SWAPW(startSize);
le_uint16 format = SWAPW(deltaFormat) - 1;
@@ -53,6 +53,13 @@
le_uint16 sizeIndex = ppem - start;
le_uint16 bits = fieldBits[format];
le_uint16 count = 16 / bits;
+
+ LEReferenceToArrayOf<le_uint16> deltaValuesRef(base, success, deltaValues, (sizeIndex / count));
+
+ if(LE_FAILURE(success)) {
+ return result;
+ }
+
le_uint16 word = SWAPW(deltaValues[sizeIndex / count]);
le_uint16 fieldIndex = sizeIndex % count;
le_uint16 shift = 16 - (bits * (fieldIndex + 1));
--- a/jdk/src/share/native/sun/font/layout/DeviceTables.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/DeviceTables.h Wed Jul 05 19:27:58 2017 +0200
@@ -50,7 +50,7 @@
le_uint16 deltaFormat;
le_uint16 deltaValues[ANY_NUMBER];
- le_int16 getAdjustment(le_uint16 ppem) const;
+ le_int16 getAdjustment(const LEReferenceTo<DeviceTable> &base, le_uint16 ppem, LEErrorCode &success) const;
private:
static const le_uint16 fieldMasks[];
--- a/jdk/src/share/native/sun/font/layout/ExtensionSubtables.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/ExtensionSubtables.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -48,7 +48,6 @@
const LookupProcessor *lookupProcessor, le_uint16 lookupType,
GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const
{
-
if (LE_FAILURE(success)) {
return 0;
}
--- a/jdk/src/share/native/sun/font/layout/ExtensionSubtables.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/ExtensionSubtables.h Wed Jul 05 19:27:58 2017 +0200
@@ -52,8 +52,7 @@
le_uint16 extensionLookupType;
le_uint32 extensionOffset;
- le_uint32 process(const LEReferenceTo<ExtensionSubtable> &extRef,
- const LookupProcessor *lookupProcessor, le_uint16 lookupType,
+ le_uint32 process(const LEReferenceTo<ExtensionSubtable> &base, const LookupProcessor *lookupProcessor, le_uint16 lookupType,
GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
};
--- a/jdk/src/share/native/sun/font/layout/GDEFMarkFilter.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/GDEFMarkFilter.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -49,11 +49,11 @@
// nothing to do?
}
-le_bool GDEFMarkFilter::accept(LEGlyphID glyph) const
+le_bool GDEFMarkFilter::accept(LEGlyphID glyph, LEErrorCode &success) const
{
- le_int32 glyphClass = classDefTable->getGlyphClass(glyph);
+ le_int32 glyphClass = classDefTable->getGlyphClass(classDefTable, glyph, success);
- return glyphClass == gcdMarkGlyph;
+ return glyphClass == gcdMarkGlyph;
}
U_NAMESPACE_END
--- a/jdk/src/share/native/sun/font/layout/GDEFMarkFilter.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/GDEFMarkFilter.h Wed Jul 05 19:27:58 2017 +0200
@@ -55,7 +55,7 @@
GDEFMarkFilter(const LEReferenceTo<GlyphDefinitionTableHeader> &gdefTable, LEErrorCode &success);
virtual ~GDEFMarkFilter();
- virtual le_bool accept(LEGlyphID glyph) const;
+ virtual le_bool accept(LEGlyphID glyph, LEErrorCode &success) const;
};
U_NAMESPACE_END
--- a/jdk/src/share/native/sun/font/layout/GlyphIterator.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/GlyphIterator.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -41,14 +41,13 @@
U_NAMESPACE_BEGIN
GlyphIterator::GlyphIterator(LEGlyphStorage &theGlyphStorage, GlyphPositionAdjustments *theGlyphPositionAdjustments, le_bool rightToLeft, le_uint16 theLookupFlags,
- FeatureMask theFeatureMask, const LEReferenceTo<GlyphDefinitionTableHeader> &theGlyphDefinitionTableHeader)
+ FeatureMask theFeatureMask, const LEReferenceTo<GlyphDefinitionTableHeader> &theGlyphDefinitionTableHeader, LEErrorCode &success)
: direction(1), position(-1), nextLimit(-1), prevLimit(-1),
glyphStorage(theGlyphStorage), glyphPositionAdjustments(theGlyphPositionAdjustments),
srcIndex(-1), destIndex(-1), lookupFlags(theLookupFlags), featureMask(theFeatureMask), glyphGroup(0),
glyphClassDefinitionTable(), markAttachClassDefinitionTable()
{
- LEErrorCode success = LE_NO_ERROR; // TODO
le_int32 glyphCount = glyphStorage.getGlyphCount();
if (theGlyphDefinitionTableHeader.isValid()) {
@@ -388,7 +387,7 @@
void GlyphIterator::filterResetCache(void) {
filterCacheValid = FALSE;
- }
+}
le_bool GlyphIterator::filterGlyph(le_uint32 index)
{
@@ -399,53 +398,53 @@
le_bool &filterResult = filterCache.result; // NB: Making this a reference to accept the updated value, in case
// we want more fancy cacheing in the future.
- if (LE_GET_GLYPH(glyphID) >= 0xFFFE) {
+ if (LE_GET_GLYPH(glyphID) >= 0xFFFE) {
filterResult = TRUE;
} else {
LEErrorCode success = LE_NO_ERROR;
le_int32 glyphClass = gcdNoGlyphClass;
- if (glyphClassDefinitionTable.isValid()) {
- glyphClass = glyphClassDefinitionTable->getGlyphClass(glyphClassDefinitionTable, glyphID, success);
- }
+ if (glyphClassDefinitionTable.isValid()) {
+ glyphClass = glyphClassDefinitionTable->getGlyphClass(glyphClassDefinitionTable, glyphID, success);
+ }
switch (glyphClass) {
- case gcdNoGlyphClass:
+ case gcdNoGlyphClass:
filterResult = FALSE;
break;
- case gcdSimpleGlyph:
+ case gcdSimpleGlyph:
filterResult = (lookupFlags & lfIgnoreBaseGlyphs) != 0;
break;
- case gcdLigatureGlyph:
+ case gcdLigatureGlyph:
filterResult = (lookupFlags & lfIgnoreLigatures) != 0;
break;
- case gcdMarkGlyph:
- if ((lookupFlags & lfIgnoreMarks) != 0) {
+ case gcdMarkGlyph:
+ if ((lookupFlags & lfIgnoreMarks) != 0) {
filterResult = TRUE;
} else {
- le_uint16 markAttachType = (lookupFlags & lfMarkAttachTypeMask) >> lfMarkAttachTypeShift;
+ le_uint16 markAttachType = (lookupFlags & lfMarkAttachTypeMask) >> lfMarkAttachTypeShift;
- if ((markAttachType != 0) && (markAttachClassDefinitionTable.isValid())) {
+ if ((markAttachType != 0) && (markAttachClassDefinitionTable.isValid())) {
filterResult = (markAttachClassDefinitionTable
-> getGlyphClass(markAttachClassDefinitionTable, glyphID, success) != markAttachType);
} else {
filterResult = FALSE;
- }
- }
+ }
+ }
break;
- case gcdComponentGlyph:
+ case gcdComponentGlyph:
filterResult = ((lookupFlags & lfIgnoreBaseGlyphs) != 0);
break;
- default:
+ default:
filterResult = FALSE;
break;
- }
+ }
}
filterCacheValid = TRUE;
- }
+ }
return filterCache.result;
}
--- a/jdk/src/share/native/sun/font/layout/GlyphIterator.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/GlyphIterator.h Wed Jul 05 19:27:58 2017 +0200
@@ -49,7 +49,7 @@
class GlyphIterator : public UMemory {
public:
GlyphIterator(LEGlyphStorage &theGlyphStorage, GlyphPositionAdjustments *theGlyphPositionAdjustments, le_bool rightToLeft, le_uint16 theLookupFlags,
- FeatureMask theFeatureMask, const LEReferenceTo<GlyphDefinitionTableHeader> &theGlyphDefinitionTableHeader);
+ FeatureMask theFeatureMask, const LEReferenceTo<GlyphDefinitionTableHeader> &theGlyphDefinitionTableHeader, LEErrorCode &success);
GlyphIterator(GlyphIterator &that);
--- a/jdk/src/share/native/sun/font/layout/GlyphPosnLookupProc.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/GlyphPosnLookupProc.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -95,6 +95,8 @@
le_uint32 delta = 0;
+ //_LETRACE("attempting lookupType #%d", lookupType);
+
switch(lookupType)
{
case 0:
@@ -152,21 +154,21 @@
{
LEReferenceTo<ContextualPositioningSubtable> subtable(lookupSubtable, success);
- delta = subtable->process(this, glyphIterator, fontInstance, success);
+ delta = subtable->process(subtable, this , glyphIterator, fontInstance, success);
break;
}
case gpstChainedContext:
{
- LEReferenceTo<ChainingContextualPositioningSubtable> subtable(lookupSubtable, success);
+ const LEReferenceTo<ChainingContextualPositioningSubtable> subtable(lookupSubtable, success);
- delta = subtable->process(this, glyphIterator, fontInstance, success);
+ delta = subtable->process(subtable, this, glyphIterator, fontInstance, success);
break;
}
case gpstExtension:
{
- LEReferenceTo<ExtensionSubtable> subtable(lookupSubtable, success);
+ const LEReferenceTo<ExtensionSubtable> subtable(lookupSubtable, success);
delta = subtable->process(subtable, this, lookupType, glyphIterator, fontInstance, success);
break;
@@ -176,6 +178,12 @@
break;
}
+#if LE_TRACE
+ if(delta != 0) {
+ _LETRACE("GlyphPositioningLookupProcessor applied #%d -> delta %d @ %d", lookupType, delta, glyphIterator->getCurrStreamPosition());
+ }
+#endif
+
return delta;
}
--- a/jdk/src/share/native/sun/font/layout/GlyphSubstLookupProc.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/GlyphSubstLookupProc.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -123,7 +123,7 @@
{
const LEReferenceTo<ContextualSubstitutionSubtable> subtable(lookupSubtable, success);
- delta = subtable->process(this, glyphIterator, fontInstance, success);
+ delta = subtable->process(subtable, this, glyphIterator, fontInstance, success);
break;
}
@@ -131,7 +131,7 @@
{
const LEReferenceTo<ChainingContextualSubstitutionSubtable> subtable(lookupSubtable, success);
- delta = subtable->process(this, glyphIterator, fontInstance, success);
+ delta = subtable->process(subtable, this, glyphIterator, fontInstance, success);
break;
}
--- a/jdk/src/share/native/sun/font/layout/IndicLayoutEngine.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/IndicLayoutEngine.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -44,7 +44,7 @@
#include "LEGlyphStorage.h"
#include "IndicReordering.h"
-#include <stdio.h>
+
U_NAMESPACE_BEGIN
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(IndicOpenTypeLayoutEngine)
@@ -53,14 +53,14 @@
le_int32 typoFlags, le_bool version2, const LEReferenceTo<GlyphSubstitutionTableHeader> &gsubTable, LEErrorCode &success)
: OpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, gsubTable, success), fMPreFixups(NULL)
{
- if ( version2 ) {
- fFeatureMap = IndicReordering::getv2FeatureMap(fFeatureMapCount);
- } else {
+ if ( version2 ) {
+ fFeatureMap = IndicReordering::getv2FeatureMap(fFeatureMapCount);
+ } else {
fFeatureMap = IndicReordering::getFeatureMap(fFeatureMapCount);
- }
- fFeatureOrder = TRUE;
- fVersion2 = version2;
- fFilterZeroWidth = IndicReordering::getFilterZeroWidth(fScriptCode);
+ }
+ fFeatureOrder = TRUE;
+ fVersion2 = version2;
+ fFilterZeroWidth = IndicReordering::getFilterZeroWidth(fScriptCode);
}
IndicOpenTypeLayoutEngine::IndicOpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, le_int32 typoFlags, LEErrorCode &success)
@@ -68,7 +68,7 @@
{
fFeatureMap = IndicReordering::getFeatureMap(fFeatureMapCount);
fFeatureOrder = TRUE;
- fVersion2 = FALSE;
+ fVersion2 = FALSE;
}
IndicOpenTypeLayoutEngine::~IndicOpenTypeLayoutEngine()
@@ -90,6 +90,7 @@
return 0;
}
+ _LETRACE("IOTLE::gp, calling parent");
le_int32 retCount = OpenTypeLayoutEngine::glyphProcessing(chars, offset, count, max, rightToLeft, glyphStorage, success);
if (LE_FAILURE(success)) {
@@ -97,11 +98,15 @@
}
if (fVersion2) {
- IndicReordering::finalReordering(glyphStorage,retCount);
- IndicReordering::applyPresentationForms(glyphStorage,retCount);
- OpenTypeLayoutEngine::glyphSubstitution(count,max, rightToLeft, glyphStorage, success);
+ _LETRACE("IOTLE::gp, v2 final,");
+ IndicReordering::finalReordering(glyphStorage,retCount);
+ _LETRACE("IOTLE::gp, v2 pres");
+ IndicReordering::applyPresentationForms(glyphStorage,retCount);
+ _LETRACE("IOTLE::gp, parent gsub");
+ OpenTypeLayoutEngine::glyphSubstitution(count,max, rightToLeft, glyphStorage, success);
} else {
- IndicReordering::adjustMPres(fMPreFixups, glyphStorage, success);
+ _LETRACE("IOTLE::gp, adjust mpres");
+ IndicReordering::adjustMPres(fMPreFixups, glyphStorage, success);
}
return retCount;
}
@@ -116,6 +121,8 @@
return 0;
}
+ _LETRACE("IOTLE: charProc");
+
if (chars == NULL || offset < 0 || count < 0 || max < 0 || offset >= max || offset + count > max) {
success = LE_ILLEGAL_ARGUMENT_ERROR;
return 0;
@@ -143,8 +150,10 @@
le_int32 outCharCount;
if (fVersion2) {
+ _LETRACE("v2process");
outCharCount = IndicReordering::v2process(&chars[offset], count, fScriptCode, outChars, glyphStorage);
} else {
+ _LETRACE("reorder");
outCharCount = IndicReordering::reorder(&chars[offset], count, fScriptCode, outChars, glyphStorage, &fMPreFixups, success);
}
--- a/jdk/src/share/native/sun/font/layout/IndicReordering.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/IndicReordering.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -254,8 +254,8 @@
return fGlyphStorage.getAuxData(charIndex,success);
}
- void decomposeReorderMatras ( const IndicClassTable *classTable, le_int32 beginSyllable, le_int32 nextSyllable, le_int32 inv_count ) {
- le_int32 i;
+ void decomposeReorderMatras ( const IndicClassTable *classTable, le_int32 beginSyllable, le_int32 nextSyllable, le_int32 inv_count ) {
+ le_int32 i;
LEErrorCode success = LE_NO_ERROR;
for ( i = beginSyllable ; i < nextSyllable ; i++ ) {
--- a/jdk/src/share/native/sun/font/layout/KernTable.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/KernTable.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -39,7 +39,7 @@
#include <stdio.h>
-#define DEBUG 0
+#define DEBUG_KERN_TABLE 0
U_NAMESPACE_BEGIN
@@ -99,14 +99,14 @@
: pairsSwapped(NULL), fTable(base)
{
if(LE_FAILURE(success) || (fTable.isEmpty())) {
-#if DEBUG
+#if DEBUG_KERN_TABLE
fprintf(stderr, "no kern data\n");
#endif
return;
}
LEReferenceTo<KernTableHeader> header(fTable, success);
-#if DEBUG
+#if DEBUG_KERN_TABLE
// dump first 32 bytes of header
for (int i = 0; i < 64; ++i) {
fprintf(stderr, "%0.2x ", ((const char*)header.getAlias())[i]&0xff);
@@ -171,13 +171,13 @@
fprintf(stderr, " searchRange: %d entrySelector: %d rangeShift: %d\n", searchRange, entrySelector, rangeShift);
fprintf(stderr, "[[ ignored font table entries: range %d selector %d shift %d ]]\n", SWAPW(table->searchRange), SWAPW(table->entrySelector), SWAPW(table->rangeShift));
#endif
-#if DEBUG
+#if DEBUG_KERN_TABLE
fprintf(stderr, "coverage: %0.4x nPairs: %d pairs 0x%x\n", coverage, nPairs, pairsSwapped);
fprintf(stderr,
" searchRange(pairs): %d entrySelector: %d rangeShift(pairs): %d\n",
searchRange, entrySelector, rangeShift);
- {
+ if (LE_SUCCESS(success)) {
// dump part of the pair list
char ids[256];
for (int i = 256; --i >= 0;) {
@@ -242,7 +242,7 @@
p = tp;
}
-#if DEBUG
+#if DEBUG_KERN_TABLE
fprintf(stderr, "binary search for %0.8x\n", key);
#endif
@@ -251,13 +251,13 @@
probe >>= 1;
tp = (const PairInfo*)(p + (probe/KERN_PAIRINFO_SIZE));
le_uint32 tkey = tp->key;
-#if DEBUG
+#if DEBUG_KERN_TABLE
fprintf(stdout, " %.3d (%0.8x)\n", (tp - pairsSwapped), tkey);
#endif
if (tkey <= key) {
if (tkey == key) {
le_int16 value = SWAPW(tp->value);
-#if DEBUG
+#if DEBUG_KERN_TABLE
fprintf(stdout, "binary found kerning pair %x:%x at %d, value: 0x%x (%g)\n",
storage[i-1], storage[i], i, value & 0xffff, font->xUnitsToPoints(value));
fflush(stdout);
--- a/jdk/src/share/native/sun/font/layout/LEFontInstance.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LEFontInstance.h Wed Jul 05 19:27:58 2017 +0200
@@ -181,6 +181,10 @@
*
* Subclasses which represent composite fonts should always return <code>NULL</code>.
*
+ * Note that implementing this function does not allow for range checking.
+ * Subclasses that desire the safety of range checking must implement the
+ * variation which has a length parameter.
+ *
* @param tableTag - the four byte table tag. (e.g. 'cmap')
*
* @return the address of the table in memory, or <code>NULL</code>
@@ -200,6 +204,8 @@
* Subclasses which represent composite fonts should always return <code>NULL</code>.
*
* This version sets a length, for range checking.
+ * Note that range checking can only be accomplished if this function is
+ * implemented in subclasses.
*
* @param tableTag - the four byte table tag. (e.g. 'cmap')
* @param length - ignored on entry, on exit will be the length of the table if known, or -1 if unknown.
@@ -572,5 +578,3 @@
U_NAMESPACE_END
#endif
-
-
--- a/jdk/src/share/native/sun/font/layout/LEGlyphFilter.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LEGlyphFilter.h Wed Jul 05 19:27:58 2017 +0200
@@ -62,7 +62,7 @@
*
* @internal
*/
- virtual le_bool accept(LEGlyphID glyph) const = 0;
+ virtual le_bool accept(LEGlyphID glyph, LEErrorCode &success) const = 0;
};
#endif /* U_HIDE_INTERNAL_API */
--- a/jdk/src/share/native/sun/font/layout/LEGlyphStorage.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LEGlyphStorage.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -458,7 +458,7 @@
success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
return;
}
-
+ _LETRACE("set%-4d\t(%.2f, %.2f)", glyphIndex, x, y);
fPositions[glyphIndex * 2] = x;
fPositions[glyphIndex * 2 + 1] = y;
}
@@ -688,10 +688,9 @@
// the source glyph we're pointing at
// just got replaced by the insertion
- fSrcIndex -= 1;
+ fSrcIndex -= 1;
return FALSE;
}
U_NAMESPACE_END
-
--- a/jdk/src/share/native/sun/font/layout/LEGlyphStorage.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LEGlyphStorage.h Wed Jul 05 19:27:58 2017 +0200
@@ -568,4 +568,3 @@
U_NAMESPACE_END
#endif
-
--- a/jdk/src/share/native/sun/font/layout/LEScripts.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LEScripts.h Wed Jul 05 19:27:58 2017 +0200
@@ -30,7 +30,7 @@
* WARNING: THIS FILE IS MACHINE GENERATED. DO NOT HAND EDIT IT UNLESS
* YOU REALLY KNOW WHAT YOU'RE DOING.
*
- * Generated on: 10/26/2010 02:53:33 PM PDT
+ * Generated on: 11/01/2011 04:08:09 PM PDT
*/
#ifndef __LESCRIPTS_H
@@ -262,7 +262,16 @@
khojScriptCode = 157,
tirhScriptCode = 158,
- scriptCodeCount = 159
+/**
+ * @stable ICU 52
+ */
+ aghbScriptCode = 159,
+ mahjScriptCode = 160,
+
+/**
+ * @stable ICU 2.2
+ */
+ scriptCodeCount
};
U_NAMESPACE_END
--- a/jdk/src/share/native/sun/font/layout/LEStandalone.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LEStandalone.h Wed Jul 05 19:27:58 2017 +0200
@@ -132,6 +132,9 @@
#define uprv_memcpy memcpy
#define uprv_realloc realloc
+#define U_EXPORT2
+#define U_CAPI extern "C"
+
#if !defined(U_IS_BIG_ENDIAN)
#ifdef _LITTLE_ENDIAN
#define U_IS_BIG_ENDIAN 0
--- a/jdk/src/share/native/sun/font/layout/LETableReference.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LETableReference.h Wed Jul 05 19:27:58 2017 +0200
@@ -37,34 +37,47 @@
#include "LETypes.h"
#include "LEFontInstance.h"
+/**
+ * \def LE_ENABLE_RAW
+ * If this is 1, enables old non-safe raw access
+ */
+#ifndef LE_ENABLE_RAW
+#define LE_ENABLE_RAW 0
+#endif
-#define kQuestionmarkTableTag 0x3F3F3F3FUL
-#define kTildeTableTag 0x7e7e7e7eUL
+#define kQuestionmarkTableTag 0x3F3F3F3FUL /* ???? */
+#define kStaticTableTag 0x30303030UL /* 0000 */
+#define kTildeTableTag 0x7e7e7e7eUL /* ~~~~ */
#ifdef __cplusplus
// internal - interface for range checking
U_NAMESPACE_BEGIN
#if LE_ASSERT_BAD_FONT
+
+#ifndef LE_TRACE_TR
+#define LE_TRACE_TR 0
+#endif
+
class LETableReference; // fwd
/**
* defined in OpenTypeUtilities.cpp
* @internal
*/
-extern void _debug_LETableReference(const char *f, int l, const char *msg, const LETableReference *what, const void *ptr, size_t len);
+U_CAPI void U_EXPORT2 _debug_LETableReference(const char *f, int l, const char *msg, const LETableReference *what, const void *ptr, size_t len);
#define LE_DEBUG_TR(x) _debug_LETableReference(__FILE__, __LINE__, x, this, NULL, 0);
#define LE_DEBUG_TR3(x,y,z) _debug_LETableReference(__FILE__, __LINE__, x, this, (const void*)y, (size_t)z);
-#if 0
-#define LE_TRACE_TR(x) _debug_LETableReference(__FILE__, __LINE__, x, this, NULL, 0);
+#if LE_TRACE_TR
+#define _TRTRACE(x) _debug_LETableReference(__FILE__, __LINE__, x, this, NULL, 0);
#else
-#define LE_TRACE_TR(x)
+#define _TRTRACE(x)
#endif
#else
#define LE_DEBUG_TR(x)
#define LE_DEBUG_TR3(x,y,z)
-#define LE_TRACE_TR(x)
+#define _TRTRACE(x)
#endif
/**
@@ -72,6 +85,13 @@
*/
class LETableReference {
public:
+
+ /**
+ * Dummy enum asserting that a value is actually static data
+ * and does not need to be range checked
+ */
+ enum EStaticData { kStaticData = 0 };
+
/**
* @internal
* Construct from a specific tag
@@ -79,28 +99,42 @@
LETableReference(const LEFontInstance* font, LETag tableTag, LEErrorCode &success) :
fFont(font), fTag(tableTag), fParent(NULL), fStart(NULL),fLength(LE_UINTPTR_MAX) {
loadTable(success);
- LE_TRACE_TR("INFO: new table load")
+ _TRTRACE("INFO: new table load")
}
LETableReference(const LETableReference &parent, LEErrorCode &success) : fFont(parent.fFont), fTag(parent.fTag), fParent(&parent), fStart(parent.fStart), fLength(parent.fLength) {
if(LE_FAILURE(success)) {
clear();
}
- LE_TRACE_TR("INFO: new clone")
+ _TRTRACE("INFO: new clone")
}
+#if LE_ENABLE_RAW
+ /**
+ * Construct without a parent LETR.
+ */
LETableReference(const le_uint8* data, size_t length = LE_UINTPTR_MAX) :
fFont(NULL), fTag(kQuestionmarkTableTag), fParent(NULL), fStart(data), fLength(length) {
- LE_TRACE_TR("INFO: new raw")
+ _TRTRACE("INFO: new raw")
}
+#endif
+
+ /**
+ * Construct without a parent LETR.
+ */
+ LETableReference(EStaticData /* NOTUSED */, const le_uint8* data, size_t length) :
+ fFont(NULL), fTag(kQuestionmarkTableTag), fParent(NULL), fStart(data), fLength(length) {
+ _TRTRACE("INFO: new EStaticData")
+ }
+
LETableReference() :
fFont(NULL), fTag(kQuestionmarkTableTag), fParent(NULL), fStart(NULL), fLength(0) {
- LE_TRACE_TR("INFO: new empty")
+ _TRTRACE("INFO: new empty")
}
~LETableReference() {
- fTag=kTildeTableTag;
- LE_TRACE_TR("INFO: new dtor")
+ fTag= (LETag)kTildeTableTag;
+ _TRTRACE("INFO: new dtor")
}
/**
@@ -126,7 +160,7 @@
fLength = (fParent->fLength) - offset; // decrement length as base address is incremented
}
if(fLength != LE_UINTPTR_MAX) { // if we have bounds:
- if(offset+fLength > fParent->fLength) {
+ if((offset+fLength < offset) || (offset+fLength > fParent->fLength)) {
LE_DEBUG_TR3("offset+fLength out of range: (%p) +%d", NULL, offset+fLength);
err = LE_INDEX_OUT_OF_BOUNDS_ERROR; // exceeded
clear();
@@ -136,11 +170,13 @@
} else {
clear();
}
- LE_TRACE_TR("INFO: new subset")
+ _TRTRACE("INFO: new subset")
}
const void* getAlias() const { return (const void*)fStart; }
- const void* getAliasTODO() const { LE_DEBUG_TR("getAliasTODO()"); return (const void*)fStart; }
+#ifndef LE_ENABLE_RAW
+ const void* getAliasRAW() const { LE_DEBUG_TR("getAliasRAW()"); return (const void*)fStart; }
+#endif
le_bool isEmpty() const { return fStart==NULL || fLength==0; }
le_bool isValid() const { return !isEmpty(); }
le_bool hasBounds() const { return fLength!=LE_UINTPTR_MAX; }
@@ -233,7 +269,18 @@
void setRaw(const void *data, size_t length = LE_UINTPTR_MAX) {
fFont = NULL;
- fTag = kQuestionmarkTableTag;
+ fTag = (LETag)kQuestionmarkTableTag;
+ fParent = NULL;
+ fStart = (const le_uint8*)data;
+ fLength = length;
+ }
+
+ /**
+ * set this object pointing to static data
+ */
+ void setTo(EStaticData /*notused*/, const void *data, size_t length) {
+ fFont = NULL;
+ fTag = (LETag)kStaticTableTag;
fParent = NULL;
fStart = (const le_uint8*)data;
fLength = length;
@@ -276,97 +323,6 @@
* Open a new entry based on an existing table
*/
-/**
- * \def LE_UNBOUNDED_ARRAY
- * define an array with no *known* bound. Will trim to available size.
- * @internal
- */
-#define LE_UNBOUNDED_ARRAY LE_UINT32_MAX
-
-template<class T>
-class LEReferenceToArrayOf : public LETableReference {
-public:
- LEReferenceToArrayOf(const LETableReference &parent, LEErrorCode &success, size_t offset, le_uint32 count)
- : LETableReference(parent, offset, LE_UINTPTR_MAX, success), fCount(count) {
- LE_TRACE_TR("INFO: new RTAO by offset")
- if(LE_SUCCESS(success)) {
- if(count == LE_UNBOUNDED_ARRAY) { // not a known length
- count = getLength()/LETableVarSizer<T>::getSize(); // fit to max size
- }
- LETableReference::verifyLength(0, LETableVarSizer<T>::getSize()*count, success);
- }
- if(LE_FAILURE(success)) {
- fCount=0;
- clear();
- }
- }
-
- LEReferenceToArrayOf(const LETableReference &parent, LEErrorCode &success, const T* array, le_uint32 count)
- : LETableReference(parent, parent.ptrToOffset(array, success), LE_UINTPTR_MAX, success), fCount(count) {
-LE_TRACE_TR("INFO: new RTAO")
- if(LE_SUCCESS(success)) {
- if(count == LE_UNBOUNDED_ARRAY) { // not a known length
- count = getLength()/LETableVarSizer<T>::getSize(); // fit to max size
- }
- LETableReference::verifyLength(0, LETableVarSizer<T>::getSize()*count, success);
- }
- if(LE_FAILURE(success)) clear();
- }
- LEReferenceToArrayOf(const LETableReference &parent, LEErrorCode &success, const T* array, size_t offset, le_uint32 count)
- : LETableReference(parent, parent.ptrToOffset(array, success)+offset, LE_UINTPTR_MAX, success), fCount(count) {
-LE_TRACE_TR("INFO: new RTAO")
- if(LE_SUCCESS(success)) {
- if(count == LE_UNBOUNDED_ARRAY) { // not a known length
- count = getLength()/LETableVarSizer<T>::getSize(); // fit to max size
- }
- LETableReference::verifyLength(0, LETableVarSizer<T>::getSize()*count, success);
- }
- if(LE_FAILURE(success)) clear();
- }
-
- LEReferenceToArrayOf() :LETableReference(), fCount(0) {}
-
- le_uint32 getCount() const { return fCount; }
-
- using LETableReference::getAlias;
-
- const T *getAlias(le_uint32 i, LEErrorCode &success) const {
- return ((const T*)(((const char*)getAlias())+getOffsetFor(i, success)));
- }
-
- const T *getAliasTODO() const { LE_DEBUG_TR("getAliasTODO<>"); return (const T*)fStart; }
-
- const T& getObject(le_uint32 i, LEErrorCode &success) const {
- return *getAlias(i,success);
- }
-
- const T& operator()(le_uint32 i, LEErrorCode &success) const {
- return *getAlias(i,success);
- }
-
- size_t getOffsetFor(le_uint32 i, LEErrorCode &success) const {
- if(LE_SUCCESS(success)&&i<getCount()) {
- return LETableVarSizer<T>::getSize()*i;
- } else {
- success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
- }
- return 0;
- }
-
- LEReferenceToArrayOf<T> &reparent(const LETableReference &base) {
- fParent = &base;
- return *this;
- }
-
- LEReferenceToArrayOf(const LETableReference& parent, LEErrorCode & success) : LETableReference(parent,0, LE_UINTPTR_MAX, success), fCount(0) {
- LE_TRACE_TR("INFO: null RTAO")
- }
-
-private:
- le_uint32 fCount;
-};
-
-
template<class T>
class LEReferenceTo : public LETableReference {
public:
@@ -404,14 +360,26 @@
verifyLength(0, LETableVarSizer<T>::getSize(), success);
if(LE_FAILURE(success)) clear();
}
+#if LE_ENABLE_RAW
inline LEReferenceTo(const le_uint8 *data, size_t length = LE_UINTPTR_MAX) : LETableReference(data, length) {}
inline LEReferenceTo(const T *data, size_t length = LE_UINTPTR_MAX) : LETableReference((const le_uint8*)data, length) {}
- inline LEReferenceTo() : LETableReference(NULL) {}
+#endif
+ inline LEReferenceTo(EStaticData staticData, const le_uint8 *data, size_t length) : LETableReference(staticData, data, length) {}
+ inline LEReferenceTo(EStaticData staticData, const T *data, size_t length) : LETableReference(staticData, (const le_uint8*)data, length) {}
+ inline LEReferenceTo() : LETableReference() {}
+
+#if LE_ENABLE_RAW
inline LEReferenceTo<T>& operator=(const T* other) {
setRaw(other);
return *this;
}
+#endif
+
+ LEReferenceTo<T>& setTo(LETableReference::EStaticData staticData, const T* other, size_t length) {
+ LETableReference::setTo(staticData, other, length);
+ return *this;
+ }
LEReferenceTo<T> &reparent(const LETableReference &base) {
fParent = &base;
@@ -430,11 +398,135 @@
}
const T *operator->() const { return getAlias(); }
+ const T *operator*() const { return getAlias(); }
const T *getAlias() const { return (const T*)fStart; }
- const T *getAliasTODO() const { LE_DEBUG_TR("getAliasTODO<>"); return (const T*)fStart; }
+#if LE_ENABLE_RAW
+ const T *getAliasRAW() const { LE_DEBUG_TR("getAliasRAW<>"); return (const T*)fStart; }
+#endif
+
};
+/**
+ * \def LE_UNBOUNDED_ARRAY
+ * define an array with no *known* bound. Will trim to available size.
+ * @internal
+ */
+#define LE_UNBOUNDED_ARRAY LE_UINT32_MAX
+
+template<class T>
+class LEReferenceToArrayOf : public LETableReference {
+public:
+ LEReferenceToArrayOf(const LETableReference &parent, LEErrorCode &success, size_t offset, le_uint32 count)
+ : LETableReference(parent, offset, LE_UINTPTR_MAX, success), fCount(count) {
+ _TRTRACE("INFO: new RTAO by offset")
+ if(LE_SUCCESS(success)) {
+ if(fCount == LE_UNBOUNDED_ARRAY) { // not a known length
+ fCount = getLength()/LETableVarSizer<T>::getSize(); // fit to max size
+ }
+ LETableReference::verifyLength(0, LETableVarSizer<T>::getSize()*fCount, success);
+ }
+ if(LE_FAILURE(success)) {
+ fCount=0;
+ clear();
+ }
+ }
+
+ LEReferenceToArrayOf(const LETableReference &parent, LEErrorCode &success, const T* array, le_uint32 count)
+ : LETableReference(parent, parent.ptrToOffset(array, success), LE_UINTPTR_MAX, success), fCount(count) {
+_TRTRACE("INFO: new RTAO")
+ if(LE_SUCCESS(success)) {
+ if(fCount == LE_UNBOUNDED_ARRAY) { // not a known length
+ fCount = getLength()/LETableVarSizer<T>::getSize(); // fit to max size
+ }
+ LETableReference::verifyLength(0, LETableVarSizer<T>::getSize()*fCount, success);
+ }
+ if(LE_FAILURE(success)) clear();
+ }
+ LEReferenceToArrayOf(const LETableReference &parent, LEErrorCode &success, const T* array, size_t offset, le_uint32 count)
+ : LETableReference(parent, parent.ptrToOffset(array, success)+offset, LE_UINTPTR_MAX, success), fCount(count) {
+_TRTRACE("INFO: new RTAO")
+ if(LE_SUCCESS(success)) {
+ if(fCount == LE_UNBOUNDED_ARRAY) { // not a known length
+ fCount = getLength()/LETableVarSizer<T>::getSize(); // fit to max size
+ }
+ LETableReference::verifyLength(0, LETableVarSizer<T>::getSize()*fCount, success);
+ }
+ if(LE_FAILURE(success)) clear();
+ }
+
+ LEReferenceToArrayOf() :LETableReference(), fCount(0) {}
+
+ le_uint32 getCount() const { return fCount; }
+
+ const T *getAlias() const { return (const T*)fStart; }
+
+ const T *getAlias(le_uint32 i, LEErrorCode &success) const {
+ return ((const T*)(((const char*)getAlias())+getOffsetFor(i, success)));
+ }
+
+#ifndef LE_ENABLE_RAW
+ const T *getAliasRAW() const { LE_DEBUG_TR("getAliasRAW<>"); return (const T*)fStart; }
+#endif
+
+ const T& getObject(le_uint32 i, LEErrorCode &success) const {
+ return *getAlias(i,success);
+ }
+
+ /**
+ * by-value array accessor for integral types.
+ */
+ const T operator[](le_uint32 i) const {
+ LEErrorCode success = LE_NO_ERROR;
+ const T *ret = getAlias(i, success);
+ if(LE_FAILURE(success) || ret==NULL) {
+#if LE_ASSERT_BAD_FONT
+ LE_DEBUG_TR3("Range error, out of bounds? (%p) #%d", NULL, i);
+#endif
+ return T(0); // will not work for all types.
+ }
+ return *ret;
+ }
+
+ const LEReferenceTo<T> getReference(le_uint32 i, LEErrorCode &success) const {
+ if(LE_FAILURE(success)) return LEReferenceTo<T>();
+ return LEReferenceTo<T>(*this, success, getAlias(i,success));
+ }
+
+ const T& operator()(le_uint32 i, LEErrorCode &success) const {
+ return *getAlias(i,success);
+ }
+
+ size_t getOffsetFor(le_uint32 i, LEErrorCode &success) const {
+ if(LE_SUCCESS(success)&&i<getCount()) {
+ return LETableVarSizer<T>::getSize()*i;
+ } else {
+ LE_DEBUG_TR3("getOffsetFor failed (%p) index=%d",NULL, i);
+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR;
+ }
+ return 0;
+ }
+
+ LEReferenceToArrayOf<T> &reparent(const LETableReference &base) {
+ fParent = &base;
+ return *this;
+ }
+
+ LEReferenceToArrayOf(const LETableReference& parent, LEErrorCode & success) : LETableReference(parent,0, LE_UINTPTR_MAX, success), fCount(0) {
+ _TRTRACE("INFO: null RTAO")
+ }
+
+private:
+ le_uint32 fCount;
+};
+
+
+
+
+#ifdef _TRTRACE
+#undef _TRTRACE
+#endif
+
U_NAMESPACE_END
#endif
--- a/jdk/src/share/native/sun/font/layout/LETypes.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LETypes.h Wed Jul 05 19:27:58 2017 +0200
@@ -337,6 +337,20 @@
typedef struct LEPoint LEPoint;
#endif
+/**
+ * \def LE_TRACE
+ * @internal
+ */
+#ifndef LE_TRACE
+# define LE_TRACE 0
+#endif
+
+#if LE_TRACE
+# include <stdio.h>
+# define _LETRACE printf("\n%s:%d: LE: ", __FILE__, __LINE__),printf
+#else
+# define _LETRACE 0&&
+#endif
#ifndef U_HIDE_INTERNAL_API
@@ -553,7 +567,7 @@
LE_CALT_FEATURE_TAG = 0x63616C74UL, /**< 'calt' */
LE_CASE_FEATURE_TAG = 0x63617365UL, /**< 'case' */
LE_CCMP_FEATURE_TAG = 0x63636D70UL, /**< 'ccmp' */
- LE_CJCT_FEATURE_TAG = 0x636A6374UL, /**< 'cjct' */
+ LE_CJCT_FEATURE_TAG = 0x636A6374UL, /**< 'cjct' */
LE_CLIG_FEATURE_TAG = 0x636C6967UL, /**< 'clig' */
LE_CPSP_FEATURE_TAG = 0x63707370UL, /**< 'cpsp' */
LE_CSWH_FEATURE_TAG = 0x63737768UL, /**< 'cswh' */
@@ -701,6 +715,12 @@
LE_FEATURE_ENUM_MAX = LE_CHAR_FILTER_FEATURE_ENUM
};
+
+/**
+ * Flags for typographic features.
+ * @internal
+ * @{
+ */
#define LE_Kerning_FEATURE_FLAG (1 << LE_Kerning_FEATURE_ENUM)
#define LE_Ligatures_FEATURE_FLAG (1 << LE_Ligatures_FEATURE_ENUM)
#define LE_NoCanon_FEATURE_FLAG (1 << LE_NoCanon_FEATURE_ENUM)
@@ -727,6 +747,9 @@
#define LE_SS07_FEATURE_FLAG (1 << LE_SS07_FEATURE_ENUM)
#define LE_CHAR_FILTER_FEATURE_FLAG (1 << LE_CHAR_FILTER_FEATURE_ENUM)
+/**
+ * @}
+ */
#define LE_DEFAULT_FEATURE_FLAG (LE_Kerning_FEATURE_FLAG | LE_Ligatures_FEATURE_FLAG) /**< default features */
@@ -768,7 +791,7 @@
*
* @stable ICU 2.4
*/
-#ifndef LE_FAILURE
+#ifndef LE_SUCCESS
#define LE_SUCCESS(code) (U_SUCCESS((UErrorCode)code))
#endif
@@ -781,4 +804,4 @@
#define LE_FAILURE(code) (U_FAILURE((UErrorCode)code))
#endif
-#endif /* __LETYPES_H */
+#endif
--- a/jdk/src/share/native/sun/font/layout/LayoutEngine.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LayoutEngine.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -156,7 +156,7 @@
CanonMarkFilter(const LEReferenceTo<GlyphDefinitionTableHeader> &gdefTable, LEErrorCode &success);
virtual ~CanonMarkFilter();
- virtual le_bool accept(LEGlyphID glyph) const;
+ virtual le_bool accept(LEGlyphID glyph, LEErrorCode &success) const;
};
CanonMarkFilter::CanonMarkFilter(const LEReferenceTo<GlyphDefinitionTableHeader> &gdefTable, LEErrorCode &success)
@@ -169,9 +169,8 @@
// nothing to do?
}
-le_bool CanonMarkFilter::accept(LEGlyphID glyph) const
+le_bool CanonMarkFilter::accept(LEGlyphID glyph, LEErrorCode &success) const
{
- LEErrorCode success = LE_NO_ERROR;
le_int32 glyphClass = classDefTable->getGlyphClass(classDefTable, glyph, success);
if(LE_FAILURE(success)) return false;
return glyphClass != 0;
@@ -207,7 +206,7 @@
fGlyphStorage = new LEGlyphStorage();
if (fGlyphStorage == NULL) {
success = LE_MEMORY_ALLOCATION_ERROR;
-}
+ }
}
le_int32 LayoutEngine::getGlyphCount() const
@@ -263,7 +262,9 @@
return count;
}
- LEReferenceTo<GlyphSubstitutionTableHeader> canonGSUBTable((GlyphSubstitutionTableHeader *) CanonShaping::glyphSubstitutionTable);
+ LEReferenceTo<GlyphSubstitutionTableHeader> canonGSUBTable(LETableReference::kStaticData,
+ (GlyphSubstitutionTableHeader *) CanonShaping::glyphSubstitutionTable,
+ CanonShaping::glyphSubstitutionTableLen);
LETag scriptTag = OpenTypeLayoutEngine::getScriptTag(fScriptCode);
LETag langSysTag = OpenTypeLayoutEngine::getLangSysTag(fLanguageCode);
le_int32 i, dir = 1, out = 0, outCharCount = count;
@@ -300,7 +301,7 @@
CanonShaping::reorderMarks(&chars[offset], count, rightToLeft, reordered, fakeGlyphStorage);
inChars = reordered;
- }
+ }
fakeGlyphStorage.allocateAuxData(success);
@@ -323,7 +324,8 @@
LE_DELETE_ARRAY(reordered);
}
- outCharCount = canonGSUBTable->process(canonGSUBTable, fakeGlyphStorage, rightToLeft, scriptTag, langSysTag, (const GlyphDefinitionTableHeader*)NULL, substitutionFilter, canonFeatureMap, canonFeatureMapCount, FALSE, success);
+ const LEReferenceTo<GlyphDefinitionTableHeader> noGDEF; // empty gdef header
+ outCharCount = canonGSUBTable->process(canonGSUBTable, fakeGlyphStorage, rightToLeft, scriptTag, langSysTag, noGDEF, substitutionFilter, canonFeatureMap, canonFeatureMapCount, FALSE, success);
if (LE_FAILURE(success)) {
delete substitutionFilter;
@@ -403,10 +405,13 @@
LEPoint advance;
glyphStorage.setPosition(i, x, y, success);
+ _LETRACE("g#%-4d (%.2f, %.2f)", i, x, y);
fFontInstance->getGlyphAdvance(glyphStorage[i], advance);
x += advance.fX;
y += advance.fY;
+
+
}
glyphStorage.setPosition(glyphCount, x, y, success);
@@ -424,7 +429,7 @@
return;
}
- LEReferenceTo<GlyphDefinitionTableHeader> gdefTable((GlyphDefinitionTableHeader *) CanonShaping::glyphDefinitionTable,
+ LEReferenceTo<GlyphDefinitionTableHeader> gdefTable(LETableReference::kStaticData, (GlyphDefinitionTableHeader *) CanonShaping::glyphDefinitionTable,
CanonShaping::glyphDefinitionTableLen);
CanonMarkFilter filter(gdefTable, success);
@@ -464,9 +469,10 @@
glyphStorage.getGlyphPosition(p + 1, next, ignore, success);
xAdvance = next - prev;
+ _LETRACE("p#%d (%.2f,%.2f)", p, xAdvance, 0);
glyphStorage.adjustPosition(p, xAdjust, 0, success);
- if (markFilter->accept(glyphStorage[p])) {
+ if (markFilter->accept(glyphStorage[p], success)) {
xAdjust -= xAdvance;
}
@@ -506,9 +512,13 @@
glyphStorage.getGlyphPosition(p + 1, next, ignore, success);
xAdvance = next - prev;
+
+ _LETRACE("p#%d (%.2f,%.2f)", p, xAdvance, 0);
+
+
glyphStorage.adjustPosition(p, xAdjust, 0, success);
- if (markFilter->accept(chars[c])) {
+ if (markFilter->accept(chars[c], success)) {
xAdjust -= xAdvance;
}
@@ -662,8 +672,10 @@
break;
}
} else {
- MorphTableHeader2 *morxTable = (MorphTableHeader2 *)fontInstance->getFontTable(morxTableTag);
- if (morxTable != NULL && SWAPL(morxTable->version)==0x00020000) {
+ LEReferenceTo<MorphTableHeader2> morxTable(fontInstance, morxTableTag, success);
+ if (LE_SUCCESS(success) &&
+ morxTable.isValid() &&
+ SWAPL(morxTable->version)==0x00020000) {
result = new GXLayoutEngine2(fontInstance, scriptCode, languageCode, morxTable, typoFlags, success);
} else {
LEReferenceTo<MorphTableHeader> mortTable(fontInstance, mortTableTag, success);
@@ -686,21 +698,20 @@
break;
}
- case arabScriptCode:
- //case hebrScriptCode:
- result = new UnicodeArabicOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, success);
- break;
+ case arabScriptCode:
+ result = new UnicodeArabicOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, success);
+ break;
- //case hebrScriptCode:
- // return new HebrewOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags);
+ //case hebrScriptCode:
+ // return new HebrewOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags);
- case thaiScriptCode:
- result = new ThaiLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, success);
- break;
+ case thaiScriptCode:
+ result = new ThaiLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, success);
+ break;
- case hangScriptCode:
- result = new HangulOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, success);
- break;
+ case hangScriptCode:
+ result = new HangulOpenTypeLayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, success);
+ break;
default:
result = new LayoutEngine(fontInstance, scriptCode, languageCode, typoFlags, success);
@@ -711,9 +722,9 @@
}
if (result && LE_FAILURE(success)) {
- delete result;
- result = NULL;
- }
+ delete result;
+ result = NULL;
+ }
if (result == NULL) {
success = LE_MEMORY_ALLOCATION_ERROR;
--- a/jdk/src/share/native/sun/font/layout/LayoutEngine.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LayoutEngine.h Wed Jul 05 19:27:58 2017 +0200
@@ -156,8 +156,8 @@
* @param fontInstance - the font for the text
* @param scriptCode - the script for the text
* @param languageCode - the language for the text
- * @param typoFlags - the typographic control flags for the text. Set bit 1 if kerning
- * is desired, set bit 2 if ligature formation is desired. Others are reserved.
+ * @param typoFlags - the typographic control flags for the text (a bitfield). Use kTypoFlagKern
+ * if kerning is desired, kTypoFlagLiga if ligature formation is desired. Others are reserved.
* @param success - set to an error code if the operation fails
*
* @see LEFontInstance
--- a/jdk/src/share/native/sun/font/layout/LigatureSubstProc2.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LigatureSubstProc2.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -105,7 +105,7 @@
LEReferenceToArrayOf<le_uint16> componentTable(stHeader, success, componentOffset, LE_UNBOUNDED_ARRAY);
if(LE_FAILURE(success)) {
currGlyph+= dir;
- return nextStateIndex; // get out! bad font
+ return nextStateIndex; // get out! bad font
}
do {
--- a/jdk/src/share/native/sun/font/layout/LigatureSubstSubtables.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LigatureSubstSubtables.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -49,14 +49,20 @@
return 0;
}
- if (coverageIndex >= 0) {
+ LEReferenceToArrayOf<Offset> ligSetTableOffsetArrayRef(base, success, ligSetTableOffsetArray, SWAPW(ligSetCount));
+
+ if (coverageIndex >= 0 && LE_SUCCESS(success) && (le_uint32)coverageIndex < ligSetTableOffsetArrayRef.getCount()) {
Offset ligSetTableOffset = SWAPW(ligSetTableOffsetArray[coverageIndex]);
- const LigatureSetTable *ligSetTable = (const LigatureSetTable *) ((char *) this + ligSetTableOffset);
+ LEReferenceTo<LigatureSetTable> ligSetTable(base, success, ligSetTableOffset);
+
+ if( LE_FAILURE(success) ) { return 0; }
le_uint16 ligCount = SWAPW(ligSetTable->ligatureCount);
- for (le_uint16 lig = 0; lig < ligCount; lig += 1) {
+ LEReferenceTo<Offset> ligatureTableOffsetArray(base, success, ligSetTable->ligatureTableOffsetArray, ligCount);
+ for (le_uint16 lig = 0; LE_SUCCESS(success) && lig < ligCount; lig += 1) {
Offset ligTableOffset = SWAPW(ligSetTable->ligatureTableOffsetArray[lig]);
- const LigatureTable *ligTable = (const LigatureTable *) ((char *)ligSetTable + ligTableOffset);
+ LEReferenceTo<LigatureTable> ligTable(ligSetTable, success, ligTableOffset);
+ if(LE_FAILURE(success)) { return 0; }
le_uint16 compCount = SWAPW(ligTable->compCount) - 1;
le_int32 startPosition = glyphIterator->getCurrStreamPosition();
TTGlyphID ligGlyph = SWAPW(ligTable->ligGlyph);
@@ -72,7 +78,7 @@
}
}
- if (comp == compCount && (filter == NULL || filter->accept(LE_SET_GLYPH(glyph, ligGlyph)))) {
+ if (comp == compCount && (filter == NULL || filter->accept(LE_SET_GLYPH(glyph, ligGlyph), success))) {
GlyphIterator tempIterator(*glyphIterator);
TTGlyphID deletedGlyph = tempIterator.ignoresMarks()? 0xFFFE : 0xFFFF;
--- a/jdk/src/share/native/sun/font/layout/LookupProcessor.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/LookupProcessor.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -60,9 +60,11 @@
LEReferenceTo<LookupSubtable> lookupSubtable = lookupTable->getLookupSubtable(lookupTable, subtable, success);
delta = applySubtable(lookupSubtable, lookupType, glyphIterator, fontInstance, success);
-
- if (delta > 0 || LE_FAILURE(success)) {
- return 1;
+ if (delta > 0 && LE_FAILURE(success)) {
+#if LE_TRACE
+ _LETRACE("Posn #%d, type %X, applied subtable #%d/%d - %s\n", startPosition, lookupType, subtable, subtableCount, u_errorName((UErrorCode)success));
+#endif
+ return 1;
}
glyphIterator->setCurrStreamPosition(startPosition);
@@ -86,7 +88,7 @@
}
GlyphIterator glyphIterator(glyphStorage, glyphPositionAdjustments,
- rightToLeft, 0, 0, glyphDefinitionTableHeader);
+ rightToLeft, 0, 0, glyphDefinitionTableHeader, success);
le_int32 newGlyphCount = glyphCount;
for (le_uint16 order = 0; order < lookupOrderCount && LE_SUCCESS(success); order += 1) {
@@ -94,6 +96,7 @@
FeatureMask selectMask = lookupSelectArray[lookup];
if (selectMask != 0) {
+ _LETRACE("Processing order#%d/%d", order, lookupOrderCount);
const LEReferenceTo<LookupTable> lookupTable = lookupListTable->getLookupTable(lookupListTable, lookup, success);
if (!lookupTable.isValid() ||LE_FAILURE(success) ) {
continue;
@@ -103,8 +106,11 @@
glyphIterator.reset(lookupFlags, selectMask);
while (glyphIterator.findFeatureTag()) {
- applyLookupTable(lookupTable, &glyphIterator, fontInstance, success); // TODO
+ applyLookupTable(lookupTable, &glyphIterator, fontInstance, success);
if (LE_FAILURE(success)) {
+#if LE_TRACE
+ _LETRACE("Failure for lookup 0x%x - %s\n", lookup, u_errorName((UErrorCode)success));
+#endif
return 0;
}
}
@@ -138,7 +144,7 @@
le_int32 LookupProcessor::selectLookups(const LEReferenceTo<FeatureTable> &featureTable, FeatureMask featureMask, le_int32 order, LEErrorCode &success)
{
le_uint16 lookupCount = featureTable.isValid()? SWAPW(featureTable->lookupCount) : 0;
- le_int32 store = order;
+ le_uint32 store = (le_uint32)order;
LEReferenceToArrayOf<le_uint16> lookupListIndexArray(featureTable, success, featureTable->lookupListIndexArray, lookupCount);
@@ -147,6 +153,9 @@
if (lookupListIndex >= lookupSelectCount) {
continue;
}
+ if (store >= lookupOrderCount) {
+ continue;
+ }
lookupSelectArray[lookupListIndex] |= featureMask;
lookupOrderArray[store++] = lookupListIndex;
@@ -246,7 +255,7 @@
if (requiredFeatureIndex != 0xFFFF) {
requiredFeatureTable = featureListTable->getFeatureTable(featureListTable, requiredFeatureIndex, &requiredFeatureTag, success);
- featureReferences += SWAPW(featureTable->lookupCount);
+ featureReferences += SWAPW(requiredFeatureTable->lookupCount);
}
lookupOrderArray = LE_NEW_ARRAY(le_uint16, featureReferences);
@@ -254,6 +263,7 @@
success = LE_MEMORY_ALLOCATION_ERROR;
return;
}
+ lookupOrderCount = featureReferences;
for (le_int32 f = 0; f < featureMapCount; f += 1) {
FeatureMap fm = featureMap[f];
--- a/jdk/src/share/native/sun/font/layout/Lookups.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/Lookups.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -65,7 +65,7 @@
if(LE_FAILURE(success)) return 0;
- return coverageTable->getGlyphCoverage(glyphID);
+ return coverageTable->getGlyphCoverage(coverageTable, glyphID, success);
}
U_NAMESPACE_END
--- a/jdk/src/share/native/sun/font/layout/MarkArrays.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/MarkArrays.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -38,20 +38,28 @@
U_NAMESPACE_BEGIN
-le_int32 MarkArray::getMarkClass(LEGlyphID glyphID, le_int32 coverageIndex, const LEFontInstance *fontInstance,
- LEPoint &anchor) const
+le_int32 MarkArray::getMarkClass(const LETableReference &base, LEGlyphID glyphID,
+ le_int32 coverageIndex, const LEFontInstance *fontInstance,
+ LEPoint &anchor, LEErrorCode &success) const
{
le_int32 markClass = -1;
- if (coverageIndex >= 0) {
+ if ( coverageIndex >= 0 && LE_SUCCESS(success) ) {
le_uint16 mCount = SWAPW(markCount);
-
if (coverageIndex < mCount) {
+ LEReferenceToArrayOf<MarkRecord> markRecordArrayRef(base, success, markRecordArray, mCount);
+ if(LE_FAILURE(success)) {
+ return markClass;
+ }
const MarkRecord *markRecord = &markRecordArray[coverageIndex];
Offset anchorTableOffset = SWAPW(markRecord->markAnchorTableOffset);
- const AnchorTable *anchorTable = (AnchorTable *) ((char *) this + anchorTableOffset);
+ LEReferenceTo<AnchorTable> anchorTable(base, success, anchorTableOffset);
- anchorTable->getAnchor(glyphID, fontInstance, anchor);
+ if(LE_FAILURE(success)) {
+ return markClass;
+ }
+
+ anchorTable->getAnchor(anchorTable, glyphID, fontInstance, anchor, success);
markClass = SWAPW(markRecord->markClass);
}
--- a/jdk/src/share/native/sun/font/layout/MarkArrays.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/MarkArrays.h Wed Jul 05 19:27:58 2017 +0200
@@ -54,8 +54,9 @@
le_uint16 markCount;
MarkRecord markRecordArray[ANY_NUMBER];
- le_int32 getMarkClass(LEGlyphID glyphID, le_int32 coverageIndex, const LEFontInstance *fontInstance,
- LEPoint &anchor) const;
+ le_int32 getMarkClass(const LETableReference &base, LEGlyphID glyphID,
+ le_int32 coverageIndex, const LEFontInstance *fontInstance,
+ LEPoint &anchor, LEErrorCode &success) const;
};
LE_VAR_ARRAY(MarkArray, markRecordArray)
--- a/jdk/src/share/native/sun/font/layout/MarkToBasePosnSubtables.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/MarkToBasePosnSubtables.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -66,11 +66,11 @@
}
LEPoint markAnchor;
- const MarkArray *markArray = (const MarkArray *) ((char *) this + SWAPW(markArrayOffset));
- le_int32 markClass = markArray->getMarkClass(markGlyph, markCoverage, fontInstance, markAnchor);
+ LEReferenceTo<MarkArray> markArray(base, success, (const MarkArray *) ((char *) this + SWAPW(markArrayOffset)));
+ le_int32 markClass = markArray->getMarkClass(markArray, markGlyph, markCoverage, fontInstance, markAnchor, success);
le_uint16 mcCount = SWAPW(classCount);
- if (markClass < 0 || markClass >= mcCount) {
+ if (markClass < 0 || markClass >= mcCount || LE_FAILURE(success)) {
// markGlyph isn't in the mark array or its
// mark class is too big. The table is mal-formed!
return 0;
@@ -80,7 +80,8 @@
GlyphIterator baseIterator(*glyphIterator, (le_uint16) (lfIgnoreMarks /*| lfIgnoreLigatures*/));
LEGlyphID baseGlyph = findBaseGlyph(&baseIterator);
le_int32 baseCoverage = getBaseCoverage(base, (LEGlyphID) baseGlyph, success);
- const BaseArray *baseArray = (const BaseArray *) ((char *) this + SWAPW(baseArrayOffset));
+ LEReferenceTo<BaseArray> baseArray(base, success, (const BaseArray *) ((char *) this + SWAPW(baseArrayOffset)));
+ if(LE_FAILURE(success)) return 0;
le_uint16 baseCount = SWAPW(baseArray->baseRecordCount);
if (baseCoverage < 0 || baseCoverage >= baseCount) {
@@ -89,19 +90,23 @@
// table is mal-formed...
return 0;
}
+ LEReferenceTo<BaseRecord> baseRecord(base, success, &baseArray->baseRecordArray[baseCoverage * mcCount]);
+ if( LE_FAILURE(success) ) { return 0; }
+ LEReferenceToArrayOf<Offset> baseAnchorTableOffsetArray(base, success, &(baseRecord->baseAnchorTableOffsetArray[0]), markClass+1);
- const BaseRecord *baseRecord = &baseArray->baseRecordArray[baseCoverage * mcCount];
+ if( LE_FAILURE(success) ) { return 0; }
Offset anchorTableOffset = SWAPW(baseRecord->baseAnchorTableOffsetArray[markClass]);
- const AnchorTable *anchorTable = (const AnchorTable *) ((char *) baseArray + anchorTableOffset);
- LEPoint baseAnchor, markAdvance, pixels;
-
- if (anchorTableOffset == 0) {
+ if (anchorTableOffset <= 0) {
// this means the table is mal-formed...
glyphIterator->setCurrGlyphBaseOffset(baseIterator.getCurrStreamPosition());
return 0;
}
- anchorTable->getAnchor(baseGlyph, fontInstance, baseAnchor);
+ LEReferenceTo<AnchorTable> anchorTable(baseArray, success, anchorTableOffset);
+ LEPoint baseAnchor, markAdvance, pixels;
+
+
+ anchorTable->getAnchor(anchorTable, baseGlyph, fontInstance, baseAnchor, success);
fontInstance->getGlyphAdvance(markGlyph, pixels);
fontInstance->pixelsToUnits(pixels, markAdvance);
@@ -109,6 +114,8 @@
float anchorDiffX = baseAnchor.fX - markAnchor.fX;
float anchorDiffY = baseAnchor.fY - markAnchor.fY;
+ _LETRACE("Offset: (%.2f, %.2f) glyph 0x%X", anchorDiffX, anchorDiffY, markGlyph);
+
glyphIterator->setCurrGlyphBaseOffset(baseIterator.getCurrStreamPosition());
if (glyphIterator->isRightToLeft()) {
@@ -132,7 +139,6 @@
gi.next();
}
// end of JK patch
-
fontInstance->pixelsToUnits(pixels, baseAdvance);
glyphIterator->setCurrGlyphPositionAdjustment(anchorDiffX - baseAdvance.fX, anchorDiffY - baseAdvance.fY, -markAdvance.fX, -markAdvance.fY);
--- a/jdk/src/share/native/sun/font/layout/MarkToLigaturePosnSubtables.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/MarkToLigaturePosnSubtables.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -65,8 +65,11 @@
}
LEPoint markAnchor;
- const MarkArray *markArray = (const MarkArray *) ((char *) this + SWAPW(markArrayOffset));
- le_int32 markClass = markArray->getMarkClass(markGlyph, markCoverage, fontInstance, markAnchor);
+ LEReferenceTo<MarkArray> markArray(base, success, SWAPW(markArrayOffset));
+ if( LE_FAILURE(success) ) {
+ return 0;
+ }
+ le_int32 markClass = markArray->getMarkClass(markArray, markGlyph, markCoverage, fontInstance, markAnchor, success);
le_uint16 mcCount = SWAPW(classCount);
if (markClass < 0 || markClass >= mcCount) {
@@ -79,7 +82,7 @@
GlyphIterator ligatureIterator(*glyphIterator, (le_uint16) (lfIgnoreMarks /*| lfIgnoreBaseGlyphs*/));
LEGlyphID ligatureGlyph = findLigatureGlyph(&ligatureIterator);
le_int32 ligatureCoverage = getBaseCoverage(base, (LEGlyphID) ligatureGlyph, success);
- const LigatureArray *ligatureArray = (const LigatureArray *) ((char *) this + SWAPW(baseArrayOffset));
+ LEReferenceTo<LigatureArray> ligatureArray(base, success, SWAPW(baseArrayOffset));
le_uint16 ligatureCount = SWAPW(ligatureArray->ligatureCount);
if (ligatureCoverage < 0 || ligatureCoverage >= ligatureCount) {
@@ -91,7 +94,7 @@
le_int32 markPosition = glyphIterator->getCurrStreamPosition();
Offset ligatureAttachOffset = SWAPW(ligatureArray->ligatureAttachTableOffsetArray[ligatureCoverage]);
- const LigatureAttachTable *ligatureAttachTable = (const LigatureAttachTable *) ((char *) ligatureArray + ligatureAttachOffset);
+ LEReferenceTo<LigatureAttachTable> ligatureAttachTable(ligatureArray, success, ligatureAttachOffset);
le_int32 componentCount = SWAPW(ligatureAttachTable->componentCount);
le_int32 component = ligatureIterator.getMarkComponent(markPosition);
@@ -100,12 +103,14 @@
component = componentCount - 1;
}
- const ComponentRecord *componentRecord = &ligatureAttachTable->componentRecordArray[component * mcCount];
+ LEReferenceTo<ComponentRecord> componentRecord(base, success, &ligatureAttachTable->componentRecordArray[component * mcCount]);
+ LEReferenceToArrayOf<Offset> ligatureAnchorTableOffsetArray(base, success, &(componentRecord->ligatureAnchorTableOffsetArray[0]), markClass+1);
+ if( LE_FAILURE(success) ) { return 0; }
Offset anchorTableOffset = SWAPW(componentRecord->ligatureAnchorTableOffsetArray[markClass]);
- const AnchorTable *anchorTable = (const AnchorTable *) ((char *) ligatureAttachTable + anchorTableOffset);
+ LEReferenceTo<AnchorTable> anchorTable(ligatureAttachTable, success, anchorTableOffset);
LEPoint ligatureAnchor, markAdvance, pixels;
- anchorTable->getAnchor(ligatureGlyph, fontInstance, ligatureAnchor);
+ anchorTable->getAnchor(anchorTable, ligatureGlyph, fontInstance, ligatureAnchor, success);
fontInstance->getGlyphAdvance(markGlyph, pixels);
fontInstance->pixelsToUnits(pixels, markAdvance);
--- a/jdk/src/share/native/sun/font/layout/MarkToMarkPosnSubtables.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/MarkToMarkPosnSubtables.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -66,8 +66,11 @@
}
LEPoint markAnchor;
- const MarkArray *markArray = (const MarkArray *) ((char *) this + SWAPW(markArrayOffset));
- le_int32 markClass = markArray->getMarkClass(markGlyph, markCoverage, fontInstance, markAnchor);
+ LEReferenceTo<MarkArray> markArray(base, success, SWAPW(markArrayOffset));
+ if(LE_FAILURE(success)) {
+ return 0;
+ }
+ le_int32 markClass = markArray->getMarkClass(markArray, markGlyph, markCoverage, fontInstance, markAnchor, success);
le_uint16 mcCount = SWAPW(classCount);
if (markClass < 0 || markClass >= mcCount) {
@@ -79,7 +82,8 @@
GlyphIterator mark2Iterator(*glyphIterator);
LEGlyphID mark2Glyph = findMark2Glyph(&mark2Iterator);
le_int32 mark2Coverage = getBaseCoverage(base, (LEGlyphID) mark2Glyph, success);
- const Mark2Array *mark2Array = (const Mark2Array *) ((char *) this + SWAPW(baseArrayOffset));
+ LEReferenceTo<Mark2Array> mark2Array(base, success, (const Mark2Array *) ((char *) this + SWAPW(baseArrayOffset)));
+ if(LE_FAILURE(success)) return 0;
le_uint16 mark2Count = SWAPW(mark2Array->mark2RecordCount);
if (mark2Coverage < 0 || mark2Coverage >= mark2Count) {
@@ -89,9 +93,11 @@
return 0;
}
- const Mark2Record *mark2Record = &mark2Array->mark2RecordArray[mark2Coverage * mcCount];
+ LEReferenceTo<Mark2Record> mark2Record(base, success, &mark2Array->mark2RecordArray[mark2Coverage * mcCount]);
+ if(LE_FAILURE(success)) return 0;
Offset anchorTableOffset = SWAPW(mark2Record->mark2AnchorTableOffsetArray[markClass]);
- const AnchorTable *anchorTable = (const AnchorTable *) ((char *) mark2Array + anchorTableOffset);
+ LEReferenceTo<AnchorTable> anchorTable(mark2Array, success, anchorTableOffset);
+ if(LE_FAILURE(success)) return 0;
LEPoint mark2Anchor, markAdvance, pixels;
if (anchorTableOffset == 0) {
@@ -99,7 +105,7 @@
return 0;
}
- anchorTable->getAnchor(mark2Glyph, fontInstance, mark2Anchor);
+ anchorTable->getAnchor(anchorTable, mark2Glyph, fontInstance, mark2Anchor, success);
fontInstance->getGlyphAdvance(markGlyph, pixels);
fontInstance->pixelsToUnits(pixels, markAdvance);
@@ -107,6 +113,8 @@
float anchorDiffX = mark2Anchor.fX - markAnchor.fX;
float anchorDiffY = mark2Anchor.fY - markAnchor.fY;
+ _LETRACE("Offset: (%.2f, %.2f) glyph 0x%X mark2 0x%X", anchorDiffX, anchorDiffY, markGlyph, mark2Glyph);
+
glyphIterator->setCurrGlyphBaseOffset(mark2Iterator.getCurrStreamPosition());
if (glyphIterator->isRightToLeft()) {
--- a/jdk/src/share/native/sun/font/layout/MultipleSubstSubtables.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/MultipleSubstSubtables.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -54,9 +54,10 @@
// FIXME: is this always the right thing to do?
// FIXME: should this only be done for a non-zero
// glyphCount?
- if (filter != NULL && filter->accept(glyph)) {
+ if (filter != NULL && filter->accept(glyph, success)) {
return 0;
}
+ if(LE_FAILURE(success)) return 0;
le_int32 coverageIndex = getGlyphCoverage(base, glyph, success);
le_uint16 seqCount = SWAPW(sequenceCount);
@@ -67,7 +68,7 @@
if (coverageIndex >= 0 && coverageIndex < seqCount) {
Offset sequenceTableOffset = SWAPW(sequenceTableOffsetArray[coverageIndex]);
- const SequenceTable *sequenceTable = (const SequenceTable *) ((char *) this + sequenceTableOffset);
+ LEReferenceTo<SequenceTable> sequenceTable(base, success, sequenceTableOffset);
le_uint16 glyphCount = SWAPW(sequenceTable->glyphCount);
if (glyphCount == 0) {
@@ -76,7 +77,7 @@
} else if (glyphCount == 1) {
TTGlyphID substitute = SWAPW(sequenceTable->substituteArray[0]);
- if (filter != NULL && ! filter->accept(LE_SET_GLYPH(glyph, substitute))) {
+ if (filter != NULL && ! filter->accept(LE_SET_GLYPH(glyph, substitute), success)) {
return 0;
}
@@ -89,7 +90,7 @@
for (le_int32 i = 0; i < glyphCount; i += 1) {
TTGlyphID substitute = SWAPW(sequenceTable->substituteArray[i]);
- if (! filter->accept(substitute)) {
+ if (! filter->accept(substitute, success)) {
return 0;
}
}
--- a/jdk/src/share/native/sun/font/layout/OpenTypeLayoutEngine.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/OpenTypeLayoutEngine.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -470,6 +470,7 @@
void OpenTypeLayoutEngine::adjustGlyphPositions(const LEUnicode chars[], le_int32 offset, le_int32 count, le_bool reverse,
LEGlyphStorage &glyphStorage, LEErrorCode &success)
{
+ _LETRACE("OTLE::adjustGPOS");
if (LE_FAILURE(success)) {
return;
}
@@ -510,14 +511,17 @@
if (!fGPOSTable.isEmpty()) {
if (fScriptTagV2 != nullScriptTag &&
fGPOSTable->coversScriptAndLanguage(fGPOSTable, fScriptTagV2,fLangSysTag,success)) {
+ _LETRACE("OTLE::process [0]");
fGPOSTable->process(fGPOSTable, glyphStorage, adjustments, reverse, fScriptTagV2, fLangSysTag,
fGDEFTable, success, fFontInstance, fFeatureMap, fFeatureMapCount, fFeatureOrder);
} else {
+ _LETRACE("OTLE::process [1]");
fGPOSTable->process(fGPOSTable, glyphStorage, adjustments, reverse, fScriptTag, fLangSysTag,
fGDEFTable, success, fFontInstance, fFeatureMap, fFeatureMapCount, fFeatureOrder);
}
} else if (fTypoFlags & LE_Kerning_FEATURE_FLAG) { /* kerning enabled */
+ _LETRACE("OTLE::kerning");
LETableReference kernTable(fFontInstance, LE_KERN_TABLE_TAG, success);
KernTable kt(kernTable, success);
kt.process(glyphStorage, success);
@@ -546,6 +550,7 @@
xPlacement = fFontInstance->xUnitsToPoints(xPlacement);
yPlacement = fFontInstance->yUnitsToPoints(yPlacement);
+ _LETRACE("OTLE GPOS: #%d, (%.2f,%.2f)", i, xPlacement, yPlacement);
glyphStorage.adjustPosition(i, xAdjust + xPlacement, -(yAdjust + yPlacement), success);
xAdjust += fFontInstance->xUnitsToPoints(xAdvance);
--- a/jdk/src/share/native/sun/font/layout/OpenTypeUtilities.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/OpenTypeUtilities.h Wed Jul 05 19:27:58 2017 +0200
@@ -46,15 +46,14 @@
public:
static le_int8 highBit(le_int32 value);
static Offset getTagOffset(LETag tag, const LEReferenceToArrayOf<TagAndOffsetRecord> &records, LEErrorCode &success);
- /**
- * @deprecated TODO remove
- */
+#if LE_ENABLE_RAW
static le_int32 getGlyphRangeIndex(TTGlyphID glyphID, const GlyphRangeRecord *records, le_int32 recordCount) {
LEErrorCode success = LE_NO_ERROR;
LETableReference recordRef0((const le_uint8*)records);
LEReferenceToArrayOf<GlyphRangeRecord> recordRef(recordRef0, success, (size_t)0, recordCount);
return getGlyphRangeIndex(glyphID, recordRef, success);
}
+#endif
static le_int32 getGlyphRangeIndex(TTGlyphID glyphID, const LEReferenceToArrayOf<GlyphRangeRecord> &records, LEErrorCode &success);
static le_int32 search(le_uint16 value, const le_uint16 array[], le_int32 count);
static le_int32 search(le_uint32 value, const le_uint32 array[], le_int32 count);
--- a/jdk/src/share/native/sun/font/layout/PairPositioningSubtables.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/PairPositioningSubtables.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -76,19 +76,17 @@
{
LEGlyphID firstGlyph = glyphIterator->getCurrGlyphID();
le_int32 coverageIndex = getGlyphCoverage(base, firstGlyph, success);
-
- if (LE_FAILURE(success)) {
- return 0;
- }
GlyphIterator tempIterator(*glyphIterator);
- if (coverageIndex >= 0 && glyphIterator->next()) {
+ LEReferenceToArrayOf<Offset> pairSetTableOffsetArrayRef(base, success, pairSetTableOffsetArray, SWAPW(pairSetCount));
+
+ if (LE_SUCCESS(success) && coverageIndex >= 0 && glyphIterator->next() && (le_uint32)coverageIndex < pairSetTableOffsetArrayRef.getCount()) {
Offset pairSetTableOffset = SWAPW(pairSetTableOffsetArray[coverageIndex]);
- LEReferenceTo<PairSetTable> pairSetTable(base, success, ((char *) this + pairSetTableOffset));
- if (LE_FAILURE(success)) {
- return 0;
- }
+ LEReferenceTo<PairSetTable> pairSetTable(base, success, pairSetTableOffset);
+ if( LE_FAILURE(success) ) return 0;
le_uint16 pairValueCount = SWAPW(pairSetTable->pairValueCount);
+ LEReferenceTo<PairValueRecord> pairValueRecordArray(pairSetTable, success, pairSetTable->pairValueRecordArray);
+ if( LE_FAILURE(success) ) return 0;
le_int16 valueRecord1Size = ValueRecord::getSize(SWAPW(valueFormat1));
le_int16 valueRecord2Size = ValueRecord::getSize(SWAPW(valueFormat2));
le_int16 recordSize = sizeof(PairValueRecord) - sizeof(ValueRecord) + valueRecord1Size + valueRecord2Size;
@@ -96,21 +94,22 @@
LEReferenceTo<PairValueRecord> pairValueRecord;
if (pairValueCount != 0) {
- pairValueRecord = findPairValueRecord(base, (TTGlyphID) LE_GET_GLYPH(secondGlyph), pairSetTable->pairValueRecordArray, pairValueCount, recordSize, success);
+ pairValueRecord = findPairValueRecord((TTGlyphID) LE_GET_GLYPH(secondGlyph), pairValueRecordArray, pairValueCount, recordSize, success);
}
- if (pairValueRecord.isEmpty()) {
+ if (pairValueRecord.isEmpty() || LE_FAILURE(success)) {
return 0;
}
if (valueFormat1 != 0) {
- pairValueRecord->valueRecord1.adjustPosition(SWAPW(valueFormat1), (char *) this, tempIterator, fontInstance);
+ pairValueRecord->valueRecord1.adjustPosition(SWAPW(valueFormat1), base, tempIterator, fontInstance, success);
}
if (valueFormat2 != 0) {
- const ValueRecord *valueRecord2 = (const ValueRecord *) ((char *) &pairValueRecord->valueRecord1 + valueRecord1Size);
-
- valueRecord2->adjustPosition(SWAPW(valueFormat2), (char *) this, *glyphIterator, fontInstance);
+ LEReferenceTo<ValueRecord> valueRecord2(base, success, ((char *) &pairValueRecord->valueRecord1 + valueRecord1Size));
+ if(LE_SUCCESS(success)) {
+ valueRecord2->adjustPosition(SWAPW(valueFormat2), base, *glyphIterator, fontInstance, success);
+ }
}
// back up glyphIterator so second glyph can be
@@ -135,26 +134,28 @@
if (coverageIndex >= 0 && glyphIterator->next()) {
LEGlyphID secondGlyph = glyphIterator->getCurrGlyphID();
- const ClassDefinitionTable *classDef1 = (const ClassDefinitionTable *) ((char *) this + SWAPW(classDef1Offset));
- const ClassDefinitionTable *classDef2 = (const ClassDefinitionTable *) ((char *) this + SWAPW(classDef2Offset));
- le_int32 class1 = classDef1->getGlyphClass(firstGlyph);
- le_int32 class2 = classDef2->getGlyphClass(secondGlyph);
+ const LEReferenceTo<ClassDefinitionTable> classDef1(base, success, SWAPW(classDef1Offset));
+ const LEReferenceTo<ClassDefinitionTable> classDef2(base, success, SWAPW(classDef2Offset));
+ le_int32 class1 = classDef1->getGlyphClass(classDef1, firstGlyph, success);
+ le_int32 class2 = classDef2->getGlyphClass(classDef2, secondGlyph, success);
le_int16 valueRecord1Size = ValueRecord::getSize(SWAPW(valueFormat1));
le_int16 valueRecord2Size = ValueRecord::getSize(SWAPW(valueFormat2));
le_int16 class2RecordSize = valueRecord1Size + valueRecord2Size;
le_int16 class1RecordSize = class2RecordSize * SWAPW(class2Count);
- const Class1Record *class1Record = (const Class1Record *) ((char *) class1RecordArray + (class1RecordSize * class1));
- const Class2Record *class2Record = (const Class2Record *) ((char *) class1Record->class2RecordArray + (class2RecordSize * class2));
-
+ const LEReferenceTo<Class1Record> class1Record(base, success, (const Class1Record *) ((char *) class1RecordArray + (class1RecordSize * class1)));
+ const LEReferenceTo<Class2Record> class2Record(base, success, (const Class2Record *) ((char *) class1Record->class2RecordArray + (class2RecordSize * class2)));
- if (valueFormat1 != 0) {
- class2Record->valueRecord1.adjustPosition(SWAPW(valueFormat1), (char *) this, tempIterator, fontInstance);
- }
-
- if (valueFormat2 != 0) {
- const ValueRecord *valueRecord2 = (const ValueRecord *) ((char *) &class2Record->valueRecord1 + valueRecord1Size);
-
- valueRecord2->adjustPosition(SWAPW(valueFormat2), (const char *) this, *glyphIterator, fontInstance);
+ if( LE_SUCCESS(success) ) {
+ if (valueFormat1 != 0) {
+ class2Record->valueRecord1.adjustPosition(SWAPW(valueFormat1), base, tempIterator, fontInstance, success);
+ }
+ if (valueFormat2 != 0) {
+ const LEReferenceTo<ValueRecord> valueRecord2(base, success, ((char *) &class2Record->valueRecord1) + valueRecord1Size);
+ LEReferenceTo<PairPositioningFormat2Subtable> thisRef(base, success, this);
+ if(LE_SUCCESS(success)) {
+ valueRecord2->adjustPosition(SWAPW(valueFormat2), thisRef, *glyphIterator, fontInstance, success);
+ }
+ }
}
// back up glyphIterator so second glyph can be
@@ -166,23 +167,24 @@
return 0;
}
-LEReferenceTo<PairValueRecord> PairPositioningFormat1Subtable::findPairValueRecord(const LETableReference &base, TTGlyphID glyphID, const PairValueRecord *records, le_uint16 recordCount, le_uint16 recordSize, LEErrorCode &success) const
+LEReferenceTo<PairValueRecord>
+PairPositioningFormat1Subtable::findPairValueRecord(TTGlyphID glyphID, LEReferenceTo<PairValueRecord>& records,
+ le_uint16 recordCount,
+ le_uint16 recordSize, LEErrorCode &success) const
{
#if 1
// The OpenType spec. says that the ValueRecord table is
// sorted by secondGlyph. Unfortunately, there are fonts
// around that have an unsorted ValueRecord table.
- LEReferenceTo<PairValueRecord> record(base, success, records);
- record.verifyLength(0, recordSize, success);
+ LEReferenceTo<PairValueRecord> record(records);
for(le_int32 r = 0; r < recordCount; r += 1) {
- if (LE_FAILURE(success)) return (const PairValueRecord*)NULL;
- if (SWAPW(record->secondGlyph) == glyphID) {
- return record;
- }
+ if(LE_FAILURE(success)) return LEReferenceTo<PairValueRecord>();
+ if (SWAPW(record->secondGlyph) == glyphID) {
+ return record;
+ }
- record = LEReferenceTo<PairValueRecord>(base, success, ((const char*)record.getAlias())+ recordSize);
- record.verifyLength(0, recordSize, success);
+ record.addOffset(recordSize, success);
}
#else
#error dead code - not updated.
@@ -211,7 +213,7 @@
}
#endif
- return (const PairValueRecord*)NULL;
+ return LEReferenceTo<PairValueRecord>();
}
U_NAMESPACE_END
--- a/jdk/src/share/native/sun/font/layout/PairPositioningSubtables.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/PairPositioningSubtables.h Wed Jul 05 19:27:58 2017 +0200
@@ -77,9 +77,8 @@
le_uint32 process(const LEReferenceTo<PairPositioningFormat1Subtable> &base, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode &success) const;
private:
- LEReferenceTo<PairValueRecord> findPairValueRecord(const LETableReference &base, TTGlyphID glyphID, const PairValueRecord *records,
+ LEReferenceTo<PairValueRecord> findPairValueRecord(TTGlyphID glyphID, LEReferenceTo<PairValueRecord> &records,
le_uint16 recordCount, le_uint16 recordSize, LEErrorCode &success) const;
-
};
LE_VAR_ARRAY(PairPositioningFormat1Subtable, pairSetTableOffsetArray)
--- a/jdk/src/share/native/sun/font/layout/ScriptAndLanguage.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/ScriptAndLanguage.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -106,7 +106,8 @@
}
} else {
LEReferenceToArrayOf<ScriptRecord> scriptRecordArrayRef(base, success, &scriptRecordArray[0], count);
- scriptTableOffset = OpenTypeUtilities::getTagOffset(scriptTag, scriptRecordArrayRef, success); // TODO
+
+ scriptTableOffset = OpenTypeUtilities::getTagOffset(scriptTag, scriptRecordArrayRef, success);
}
if (scriptTableOffset != 0) {
--- a/jdk/src/share/native/sun/font/layout/ScriptAndLanguageTags.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/ScriptAndLanguageTags.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -126,13 +126,13 @@
linaScriptTag, /* 'lina' (LINA) */
mandScriptTag, /* 'mand' (MANDAIC) */
mayaScriptTag, /* 'maya' (MAYA) */
- meroScriptTag, /* 'mero' (MERO) */
+ meroScriptTag, /* 'mero' (MEROITIC_HIEROGLYPHS) */
nkooScriptTag, /* 'nko ' (NKO) */
orkhScriptTag, /* 'orkh' (OLD_TURKIC) */
permScriptTag, /* 'perm' (PERM) */
phagScriptTag, /* 'phag' (PHAGS_PA) */
phnxScriptTag, /* 'phnx' (PHOENICIAN) */
- plrdScriptTag, /* 'plrd' (PLRD) */
+ plrdScriptTag, /* 'plrd' (MIAO/POLLARD) */
roroScriptTag, /* 'roro' (RORO) */
saraScriptTag, /* 'sara' (SARA) */
syreScriptTag, /* 'syre' (SYRE) */
@@ -158,7 +158,7 @@
mteiScriptTag, /* 'mtei' (MEETEI_MAYEK) */
armiScriptTag, /* 'armi' (IMPERIAL_ARAMAIC) */
avstScriptTag, /* 'avst' (AVESTAN) */
- cakmScriptTag, /* 'cakm' (CAKM) */
+ cakmScriptTag, /* 'cakm' (CHAKMA) */
koreScriptTag, /* 'kore' (KORE) */
kthiScriptTag, /* 'kthi' (KAITHI) */
maniScriptTag, /* 'mani' (MANI) */
@@ -181,7 +181,7 @@
kpelScriptTag, /* 'kpel' (KPEL) */
lomaScriptTag, /* 'loma' (LOMA) */
mendScriptTag, /* 'mend' (MEND) */
- mercScriptTag, /* 'merc' (MERC) */
+ mercScriptTag, /* 'merc' (MEROITIC_CURSIVE) */
narbScriptTag, /* 'narb' (NARB) */
nbatScriptTag, /* 'nbat' (NBAT) */
palmScriptTag, /* 'palm' (PALM) */
--- a/jdk/src/share/native/sun/font/layout/ScriptAndLanguageTags.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/ScriptAndLanguageTags.h Wed Jul 05 19:27:58 2017 +0200
@@ -140,13 +140,13 @@
const LETag linaScriptTag = 0x6C696E61; /* 'lina' (LINA) */
const LETag mandScriptTag = 0x6D616E64; /* 'mand' (MANDAIC) */
const LETag mayaScriptTag = 0x6D617961; /* 'maya' (MAYA) */
-const LETag meroScriptTag = 0x6D65726F; /* 'mero' (MERO) */
+const LETag meroScriptTag = 0x6D65726F; /* 'mero' (MEROITIC_HIEROGLYPHS) */
const LETag nkooScriptTag = 0x6E6B6F20; /* 'nko ' (NKO) */
const LETag orkhScriptTag = 0x6F726B68; /* 'orkh' (OLD_TURKIC) */
const LETag permScriptTag = 0x7065726D; /* 'perm' (PERM) */
const LETag phagScriptTag = 0x70686167; /* 'phag' (PHAGS_PA) */
const LETag phnxScriptTag = 0x70686E78; /* 'phnx' (PHOENICIAN) */
-const LETag plrdScriptTag = 0x706C7264; /* 'plrd' (PLRD) */
+const LETag plrdScriptTag = 0x706C7264; /* 'plrd' (MIAO) */
const LETag roroScriptTag = 0x726F726F; /* 'roro' (RORO) */
const LETag saraScriptTag = 0x73617261; /* 'sara' (SARA) */
const LETag syreScriptTag = 0x73797265; /* 'syre' (SYRE) */
@@ -172,7 +172,7 @@
const LETag mteiScriptTag = 0x6D746569; /* 'mtei' (MEETEI_MAYEK) */
const LETag armiScriptTag = 0x61726D69; /* 'armi' (IMPERIAL_ARAMAIC) */
const LETag avstScriptTag = 0x61767374; /* 'avst' (AVESTAN) */
-const LETag cakmScriptTag = 0x63616B6D; /* 'cakm' (CAKM) */
+const LETag cakmScriptTag = 0x63616B6D; /* 'cakm' (CHAKMA) */
const LETag koreScriptTag = 0x6B6F7265; /* 'kore' (KORE) */
const LETag kthiScriptTag = 0x6B746869; /* 'kthi' (KAITHI) */
const LETag maniScriptTag = 0x6D616E69; /* 'mani' (MANI) */
@@ -195,7 +195,7 @@
const LETag kpelScriptTag = 0x6B70656C; /* 'kpel' (KPEL) */
const LETag lomaScriptTag = 0x6C6F6D61; /* 'loma' (LOMA) */
const LETag mendScriptTag = 0x6D656E64; /* 'mend' (MEND) */
-const LETag mercScriptTag = 0x6D657263; /* 'merc' (MERC) */
+const LETag mercScriptTag = 0x6D657263; /* 'merc' (MEROITIC_CURSIVE) */
const LETag narbScriptTag = 0x6E617262; /* 'narb' (NARB) */
const LETag nbatScriptTag = 0x6E626174; /* 'nbat' (NBAT) */
const LETag palmScriptTag = 0x70616C6D; /* 'palm' (PALM) */
--- a/jdk/src/share/native/sun/font/layout/SegmentArrayProcessor2.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/SegmentArrayProcessor2.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -65,17 +65,18 @@
for (glyph = 0; glyph < glyphCount; glyph += 1) {
LEGlyphID thisGlyph = glyphStorage[glyph];
+ // lookupSegment already range checked by lookupSegment() function.
const LookupSegment *lookupSegment = segmentArrayLookupTable->lookupSegment(segmentArrayLookupTable, segments, thisGlyph, success);
- if (lookupSegment != NULL) {
+ if (lookupSegment != NULL&& LE_SUCCESS(success)) {
TTGlyphID firstGlyph = SWAPW(lookupSegment->firstGlyph);
+ TTGlyphID lastGlyph = SWAPW(lookupSegment->lastGlyph);
le_int16 offset = SWAPW(lookupSegment->value);
-
- if (offset != 0) {
- TTGlyphID *glyphArray = (TTGlyphID *) ((char *) subtableHeader.getAliasTODO() + offset);
- TTGlyphID newGlyph = SWAPW(glyphArray[LE_GET_GLYPH(thisGlyph) - firstGlyph]);
-
- glyphStorage[glyph] = LE_SET_GLYPH(thisGlyph, newGlyph);
+ TTGlyphID thisGlyphId= LE_GET_GLYPH(thisGlyph);
+ LEReferenceToArrayOf<TTGlyphID> glyphArray(subtableHeader, success, offset, lastGlyph - firstGlyph + 1);
+ if (offset != 0 && thisGlyphId <= lastGlyph && thisGlyphId >= firstGlyph && LE_SUCCESS(success) ) {
+ TTGlyphID newGlyph = SWAPW(glyphArray[thisGlyphId]);
+ glyphStorage[glyph] = LE_SET_GLYPH(thisGlyph, newGlyph);
}
}
}
--- a/jdk/src/share/native/sun/font/layout/SinglePositioningSubtables.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/SinglePositioningSubtables.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -75,7 +75,7 @@
}
if (coverageIndex >= 0) {
- valueRecord.adjustPosition(SWAPW(valueFormat), (const char *) this, *glyphIterator, fontInstance);
+ valueRecord.adjustPosition(SWAPW(valueFormat), base, *glyphIterator, fontInstance, success);
return 1;
}
@@ -92,7 +92,7 @@
}
if (coverageIndex >= 0) {
- valueRecordArray[0].adjustPosition(coverageIndex, SWAPW(valueFormat), (const char *) this, *glyphIterator, fontInstance);
+ valueRecordArray[0].adjustPosition(coverageIndex, SWAPW(valueFormat), base, *glyphIterator, fontInstance, success);
return 1;
}
--- a/jdk/src/share/native/sun/font/layout/SingleSubstitutionSubtables.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/SingleSubstitutionSubtables.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -76,7 +76,7 @@
if (coverageIndex >= 0) {
TTGlyphID substitute = ((TTGlyphID) LE_GET_GLYPH(glyph)) + SWAPW(deltaGlyphID);
- if (filter == NULL || filter->accept(LE_SET_GLYPH(glyph, substitute))) {
+ if (filter == NULL || filter->accept(LE_SET_GLYPH(glyph, substitute), success)) {
glyphIterator->setCurrGlyphID(substitute);
}
@@ -97,7 +97,7 @@
if (coverageIndex >= 0) {
TTGlyphID substitute = SWAPW(substituteArray[coverageIndex]);
- if (filter == NULL || filter->accept(LE_SET_GLYPH(glyph, substitute))) {
+ if (filter == NULL || filter->accept(LE_SET_GLYPH(glyph, substitute), success)) {
glyphIterator->setCurrGlyphID(substitute);
}
--- a/jdk/src/share/native/sun/font/layout/TibetanReordering.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/TibetanReordering.h Wed Jul 05 19:27:58 2017 +0200
@@ -39,7 +39,7 @@
*/
#ifndef __TIBETANREORDERING_H
-#define __TIBETANORDERING_H
+#define __TIBETANREORDERING_H
/**
* \file
--- a/jdk/src/share/native/sun/font/layout/ValueRecords.cpp Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/ValueRecords.cpp Wed Jul 05 19:27:58 2017 +0200
@@ -59,8 +59,8 @@
return SWAPW(value);
}
-void ValueRecord::adjustPosition(ValueFormat valueFormat, const char *base, GlyphIterator &glyphIterator,
- const LEFontInstance *fontInstance) const
+void ValueRecord::adjustPosition(ValueFormat valueFormat, const LETableReference& base, GlyphIterator &glyphIterator,
+ const LEFontInstance *fontInstance, LEErrorCode &success) const
{
float xPlacementAdjustment = 0;
float yPlacementAdjustment = 0;
@@ -118,8 +118,8 @@
Offset dtOffset = getFieldValue(valueFormat, vrfXPlaDevice);
if (dtOffset != 0) {
- const DeviceTable *dt = (const DeviceTable *) (base + dtOffset);
- le_int16 xAdj = dt->getAdjustment(xppem);
+ LEReferenceTo<DeviceTable> dt(base, success, dtOffset);
+ le_int16 xAdj = dt->getAdjustment(dt, xppem, success);
xPlacementAdjustment += fontInstance->xPixelsToUnits(xAdj);
}
@@ -129,8 +129,8 @@
Offset dtOffset = getFieldValue(valueFormat, vrfYPlaDevice);
if (dtOffset != 0) {
- const DeviceTable *dt = (const DeviceTable *) (base + dtOffset);
- le_int16 yAdj = dt->getAdjustment(yppem);
+ LEReferenceTo<DeviceTable> dt(base, success, dtOffset);
+ le_int16 yAdj = dt->getAdjustment(dt, yppem, success);
yPlacementAdjustment += fontInstance->yPixelsToUnits(yAdj);
}
@@ -140,8 +140,8 @@
Offset dtOffset = getFieldValue(valueFormat, vrfXAdvDevice);
if (dtOffset != 0) {
- const DeviceTable *dt = (const DeviceTable *) (base + dtOffset);
- le_int16 xAdj = dt->getAdjustment(xppem);
+ LEReferenceTo<DeviceTable> dt(base, success, dtOffset);
+ le_int16 xAdj = dt->getAdjustment(dt, xppem, success);
xAdvanceAdjustment += fontInstance->xPixelsToUnits(xAdj);
}
@@ -151,10 +151,10 @@
Offset dtOffset = getFieldValue(valueFormat, vrfYAdvDevice);
if (dtOffset != 0) {
- const DeviceTable *dt = (const DeviceTable *) (base + dtOffset);
- le_int16 yAdj = dt->getAdjustment(yppem);
+ LEReferenceTo<DeviceTable> dt(base, success, dtOffset);
+ le_int16 yAdj = dt->getAdjustment(dt, yppem, success);
- yAdvanceAdjustment += fontInstance->yPixelsToUnits(yAdj);
+ yAdvanceAdjustment += fontInstance->yPixelsToUnits(yAdj);
}
}
}
@@ -163,8 +163,8 @@
xPlacementAdjustment, yPlacementAdjustment, xAdvanceAdjustment, yAdvanceAdjustment);
}
-void ValueRecord::adjustPosition(le_int16 index, ValueFormat valueFormat, const char *base, GlyphIterator &glyphIterator,
- const LEFontInstance *fontInstance) const
+void ValueRecord::adjustPosition(le_int16 index, ValueFormat valueFormat, const LETableReference& base, GlyphIterator &glyphIterator,
+ const LEFontInstance *fontInstance, LEErrorCode &success) const
{
float xPlacementAdjustment = 0;
float yPlacementAdjustment = 0;
@@ -222,8 +222,8 @@
Offset dtOffset = getFieldValue(index, valueFormat, vrfXPlaDevice);
if (dtOffset != 0) {
- const DeviceTable *dt = (const DeviceTable *) (base + dtOffset);
- le_int16 xAdj = dt->getAdjustment(xppem);
+ LEReferenceTo<DeviceTable> dt(base, success, dtOffset);
+ le_int16 xAdj = dt->getAdjustment(dt, xppem, success);
xPlacementAdjustment += fontInstance->xPixelsToUnits(xAdj);
}
@@ -233,8 +233,8 @@
Offset dtOffset = getFieldValue(index, valueFormat, vrfYPlaDevice);
if (dtOffset != 0) {
- const DeviceTable *dt = (const DeviceTable *) (base + dtOffset);
- le_int16 yAdj = dt->getAdjustment(yppem);
+ LEReferenceTo<DeviceTable> dt(base, success, dtOffset);
+ le_int16 yAdj = dt->getAdjustment(dt, yppem, success);
yPlacementAdjustment += fontInstance->yPixelsToUnits(yAdj);
}
@@ -244,8 +244,8 @@
Offset dtOffset = getFieldValue(index, valueFormat, vrfXAdvDevice);
if (dtOffset != 0) {
- const DeviceTable *dt = (const DeviceTable *) (base + dtOffset);
- le_int16 xAdj = dt->getAdjustment(xppem);
+ LEReferenceTo<DeviceTable> dt(base, success, dtOffset);
+ le_int16 xAdj = dt->getAdjustment(dt, xppem, success);
xAdvanceAdjustment += fontInstance->xPixelsToUnits(xAdj);
}
@@ -255,8 +255,8 @@
Offset dtOffset = getFieldValue(index, valueFormat, vrfYAdvDevice);
if (dtOffset != 0) {
- const DeviceTable *dt = (const DeviceTable *) (base + dtOffset);
- le_int16 yAdj = dt->getAdjustment(yppem);
+ LEReferenceTo<DeviceTable> dt(base, success, dtOffset);
+ le_int16 yAdj = dt->getAdjustment(dt, yppem, success);
yAdvanceAdjustment += fontInstance->yPixelsToUnits(yAdj);
}
--- a/jdk/src/share/native/sun/font/layout/ValueRecords.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/font/layout/ValueRecords.h Wed Jul 05 19:27:58 2017 +0200
@@ -53,10 +53,10 @@
le_int16 getFieldValue(ValueFormat valueFormat, ValueRecordField field) const;
le_int16 getFieldValue(le_int16 index, ValueFormat valueFormat, ValueRecordField field) const;
- void adjustPosition(ValueFormat valueFormat, const char *base, GlyphIterator &glyphIterator,
- const LEFontInstance *fontInstance) const;
- void adjustPosition(le_int16 index, ValueFormat valueFormat, const char *base, GlyphIterator &glyphIterator,
- const LEFontInstance *fontInstance) const;
+ void adjustPosition(ValueFormat valueFormat, const LETableReference &base, GlyphIterator &glyphIterator,
+ const LEFontInstance *fontInstance, LEErrorCode &success) const;
+ void adjustPosition(le_int16 index, ValueFormat valueFormat, const LETableReference &base, GlyphIterator &glyphIterator,
+ const LEFontInstance *fontInstance, LEErrorCode &success) const;
static le_int16 getSize(ValueFormat valueFormat);
--- a/jdk/src/share/native/sun/java2d/cmm/lcms/cmsintrp.c Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/java2d/cmm/lcms/cmsintrp.c Wed Jul 05 19:27:58 2017 +0200
@@ -215,6 +215,11 @@
Output[0] = LinearInterp(rest, y0, y1);
}
+// To prevent out of bounds indexing
+cmsINLINE cmsFloat32Number fclamp(cmsFloat32Number v)
+{
+ return v < 0.0f ? 0.0f : (v > 1.0f ? 1.0f : v);
+}
// Floating-point version of 1D interpolation
static
@@ -227,13 +232,15 @@
int cell0, cell1;
const cmsFloat32Number* LutTable = (cmsFloat32Number*) p ->Table;
+ val2 = fclamp(Value[0]);
+
// if last value...
- if (Value[0] == 1.0) {
+ if (val2 == 1.0) {
Output[0] = LutTable[p -> Domain[0]];
return;
}
- val2 = p -> Domain[0] * Value[0];
+ val2 *= p -> Domain[0];
cell0 = (int) floor(val2);
cell1 = (int) ceil(val2);
@@ -292,13 +299,15 @@
cmsUInt32Number OutChan;
const cmsFloat32Number* LutTable = (cmsFloat32Number*) p ->Table;
+ val2 = fclamp(Value[0]);
+
// if last value...
- if (Value[0] == 1.0) {
+ if (val2 == 1.0) {
Output[0] = LutTable[p -> Domain[0]];
return;
}
- val2 = p -> Domain[0] * Value[0];
+ val2 *= p -> Domain[0];
cell0 = (int) floor(val2);
cell1 = (int) ceil(val2);
@@ -339,8 +348,8 @@
dxy;
TotalOut = p -> nOutputs;
- px = Input[0] * p->Domain[0];
- py = Input[1] * p->Domain[1];
+ px = fclamp(Input[0]) * p->Domain[0];
+ py = fclamp(Input[1]) * p->Domain[1];
x0 = (int) _cmsQuickFloor(px); fx = px - (cmsFloat32Number) x0;
y0 = (int) _cmsQuickFloor(py); fy = py - (cmsFloat32Number) y0;
@@ -454,20 +463,9 @@
TotalOut = p -> nOutputs;
// We need some clipping here
- px = Input[0];
- py = Input[1];
- pz = Input[2];
-
- if (px < 0) px = 0;
- if (px > 1) px = 1;
- if (py < 0) py = 0;
- if (py > 1) py = 1;
- if (pz < 0) pz = 0;
- if (pz > 1) pz = 1;
-
- px *= p->Domain[0];
- py *= p->Domain[1];
- pz *= p->Domain[2];
+ px = fclamp(Input[0]) * p->Domain[0];
+ py = fclamp(Input[1]) * p->Domain[1];
+ pz = fclamp(Input[2]) * p->Domain[2];
x0 = (int) _cmsQuickFloor(px); fx = px - (cmsFloat32Number) x0;
y0 = (int) _cmsQuickFloor(py); fy = py - (cmsFloat32Number) y0;
@@ -609,20 +607,9 @@
TotalOut = p -> nOutputs;
// We need some clipping here
- px = Input[0];
- py = Input[1];
- pz = Input[2];
-
- if (px < 0) px = 0;
- if (px > 1) px = 1;
- if (py < 0) py = 0;
- if (py > 1) py = 1;
- if (pz < 0) pz = 0;
- if (pz > 1) pz = 1;
-
- px *= p->Domain[0];
- py *= p->Domain[1];
- pz *= p->Domain[2];
+ px = fclamp(Input[0]) * p->Domain[0];
+ py = fclamp(Input[1]) * p->Domain[1];
+ pz = fclamp(Input[2]) * p->Domain[2];
x0 = (int) _cmsQuickFloor(px); rx = (px - (cmsFloat32Number) x0);
y0 = (int) _cmsQuickFloor(py); ry = (py - (cmsFloat32Number) y0);
@@ -1039,8 +1026,7 @@
cmsFloat32Number Tmp1[MAX_STAGE_CHANNELS], Tmp2[MAX_STAGE_CHANNELS];
cmsInterpParams p1;
-
- pk = Input[0] * p->Domain[0];
+ pk = fclamp(Input[0]) * p->Domain[0];
k0 = _cmsQuickFloor(pk);
rest = pk - (cmsFloat32Number) k0;
@@ -1127,7 +1113,7 @@
cmsFloat32Number Tmp1[MAX_STAGE_CHANNELS], Tmp2[MAX_STAGE_CHANNELS];
cmsInterpParams p1;
- pk = Input[0] * p->Domain[0];
+ pk = fclamp(Input[0]) * p->Domain[0];
k0 = _cmsQuickFloor(pk);
rest = pk - (cmsFloat32Number) k0;
@@ -1214,7 +1200,7 @@
cmsFloat32Number Tmp1[MAX_STAGE_CHANNELS], Tmp2[MAX_STAGE_CHANNELS];
cmsInterpParams p1;
- pk = Input[0] * p->Domain[0];
+ pk = fclamp(Input[0]) * p->Domain[0];
k0 = _cmsQuickFloor(pk);
rest = pk - (cmsFloat32Number) k0;
@@ -1299,7 +1285,7 @@
cmsFloat32Number Tmp1[MAX_STAGE_CHANNELS], Tmp2[MAX_STAGE_CHANNELS];
cmsInterpParams p1;
- pk = Input[0] * p->Domain[0];
+ pk = fclamp(Input[0]) * p->Domain[0];
k0 = _cmsQuickFloor(pk);
rest = pk - (cmsFloat32Number) k0;
@@ -1384,7 +1370,7 @@
cmsFloat32Number Tmp1[MAX_STAGE_CHANNELS], Tmp2[MAX_STAGE_CHANNELS];
cmsInterpParams p1;
- pk = Input[0] * p->Domain[0];
+ pk = fclamp(Input[0]) * p->Domain[0];
k0 = _cmsQuickFloor(pk);
rest = pk - (cmsFloat32Number) k0;
--- a/jdk/src/share/native/sun/management/Flag.c Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/management/Flag.c Wed Jul 05 19:27:58 2017 +0200
@@ -36,6 +36,7 @@
static jobject envvar_origin = NULL;
static jobject config_file_origin = NULL;
static jobject ergo_origin = NULL;
+static jobject attach_origin = NULL;
static jobject other_origin = NULL;
JNIEXPORT jint JNICALL
@@ -74,6 +75,7 @@
envvar_origin = find_origin_constant(env, "ENVIRON_VAR");
config_file_origin = find_origin_constant(env, "CONFIG_FILE");
ergo_origin = find_origin_constant(env, "ERGONOMIC");
+ attach_origin = find_origin_constant(env, "ATTACH_ON_DEMAND");
other_origin = find_origin_constant(env, "OTHER");
}
@@ -154,6 +156,9 @@
case JMM_VMGLOBAL_ORIGIN_ERGONOMIC:
origin = ergo_origin;
break;
+ case JMM_VMGLOBAL_ORIGIN_ATTACH_ON_DEMAND:
+ origin = attach_origin;
+ break;
case JMM_VMGLOBAL_ORIGIN_OTHER:
origin = other_origin;
break;
--- a/jdk/src/share/native/sun/misc/MessageUtils.c Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/misc/MessageUtils.c Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,6 +25,7 @@
#include <stdlib.h>
#include <jni.h>
+#include <jni_util.h>
#include <jlong.h>
#include <stdio.h>
#include <jvm.h>
@@ -35,7 +36,7 @@
printToFile(JNIEnv *env, jstring s, FILE *file)
{
char *sConverted;
- int length;
+ int length = 0;
int i;
const jchar *sAsArray;
@@ -45,8 +46,20 @@
}
sAsArray = (*env)->GetStringChars(env, s, NULL);
+ if (!sAsArray)
+ return;
length = (*env)->GetStringLength(env, s);
+ if (length == 0) {
+ (*env)->ReleaseStringChars(env, s, sAsArray);
+ return;
+ }
sConverted = (char *) malloc(length + 1);
+ if (!sConverted) {
+ (*env)->ReleaseStringChars(env, s, sAsArray);
+ JNU_ThrowOutOfMemoryError(env, NULL);
+ return;
+ }
+
for(i = 0; i < length; i++) {
sConverted[i] = (0x7f & sAsArray[i]);
}
--- a/jdk/src/share/native/sun/misc/VM.c Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/misc/VM.c Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -33,84 +33,6 @@
#include "sun_misc_VM.h"
-typedef jintArray (JNICALL *GET_THREAD_STATE_VALUES_FN)(JNIEnv *, jint);
-typedef jobjectArray (JNICALL *GET_THREAD_STATE_NAMES_FN)(JNIEnv *, jint, jintArray);
-
-static GET_THREAD_STATE_VALUES_FN GetThreadStateValues_fp = NULL;
-static GET_THREAD_STATE_NAMES_FN GetThreadStateNames_fp = NULL;
-
-static void get_thread_state_info(JNIEnv *env, jint state,
- jobjectArray stateValues,
- jobjectArray stateNames) {
- char errmsg[128];
- jintArray values;
- jobjectArray names;
-
- values = (*GetThreadStateValues_fp)(env, state);
- if (values == NULL) {
- sprintf(errmsg, "Mismatched VM version: Thread state (%d) "
- "not supported", state);
- JNU_ThrowInternalError(env, errmsg);
- return;
- }
- /* state is also used as the index in the array */
- (*env)->SetObjectArrayElement(env, stateValues, state, values);
-
- names = (*GetThreadStateNames_fp)(env, state, values);
- if (names == NULL) {
- sprintf(errmsg, "Mismatched VM version: Thread state (%d) "
- "not supported", state);
- JNU_ThrowInternalError(env, errmsg);
- return;
- }
- (*env)->SetObjectArrayElement(env, stateNames, state, names);
-}
-
-JNIEXPORT void JNICALL
-Java_sun_misc_VM_getThreadStateValues(JNIEnv *env, jclass cls,
- jobjectArray values,
- jobjectArray names)
-{
- char errmsg[128];
-
- // check if the number of Thread.State enum constants
- // matches the number of states defined in jvm.h
- jsize len1 = (*env)->GetArrayLength(env, values);
- jsize len2 = (*env)->GetArrayLength(env, names);
- if (len1 != JAVA_THREAD_STATE_COUNT || len2 != JAVA_THREAD_STATE_COUNT) {
- sprintf(errmsg, "Mismatched VM version: JAVA_THREAD_STATE_COUNT = %d "
- " but JDK expects %d / %d",
- JAVA_THREAD_STATE_COUNT, len1, len2);
- JNU_ThrowInternalError(env, errmsg);
- return;
- }
-
- if (GetThreadStateValues_fp == NULL) {
- GetThreadStateValues_fp = (GET_THREAD_STATE_VALUES_FN)
- JDK_FindJvmEntry("JVM_GetThreadStateValues");
- if (GetThreadStateValues_fp == NULL) {
- JNU_ThrowInternalError(env,
- "Mismatched VM version: JVM_GetThreadStateValues not found");
- return;
- }
-
- GetThreadStateNames_fp = (GET_THREAD_STATE_NAMES_FN)
- JDK_FindJvmEntry("JVM_GetThreadStateNames");
- if (GetThreadStateNames_fp == NULL) {
- JNU_ThrowInternalError(env,
- "Mismatched VM version: JVM_GetThreadStateNames not found");
- return ;
- }
- }
-
- get_thread_state_info(env, JAVA_THREAD_STATE_NEW, values, names);
- get_thread_state_info(env, JAVA_THREAD_STATE_RUNNABLE, values, names);
- get_thread_state_info(env, JAVA_THREAD_STATE_BLOCKED, values, names);
- get_thread_state_info(env, JAVA_THREAD_STATE_WAITING, values, names);
- get_thread_state_info(env, JAVA_THREAD_STATE_TIMED_WAITING, values, names);
- get_thread_state_info(env, JAVA_THREAD_STATE_TERMINATED, values, names);
-}
-
JNIEXPORT jobject JNICALL
Java_sun_misc_VM_latestUserDefinedLoader(JNIEnv *env, jclass cls) {
return JVM_LatestUserDefinedLoader(env);
--- a/jdk/src/share/native/sun/misc/Version.c Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/share/native/sun/misc/Version.c Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
* 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,44 +34,13 @@
char jdk_special_version = '\0';
static void setStaticIntField(JNIEnv* env, jclass cls, const char* name, jint value)
{
- char errmsg[100];
jfieldID fid;
fid = (*env)->GetStaticFieldID(env, cls, name, "I");
if (fid != 0) {
(*env)->SetStaticIntField(env, cls, fid, value);
- } else {
- sprintf(errmsg, "Static int field %s not found", name);
- JNU_ThrowInternalError(env, errmsg);
}
}
-static void setStaticBooleanField(JNIEnv* env, jclass cls, const char* name, jboolean value)
-{
- char errmsg[100];
- jfieldID fid;
- fid = (*env)->GetStaticFieldID(env, cls, name, "Z");
- if (fid != 0) {
- (*env)->SetStaticBooleanField(env, cls, fid, value);
- } else {
- sprintf(errmsg, "Static boolean field %s not found", name);
- JNU_ThrowInternalError(env, errmsg);
- }
-}
-
-static void setStaticStringField(JNIEnv* env, jclass cls, const char* name, jstring value)
-{
- char errmsg[100];
- jfieldID fid;
- fid = (*env)->GetStaticFieldID(env, cls, name, "Ljava/lang/String");
- if (fid != 0) {
- (*env)->SetStaticObjectField(env, cls, fid, value);
- } else {
- sprintf(errmsg, "Static String field %s not found", name);
- JNU_ThrowInternalError(env, errmsg);
- }
-}
-
-
typedef void (JNICALL *GetJvmVersionInfo_fp)(JNIEnv*, jvm_version_info*, size_t);
JNIEXPORT jboolean JNICALL
@@ -82,6 +51,7 @@
if (!JDK_InitJvmHandle()) {
JNU_ThrowInternalError(env, "Handle for JVM not found for symbol lookup");
+ return JNI_FALSE;
}
func_p = (GetJvmVersionInfo_fp) JDK_FindJvmEntry("JVM_GetVersionInfo");
if (func_p == NULL) {
@@ -90,10 +60,15 @@
(*func_p)(env, &info, sizeof(info));
setStaticIntField(env, cls, "jvm_major_version", JVM_VERSION_MAJOR(info.jvm_version));
+ CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
setStaticIntField(env, cls, "jvm_minor_version", JVM_VERSION_MINOR(info.jvm_version));
+ CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
setStaticIntField(env, cls, "jvm_micro_version", JVM_VERSION_MICRO(info.jvm_version));
+ CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
setStaticIntField(env, cls, "jvm_build_number", JVM_VERSION_BUILD(info.jvm_version));
+ CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
setStaticIntField(env, cls, "jvm_update_version", info.update_version);
+ CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
jvm_special_version = info.special_update_version;
return JNI_TRUE;
@@ -116,10 +91,15 @@
JDK_GetVersionInfo0(&info, sizeof(info));
setStaticIntField(env, cls, "jdk_major_version", JDK_VERSION_MAJOR(info.jdk_version));
+ CHECK_EXCEPTION(env);
setStaticIntField(env, cls, "jdk_minor_version", JDK_VERSION_MINOR(info.jdk_version));
+ CHECK_EXCEPTION(env);
setStaticIntField(env, cls, "jdk_micro_version", JDK_VERSION_MICRO(info.jdk_version));
+ CHECK_EXCEPTION(env);
setStaticIntField(env, cls, "jdk_build_number", JDK_VERSION_BUILD(info.jdk_version));
+ CHECK_EXCEPTION(env);
setStaticIntField(env, cls, "jdk_update_version", info.update_version);
+ CHECK_EXCEPTION(env);
jdk_special_version = info.special_update_version;
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/solaris/classes/sun/net/PortConfig.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 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
+ * 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.
+ */
+
+package sun.net;
+
+import java.security.AccessController;
+
+/**
+ * Determines the ephemeral port range in use on this system.
+ * If this cannot be determined, then the default settings
+ * of the OS are returned.
+ */
+
+public final class PortConfig {
+
+ private static int defaultUpper, defaultLower;
+ private final static int upper, lower;
+
+ private PortConfig() {}
+
+ static {
+ AccessController.doPrivileged(
+ new java.security.PrivilegedAction<Void>() {
+ public Void run() {
+ System.loadLibrary("net");
+ String os = System.getProperty("os.name");
+ if (os.startsWith("Linux")) {
+ defaultLower = 32768;
+ defaultUpper = 61000;
+ } else if (os.startsWith("SunOS")) {
+ defaultLower = 32768;
+ defaultUpper = 65535;
+ } else if (os.contains("OS X")) {
+ defaultLower = 49152;
+ defaultUpper = 65535;
+ } else {
+ throw new InternalError(
+ "sun.net.PortConfig: unknown OS");
+ }
+ return null;
+ }
+ });
+
+ int v = getLower0();
+ if (v == -1) {
+ v = defaultLower;
+ }
+ lower = v;
+
+ v = getUpper0();
+ if (v == -1) {
+ v = defaultUpper;
+ }
+ upper = v;
+ }
+
+ static native int getLower0();
+ static native int getUpper0();
+
+ public static int getLower() {
+ return lower;
+ }
+
+ public static int getUpper() {
+ return upper;
+ }
+}
--- a/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpChannelImpl.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/solaris/classes/sun/nio/ch/sctp/SctpChannelImpl.java Wed Jul 05 19:27:58 2017 +0200
@@ -187,6 +187,10 @@
SctpNet.throwAlreadyBoundException();
InetSocketAddress isa = (local == null) ?
new InetSocketAddress(0) : Net.checkAddress(local);
+ SecurityManager sm = System.getSecurityManager();
+ if (sm != null) {
+ sm.checkListen(isa.getPort());
+ }
Net.bind(fd, isa.getAddress(), isa.getPort());
InetSocketAddress boundIsa = Net.localAddress(fd);
port = boundIsa.getPort();
--- a/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java Wed Jul 05 19:27:58 2017 +0200
@@ -375,11 +375,12 @@
UnixPath dir = UnixPath.toUnixPath(obj);
dir.checkWrite();
- int mode = UnixFileModeAttribute
- .toUnixMode(UnixFileModeAttribute.ALL_PERMISSIONS, attrs);
+ int mode = UnixFileModeAttribute.toUnixMode(UnixFileModeAttribute.ALL_PERMISSIONS, attrs);
try {
mkdir(dir, mode);
} catch (UnixException x) {
+ if (x.errno() == EISDIR)
+ throw new FileAlreadyExistsException(dir.toString());
x.rethrowAsIOException(dir);
}
}
--- a/jdk/src/solaris/native/java/net/net_util_md.c Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/solaris/native/java/net/net_util_md.c Wed Jul 05 19:27:58 2017 +0200
@@ -138,8 +138,7 @@
* of the parameter is assumed to be an 'int'. If the parameter
* cannot be obtained return -1
*/
-static int
-getParam(char *driver, char *param)
+int net_getParam(char *driver, char *param)
{
struct strioctl stri;
char buf [64];
@@ -166,7 +165,7 @@
/*
* Iterative way to find the max value that SO_SNDBUF or SO_RCVBUF
- * for Solaris versions that do not support the ioctl() in getParam().
+ * for Solaris versions that do not support the ioctl() in net_getParam().
* Ugly, but only called once (for each sotype).
*
* As an optimization, we make a guess using the default values for Solaris
@@ -1359,7 +1358,7 @@
* If that fails, we use the search algorithm in findMaxBuf()
*/
if (!init_tcp_max_buf && sotype == SOCK_STREAM) {
- tcp_max_buf = getParam("/dev/tcp", "tcp_max_buf");
+ tcp_max_buf = net_getParam("/dev/tcp", "tcp_max_buf");
if (tcp_max_buf == -1) {
tcp_max_buf = findMaxBuf(fd, opt, SOCK_STREAM);
if (tcp_max_buf == -1) {
@@ -1368,7 +1367,7 @@
}
init_tcp_max_buf = 1;
} else if (!init_udp_max_buf && sotype == SOCK_DGRAM) {
- udp_max_buf = getParam("/dev/udp", "udp_max_buf");
+ udp_max_buf = net_getParam("/dev/udp", "udp_max_buf");
if (udp_max_buf == -1) {
udp_max_buf = findMaxBuf(fd, opt, SOCK_DGRAM);
if (udp_max_buf == -1) {
--- a/jdk/src/solaris/native/java/net/net_util_md.h Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/solaris/native/java/net/net_util_md.h Wed Jul 05 19:27:58 2017 +0200
@@ -81,6 +81,9 @@
int getDefaultIPv6Interface(struct in6_addr *target_addr);
#endif
+#ifdef __solaris__
+extern int net_getParam(char *driver, char *param);
+#endif
/* needed from libsocket on Solaris 8 */
--- a/jdk/src/solaris/native/sun/awt/splashscreen/splashscreen_sys.c Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/solaris/native/sun/awt/splashscreen/splashscreen_sys.c Wed Jul 05 19:27:58 2017 +0200
@@ -577,8 +577,8 @@
SplashUnlock(splash);
rc = poll(pfd, 2, timeout);
SplashLock(splash);
- if (splash->isVisible>0 && SplashTime() >= splash->time +
- splash->frames[splash->currentFrame].delay) {
+ if (splash->isVisible > 0 && splash->currentFrame >= 0 &&
+ SplashTime() >= splash->time + splash->frames[splash->currentFrame].delay) {
SplashNextFrame(splash);
SplashUpdateShape(splash);
SplashRedrawWindow(splash);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/solaris/native/sun/net/portconfig.c Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 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
+ * 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.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+
+#if defined(_ALLBSD_SOURCE)
+#include <sys/sysctl.h>
+#endif
+
+#include "jni.h"
+#include "net_util.h"
+#include "sun_net_PortConfig.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct portrange {
+ int lower;
+ int higher;
+};
+
+static int getPortRange(struct portrange *range)
+{
+#ifdef __linux__
+ {
+ FILE *f;
+ int ret;
+
+ f = fopen("/proc/sys/net/ipv4/ip_local_port_range", "r");
+ if (f != NULL) {
+ ret = fscanf(f, "%d %d", &range->lower, &range->higher);
+ fclose(f);
+ return ret == 2 ? 0 : -1;
+ }
+ return -1;
+ }
+
+#elif defined(__solaris__)
+ {
+ range->higher = net_getParam("/dev/tcp", "tcp_largest_anon_port");
+ range->lower = net_getParam("/dev/tcp", "tcp_smallest_anon_port");
+ return 0;
+ }
+#elif defined(_ALLBSD_SOURCE)
+ {
+ int ret;
+ size_t size = sizeof(range->lower);
+ ret = sysctlbyname(
+ "net.inet.ip.portrange.first", &range->lower, &size, 0, 0
+ );
+ if (ret == -1) {
+ return -1;
+ }
+ size = sizeof(range->higher);
+ ret = sysctlbyname(
+ "net.inet.ip.portrange.last", &range->higher, &size, 0, 0
+ );
+ return ret;
+ }
+#else
+ return -1;
+#endif
+}
+
+/*
+ * Class: sun_net_PortConfig
+ * Method: getLower0
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_sun_net_PortConfig_getLower0
+ (JNIEnv *env, jclass clazz)
+{
+ struct portrange range;
+ if (getPortRange(&range) < 0) {
+ return -1;
+ }
+ return range.lower;
+}
+
+/*
+ * Class: sun_net_PortConfig
+ * Method: getUpper0
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_sun_net_PortConfig_getUpper0
+ (JNIEnv *env, jclass clazz)
+{
+ struct portrange range;
+ if (getPortRange(&range) < 0) {
+ return -1;
+ }
+ return range.higher;
+}
+
+#ifdef __cplusplus
+}
+#endif
--- a/jdk/src/windows/bin/java_md.c Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/windows/bin/java_md.c Wed Jul 05 19:27:58 2017 +0200
@@ -1475,7 +1475,7 @@
// expand the arguments that require expansion, the java method will strip
// out the indicator character.
- inArray = NewPlatformStringArray(env, nargv, argc);
+ NULL_CHECK0(inArray = NewPlatformStringArray(env, nargv, argc));
outArray = (*env)->CallStaticObjectMethod(env, cls, mid, inArray);
for (i = 0; i < argc; i++) {
JLI_MemFree(nargv[i]);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/windows/classes/sun/net/PortConfig.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 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
+ * 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.
+ */
+
+package sun.net;
+
+import java.security.AccessController;
+
+/**
+ * Determines the ephemeral port range in use on this system.
+ * If this cannot be determined, then the default settings
+ * of the OS are returned.
+ */
+
+public final class PortConfig {
+
+ private static int defaultUpper, defaultLower;
+ private final static int upper, lower;
+
+ static {
+ AccessController.doPrivileged(
+ new java.security.PrivilegedAction<Void>() {
+ public Void run() {
+ System.loadLibrary("net");
+ return null;
+ }
+ });
+
+ int v = getLower0();
+ if (v == -1) {
+ v = defaultLower;
+ }
+ lower = v;
+
+ v = getUpper0();
+ if (v == -1) {
+ v = defaultUpper;
+ }
+ upper = v;
+ }
+
+ static native int getLower0();
+ static native int getUpper0();
+
+ public static int getLower() {
+ return lower;
+ }
+
+ public static int getUpper() {
+ return upper;
+ }
+}
--- a/jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousSocketChannelImpl.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousSocketChannelImpl.java Wed Jul 05 19:27:58 2017 +0200
@@ -31,6 +31,9 @@
import java.net.*;
import java.util.concurrent.*;
import java.io.IOException;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
import sun.misc.Unsafe;
/**
@@ -300,6 +303,19 @@
}
}
+ private void doPrivilegedBind(final SocketAddress sa) throws IOException {
+ try {
+ AccessController.doPrivileged(new PrivilegedExceptionAction<Void>() {
+ public Void run() throws IOException {
+ bind(sa);
+ return null;
+ }
+ });
+ } catch (PrivilegedActionException e) {
+ throw (IOException) e.getException();
+ }
+ }
+
@Override
<A> Future<Void> implConnect(SocketAddress remote,
A attachment,
@@ -330,7 +346,12 @@
throw new ConnectionPendingException();
if (localAddress == null) {
try {
- bind(new InetSocketAddress(0));
+ SocketAddress any = new InetSocketAddress(0);
+ if (sm == null) {
+ bind(any);
+ } else {
+ doPrivilegedBind(any);
+ }
} catch (IOException x) {
bindException = x;
}
--- a/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystemProvider.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystemProvider.java Wed Jul 05 19:27:58 2017 +0200
@@ -493,6 +493,14 @@
try {
CreateDirectory(dir.getPathForWin32Calls(), sd.address());
} catch (WindowsException x) {
+ // convert ERROR_ACCESS_DENIED to FileAlreadyExistsException if we can
+ // verify that the directory exists
+ if (x.lastError() == ERROR_ACCESS_DENIED) {
+ try {
+ if (WindowsFileAttributes.get(dir, false).isDirectory())
+ throw new FileAlreadyExistsException(dir.toString());
+ } catch (WindowsException ignore) { }
+ }
x.rethrowAsIOException(dir);
} finally {
sd.release();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/windows/native/sun/net/portconfig.c Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 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
+ * 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.
+ */
+
+#include <windows.h>
+#include "jni.h"
+#include "net_util.h"
+#include "sun_net_PortConfig.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct portrange {
+ int lower;
+ int higher;
+};
+
+static int getPortRange(struct portrange *range)
+{
+ OSVERSIONINFO ver;
+ ver.dwOSVersionInfoSize = sizeof(ver);
+ GetVersionEx(&ver);
+
+ /* Check for major version 5 or less = Windows XP/2003 or older */
+ if (ver.dwMajorVersion <= 5) {
+ LONG ret;
+ HKEY hKey;
+ range->lower = 1024;
+ range->higher = 4999;
+
+ /* check registry to see if upper limit was raised */
+ ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+ "SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters",
+ 0, KEY_READ, (PHKEY)&hKey
+ );
+ if (ret == ERROR_SUCCESS) {
+ DWORD maxuserport;
+ ULONG ulType;
+ DWORD dwLen = sizeof(maxuserport);
+ ret = RegQueryValueEx(hKey, "MaxUserPort", NULL, &ulType,
+ (LPBYTE)&maxuserport, &dwLen);
+ RegCloseKey(hKey);
+ if (ret == ERROR_SUCCESS) {
+ range->higher = maxuserport;
+ }
+ }
+ } else {
+ /* There doesn't seem to be an API to access this. "MaxUserPort"
+ * is affected, but is not sufficient to determine.
+ * so we just use the defaults, which are less likely to change
+ */
+ range->lower = 49152;
+ range->higher = 65535;
+ }
+ return 0;
+}
+
+/*
+ * Class: sun_net_PortConfig
+ * Method: getLower0
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_sun_net_PortConfig_getLower0
+ (JNIEnv *env, jclass clazz)
+{
+ struct portrange range;
+ getPortRange(&range);
+ return range.lower;
+}
+
+/*
+ * Class: sun_net_PortConfig
+ * Method: getUpper0
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_sun_net_PortConfig_getUpper0
+ (JNIEnv *env, jclass clazz)
+{
+ struct portrange range;
+ getPortRange(&range);
+ return range.higher;
+}
+#ifdef __cplusplus
+}
+#endif
--- a/jdk/src/windows/native/sun/security/krb5/NativeCreds.c Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/src/windows/native/sun/security/krb5/NativeCreds.c Wed Jul 05 19:27:58 2017 +0200
@@ -388,7 +388,7 @@
jobject ticketFlags, startTime, endTime, krbCreds = NULL;
jobject authTime, renewTillTime, hostAddresses = NULL;
KERB_EXTERNAL_TICKET *msticket;
- int found_in_cache = 0;
+ int found = 0;
FILETIME Now, EndTime, LocalEndTime;
int i, netypes;
@@ -476,7 +476,7 @@
if (CompareFileTime(&Now, &LocalEndTime) < 0) {
for (i=0; i<netypes; i++) {
if (etypes[i] == msticket->SessionKey.KeyType) {
- found_in_cache = 1;
+ found = 1;
if (native_debug) {
printf("LSA: Valid etype found: %d\n", etypes[i]);
}
@@ -486,7 +486,7 @@
}
}
- if (!found_in_cache) {
+ if (!found) {
if (native_debug) {
printf("LSA: MS TGT in cache is invalid/not supported; request new ticket\n");
}
@@ -529,6 +529,14 @@
// got the native MS Kerberos TGT
msticket = &(pTicketResponse->Ticket);
+
+ if (msticket->SessionKey.KeyType != etypes[i]) {
+ if (native_debug) {
+ printf("LSA: Response etype is %d for %d. Retry.\n", msticket->SessionKey.KeyType, etypes[i]);
+ }
+ continue;
+ }
+ found = 1;
break;
}
}
@@ -583,6 +591,10 @@
} KERB_CRYPTO_KEY, *PKERB_CRYPTO_KEY;
*/
+ if (!found) {
+ break;
+ }
+
// Build a com.sun.security.krb5.Ticket
ticket = BuildTicket(env, msticket->EncodedTicket,
msticket->EncodedTicketSize);
--- a/jdk/test/ProblemList.txt Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/ProblemList.txt Wed Jul 05 19:27:58 2017 +0200
@@ -123,11 +123,6 @@
# 8029415
java/lang/reflect/Method/invoke/TestPrivateInterfaceMethodReflect.java generic-all
-# 8030656
-java/lang/reflect/Parameter/GetAnnotatedTypeTest.java generic-all
-java/lang/reflect/Parameter/WithParameters.java generic-all
-java/lang/reflect/Parameter/BadClassFiles.java generic-all
-
############################################################################
# jdk_management
@@ -150,12 +145,6 @@
# 6988950
demo/jvmti/compiledMethodLoad/CompiledMethodLoadTest.java generic-all
-# 7027502
-demo/jvmti/hprof/MonitorTest.java generic-all
-
-# 8027973
-javax/xml/jaxp/transform/jdk8004476/XSLTExFuncTest.java windows-all
-
############################################################################
# jdk_net
@@ -283,3 +272,10 @@
# jdk_util
############################################################################
+
+# svc_tools
+
+# 8031482
+sun/tools/jcmd/TestJcmdSanity.java windows-all
+
+############################################################################
--- a/jdk/test/TEST.groups Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/TEST.groups Wed Jul 05 19:27:58 2017 +0200
@@ -379,7 +379,6 @@
java/util/ResourceBundle/Control/Bug6530694.java \
java/text/Bidi/BidiConformance.java \
java/text/Bidi/BidiEmbeddingTest.java \
- java/text/Bidi/Bug6665028.java \
java/text/Bidi/Bug7042148.java \
java/text/Bidi/Bug7051769.java \
javax/crypto/Cipher/CipherStreamClose.java \
--- a/jdk/test/com/sun/jdi/BadHandshakeTest.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/com/sun/jdi/BadHandshakeTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -85,7 +85,7 @@
success.set(line.contains("Listening for transport dt_socket at address:"));
return true;
},
- 1500,
+ Integer.MAX_VALUE,
TimeUnit.MILLISECONDS
);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/com/sun/management/HotSpotDiagnosticMXBean/CheckOrigin.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,134 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8028994
+ * @author Staffan Larsen
+ * @library /lib/testlibrary
+ * @run main CheckOrigin
+ */
+
+import com.sun.management.HotSpotDiagnosticMXBean;
+import com.sun.management.VMOption;
+import com.sun.management.VMOption.Origin;
+import com.sun.tools.attach.VirtualMachine;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.InputStream;
+import java.io.PrintWriter;
+import java.lang.management.ManagementFactory;
+import java.util.Map;
+import jdk.testlibrary.ProcessTools;
+import sun.tools.attach.HotSpotVirtualMachine;
+
+public class CheckOrigin {
+
+ private static HotSpotDiagnosticMXBean mbean;
+
+ public static void main(String... args) throws Exception {
+ if (args.length == 0) {
+ // start a process that has options set in a number of different ways
+
+ File flagsFile = File.createTempFile("CheckOriginFlags", null);
+ try (PrintWriter pw =
+ new PrintWriter(new FileWriter(flagsFile))) {
+ pw.println("+PrintSafepointStatistics");
+ }
+
+ ProcessBuilder pb = ProcessTools.
+ createJavaProcessBuilder(
+ "-XX:+PrintGCDetails",
+ "-XX:Flags=" + flagsFile.getAbsolutePath(),
+ "-cp", System.getProperty("test.class.path") + File.pathSeparator + getToolsJarPath(),
+ "CheckOrigin",
+ "-runtests");
+
+ Map<String, String> env = pb.environment();
+ env.put("_JAVA_OPTIONS", "-XX:+PrintOopAddress");
+
+ pb.redirectOutput(ProcessBuilder.Redirect.INHERIT);
+ pb.redirectError(ProcessBuilder.Redirect.INHERIT);
+ Process p = pb.start();
+ int exit = p.waitFor();
+ System.out.println("sub process exit == " + exit);
+ if (exit != 0) {
+ throw new Exception("Unexpected exit code from subprocess == " + exit);
+ }
+ } else {
+ mbean =
+ ManagementFactory.getPlatformMXBean(HotSpotDiagnosticMXBean.class);
+
+ // set a few more options
+ mbean.setVMOption("HeapDumpOnOutOfMemoryError", "true");
+ setOptionUsingAttach("HeapDumpPath", "/a/sample/path");
+
+ // check the origin field for all the options we set
+ checkOrigin("ManagementServer", Origin.DEFAULT);
+ checkOrigin("PrintGCDetails", Origin.VM_CREATION);
+ checkOrigin("PrintOopAddress", Origin.ENVIRON_VAR);
+ checkOrigin("PrintSafepointStatistics", Origin.CONFIG_FILE);
+ checkOrigin("HeapDumpOnOutOfMemoryError", Origin.MANAGEMENT);
+ checkOrigin("NewSize", Origin.ERGONOMIC);
+ checkOrigin("HeapDumpPath", Origin.ATTACH_ON_DEMAND);
+ }
+ }
+
+ private static void checkOrigin(String option, Origin origin) throws Exception
+ {
+ Origin o = mbean.getVMOption(option).getOrigin();
+ if (!o.equals(origin)) {
+ throw new Exception("Option '" + option + "' should have origin '" + origin + "' but had '" + o + "'");
+ }
+ System.out.println("Option '" + option + "' verified origin = '" + origin + "'");
+ }
+
+ // use attach to set a manageable vm option
+ private static void setOptionUsingAttach(String option, String value) throws Exception {
+ HotSpotVirtualMachine vm = (HotSpotVirtualMachine) VirtualMachine.attach(ProcessTools.getProcessId()+"");
+ InputStream in = vm.setFlag(option, value);
+ System.out.println("Result from setting '" + option + "' to '" + value + "' using attach:");
+ drain(vm, in);
+ System.out.println("-- end -- ");
+ }
+
+ // Read the stream from the target VM until EOF, print to output, then detach
+ private static void drain(VirtualMachine vm, InputStream in) throws Exception {
+ byte b[] = new byte[256];
+ int n;
+ do {
+ n = in.read(b);
+ if (n > 0) {
+ String s = new String(b, 0, n, "UTF-8");
+ System.out.print(s);
+ }
+ } while (n > 0);
+ in.close();
+ vm.detach();
+ }
+
+ private static String getToolsJarPath() {
+ return System.getProperty("java.home") +
+ "/../lib/tools.jar".replace("/", File.separator);
+ }
+}
--- a/jdk/test/demo/jvmti/Context.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/demo/jvmti/Context.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -167,11 +167,16 @@
turn.notifyAll();
}
/* If we've had all our turns, break out of this loop */
- if ( thread_turns == turns_taken ) {
+ if (thread_turns == turns_taken) {
+ System.out.println("Loop end: thread got " + turns_taken
+ + " turns, expected " + thread_turns);
break;
}
}
- } catch (InterruptedException intEx) { /* skip */ }
+ } catch (InterruptedException intEx) {
+ System.out.println("Got an InterruptedException:" + intEx);
+ /* skip */
+ }
/* Make sure we got all our turns */
if ( thread_turns != turns_taken ) {
--- a/jdk/test/demo/jvmti/hprof/StackMapTableTest.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/demo/jvmti/hprof/StackMapTableTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,7 +27,7 @@
* @summary Test jvmti hprof and java_crw_demo with StackMapTable attributes
*
* @compile ../DemoRun.java
- * @compile -source 7 -g:lines HelloWorld.java
+ * @compile -g:lines HelloWorld.java
* @build StackMapTableTest
* @run main StackMapTableTest HelloWorld
*/
--- a/jdk/test/java/lang/Long/Unsigned.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/lang/Long/Unsigned.java Wed Jul 05 19:27:58 2017 +0200
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 4504839 4215269 6322074
+ * @bug 4504839 4215269 6322074 8030814
* @summary Basic tests for unsigned operations
* @author Joseph D. Darcy
*/
@@ -310,6 +310,55 @@
}
}
+ // test case known at one time to fail
+ errors += testUnsignedOverflow("1234567890abcdef1", 16, true);
+
+ // largest value with guard = 91 = 13*7; radix = 13
+ errors += testUnsignedOverflow("196a78a44c3bba320c", 13, false);
+
+ // smallest value with guard = 92 = 23*2*2; radix = 23
+ errors += testUnsignedOverflow("137060c6g1c1dg0", 23, false);
+
+ // guard in [92,98]: no overflow
+
+ // one less than smallest guard value to overflow: guard = 99 = 11*3*3, radix = 33
+ errors += testUnsignedOverflow("b1w8p7j5q9r6f", 33, false);
+
+ // smallest guard value to overflow: guard = 99 = 11*3*3, radix = 33
+ errors += testUnsignedOverflow("b1w8p7j5q9r6g", 33, true);
+
+ // test overflow of overflow
+ BigInteger maxUnsignedLong =
+ BigInteger.ONE.shiftLeft(64).subtract(BigInteger.ONE);
+ for (int radix = Character.MIN_RADIX; radix <= Character.MAX_RADIX; radix++) {
+ BigInteger quotient = maxUnsignedLong.divide(BigInteger.valueOf(radix));
+ for (int addend = 2; addend <= radix; addend++) {
+ BigInteger b = quotient.multiply(BigInteger.valueOf(radix + addend));
+ errors += testUnsignedOverflow(b.toString(radix), radix, b.compareTo(maxUnsignedLong) > 0);
+ }
+ }
+
+ return errors;
+ }
+
+ // test for missing or unexpected unsigned overflow exception
+ private static int testUnsignedOverflow(String s, int radix, boolean exception) {
+ int errors = 0;
+ long result;
+ try {
+ result = Long.parseUnsignedLong(s, radix);
+ if (exception) {
+ System.err.printf("Unexpected result %d for Long.parseUnsignedLong(%s,%d)\n",
+ result, s, radix);
+ errors++;
+ }
+ } catch (NumberFormatException nfe) {
+ if (!exception) {
+ System.err.printf("Unexpected exception %s for Long.parseUnsignedLong(%s,%d)\n",
+ nfe.toString(), s, radix);
+ errors++;
+ }
+ }
return errors;
}
--- a/jdk/test/java/lang/ProcessBuilder/Basic.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/lang/ProcessBuilder/Basic.java Wed Jul 05 19:27:58 2017 +0200
@@ -38,6 +38,9 @@
import java.io.*;
import java.lang.reflect.Field;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
import java.util.*;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -58,6 +61,15 @@
/* used for Mac OS X only */
static final String cfUserTextEncoding = System.getenv("__CF_USER_TEXT_ENCODING");
+ /**
+ * Returns the number of milliseconds since time given by
+ * startNanoTime, which must have been previously returned from a
+ * call to {@link System.nanoTime()}.
+ */
+ private static long millisElapsedSince(long startNanoTime) {
+ return TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startNanoTime);
+ }
+
private static String commandOutput(Reader r) throws Throwable {
StringBuilder sb = new StringBuilder();
int c;
@@ -515,18 +527,9 @@
}
}
- private static void copy(String src, String dst) {
- system("/bin/cp", "-fp", src, dst);
- }
-
- private static void system(String... command) {
- try {
- ProcessBuilder pb = new ProcessBuilder(command);
- ProcessResults r = run(pb.start());
- equal(r.exitValue(), 0);
- equal(r.out(), "");
- equal(r.err(), "");
- } catch (Throwable t) { unexpected(t); }
+ private static void copy(String src, String dst) throws IOException {
+ Files.copy(Paths.get(src), Paths.get(dst),
+ StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.COPY_ATTRIBUTES);
}
private static String javaChildOutput(ProcessBuilder pb, String...args) {
@@ -2232,40 +2235,66 @@
//----------------------------------------------------------------
// Check that Process.waitFor(timeout, TimeUnit.MILLISECONDS)
- // interrupt works as expected.
+ // interrupt works as expected, if interrupted while waiting.
//----------------------------------------------------------------
try {
List<String> childArgs = new ArrayList<String>(javaChildArgs);
childArgs.add("sleep");
final Process p = new ProcessBuilder(childArgs).start();
final long start = System.nanoTime();
- final CountDownLatch ready = new CountDownLatch(1);
- final CountDownLatch done = new CountDownLatch(1);
+ final CountDownLatch aboutToWaitFor = new CountDownLatch(1);
final Thread thread = new Thread() {
public void run() {
try {
- final boolean result;
- try {
- ready.countDown();
- result = p.waitFor(30000, TimeUnit.MILLISECONDS);
- } catch (InterruptedException e) {
- return;
- }
+ aboutToWaitFor.countDown();
+ boolean result = p.waitFor(30L * 1000L, TimeUnit.MILLISECONDS);
fail("waitFor() wasn't interrupted, its return value was: " + result);
- } catch (Throwable t) {
- unexpected(t);
- } finally {
- done.countDown();
- }
+ } catch (InterruptedException success) {
+ } catch (Throwable t) { unexpected(t); }
}
};
thread.start();
- ready.await();
+ aboutToWaitFor.await();
Thread.sleep(1000);
thread.interrupt();
- done.await();
+ thread.join(10L * 1000L);
+ check(millisElapsedSince(start) < 10L * 1000L);
+ check(!thread.isAlive());
+ p.destroy();
+ } catch (Throwable t) { unexpected(t); }
+
+ //----------------------------------------------------------------
+ // Check that Process.waitFor(timeout, TimeUnit.MILLISECONDS)
+ // interrupt works as expected, if interrupted before waiting.
+ //----------------------------------------------------------------
+ try {
+ List<String> childArgs = new ArrayList<String>(javaChildArgs);
+ childArgs.add("sleep");
+ final Process p = new ProcessBuilder(childArgs).start();
+ final long start = System.nanoTime();
+ final CountDownLatch threadStarted = new CountDownLatch(1);
+
+ final Thread thread = new Thread() {
+ public void run() {
+ try {
+ threadStarted.countDown();
+ do { Thread.yield(); }
+ while (!Thread.currentThread().isInterrupted());
+ boolean result = p.waitFor(30L * 1000L, TimeUnit.MILLISECONDS);
+ fail("waitFor() wasn't interrupted, its return value was: " + result);
+ } catch (InterruptedException success) {
+ } catch (Throwable t) { unexpected(t); }
+ }
+ };
+
+ thread.start();
+ threadStarted.await();
+ thread.interrupt();
+ thread.join(10L * 1000L);
+ check(millisElapsedSince(start) < 10L * 1000L);
+ check(!thread.isAlive());
p.destroy();
} catch (Throwable t) { unexpected(t); }
@@ -2441,7 +2470,7 @@
static void check(boolean cond, String m) {if (cond) pass(); else fail(m);}
static void equal(Object x, Object y) {
if (x == null ? y == null : x.equals(y)) pass();
- else fail(x + " not equal to " + y);}
+ else fail(">'" + x + "'<" + " not equal to " + "'" + y + "'");}
public static void main(String[] args) throws Throwable {
try {realMain(args);} catch (Throwable t) {unexpected(t);}
--- a/jdk/test/java/lang/SecurityManager/CheckPackageAccess.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/lang/SecurityManager/CheckPackageAccess.java Wed Jul 05 19:27:58 2017 +0200
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 6741606 7146431 8000450 8019830
+ * @bug 6741606 7146431 8000450 8019830 8022945
* @summary Make sure all restricted packages listed in the package.access
* property in the java.security file are blocked
* @run main/othervm CheckPackageAccess
@@ -56,6 +56,7 @@
"com.sun.istack.internal.",
"com.sun.jmx.",
"com.sun.media.sound.",
+ "com.sun.naming.internal.",
"com.sun.proxy.",
"com.sun.corba.se.",
"com.sun.org.apache.bcel.internal.",
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/lang/invoke/ObjectMethodInInterfaceTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+ * @bug 8031502
+ * @summary JSR292: IncompatibleClassChangeError in LambdaForm for CharSequence.toString() method handle type converter
+ * @compile ObjectMethodInInterfaceTest.java
+ * @run main/othervm -Djava.lang.invoke.MethodHandle.COMPILE_THRESHOLD=0 test.java.lang.invoke.ObjectMethodInInterfaceTest
+ */
+package test.java.lang.invoke;
+
+import java.lang.invoke.MethodHandle;
+import java.lang.invoke.MethodHandles;
+import java.lang.invoke.MethodType;
+
+public class ObjectMethodInInterfaceTest {
+ public static void main(String[] args) throws Throwable {
+ MethodHandle mh = MethodHandles.lookup().findVirtual(CharSequence.class, "toString", MethodType.methodType(String.class));
+ MethodType mt = MethodType.methodType(Object.class, CharSequence.class);
+ mh = mh.asType(mt);
+
+ Object res = mh.invokeExact((CharSequence)"123");
+
+ System.out.println("TEST PASSED");
+ }
+}
--- a/jdk/test/java/lang/management/ThreadMXBean/ThreadBlockedCount.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/lang/management/ThreadMXBean/ThreadBlockedCount.java Wed Jul 05 19:27:58 2017 +0200
@@ -27,7 +27,6 @@
* @summary Basic unit test of ThreadInfo.getBlockedCount()
* @author Alexei Guibadoulline and Mandy Chung
* @author Jaroslav Bachorik
- *
* @run main ThreadBlockedCount
*/
@@ -35,7 +34,7 @@
import java.util.concurrent.Phaser;
public class ThreadBlockedCount {
- final static long EXPECTED_BLOCKED_COUNT = 3;
+ final static long EXPECTED_BLOCKED_COUNT = 3;
final static int DEPTH = 10;
private static final ThreadMXBean mbean
= ManagementFactory.getThreadMXBean();
@@ -47,13 +46,20 @@
private static final Object blockedObj1 = new Object();
private static final Object blockedObj2 = new Object();
private static final Object blockedObj3 = new Object();
- private static volatile boolean testOk = false;
+ private static volatile boolean testOk = true;
private static BlockingThread blocking;
private static BlockedThread blocked;
-
+ public static void main(String args[]) throws Exception {
+ // real run
+ runTest();
+ if (!testOk) {
+ throw new RuntimeException("TEST FAILED.");
+ }
+ System.out.println("Test passed.");
+ }
- public static void main(String args[]) throws Exception {
+ private static void runTest() throws Exception {
final Phaser p = new Phaser(2);
blocking = new BlockingThread(p);
@@ -73,11 +79,6 @@
e.printStackTrace(System.err);
throw e;
}
-
- if (!testOk) {
- throw new RuntimeException("TEST FAILED.");
- }
- System.out.println("Test passed.");
}
@@ -90,6 +91,7 @@
}
public void run() {
+ int accumulator = 0;
p.arriveAndAwaitAdvance(); // #1
// Enter lock a without blocking
@@ -99,7 +101,7 @@
// Block to enter blockedObj1
// blockedObj1 should be owned by BlockingThread
synchronized (blockedObj1) {
- System.out.println("BlockedThread entered lock blockedObj1.");
+ accumulator++; // filler
}
}
@@ -111,7 +113,7 @@
// Block to enter blockedObj2
// blockedObj2 should be owned by BlockingThread
synchronized (blockedObj2) {
- System.out.println("BlockedThread entered lock blockedObj2.");
+ accumulator++; // filler
}
}
@@ -123,11 +125,12 @@
// Block to enter blockedObj3
// blockedObj3 should be owned by BlockingThread
synchronized (blockedObj3) {
- System.out.println("BlockedThread entered lock blockedObj3.");
+ accumulator++; // filler
}
}
// wait for the main thread to check the blocked count
+ System.out.println("Acquired " + accumulator + " monitors");
p.arriveAndAwaitAdvance(); // #5
// ... and we can leave now
} // run()
@@ -197,7 +200,7 @@
long count = -1;
for (int i = 0; i < 100; i++) {
count = getBlockedCount();
- if (count == EXPECTED_BLOCKED_COUNT) {
+ if (count >= EXPECTED_BLOCKED_COUNT) {
return true;
}
try {
@@ -209,7 +212,7 @@
}
}
System.err.println("TEST FAILED: Blocked thread has " + count +
- " blocked counts. Expected " +
+ " blocked counts. Expected at least " +
EXPECTED_BLOCKED_COUNT);
return false;
}
--- a/jdk/test/java/lang/reflect/OldenCompilingWithDefaults.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/lang/reflect/OldenCompilingWithDefaults.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,6 @@
* @test
* @bug 8009267
* @summary Verify uses of isAnnotationPresent compile under older source versions
- * @compile -source 1.5 -target 1.5 OldenCompilingWithDefaults.java
* @compile -source 1.6 -target 1.6 OldenCompilingWithDefaults.java
* @compile -source 1.7 -target 1.7 OldenCompilingWithDefaults.java
* @compile OldenCompilingWithDefaults.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/net/Socks/SocksIPv6Test.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,178 @@
+/*
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+ * @bug 7100957
+ * @summary Java doesn't correctly handle the SOCKS protocol when used over IPv6.
+ * @run testng SocksIPv6Test
+ */
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.net.Authenticator;
+import java.net.InetSocketAddress;
+import java.net.URL;
+import java.net.Proxy;
+import java.lang.Override;
+import java.net.InetAddress;
+import java.net.Inet6Address;
+import java.net.ServerSocket;
+import java.net.SocketException;
+import java.net.NetworkInterface;
+import java.net.UnknownHostException;
+import java.util.Collections;
+import java.util.List;
+import com.sun.net.httpserver.*;
+import java.io.BufferedWriter;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+import static org.testng.Assert.*;
+
+public class SocksIPv6Test {
+
+ private HttpServer server;
+ private SocksServer socks;
+ private String response = "Hello.";
+ private static boolean shouldRun = false;
+
+ @BeforeClass
+ public void setUp() throws Exception {
+ shouldRun = ensureInet6AddressFamily() && ensureIPv6OnLoopback();
+
+ server = HttpServer.create(new InetSocketAddress(0), 0);
+ server.createContext("/", ex -> {
+ ex.sendResponseHeaders(200, response.length());
+ try (BufferedWriter writer = new BufferedWriter(
+ new OutputStreamWriter(ex.getResponseBody(), "UTF-8"))) {
+ writer.write(response);
+ }
+ ex.close();
+ });
+ server.start();
+
+ socks = new SocksServer(0, false);
+ socks.addUser("user", "pass");
+ socks.start();
+
+ Authenticator.setDefault(new Authenticator() {
+ @Override
+ protected java.net.PasswordAuthentication getPasswordAuthentication() {
+ return new java.net.PasswordAuthentication(
+ "user", "pass".toCharArray());
+ }
+ });
+ }
+
+ private boolean ensureIPv6OnLoopback() throws Exception {
+ boolean ipv6 = false;
+
+ List<NetworkInterface> nics = Collections.list(NetworkInterface.getNetworkInterfaces());
+ for (NetworkInterface nic : nics) {
+ if (!nic.isLoopback()) {
+ continue;
+ }
+ List<InetAddress> addrs = Collections.list(nic.getInetAddresses());
+ for (InetAddress addr : addrs) {
+ if (addr instanceof Inet6Address) {
+ ipv6 = true;
+ break;
+ }
+ }
+ }
+ if (!ipv6)
+ System.out.println("IPv6 is not enabled on loopback. Skipping test suite.");
+ return ipv6;
+ }
+
+ private boolean ensureInet6AddressFamily() throws IOException {
+ try (ServerSocket s = new ServerSocket()) {
+ s.bind(new InetSocketAddress("::1", 0));
+ return true;
+ } catch (SocketException e) {
+ System.out.println("Inet 6 address family is not available. Skipping test suite.");
+ }
+ return false;
+ }
+
+ @Test(groups = "unit")
+ public void testSocksOverIPv6() throws Exception {
+ if (!shouldRun) return;
+
+ Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("::1",
+ socks.getPort()));
+ URL url = new URL("http://[::1]:" + server.getAddress().getPort());
+ java.net.URLConnection conn = url.openConnection(proxy);
+ String actual = "";
+ try (BufferedReader reader = new BufferedReader(
+ new InputStreamReader(conn.getInputStream()))) {
+ actual = reader.readLine();
+ }
+ assertEquals(actual, response);
+ }
+
+ @Test(groups = "unit")
+ public void testSocksOverIPv6Hostname() throws Exception {
+ if (!shouldRun) return;
+
+ String ipv6Hostname = InetAddress.getByName("::1").getHostName();
+ String ipv4Hostname = InetAddress.getByName("127.0.0.1").getHostName();
+
+ if (ipv6Hostname.equals(InetAddress.getByName("::1").getHostAddress())) {
+ System.out.println("Unable to get the hostname of the IPv6 loopback "
+ + "address. Skipping test case.");
+ return;
+ }
+
+ if (ipv6Hostname.equals(ipv4Hostname)) {
+ System.out.println("IPv6 and IPv4 loopback addresses map to the"
+ + " same hostname. Skipping test case.");
+ return;
+ }
+
+ Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress(ipv6Hostname,
+ socks.getPort()));
+ URL url = new URL("http://" + ipv6Hostname + ":" + server.getAddress().getPort());
+ java.net.URLConnection conn = url.openConnection(proxy);
+ String actual = "";
+ try (BufferedReader reader = new BufferedReader(
+ new InputStreamReader(conn.getInputStream()))) {
+ actual = reader.readLine();
+ }
+ assertEquals(actual, response);
+ }
+
+ @AfterClass
+ public void tearDown() {
+ if (server != null) {
+ server.stop(1);
+ }
+ if (socks != null) {
+ socks.terminate();
+ }
+ }
+}
--- a/jdk/test/java/net/Socks/SocksServer.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/net/Socks/SocksServer.java Wed Jul 05 19:27:58 2017 +0200
@@ -89,6 +89,7 @@
return;
}
tout.write(b);
+ tout.flush();
} catch (IOException e) {
// actually exit from the thread
return;
@@ -99,8 +100,8 @@
ClientHandler(Socket s) throws IOException {
client = s;
- in = client.getInputStream();
- out = client.getOutputStream();
+ in = new BufferedInputStream(client.getInputStream());
+ out = new BufferedOutputStream(client.getOutputStream());
}
private void readBuf(InputStream is, byte[] buf) throws IOException {
@@ -230,8 +231,8 @@
out.write(port & 0xff);
out.write(buf);
out.flush();
- InputStream in2 = dest.getInputStream();
- OutputStream out2 = dest.getOutputStream();
+ InputStream in2 = new BufferedInputStream(dest.getInputStream());
+ OutputStream out2 = new BufferedOutputStream(dest.getOutputStream());
Tunnel tunnel = new Tunnel(in2, out);
tunnel.start();
@@ -246,6 +247,7 @@
return;
}
out2.write(b);
+ out2.flush();
} catch (IOException ex) {
}
} while (!client.isClosed());
@@ -323,8 +325,8 @@
out.write((addr.getPort() >> 0) & 0xff);
out.flush();
- InputStream in2 = dest.getInputStream();
- OutputStream out2 = dest.getOutputStream();
+ InputStream in2 = new BufferedInputStream(dest.getInputStream());
+ OutputStream out2 = new BufferedOutputStream(dest.getOutputStream());
Tunnel tunnel = new Tunnel(in2, out);
tunnel.start();
@@ -340,6 +342,7 @@
return;
}
out2.write(b);
+ out2.flush();
} catch(IOException ioe) {
}
} while (!client.isClosed());
@@ -384,6 +387,7 @@
return;
}
out2.write(b);
+ out2.flush();
} catch(IOException ioe) {
}
} while (!client.isClosed());
@@ -410,14 +414,7 @@
{
byte[] buf = new byte[4];
readBuf(in, buf);
- int i = 0;
- StringBuffer sb = new StringBuffer();
- for (i = 0; i < 4; i++) {
- sb.append(buf[i]&0xff);
- if (i < 3)
- sb.append('.');
- }
- addr = sb.toString();
+ addr = InetAddress.getByAddress(buf).getHostAddress();
}
break;
case DOMAIN_NAME:
@@ -432,14 +429,7 @@
{
byte[] buf = new byte[16];
readBuf(in, buf);
- int i = 0;
- StringBuffer sb = new StringBuffer();
- for (i = 0; i<16; i++) {
- sb.append(Integer.toHexString(buf[i]&0xff));
- if (i < 15)
- sb.append(':');
- }
- addr = sb.toString();
+ addr = InetAddress.getByAddress(buf).getHostAddress();
}
break;
}
--- a/jdk/test/java/net/ipv6tests/UdpTest.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/net/ipv6tests/UdpTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -147,6 +147,7 @@
final InetAddress ia6 = ia6addr;
final int port = s1.getLocalPort();
+ s1.setSoTimeout(10000);
runAfter (2000, new Runnable () {
public void run () {
try {
@@ -157,7 +158,7 @@
});
t1 = System.currentTimeMillis();
s1.receive (new DatagramPacket (new byte [128], 128));
- checkTime (System.currentTimeMillis() - t1, 2000);
+ checkTime (System.currentTimeMillis() - t1, 4000);
s1.close ();
s2.close ();
System.out.println ("Test2: OK");
--- a/jdk/test/java/nio/file/Files/Misc.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/nio/file/Files/Misc.java Wed Jul 05 19:27:58 2017 +0200
@@ -22,7 +22,7 @@
*/
/* @test
- * @bug 4313887 6838333 8005566
+ * @bug 4313887 6838333 8005566 8032220
* @summary Unit test for miscellenous methods in java.nio.file.Files
* @library ..
*/
@@ -76,6 +76,11 @@
createDirectories(file.resolve("y"));
throw new RuntimeException("failure expected");
} catch (IOException x) { }
+
+ // the root directory always exists
+ Path root = Paths.get("/");
+ Files.createDirectories(root);
+ Files.createDirectories(root.toAbsolutePath());
}
/**
--- a/jdk/test/java/rmi/activation/rmidViaInheritedChannel/RmidViaInheritedChannel.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/rmi/activation/rmidViaInheritedChannel/RmidViaInheritedChannel.java Wed Jul 05 19:27:58 2017 +0200
@@ -88,6 +88,17 @@
TestLibrary.RMIDVIAINHERITEDCHANNEL_ACTIVATION_PORT);
rmid.addOptions(new String[]{
"-Djava.nio.channels.spi.SelectorProvider=RmidViaInheritedChannel$RmidSelectorProvider"});
+ if (System.getProperty("os.name").startsWith("Windows") &&
+ System.getProperty("os.version").startsWith("5."))
+ {
+ /* Windows XP/2003 or older
+ * Need to expand ephemeral range to include RMI test ports
+ */
+ rmid.addOptions(new String[]{
+ "-Djdk.net.ephemeralPortRange.low=1024",
+ "-Djdk.net.ephemeralPortRange.high=64000"
+ });
+ }
rmid.start();
/*
--- a/jdk/test/java/rmi/registry/readTest/readTest.sh Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/rmi/registry/readTest/readTest.sh Wed Jul 05 19:27:58 2017 +0200
@@ -29,6 +29,10 @@
# @run shell readTest.sh
OS=`uname -s`
+VER=`uname -r`
+ARGS=""
+REGARGS=""
+
case "$OS" in
SunOS | Linux | Darwin )
PS=":"
@@ -39,11 +43,19 @@
PS=";"
FS="\\"
FILEURL="file:/"
+ if [ "$VER" -eq "5" ]; then
+ ARGS="-Djdk.net.ephemeralPortRange.low=1024 -Djdk.net.ephemeralPortRange.high=65000"
+ REGARGS="-J-Djdk.net.ephemeralPortRange.low=1024 -J-Djdk.net.ephemeralPortRange.high=65000"
+ fi
;;
CYGWIN* )
PS=";"
FS="/"
FILEURL="file:/"
+ if [ "$VER" -eq "5" ]; then
+ ARGS="-Djdk.net.ephemeralPortRange.low=1024 -Djdk.net.ephemeralPortRange.high=65000"
+ REGARGS="-J-Djdk.net.ephemeralPortRange.low=1024 -J-Djdk.net.ephemeralPortRange.high=65000"
+ fi
;;
* )
echo "Unrecognized system!"
@@ -61,8 +73,8 @@
#start rmiregistry without any local classes on classpath
cd rmi_tmp
# NOTE: This RMI Registry port must match TestLibrary.READTEST_REGISTRY_PORT
-${TESTJAVA}${FS}bin${FS}rmiregistry -J-Djava.rmi.server.useCodebaseOnly=false \
- ${TESTTOOLVMOPTS} 64005 > ..${FS}${RMIREG_OUT} 2>&1 &
+${TESTJAVA}${FS}bin${FS}rmiregistry ${REGARGS} -J-Djava.rmi.server.useCodebaseOnly=false \
+ ${TESTTOOLVMOPTS} 60005 > ..${FS}${RMIREG_OUT} 2>&1 &
RMIREG_PID=$!
# allow some time to start
sleep 3
@@ -74,10 +86,10 @@
;;
* )
CODEBASE=`pwd`
- ;;
+ ;;
esac
# trailing / after code base is important for rmi codebase property.
-${TESTJAVA}${FS}bin${FS}java ${TESTVMOPTS} -cp $TEST_CLASSPATH -Djava.rmi.server.codebase=${FILEURL}$CODEBASE/ readTest > OUT.TXT 2>&1 &
+${TESTJAVA}${FS}bin${FS}java ${TESTVMOPTS} -cp $TEST_CLASSPATH ${ARGS} -Djava.rmi.server.codebase=${FILEURL}$CODEBASE/ readTest > OUT.TXT 2>&1 &
TEST_PID=$!
#bulk of testcase - let it run for a while
sleep 5
@@ -100,7 +112,7 @@
result2=$?
if [ $result1 -eq 0 -a $result2 -eq 0 ]
-then
+then
echo "Passed"
exitCode=0;
else
@@ -108,6 +120,6 @@
exitCode=1
fi
rm -rf OUT.TXT ${RMIREG_OUT} rmi_tmp
-exit ${exitCode}
+exit ${exitCode}
--- a/jdk/test/java/rmi/testlibrary/TestLibrary.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/rmi/testlibrary/TestLibrary.java Wed Jul 05 19:27:58 2017 +0200
@@ -86,13 +86,13 @@
* FIXED_PORT_MIN or above FIXED_PORT_MAX, then adjust
* FIXED_PORT_MIN/MAX appropriately.
*/
- public final static int FIXED_PORT_MIN = 64001;
- public final static int FIXED_PORT_MAX = 64010;
- public final static int RMIDVIAINHERITEDCHANNEL_ACTIVATION_PORT = 64001;
- public final static int RMIDVIAINHERITEDCHANNEL_REGISTRY_PORT = 64002;
- public final static int INHERITEDCHANNELNOTSERVERSOCKET_ACTIVATION_PORT = 64003;
- public final static int INHERITEDCHANNELNOTSERVERSOCKET_REGISTRY_PORT = 64004;
- public final static int READTEST_REGISTRY_PORT = 64005;
+ public final static int FIXED_PORT_MIN = 60001;
+ public final static int FIXED_PORT_MAX = 60010;
+ public final static int RMIDVIAINHERITEDCHANNEL_ACTIVATION_PORT = 60001;
+ public final static int RMIDVIAINHERITEDCHANNEL_REGISTRY_PORT = 60002;
+ public final static int INHERITEDCHANNELNOTSERVERSOCKET_ACTIVATION_PORT = 60003;
+ public final static int INHERITEDCHANNELNOTSERVERSOCKET_REGISTRY_PORT = 60004;
+ public final static int READTEST_REGISTRY_PORT = 60005;
private final static int MAX_SERVER_SOCKET_TRIES = 2*(FIXED_PORT_MAX-FIXED_PORT_MIN+1);
static void mesg(Object mesg) {
--- a/jdk/test/java/security/cert/CertPathBuilder/selfIssued/DisableRevocation.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/security/cert/CertPathBuilder/selfIssued/DisableRevocation.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,6 +21,12 @@
* questions.
*/
+//
+// Security properties, once set, cannot revert to unset. To avoid
+// conflicts with tests running in the same VM isolate this test by
+// running it in otherVM mode.
+//
+
/**
* @test
* @bug 6852744
@@ -234,6 +240,10 @@
public static void main(String[] args) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
CertPathBuilder builder = CertPathBuilder.getInstance("PKIX");
X509CertSelector selector = generateSelector(args[0]);
--- a/jdk/test/java/security/cert/CertPathBuilder/selfIssued/KeyUsageMatters.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/security/cert/CertPathBuilder/selfIssued/KeyUsageMatters.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,6 +21,12 @@
* questions.
*/
+//
+// Security properties, once set, cannot revert to unset. To avoid
+// conflicts with tests running in the same VM isolate this test by
+// running it in otherVM mode.
+//
+
/**
* @test
* @bug 6852744
@@ -277,6 +283,10 @@
public static void main(String[] args) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
CertPathBuilder builder = CertPathBuilder.getInstance("PKIX");
X509CertSelector selector = generateSelector(args[0]);
--- a/jdk/test/java/security/cert/CertPathBuilder/selfIssued/StatusLoopDependency.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/security/cert/CertPathBuilder/selfIssued/StatusLoopDependency.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,6 +21,12 @@
* questions.
*/
+//
+// Security properties, once set, cannot revert to unset. To avoid
+// conflicts with tests running in the same VM isolate this test by
+// running it in otherVM mode.
+//
+
/**
* @test
* @bug 6852744
@@ -283,6 +289,10 @@
public static void main(String[] args) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
CertPathBuilder builder = CertPathBuilder.getInstance("PKIX");
X509CertSelector selector = generateSelector(args[0]);
--- a/jdk/test/java/security/cert/CertPathValidator/OCSP/AIACheck.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/security/cert/CertPathValidator/OCSP/AIACheck.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,12 +21,19 @@
* questions.
*/
+//
+// Security properties, once set, cannot revert to unset. To avoid
+// conflicts with tests running in the same VM isolate this test by
+// running it in otherVM mode.
+//
+
/**
* @test
* @bug 5072953
* @summary Verify that the URL for an OCSP responder can be extracted from a
* certificate's AuthorityInfoAccess extension when OCSP certifiate
* validation has been enabled.
+ * @run main/othervm AIACheck
*/
import java.io.*;
@@ -51,6 +58,10 @@
}
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
X509Certificate aiaCert = loadCertificate("AIACert.pem");
X509Certificate rootCert = loadCertificate("RootCert.pem");
--- a/jdk/test/java/security/cert/CertPathValidator/OCSP/FailoverToCRL.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/security/cert/CertPathValidator/OCSP/FailoverToCRL.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,16 +21,24 @@
* questions.
*/
+//
+// Security properties, once set, cannot revert to unset. To avoid
+// conflicts with tests running in the same VM isolate this test by
+// running it in otherVM mode.
+//
+
/**
* @test
* @bug 6383095
* @summary CRL revoked certificate failures masked by OCSP failures
- *
+ * @run main/othervm FailoverToCRL
+ * @author Xuelei Fan
+ */
+
+/*
* Note that the certificate validity is from Mar 16 14:55:35 2009 GMT to
* Dec 1 14:55:35 2028 GMT, please update it with newer certificate if
* expires.
- *
- * @author Xuelei Fan
*/
/*
@@ -229,6 +237,10 @@
}
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
CertPath path = generateCertificatePath();
Set<TrustAnchor> anchors = generateTrustAnchors();
CertStore crls = generateCertificateStore();
--- a/jdk/test/java/security/cert/CertPathValidator/indirectCRL/CircularCRLOneLevel.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/security/cert/CertPathValidator/indirectCRL/CircularCRLOneLevel.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,11 +21,18 @@
* questions.
*/
+//
+// Security properties, once set, cannot revert to unset. To avoid
+// conflicts with tests running in the same VM isolate this test by
+// running it in otherVM mode.
+//
+
/**
* @test
*
* @bug 6720721
* @summary CRL check with circular depency support needed
+ * @run main/othervm CircularCRLOneLevel
* @author Xuelei Fan
*/
@@ -158,6 +165,10 @@
}
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
CertPath path = generateCertificatePath();
Set<TrustAnchor> anchors = generateTrustAnchors();
CertStore crls = generateCertificateStore();
--- a/jdk/test/java/security/cert/CertPathValidator/indirectCRL/CircularCRLOneLevelRevoked.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/security/cert/CertPathValidator/indirectCRL/CircularCRLOneLevelRevoked.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,11 +21,18 @@
* questions.
*/
+//
+// Security properties, once set, cannot revert to unset. To avoid
+// conflicts with tests running in the same VM isolate this test by
+// running it in otherVM mode.
+//
+
/**
* @test
*
* @bug 6720721
* @summary CRL check with circular depency support needed
+ * @run main/othervm CircularCRLOneLevelRevoked
* @author Xuelei Fan
*/
@@ -159,6 +166,10 @@
}
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
CertPath path = generateCertificatePath();
Set<TrustAnchor> anchors = generateTrustAnchors();
CertStore crls = generateCertificateStore();
--- a/jdk/test/java/security/cert/CertPathValidator/indirectCRL/CircularCRLTwoLevel.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/security/cert/CertPathValidator/indirectCRL/CircularCRLTwoLevel.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,11 +21,18 @@
* questions.
*/
+//
+// Security properties, once set, cannot revert to unset. To avoid
+// conflicts with tests running in the same VM isolate this test by
+// running it in otherVM mode.
+//
+
/**
* @test
*
* @bug 6720721
* @summary CRL check with circular depency support needed
+ * @run main/othervm CircularCRLTwoLevel
* @author Xuelei Fan
*/
@@ -210,6 +217,10 @@
}
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
CertPath path = generateCertificatePath();
Set<TrustAnchor> anchors = generateTrustAnchors();
CertStore crls = generateCertificateStore();
--- a/jdk/test/java/security/cert/CertPathValidator/indirectCRL/CircularCRLTwoLevelRevoked.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/security/cert/CertPathValidator/indirectCRL/CircularCRLTwoLevelRevoked.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,11 +21,18 @@
* questions.
*/
+//
+// Security properties, once set, cannot revert to unset. To avoid
+// conflicts with tests running in the same VM isolate this test by
+// running it in otherVM mode.
+//
+
/**
* @test
*
* @bug 6720721
* @summary CRL check with circular depency support needed
+ * @run main/othervm CircularCRLTwoLevelRevoked
* @author Xuelei Fan
*/
@@ -211,6 +218,10 @@
}
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
CertPath path = generateCertificatePath();
Set<TrustAnchor> anchors = generateTrustAnchors();
CertStore crls = generateCertificateStore();
--- a/jdk/test/java/security/cert/PKIXBuilderParameters/InvalidParameters.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/security/cert/PKIXBuilderParameters/InvalidParameters.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,16 +21,17 @@
* questions.
*/
-/**
+/*
* @test
* @test 4422738
- * @compile -source 1.4 InvalidParameters.java
+ * @compile InvalidParameters.java
* @run main InvalidParameters
* @summary Make sure PKIXBuilderParameters(Set) detects invalid
* parameters and throws correct exceptions
*/
import java.security.InvalidAlgorithmParameterException;
import java.security.cert.PKIXBuilderParameters;
+import java.security.cert.TrustAnchor;
import java.util.Collections;
import java.util.Set;
@@ -53,8 +54,10 @@
// make sure Set of invalid objects throws ClassCastException
try {
+ @SuppressWarnings("unchecked") // Knowingly do something bad
+ Set<TrustAnchor> badSet = (Set<TrustAnchor>) (Set) Collections.singleton(new String());
PKIXBuilderParameters p =
- new PKIXBuilderParameters(Collections.singleton(new String()), null);
+ new PKIXBuilderParameters(badSet, null);
throw new Exception("should have thrown ClassCastException");
} catch (ClassCastException cce) { }
}
--- a/jdk/test/java/security/cert/PKIXParameters/InvalidParameters.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/security/cert/PKIXParameters/InvalidParameters.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
/**
* @test
* @test 4422738
- * @compile -source 1.4 InvalidParameters.java
+ * @compile InvalidParameters.java
* @run main InvalidParameters
* @summary Make sure PKIXParameters(Set) and setTrustAnchors() detects invalid
* parameters and throws correct exceptions
@@ -64,12 +64,14 @@
} catch (NullPointerException npe) { }
// make sure Set of invalid objects throws ClassCastException
+ @SuppressWarnings("unchecked") // Knowingly do something bad
+ Set<TrustAnchor> badSet = (Set<TrustAnchor>) (Set) Collections.singleton(new String());
try {
- PKIXParameters p = new PKIXParameters(Collections.singleton(new String()));
+ PKIXParameters p = new PKIXParameters(badSet);
throw new Exception("should have thrown ClassCastException");
} catch (ClassCastException cce) { }
try {
- params.setTrustAnchors(Collections.singleton(new String()));
+ params.setTrustAnchors(badSet);
throw new Exception("should have thrown ClassCastException");
} catch (ClassCastException cce) { }
}
--- a/jdk/test/java/util/Calendar/GenericTimeZoneNamesTest.sh Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/util/Calendar/GenericTimeZoneNamesTest.sh Wed Jul 05 19:27:58 2017 +0200
@@ -32,10 +32,7 @@
STATUS=0
echo "Locale providers: default"
-# TODO: The purpose of ja-JP is to make sure the fallback for generic
-# names works. Remove ja-JP when adding generic names to localized
-# resources.
-if ! ${TESTJAVA}/bin/java -esa ${TESTVMOPTS} -cp "${TESTCLASSES}" GenericTimeZoneNamesTest en-US ja-JP; then
+if ! ${TESTJAVA}/bin/java -esa ${TESTVMOPTS} -cp "${TESTCLASSES}" GenericTimeZoneNamesTest en-US; then
STATUS=1
fi
--- a/jdk/test/java/util/Locale/Bug4175998Test.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/util/Locale/Bug4175998Test.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -20,13 +20,15 @@
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
+
/*
- @test
- @summary test ISO639-2 language codes
- @compile -encoding ascii -source 5 Bug4175998Test.java
- @run main Bug4175998Test
- @bug 4175998
-*/
+ * @test
+ * @summary test ISO639-2 language codes
+ * @compile -encoding ascii Bug4175998Test.java
+ * @run main Bug4175998Test
+ * @bug 4175998
+ */
+
/*
*
*
@@ -731,7 +733,7 @@
pon pon Pohnpeian
por por Portuguese
pra pra Prakrit languages
-pro pro Provençal, Old (to 1500)
+pro pro Proven\u00E7al, Old (to 1500)
pus pus Pushto
qaa-qtz qaa-qtz Reserved for local use
que que Quechua
--- a/jdk/test/java/util/concurrent/BlockingQueue/CancelledProducerConsumerLoops.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/util/concurrent/BlockingQueue/CancelledProducerConsumerLoops.java Wed Jul 05 19:27:58 2017 +0200
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658
- * @compile -source 1.5 CancelledProducerConsumerLoops.java
* @run main/timeout=7000 CancelledProducerConsumerLoops
* @summary Checks for responsiveness of blocking queues to cancellation.
* Runs under the assumption that ITERS computations require more than
--- a/jdk/test/java/util/concurrent/BlockingQueue/MultipleProducersSingleConsumerLoops.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/util/concurrent/BlockingQueue/MultipleProducersSingleConsumerLoops.java Wed Jul 05 19:27:58 2017 +0200
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658
- * @compile -source 1.5 MultipleProducersSingleConsumerLoops.java
* @run main/timeout=3600 MultipleProducersSingleConsumerLoops
* @summary multiple producers and single consumer using blocking queues
*/
--- a/jdk/test/java/util/concurrent/BlockingQueue/ProducerConsumerLoops.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/util/concurrent/BlockingQueue/ProducerConsumerLoops.java Wed Jul 05 19:27:58 2017 +0200
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658
- * @compile -source 1.5 ProducerConsumerLoops.java
* @run main/timeout=3600 ProducerConsumerLoops
* @summary multiple producers and consumers using blocking queues
*/
--- a/jdk/test/java/util/concurrent/BlockingQueue/SingleProducerMultipleConsumerLoops.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/util/concurrent/BlockingQueue/SingleProducerMultipleConsumerLoops.java Wed Jul 05 19:27:58 2017 +0200
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658
- * @compile -source 1.5 SingleProducerMultipleConsumerLoops.java
* @run main/timeout=600 SingleProducerMultipleConsumerLoops
* @summary check ordering for blocking queues with 1 producer and multiple consumers
*/
--- a/jdk/test/java/util/concurrent/ConcurrentHashMap/MapCheck.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/util/concurrent/ConcurrentHashMap/MapCheck.java Wed Jul 05 19:27:58 2017 +0200
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658
- * @compile -source 1.5 MapCheck.java
* @run main/timeout=240 MapCheck
* @summary Times and checks basic map operations
*/
--- a/jdk/test/java/util/concurrent/ConcurrentHashMap/MapLoops.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/util/concurrent/ConcurrentHashMap/MapLoops.java Wed Jul 05 19:27:58 2017 +0200
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658
- * @compile -source 1.5 MapLoops.java
* @run main/timeout=1600 MapLoops
* @summary Exercise multithreaded maps, by default ConcurrentHashMap.
* Multithreaded hash table test. Each thread does a random walk
--- a/jdk/test/java/util/concurrent/Exchanger/ExchangeLoops.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/util/concurrent/Exchanger/ExchangeLoops.java Wed Jul 05 19:27:58 2017 +0200
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658
- * @compile -source 1.5 ExchangeLoops.java
* @run main/timeout=720 ExchangeLoops
* @summary checks to make sure a pipeline of exchangers passes data.
*/
--- a/jdk/test/java/util/concurrent/ExecutorCompletionService/ExecutorCompletionServiceLoops.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/util/concurrent/ExecutorCompletionService/ExecutorCompletionServiceLoops.java Wed Jul 05 19:27:58 2017 +0200
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4965960
- * @compile -source 1.5 ExecutorCompletionServiceLoops.java
* @run main/timeout=3600 ExecutorCompletionServiceLoops
* @summary Exercise ExecutorCompletionServiceLoops
*/
--- a/jdk/test/java/util/concurrent/FutureTask/CancelledFutureLoops.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/util/concurrent/FutureTask/CancelledFutureLoops.java Wed Jul 05 19:27:58 2017 +0200
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658
- * @compile -source 1.5 CancelledFutureLoops.java
* @run main/timeout=2000 CancelledFutureLoops
* @summary Checks for responsiveness of futures to cancellation.
* Runs under the assumption that ITERS computations require more than
--- a/jdk/test/java/util/concurrent/atomic/VMSupportsCS8.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/util/concurrent/atomic/VMSupportsCS8.java Wed Jul 05 19:27:58 2017 +0200
@@ -24,7 +24,6 @@
/*
* @test
* @bug 4992443 4994819
- * @compile -source 1.5 VMSupportsCS8.java
* @run main VMSupportsCS8
* @summary Checks that the value of VMSupportsCS8 matches system properties.
*/
--- a/jdk/test/java/util/concurrent/locks/ReentrantLock/CancelledLockLoops.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/util/concurrent/locks/ReentrantLock/CancelledLockLoops.java Wed Jul 05 19:27:58 2017 +0200
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658
- * @compile -source 1.5 CancelledLockLoops.java
* @run main/timeout=2800 CancelledLockLoops
* @summary tests lockInterruptibly.
* Checks for responsiveness of locks to interrupts. Runs under that
--- a/jdk/test/java/util/concurrent/locks/ReentrantLock/LockOncePerThreadLoops.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/util/concurrent/locks/ReentrantLock/LockOncePerThreadLoops.java Wed Jul 05 19:27:58 2017 +0200
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658
- * @compile -source 1.5 LockOncePerThreadLoops.java
* @run main/timeout=15000 LockOncePerThreadLoops
* @summary Checks for missed signals by locking and unlocking each of an array of locks once per thread
*/
--- a/jdk/test/java/util/concurrent/locks/ReentrantLock/SimpleReentrantLockLoops.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/util/concurrent/locks/ReentrantLock/SimpleReentrantLockLoops.java Wed Jul 05 19:27:58 2017 +0200
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658
- * @compile -source 1.5 SimpleReentrantLockLoops.java
* @run main/timeout=4500 SimpleReentrantLockLoops
* @summary multiple threads using a single lock
*/
--- a/jdk/test/java/util/concurrent/locks/ReentrantLock/TimeoutLockLoops.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/util/concurrent/locks/ReentrantLock/TimeoutLockLoops.java Wed Jul 05 19:27:58 2017 +0200
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658 5031862
- * @compile -source 1.5 TimeoutLockLoops.java
* @run main TimeoutLockLoops
* @summary Checks for responsiveness of locks to timeouts.
* Runs under the assumption that ITERS computations require more than
--- a/jdk/test/java/util/concurrent/locks/ReentrantReadWriteLock/MapLoops.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/util/concurrent/locks/ReentrantReadWriteLock/MapLoops.java Wed Jul 05 19:27:58 2017 +0200
@@ -34,7 +34,6 @@
/*
* @test
* @bug 4486658
- * @compile -source 1.5 MapLoops.java
* @run main/timeout=4700 MapLoops
* @summary Exercise multithreaded maps, by default ConcurrentHashMap.
* Multithreaded hash table test. Each thread does a random walk
--- a/jdk/test/java/util/logging/ParentLoggersTest.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/util/logging/ParentLoggersTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -63,7 +63,9 @@
static final String LOGGER_NAME_1 = PARENT_NAME_1 + ".myLogger";
static final String LOGGER_NAME_2 = PARENT_NAME_2 + ".myBar.myLogger";
- static final List<String> initialLoggerNames = new ArrayList<String>();
+ static final List<String> initialLoggerNames = new ArrayList<>();
+ static final List<Logger> createdLoggers = new ArrayList<>();
+
public static void main(String args[]) throws Exception {
// cache the initial set of loggers before this test begins
// to add any loggers
@@ -74,7 +76,7 @@
if (!defaultLoggers.contains(logger)) {
initialLoggerNames.add(logger);
}
- };
+ }
String tstSrc = System.getProperty(TST_SRC_PROP);
File fname = new File(tstSrc, LM_PROP_FNAME);
@@ -92,7 +94,7 @@
}
public static List<String> getDefaultLoggerNames() {
- List<String> expectedLoggerNames = new ArrayList<String>();
+ List<String> expectedLoggerNames = new ArrayList<>();
// LogManager always creates two loggers:
expectedLoggerNames.add(""); // root logger: ""
@@ -106,56 +108,43 @@
*/
public static boolean checkLoggers() {
String failMsg = "# checkLoggers: getLoggerNames() returned unexpected loggers";
- Vector<String> expectedLoggerNames = new Vector<String>(getDefaultLoggerNames());
+ List<String> expectedLoggerNames = new ArrayList<>(getDefaultLoggerNames());
// Create the logger LOGGER_NAME_1
- Logger.getLogger(LOGGER_NAME_1);
- expectedLoggerNames.addElement(PARENT_NAME_1);
- expectedLoggerNames.addElement(LOGGER_NAME_1);
+ createdLoggers.add(Logger.getLogger(LOGGER_NAME_1));
+ expectedLoggerNames.add(PARENT_NAME_1);
+ expectedLoggerNames.add(LOGGER_NAME_1);
// Create the logger LOGGER_NAME_2
- Logger.getLogger(LOGGER_NAME_2);
- expectedLoggerNames.addElement(PARENT_NAME_2);
- expectedLoggerNames.addElement(LOGGER_NAME_2);
+ createdLoggers.add(Logger.getLogger(LOGGER_NAME_2));
+ expectedLoggerNames.add(PARENT_NAME_2);
+ expectedLoggerNames.add(LOGGER_NAME_2);
+
Enumeration<String> returnedLoggersEnum = logMgr.getLoggerNames();
- Vector<String> returnedLoggerNames = new Vector<String>(0);
+ List<String> returnedLoggerNames = new ArrayList<>(0);
while (returnedLoggersEnum.hasMoreElements()) {
String logger = returnedLoggersEnum.nextElement();
if (!initialLoggerNames.contains(logger)) {
// filter out the loggers that have been added before this test runs
- returnedLoggerNames.addElement(logger);
+ returnedLoggerNames.add(logger);
}
- };
-
+ }
+ System.out.println(returnedLoggerNames);
return checkNames(expectedLoggerNames, returnedLoggerNames, failMsg);
}
// Returns boolean values: PASSED or FAILED
- private static boolean checkNames(Vector<String> expNames,
- Vector<String> retNames,
+ private static boolean checkNames(List<String> expNames,
+ List<String> retNames,
String failMsg) {
boolean status = PASSED;
if (expNames.size() != retNames.size()) {
status = FAILED;
- } else {
- boolean checked[] = new boolean[retNames.size()];
- for (int i = 0; i < expNames.size(); i++) {
- int j = 0;
- for (; j < retNames.size(); j++) {
- if (!checked[j] &&
- expNames.elementAt(i).equals(retNames.elementAt(j))) {
- checked[j] = true;
- break;
- }
- }
- if (j >= retNames.size()) {
- status = FAILED;
- break;
- }
- }
+ } else if (!new HashSet<>(expNames).equals(new HashSet<>(retNames))) {
+ status = FAILED;
}
if (!status) {
printFailMsg(expNames, retNames, failMsg);
@@ -163,25 +152,25 @@
return status;
}
- private static void printFailMsg(Vector<String> expNames,
- Vector<String> retNames,
+ private static void printFailMsg(List<String> expNames,
+ List<String> retNames,
String failMsg) {
out.println();
out.println(failMsg);
- if (expNames.size() == 0) {
+ if (expNames.isEmpty()) {
out.println("# there are NO expected logger names");
} else {
out.println("# expected logger names (" + expNames.size() + "):");
for (int i = 0; i < expNames.size(); i++) {
- out.println(" expNames[" + i + "] = " + expNames.elementAt(i));
+ out.println(" expNames[" + i + "] = " + expNames.get(i));
}
}
- if (retNames.size() == 0) {
+ if (retNames.isEmpty()) {
out.println("# there are NO returned logger names");
} else {
out.println("# returned logger names (" + retNames.size() + "):");
for (int i = 0; i < retNames.size(); i++) {
- out.println(" retNames[" + i + "] = " + retNames.elementAt(i));
+ out.println(" retNames[" + i + "] = " + retNames.get(i));
}
}
}
--- a/jdk/test/java/util/logging/TestLogConfigurationDeadLock.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/util/logging/TestLogConfigurationDeadLock.java Wed Jul 05 19:27:58 2017 +0200
@@ -196,7 +196,8 @@
if (ids.length == 1) {
throw new RuntimeException("Found 1 deadlocked thread: "+ids[0]);
} else if (ids.length > 0) {
- ThreadInfo[] infos = ManagementFactory.getThreadMXBean().getThreadInfo(ids);
+ ThreadInfo[] infos = ManagementFactory.getThreadMXBean()
+ .getThreadInfo(ids, Integer.MAX_VALUE);
System.err.println("Found "+ids.length+" deadlocked threads: ");
for (ThreadInfo inf : infos) {
System.err.println(inf.toString());
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/logging/TestLogConfigurationDeadLockWithConf.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,340 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+import java.io.File;
+import java.io.PrintStream;
+import java.lang.management.ManagementFactory;
+import java.lang.management.ThreadInfo;
+import java.security.Permission;
+import java.security.Policy;
+import java.security.ProtectionDomain;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Random;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.logging.Level;
+import java.util.logging.LogManager;
+import java.util.logging.Logger;
+
+
+/**
+ * @test
+ * @bug 8027670 8029281
+ * @summary Deadlock in drainLoggerRefQueueBounded / readConfiguration
+ * caused by synchronization issues in Logger and LogManager.
+ * @run main/othervm TestLogConfigurationDeadLockWithConf
+ * @author danielfuchs
+ */
+// This test is a best effort to try & detect issues. The test itself will run
+// for 8secs. This is usually sufficient to detect issues.
+// However to get a greater confidence it is recommended to run this test in a loop:
+// e.g. use something like:
+// $ while jtreg -jdk:$JDK -verbose:all \
+// test/java/util/logging/TestLogConfigurationDeadLockWithConf.java ; \
+// do echo Running test again ; done
+// and let it run for a few hours...
+//
+public class TestLogConfigurationDeadLockWithConf {
+
+ static volatile Exception thrown = null;
+ static volatile boolean goOn = true;
+
+ static final int READERS = 2;
+ static final int LOGGERS = 2;
+ static final long TIME = 4 * 1000; // 4 sec.
+ static final long STEP = 1 * 1000; // message every 1 sec.
+ static final int LCOUNT = 50; // 50 loggers created in a row...
+ static final AtomicLong nextLogger = new AtomicLong(0);
+ static final AtomicLong readCount = new AtomicLong(0);
+ static final AtomicLong checkCount = new AtomicLong(0);
+
+ /**
+ * This test will run both with and without a security manager.
+ *
+ * The test starts a number of threads that will call
+ * LogManager.readConfiguration() concurrently (ReadConf), then starts
+ * a number of threads that will create new loggers concurrently
+ * (AddLogger), and then two additional threads: one (Stopper) that
+ * will stop the test after 4secs (TIME ms), and one DeadlockDetector
+ * that will attempt to detect deadlocks.
+ * If after 4secs no deadlock was detected and no exception was thrown
+ * then the test is considered a success and passes.
+ *
+ * This procedure is done twice: once without a security manager and once
+ * again with a security manager - which means the test takes ~8secs to
+ * run.
+ *
+ * Note that 8sec may not be enough to detect issues if there are some.
+ * This is a best effort test.
+ *
+ * @param args the command line arguments
+ * @throws java.lang.Exception if the test fails.
+ */
+ public static void main(String[] args) throws Exception {
+ File config = new File(System.getProperty("test.src", "."),
+ "deadlockconf.properties");
+ if (!config.canRead()) {
+ System.err.println("Can't read config file: test cannot execute.");
+ System.err.println("Please check your test environment: ");
+ System.err.println("\t -Dtest.src=" + System.getProperty("test.src", "."));
+ System.err.println("\t config file is: " + config.getAbsolutePath());
+ throw new RuntimeException("Can't read config file: "
+ + config.getAbsolutePath());
+ }
+
+ System.setProperty("java.util.logging.config.file",
+ config.getAbsolutePath());
+
+ // test without security
+ System.out.println("No security");
+ test();
+
+ // test with security
+ System.out.println("\nWith security");
+ Policy.setPolicy(new Policy() {
+ @Override
+ public boolean implies(ProtectionDomain domain, Permission permission) {
+ if (super.implies(domain, permission)) return true;
+ // System.out.println("Granting " + permission);
+ return true; // all permissions
+ }
+ });
+ System.setSecurityManager(new SecurityManager());
+ test();
+ }
+
+ static Random rand = new Random(System.currentTimeMillis());
+ private static int getBarCount() {
+ return rand.nextInt(10);
+ }
+
+ /**
+ * Starts all threads, wait 4secs, then stops all threads.
+ * @throws Exception if a deadlock was detected or an error occurred.
+ */
+ public static void test() throws Exception {
+ goOn = true;
+ thrown = null;
+ long sNextLogger = nextLogger.get();
+ long sReadCount = readCount.get();
+ long sCheckCount = checkCount.get();
+ List<Thread> threads = new ArrayList<>();
+ for (int i = 0; i<READERS; i++) {
+ threads.add(new ReadConf());
+ }
+ for (int i = 0; i<LOGGERS; i++) {
+ threads.add(new AddLogger());
+ }
+ DeadlockDetector detector = new DeadlockDetector();
+ threads.add(detector);
+ threads.add(0, new Stopper(TIME));
+ for (Thread t : threads) {
+ t.start();
+ }
+
+ // wait for the detector to finish.
+ detector.join();
+
+ final PrintStream out = thrown == null ? System.out : System.err;
+
+ // Try to wait for all threads to finish.
+ // This is a best effort: if some threads are in deadlock we can't
+ // obviously wait for them, and other threads may have joined in
+ // the deadlock since we last checked.
+ // However, all threads which are succeptible of deadlocking
+ // extend DeamonThread.
+ for (Thread t : threads) {
+ if (t == detector) {
+ continue;
+ }
+ if (detector.deadlocked.contains(t.getId())) {
+ out.println("Skipping deadlocked thread "
+ + t.getClass().getSimpleName() + ": " + t);
+ continue; // don't wait for deadlocked thread: they won't terminate
+ }
+ try {
+ if (detector.deadlocked.isEmpty()) {
+ t.join();
+ } else {
+ if (t instanceof DaemonThread) {
+ // Some other threads may have join the deadlock.
+ // don't wait forever.
+ t.join(100);
+ } else {
+ // Those threads that don't extend DaemonThread
+ // should be safe from deadlock.
+ out.println("Waiting for "
+ + t.getClass().getSimpleName() + ": " + t);
+ t.join();
+ }
+ }
+ } catch (Exception x) {
+ fail(x);
+ }
+ }
+ out.println("All threads joined.");
+
+ final String status = thrown == null ? "Passed" : "FAILED";
+
+ out.println(status + ": " + (nextLogger.get() - sNextLogger)
+ + " loggers created by " + LOGGERS + " Thread(s),");
+ out.println("\t LogManager.readConfiguration() called "
+ + (readCount.get() - sReadCount) + " times by " + READERS
+ + " Thread(s).");
+ out.println("\t ThreadMXBean.findDeadlockedThreads called "
+ + (checkCount.get() -sCheckCount) + " times by 1 Thread.");
+
+ if (thrown != null) {
+ out.println("\t Error is: "+thrown.getMessage());
+ throw thrown;
+ }
+ }
+
+ static class DaemonThread extends Thread {
+ public DaemonThread() {
+ this.setDaemon(true);
+ }
+ }
+
+ final static class ReadConf extends DaemonThread {
+ @Override
+ public void run() {
+ while (goOn) {
+ try {
+ LogManager.getLogManager().readConfiguration();
+ readCount.incrementAndGet();
+ Thread.sleep(1);
+ } catch (Exception x) {
+ fail(x);
+ }
+ }
+ }
+ }
+
+ final static class AddLogger extends DaemonThread {
+ @Override
+ public void run() {
+ try {
+ while (goOn) {
+ Logger l;
+ int barcount = getBarCount();
+ for (int i=0; i < LCOUNT ; i++) {
+ l = Logger.getLogger("foo.bar"+barcount+".l"+nextLogger.incrementAndGet());
+ l.fine("I'm fine");
+ if (!goOn) break;
+ Thread.sleep(1);
+ }
+ }
+ } catch (InterruptedException | RuntimeException x ) {
+ fail(x);
+ }
+ }
+ }
+
+ final static class DeadlockDetector extends Thread {
+
+ final Set<Long> deadlocked = Collections.synchronizedSet(new HashSet<Long>());
+
+ static List<Long> asList(long... ids) {
+ final List<Long> list = new ArrayList<>(ids.length);
+ for (long id : ids) {
+ list.add(id);
+ }
+ return list;
+ }
+
+ @Override
+ public void run() {
+ while(goOn) {
+ try {
+ long[] ids = ManagementFactory.getThreadMXBean().findDeadlockedThreads();
+ checkCount.incrementAndGet();
+ ids = ids == null ? new long[0] : ids;
+ if (ids.length > 0) {
+ deadlocked.addAll(asList(ids));
+ }
+ if (ids.length == 1) {
+ throw new RuntimeException("Found 1 deadlocked thread: "+ids[0]);
+ } else if (ids.length > 0) {
+ ThreadInfo[] infos = ManagementFactory.getThreadMXBean().getThreadInfo(ids, Integer.MAX_VALUE);
+ System.err.println("Found "+ids.length+" deadlocked threads: ");
+ for (ThreadInfo inf : infos) {
+ System.err.println(inf.toString());
+ }
+ throw new RuntimeException("Found "+ids.length+" deadlocked threads");
+ }
+ Thread.sleep(100);
+ } catch(InterruptedException | RuntimeException x) {
+ fail(x);
+ }
+ }
+ }
+
+ }
+
+ static final class Stopper extends Thread {
+ long start;
+ long time;
+
+ static final Logger logger = Logger.getLogger("remaining");
+
+ Stopper(long time) {
+ start = System.currentTimeMillis();
+ this.time = time;
+ }
+
+ @Override
+ public void run() {
+ try {
+ long rest, previous;
+ previous = time;
+ while (goOn && (rest = start - System.currentTimeMillis() + time) > 0) {
+ if (previous == time || previous - rest >= STEP) {
+ logger.log(Level.INFO,
+ "{0}ms remaining...", String.valueOf(rest));
+ previous = rest == time ? rest -1 : rest;
+ System.gc();
+ }
+ if (goOn == false) break;
+ Thread.sleep(Math.min(rest, 100));
+ }
+ System.out.println(System.currentTimeMillis() - start
+ + " ms elapsed ("+time+ " requested)");
+ goOn = false;
+ } catch(InterruptedException | RuntimeException x) {
+ fail(x);
+ }
+ }
+
+ }
+
+ static void fail(Exception x) {
+ x.printStackTrace();
+ if (thrown == null) {
+ thrown = x;
+ }
+ goOn = false;
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/logging/deadlockconf.properties Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,22 @@
+# This file is used by TestLogConfigurationDeadLockWithConf
+handlers= java.util.logging.ConsoleHandler
+.level= INFO
+java.util.logging.ConsoleHandler.level = INFO
+java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
+
+
+foo.bar0.level = INFO
+foo.bar1.level = INFO
+foo.bar2.level = INFO
+foo.bar3.level = INFO
+foo.bar4.level = INFO
+
+# We leave foo.bar5 out so that we have at least
+# one logger whose parent won't be in the configuration
+# file
+#foo.bar5.level = INFO
+
+foo.bar6.level = INFO
+foo.bar7.level = INFO
+foo.bar8.level = INFO
+foo.bar9.level = INFO
--- a/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/stream/CountTest.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/stream/CountTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -29,7 +29,6 @@
package org.openjdk.tests.java.util.stream;
-import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.DoubleStream;
import java.util.stream.DoubleStreamTestDataProvider;
import java.util.stream.IntStream;
@@ -47,45 +46,41 @@
@Test(dataProvider = "StreamTestData<Integer>", dataProviderClass = StreamTestDataProvider.class)
public void testOps(String name, TestData.OfRef<Integer> data) {
- AtomicLong expectedCount = new AtomicLong();
- data.stream().forEach(e -> expectedCount.incrementAndGet());
+ long expectedCount = data.size();
withData(data).
terminal(Stream::count).
- expectedResult(expectedCount.get()).
+ expectedResult(expectedCount).
exercise();
}
@Test(dataProvider = "IntStreamTestData", dataProviderClass = IntStreamTestDataProvider.class)
public void testOps(String name, TestData.OfInt data) {
- AtomicLong expectedCount = new AtomicLong();
- data.stream().forEach(e -> expectedCount.incrementAndGet());
+ long expectedCount = data.size();
withData(data).
terminal(IntStream::count).
- expectedResult(expectedCount.get()).
+ expectedResult(expectedCount).
exercise();
}
@Test(dataProvider = "LongStreamTestData", dataProviderClass = LongStreamTestDataProvider.class)
public void testOps(String name, TestData.OfLong data) {
- AtomicLong expectedCount = new AtomicLong();
- data.stream().forEach(e -> expectedCount.incrementAndGet());
+ long expectedCount = data.size();
withData(data).
terminal(LongStream::count).
- expectedResult(expectedCount.get()).
+ expectedResult(expectedCount).
exercise();
}
@Test(dataProvider = "DoubleStreamTestData", dataProviderClass = DoubleStreamTestDataProvider.class)
public void testOps(String name, TestData.OfDouble data) {
- AtomicLong expectedCount = new AtomicLong();
- data.stream().forEach(e -> expectedCount.incrementAndGet());
+ long expectedCount = data.size();
withData(data).
terminal(DoubleStream::count).
- expectedResult(expectedCount.get()).
+ expectedResult(expectedCount).
exercise();
}
}
--- a/jdk/test/javax/imageio/metadata/GetObjectMinValue.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/javax/imageio/metadata/GetObjectMinValue.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,14 +24,12 @@
/*
* @test
* @bug 4429875 7186799
- * @compile -source 1.4 GetObjectMinValue.java
+ * @compile GetObjectMinValue.java
* @run main GetObjectMinValue
* @summary Tests the getObject{Min,Max}Value method of
* IIOMetadataFormatImpl for an inclusive range
*/
-// Compiled with -source 1.4 to work around javac bug 5041233
-
import javax.imageio.metadata.IIOMetadataFormatImpl;
import javax.imageio.ImageTypeSpecifier;
@@ -79,13 +77,13 @@
}
public void addObjectValue(String elementName,
- Class classType, Object defaultValue,
+ Class<?> classType, Integer defaultValue,
Comparable minValue, Comparable maxValue,
boolean minInclusive, boolean maxInclusive) {
- super.addObjectValue(elementName,
- classType, defaultValue,
- minValue, maxValue,
- minInclusive, maxInclusive);
+ super.<Integer>addObjectValue(elementName,
+ (Class<Integer>)classType, defaultValue,
+ (Comparable<? super Integer>) minValue, (Comparable<? super Integer>) maxValue,
+ minInclusive, maxInclusive);
}
public boolean canNodeAppear(String elementName,
--- a/jdk/test/javax/management/monitor/StartStopTest.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/javax/management/monitor/StartStopTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -27,6 +27,8 @@
* @summary Test that tasks are cancelled properly when
* monitors are started and stopped in a loop.
* @author Luis-Miguel Alventosa
+ * @library /lib/testlibrary
+ * @run build jdk.testlibrary.Utils
* @run clean StartStopTest
* @run build StartStopTest
* @run main/othervm/timeout=300 StartStopTest 1
@@ -52,14 +54,15 @@
import javax.management.monitor.MonitorNotification;
import javax.management.monitor.StringMonitor;
+import jdk.testlibrary.Utils;
+
public class StartStopTest {
-
static int maxPoolSize;
static final AtomicInteger counter = new AtomicInteger();
// MBean class
public class ObservedObject implements ObservedObjectMBean {
- public boolean called = false;
+ volatile public boolean called = false;
public Integer getInteger() {
task("Integer");
return 0;
@@ -142,7 +145,7 @@
for (int i = 0; i < nTasks; i++)
monitor[i].start();
echo(">>> MONITORS started");
- Thread.sleep(500);
+ doSleep(500);
echo(">>> Check FLAGS true");
for (int i = 0; i < nTasks; i++)
if (!monitored[i].called) {
@@ -154,7 +157,7 @@
for (int i = 0; i < nTasks; i++)
monitor[i].stop();
echo(">>> MONITORS stopped");
- Thread.sleep(500);
+ doSleep(500);
echo(">>> Set FLAGS to false");
for (int i = 0; i < nTasks; i++)
monitored[i].called = false;
@@ -208,4 +211,8 @@
echo(">>> Happy Bye, Bye!");
}
}
+
+ private static void doSleep(long ms) throws Exception {
+ Thread.sleep(Math.round(ms * Utils.TIMEOUT_FACTOR));
+ }
}
--- a/jdk/test/javax/sound/midi/MidiDeviceConnectors/TestAllDevices.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/javax/sound/midi/MidiDeviceConnectors/TestAllDevices.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
* @test
* @bug 4933700
* @summary Tests that default devices return MidiDeviceTransmitter/Receiver and returned objects return correct MidiDevice
- * @compile -source 1.7 TestAllDevices.java
+ * @compile TestAllDevices.java
* @run main TestAllDevices
* @author Alex Menkov
*/
--- a/jdk/test/javax/sound/sampled/AudioFormat/PCM_FLOAT_support.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/javax/sound/sampled/AudioFormat/PCM_FLOAT_support.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
* @test
* @bug 6944033
* @summary Tests that PCM_FLOAT encoding is supported
- * @compile -source 1.7 PCM_FLOAT_support.java
+ * @compile PCM_FLOAT_support.java
* @run main PCM_FLOAT_support
* @author Alex Menkov
*
--- a/jdk/test/lib/testlibrary/jdk/testlibrary/JcmdBase.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/lib/testlibrary/jdk/testlibrary/JcmdBase.java Wed Jul 05 19:27:58 2017 +0200
@@ -26,34 +26,91 @@
import java.util.Arrays;
/**
- * Super class for tests which need to attach jcmd to the current process.
+ * Helper class for starting jcmd process.
+ * <pre>
+ * - jcmd will send diagnostic requests to the current java process:
+ * jcmd pid_to_current_process PerfCounter.print
+ * - jcmd will be run without sending request to any JVM
+ * jcmd -h
+ * </pre>
*/
-public class JcmdBase {
+public final class JcmdBase {
private static ProcessBuilder processBuilder = new ProcessBuilder();
+ private JcmdBase() {
+ // Private constructor to prevent class instantiation
+ }
+
/**
- * Attach jcmd to the current process
+ * Sends the diagnostic command request to the current process
+ *
+ * @see #jcmd(boolean, String[], String[])
+ */
+ public final static OutputAnalyzer jcmd(String... jcmdArgs)
+ throws Exception {
+ return jcmd(true, null, jcmdArgs);
+ }
+
+ /**
+ * Sends the diagnostic command request to the current process.
+ * jcmd will be run with specified {@code vmArgs}.
*
- * @param toolArgs
- * jcmd command line parameters, e.g. VM.flags
- * @return jcmd output
+ * @see #jcmd(boolean, String[], String[])
+ */
+ public final static OutputAnalyzer jcmd(String[] vmArgs,
+ String[] jcmdArgs) throws Exception {
+ return jcmd(true, vmArgs, jcmdArgs);
+ }
+
+ /**
+ * Runs jcmd without sending request to any JVM
+ *
+ * @see #jcmd(boolean, String[], String[])
+ */
+ public final static OutputAnalyzer jcmdNoPid(String[] vmArgs,
+ String[] jcmdArgs) throws Exception {
+ return jcmd(false, vmArgs, jcmdArgs);
+ }
+
+ /**
+ * If {@code requestToCurrentProcess} is {@code true}
+ * sends a diagnostic command request to the current process.
+ * If {@code requestToCurrentProcess} is {@code false}
+ * runs jcmd without sending request to any JVM.
+ *
+ * @param requestToCurrentProcess
+ * Defines if jcmd will send request to the current process
+ * @param vmArgs
+ * jcmd will be run with VM arguments specified,
+ * e.g. -XX:+UsePerfData
+ * @param jcmdArgs
+ * jcmd will be run with option or command and its arguments
+ * specified, e.g. VM.flags
+ * @return The output from {@link OutputAnalyzer} object
* @throws Exception
*/
- public final static OutputAnalyzer jcmd(String... toolArgs)
- throws Exception {
+ private static final OutputAnalyzer jcmd(boolean requestToCurrentProcess,
+ String[] vmArgs, String[] jcmdArgs) throws Exception {
JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("jcmd");
- launcher.addToolArg(Integer.toString(ProcessTools.getProcessId()));
- for (String toolArg : toolArgs) {
- launcher.addToolArg(toolArg);
+ if (vmArgs != null) {
+ for (String vmArg : vmArgs) {
+ launcher.addVMArg(vmArg);
+ }
+ }
+ if (requestToCurrentProcess) {
+ launcher.addToolArg(Integer.toString(ProcessTools.getProcessId()));
+ }
+ if (jcmdArgs != null) {
+ for (String toolArg : jcmdArgs) {
+ launcher.addToolArg(toolArg);
+ }
}
processBuilder.command(launcher.getCommand());
System.out.println(Arrays.toString(processBuilder.command().toArray()).replace(",", ""));
OutputAnalyzer output = new OutputAnalyzer(processBuilder.start());
System.out.println(output.getOutput());
- output.shouldHaveExitValue(0);
-
return output;
}
--- a/jdk/test/lib/testlibrary/jdk/testlibrary/OutputAnalyzer.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/lib/testlibrary/jdk/testlibrary/OutputAnalyzer.java Wed Jul 05 19:27:58 2017 +0200
@@ -23,7 +23,11 @@
package jdk.testlibrary;
+import static jdk.testlibrary.Asserts.*;
+
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -394,4 +398,99 @@
public int getExitValue() {
return exitValue;
}
+
+ /**
+ * Get the contents of the output buffer (stdout and stderr) as list of strings.
+ * Output will be split by system property 'line.separator'.
+ *
+ * @return Contents of the output buffer as list of strings
+ */
+ public List<String> asLines() {
+ List<String> l = new ArrayList<>();
+ String[] a = getOutput().split(Utils.NEW_LINE);
+ for (String string : a) {
+ l.add(string);
+ }
+ return l;
+ }
+
+ /**
+ * Check if there is a line matching {@code pattern} and return its index
+ *
+ * @param pattern Matching pattern
+ * @return Index of first matching line
+ */
+ private int indexOf(List<String> lines, String pattern) {
+ for (int i = 0; i < lines.size(); i++) {
+ if (lines.get(i).matches(pattern)) {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+ /**
+ * @see #shouldMatchByLine(String, String, String)
+ */
+ public int shouldMatchByLine(String pattern) {
+ return shouldMatchByLine(null, null, pattern);
+ }
+
+ /**
+ * @see #shouldMatchByLine(String, String, String)
+ */
+ public int shouldMatchByLineFrom(String from, String pattern) {
+ return shouldMatchByLine(from, null, pattern);
+ }
+
+ /**
+ * @see #shouldMatchByLine(String, String, String)
+ */
+ public int shouldMatchByLineTo(String to, String pattern) {
+ return shouldMatchByLine(null, to, pattern);
+ }
+
+ /**
+ * Verify that the stdout and stderr contents of output buffer match the
+ * {@code pattern} line by line. The whole output could be matched or
+ * just a subset of it.
+ *
+ * @param from
+ * The line from where output will be matched.
+ * Set {@code from} to null for matching from the first line.
+ * @param to
+ * The line until where output will be matched.
+ * Set {@code to} to null for matching until the last line.
+ * @param pattern
+ * Matching pattern
+ * @return Count of lines which match the {@code pattern}
+ */
+ public int shouldMatchByLine(String from, String to, String pattern) {
+ List<String> lines = asLines();
+
+ int fromIndex = 0;
+ if (from != null) {
+ fromIndex = indexOf(lines, from);
+ assertGreaterThan(fromIndex, -1,
+ "The line/pattern '" + from + "' from where the output should match can not be found");
+ }
+
+ int toIndex = lines.size();
+ if (to != null) {
+ toIndex = indexOf(lines, to);
+ assertGreaterThan(toIndex, -1,
+ "The line/pattern '" + to + "' until where the output should match can not be found");
+ }
+
+ List<String> subList = lines.subList(fromIndex, toIndex);
+ int matchedCount = 0;
+ for (String line : subList) {
+ assertTrue(line.matches(pattern),
+ "The line '" + line + "' does not match pattern '" + pattern + "'");
+ matchedCount++;
+ }
+
+ return matchedCount;
+ }
+
}
--- a/jdk/test/lib/testlibrary/jdk/testlibrary/ProcessTools.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/lib/testlibrary/jdk/testlibrary/ProcessTools.java Wed Jul 05 19:27:58 2017 +0200
@@ -32,6 +32,7 @@
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.concurrent.CountDownLatch;
import java.util.Map;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
@@ -39,6 +40,7 @@
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.function.Predicate;
+import java.util.function.Consumer;
import sun.management.VMManagement;
@@ -70,9 +72,37 @@
public static Process startProcess(String name,
ProcessBuilder processBuilder)
throws IOException {
+ return startProcess(name, processBuilder, null);
+ }
+
+ /**
+ * <p>Starts a process from its builder.</p>
+ * <span>The default redirects of STDOUT and STDERR are started</span>
+ * <p>It is possible to monitor the in-streams via the provided {@code consumer}
+ * @param name The process name
+ * @param consumer {@linkplain Consumer} instance to process the in-streams
+ * @param processBuilder The process builder
+ * @return Returns the initialized process
+ * @throws IOException
+ */
+ public static Process startProcess(String name,
+ ProcessBuilder processBuilder,
+ Consumer<String> consumer)
+ throws IOException {
Process p = null;
try {
- p = startProcess(name, processBuilder, null, -1, TimeUnit.NANOSECONDS);
+ p = startProcess(
+ name,
+ processBuilder,
+ line -> {
+ if (consumer != null) {
+ consumer.accept(line);
+ }
+ return false;
+ },
+ -1,
+ TimeUnit.NANOSECONDS
+ );
} catch (InterruptedException | TimeoutException e) {
// can't ever happen
}
@@ -111,25 +141,28 @@
stdout.addPump(new LineForwarder(name, System.out));
stderr.addPump(new LineForwarder(name, System.err));
- final Phaser phs = new Phaser(1);
+ CountDownLatch latch = new CountDownLatch(1);
if (linePredicate != null) {
- stdout.addPump(new StreamPumper.LinePump() {
+ StreamPumper.LinePump pump = new StreamPumper.LinePump() {
@Override
protected void processLine(String line) {
- if (linePredicate.test(line)) {
- if (phs.getRegisteredParties() > 0) {
- phs.arriveAndDeregister();
- }
+ if (latch.getCount() > 0 && linePredicate.test(line)) {
+ latch.countDown();
}
}
- });
+ };
+ stdout.addPump(pump);
+ stderr.addPump(pump);
}
Future<Void> stdoutTask = stdout.process();
Future<Void> stderrTask = stderr.process();
try {
if (timeout > -1) {
- phs.awaitAdvanceInterruptibly(0, timeout, unit);
+ long realTimeout = Math.round(timeout * Utils.TIMEOUT_FACTOR);
+ if (!latch.await(realTimeout, unit)) {
+ throw new TimeoutException();
+ }
}
} catch (TimeoutException | InterruptedException e) {
System.err.println("Failed to start a process (thread dump follows)");
--- a/jdk/test/lib/testlibrary/jdk/testlibrary/Utils.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/lib/testlibrary/jdk/testlibrary/Utils.java Wed Jul 05 19:27:58 2017 +0200
@@ -25,6 +25,9 @@
import static jdk.testlibrary.Asserts.assertTrue;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
@@ -56,6 +59,15 @@
*/
public static final String JAVA_OPTIONS = System.getProperty("test.java.opts", "").trim();
+ /**
+ * Returns the value of 'test.timeout.factor' system property
+ * converted to {@code double}.
+ */
+ public static final double TIMEOUT_FACTOR;
+ static {
+ String toFactor = System.getProperty("test.timeout.factor", "1.0");
+ TIMEOUT_FACTOR = Double.parseDouble(toFactor);
+ }
private Utils() {
// Private constructor to prevent class instantiation
@@ -203,7 +215,6 @@
* @throws Exception If multiple matching jvms are found.
*/
public static int tryFindJvmPid(String key) throws Throwable {
- ProcessBuilder pb = null;
OutputAnalyzer output = null;
try {
JDKToolLauncher jcmdLauncher = JDKToolLauncher.create("jcmd");
@@ -229,4 +240,24 @@
throw t;
}
}
+
+ /**
+ * Returns file content as a list of strings
+ *
+ * @param file File to operate on
+ * @return List of strings
+ * @throws IOException
+ */
+ public static List<String> fileAsList(File file) throws IOException {
+ assertTrue(file.exists() && file.isFile(),
+ file.getAbsolutePath() + " does not exist or not a file");
+ List<String> output = new ArrayList<>();
+ try (BufferedReader reader = new BufferedReader(new FileReader(file.getAbsolutePath()))) {
+ while (reader.ready()) {
+ output.add(reader.readLine().replace(NEW_LINE, ""));
+ }
+ }
+ return output;
+ }
+
}
--- a/jdk/test/sun/management/jmxremote/LocalRMIServerSocketFactoryTest.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/management/jmxremote/LocalRMIServerSocketFactoryTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -28,7 +28,7 @@
*
* @author Daniel Fuchs
*
- * @run compile -XDignore.symbol.file=true -source 1.6 -g LocalRMIServerSocketFactoryTest.java
+ * @run compile -XDignore.symbol.file=true -g LocalRMIServerSocketFactoryTest.java
* @run main LocalRMIServerSocketFactoryTest
*/
@@ -44,6 +44,7 @@
private static final SynchronousQueue<Exception> queue =
new SynchronousQueue<Exception>();
+ private static volatile boolean isRunning = true;
static final class Result extends Exception {
@@ -91,19 +92,23 @@
Thread t = new Thread() {
public void run() {
- while (true) {
+ while (isRunning) {
Exception error = Result.SUCCESS;
try {
System.err.println("Accepting: ");
final Socket ss = s.accept();
System.err.println(ss.getInetAddress() + " accepted");
} catch (Exception x) {
- x.printStackTrace();
+ if (isRunning) {
+ x.printStackTrace();
+ }
error = x;
} finally {
try {
- // wait for the client to get the exception.
- queue.put(error);
+ if (isRunning) {
+ // wait for the client to get the exception.
+ queue.put(error);
+ }
} catch (Exception x) {
// too bad!
System.err.println("Could't send result to client!");
@@ -114,32 +119,38 @@
}
}
};
- t.setDaemon(true);
- t.start();
+
+ try {
+ t.start();
- System.err.println("new Socket((String)null, port)");
- final Socket s1 = new Socket((String) null, port);
- checkError("new Socket((String)null, port)");
- s1.close();
- System.err.println("new Socket((String)null, port): PASSED");
+ System.err.println("new Socket((String)null, port)");
+ final Socket s1 = new Socket((String) null, port);
+ checkError("new Socket((String)null, port)");
+ s1.close();
+ System.err.println("new Socket((String)null, port): PASSED");
+
+ System.err.println("new Socket(InetAddress.getByName(null), port)");
+ final Socket s2 = new Socket(InetAddress.getByName(null), port);
+ checkError("new Socket(InetAddress.getByName(null), port)");
+ s2.close();
+ System.err.println("new Socket(InetAddress.getByName(null), port): PASSED");
- System.err.println("new Socket(InetAddress.getByName(null), port)");
- final Socket s2 = new Socket(InetAddress.getByName(null), port);
- checkError("new Socket(InetAddress.getByName(null), port)");
- s2.close();
- System.err.println("new Socket(InetAddress.getByName(null), port): PASSED");
+ System.err.println("new Socket(localhost, port)");
+ final Socket s3 = new Socket("localhost", port);
+ checkError("new Socket(localhost, port)");
+ s3.close();
+ System.err.println("new Socket(localhost, port): PASSED");
- System.err.println("new Socket(localhost, port)");
- final Socket s3 = new Socket("localhost", port);
- checkError("new Socket(localhost, port)");
- s3.close();
- System.err.println("new Socket(localhost, port): PASSED");
-
- System.err.println("new Socket(127.0.0.1, port)");
- final Socket s4 = new Socket("127.0.0.1", port);
- checkError("new Socket(127.0.0.1, port)");
- s4.close();
- System.err.println("new Socket(127.0.0.1, port): PASSED");
-
+ System.err.println("new Socket(127.0.0.1, port)");
+ final Socket s4 = new Socket("127.0.0.1", port);
+ checkError("new Socket(127.0.0.1, port)");
+ s4.close();
+ System.err.println("new Socket(127.0.0.1, port): PASSED");
+ }
+ finally {
+ isRunning = false;
+ s.close();
+ t.join();
+ }
}
}
--- a/jdk/test/sun/management/jmxremote/bootstrap/CustomLauncherTest.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/management/jmxremote/bootstrap/CustomLauncherTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -91,6 +91,12 @@
return;
}
+ if (getPlatform() == null) {
+ System.out.println("Test not designed to run on this operating " +
+ "system (" + OSNAME + "), skipping...");
+ return;
+ }
+
final FileSystem FS = FileSystems.getDefault();
Path libjvmPath = findLibjvm(FS);
@@ -223,8 +229,7 @@
break;
}
default: {
- System.out.println("Test not designed to run on this operating " +
- "system (" + OSNAME + "), skipping...");
+ platform = null;
}
}
--- a/jdk/test/sun/management/jmxremote/bootstrap/GeneratePropertyPassword.sh Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/management/jmxremote/bootstrap/GeneratePropertyPassword.sh Wed Jul 05 19:27:58 2017 +0200
@@ -34,12 +34,13 @@
OS=`uname -s`
UMASK=`umask`
-if [[ $OS == CYGWIN_NT* ]] ; then
+case $OS in
+CYGWIN_NT*)
OS="Windows_NT"
if [ -z "$SystemRoot" ] ; then
- SystemRoot=$SYSTEMROOT
+ SystemRoot=$SYSTEMROOT
fi
-fi
+esac
case $OS in
SunOS | Linux | Darwin)
--- a/jdk/test/sun/management/jmxremote/startstop/JMXStartStopDoSomething.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/management/jmxremote/startstop/JMXStartStopDoSomething.java Wed Jul 05 19:27:58 2017 +0200
@@ -21,37 +21,20 @@
* questions.
*/
-import java.io.File;
+import java.io.IOException;
+import jdk.testlibrary.ProcessTools;
public class JMXStartStopDoSomething {
-
- private static final String lockFileName = "JMXStartStop.lck";
-
- public static void doSomething() {
- try {
- File lockFile = new File(lockFileName);
- lockFile.createNewFile();
-
- while(lockFile.exists()) {
- long datetime = lockFile.lastModified();
- long epoch = System.currentTimeMillis()/1000;
-
- // Don't allow test app to run more than an hour
- if (epoch - datetime > 3600) {
- System.err.println("Lock is too old. Aborting");
- return;
- }
- Thread.sleep(500);
- }
-
- } catch (Throwable e) {
- System.err.println("Something bad happens:" +e);
- }
+ public static void doSomething() throws IOException{
+ int r = System.in.read();
+ System.out.println("read: " + r);
}
public static void main(String args[]) throws Exception {
- System.err.println("main enter");
+ System.out.println("pid:" + ProcessTools.getProcessId());
+ System.out.println("main enter");
+ System.out.flush();
doSomething();
- System.err.println("main exit");
+ System.out.println("main exit");
}
}
--- a/jdk/test/sun/management/jmxremote/startstop/JMXStartStopTest.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/management/jmxremote/startstop/JMXStartStopTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -22,45 +22,60 @@
*/
import java.io.File;
-import java.io.FileInputStream;
-import java.io.FilenameFilter;
import java.io.IOException;
-import java.io.InputStream;
+import java.lang.reflect.Method;
+import java.net.ConnectException;
+import java.rmi.NoSuchObjectException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
-import java.util.Properties;
+import java.util.Objects;
import java.util.Set;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.function.Consumer;
import javax.management.*;
import javax.management.remote.*;
+import javax.net.ssl.SSLHandshakeException;
-import sun.management.AgentConfigurationError;
-import sun.management.jmxremote.ConnectorBootstrap;
-
-public class JMXStartStopTest {
+import jdk.testlibrary.ProcessTools;
+import jdk.testlibrary.JDKToolLauncher;
- static boolean verbose = false;
+/**
+ * @test
+ * @bug 7110104
+ * @library /lib/testlibrary
+ * @build jdk.testlibrary.ProcessTools
+ * @build jdk.testlibrary.JDKToolLauncher
+ * @build jdk.testlibrary.Utils
+ * @build JMXStartStopTest JMXStartStopDoSomething
+ * @run main/othervm JMXStartStopTest
+ * @summary Makes sure that enabling/disabling the management agent through
+ * JCMD achieves the desired results
+ */
+public class JMXStartStopTest {
+ private static final String TEST_JDK = System.getProperty("test.jdk");
+ private static final String TEST_SRC = System.getProperty("test.src");
- static void dbg_print(String msg){
+ private static final boolean verbose = false;
+
+ private static void dbg_print(String msg){
if (verbose) {
- System.err.println("DBG: " +msg);
+ System.out.println("DBG: " +msg);
}
}
- static void dbg_print(String msg, Throwable ex){
- if (verbose) {
- System.err.println("DBG: " + msg + " " + ex.getMessage() );
- ex.printStackTrace(System.err);
- }
- }
-
- public static int listMBeans(MBeanServerConnection server, ObjectName pattern, QueryExp query)
+ private static int listMBeans(MBeanServerConnection server,
+ ObjectName pattern,
+ QueryExp query)
throws Exception {
Set names = server.queryNames(pattern,query);
@@ -72,10 +87,9 @@
MBeanAttributeInfo[] attrs = info.getAttributes();
if (attrs == null)
continue;
-
- for (int j=0; j<attrs.length; j++) {
- if (attrs[j].isReadable()) {
- Object o = server.getAttribute(name,attrs[j].getName());
+ for (MBeanAttributeInfo attr : attrs) {
+ if (attr.isReadable()) {
+ Object o = server.getAttribute(name, attr.getName());
}
}
}
@@ -83,11 +97,10 @@
}
- public void run_local(String strPid)
+ private static void testConnectLocal(int pid)
throws Exception {
String jmxUrlStr = null;
- int pid = Integer.parseInt(strPid);
try {
jmxUrlStr = sun.management.ConnectorAddressLink.importFrom(pid);
@@ -106,8 +119,8 @@
int count = listMBeans(conn,pattern,null);
if (count == 0)
- throw new Exception("Expected at least one matching "+ "MBean for "+pattern);
-
+ throw new Exception("Expected at least one matching "+
+ "MBean for "+pattern);
} catch (IOException e) {
dbg_print("Cannot find process : " + pid);
@@ -115,20 +128,40 @@
}
}
- public void run(String args[]) throws Exception {
+ private static void testNoConnect(int port) throws Exception {
+ testNoConnect(port, 0);
+ }
+
+ private static void testNoConnect(int port, int rmiPort) throws Exception {
+ try {
+ testConnect(port, rmiPort);
+ throw new Exception("Didn't expect the management agent running");
+ } catch (Exception e) {
+ Throwable t = e;
+ while (t != null) {
+ if (t instanceof NoSuchObjectException ||
+ t instanceof ConnectException ||
+ t instanceof SSLHandshakeException) {
+ break;
+ }
+ t = t.getCause();
+ }
+ if (t == null) {
+ throw new Exception("Unexpected exception", e);
+ }
+ }
+ }
+
+ private static void testConnect(int port) throws Exception {
+ testConnect(port, 0);
+ }
+
+ private static void testConnect(int port, int rmiPort) throws Exception {
dbg_print("RmiRegistry lookup...");
- int port = 4567;
- if (args != null && args.length > 0) {
- port = Integer.parseInt(args[0]);
- }
dbg_print("Using port: " + port);
- int rmiPort = 0;
- if (args != null && args.length > 1) {
- rmiPort = Integer.parseInt(args[1]);
- }
dbg_print("Using rmi port: " + rmiPort);
Registry registry = LocateRegistry.getRegistry(port);
@@ -140,8 +173,13 @@
}
String jmxUrlStr = (rmiPort != 0) ?
- String.format("service:jmx:rmi://localhost:%d/jndi/rmi://localhost:%d/jmxrmi", rmiPort, port) :
- String.format("service:jmx:rmi:///jndi/rmi://localhost:%d/jmxrmi",port);
+ String.format(
+ "service:jmx:rmi://localhost:%d/jndi/rmi://localhost:%d/jmxrmi",
+ rmiPort,
+ port) :
+ String.format(
+ "service:jmx:rmi:///jndi/rmi://localhost:%d/jmxrmi",
+ port);
JMXServiceURL url = new JMXServiceURL(jmxUrlStr);
Map m = new HashMap();
@@ -153,29 +191,632 @@
int count = listMBeans(conn,pattern,null);
if (count == 0)
- throw new Exception("Expected at least one matching "+ "MBean for "+pattern);
+ throw new Exception("Expected at least one matching " +
+ "MBean for " + pattern);
+ }
+
+ private static class Failure {
+ private final Throwable cause;
+ private final String msg;
+
+ public Failure(Throwable cause, String msg) {
+ this.cause = cause;
+ this.msg = msg;
+ }
+
+ public Failure(String msg) {
+ this(null, msg);
+ }
+
+ public Throwable getCause() {
+ return cause;
+ }
+
+ public String getMsg() {
+ return msg;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 97 * hash + Objects.hashCode(this.cause);
+ hash = 97 * hash + Objects.hashCode(this.msg);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final Failure other = (Failure) obj;
+ if (!Objects.equals(this.cause, other.cause)) {
+ return false;
+ }
+ if (!Objects.equals(this.msg, other.msg)) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ if (cause != null) {
+ return msg + "\n" + cause;
+ } else {
+ return msg;
+ }
+ }
+ }
+
+ private static List<Failure> failures = new ArrayList<>();
+
+ public static void main(String args[]) throws Exception {
+ for (int i=0;i<3;i++) {
+ System.out.println("=== PASS " + i + " ===");
+ for (Method m : JMXStartStopTest.class.getDeclaredMethods()) {
+ if (m.getName().startsWith("test_")) {
+ try {
+ m.invoke(null);
+ System.out.println("=== PASSED\n");
+ } catch (Throwable e) {
+ failures.add(new Failure(e, m.getName() + " failed"));
+ }
+ }
+ }
+
+ if (!failures.isEmpty()) {
+ for(Failure f : failures) {
+ System.err.println(f.getMsg());
+ f.getCause().printStackTrace(System.err);
+ }
+ throw new Error();
+ }
+ }
+ }
+
+ /**
+ * Retrieves the PID of the test application using JCMD
+ * @return The PID of the test application
+ * @throws InterruptedException
+ * @throws IOException
+ */
+ private static String getPID() throws InterruptedException, IOException {
+ final AtomicReference<String> pid = new AtomicReference<>();
+ jcmd(
+ null,
+ line -> {
+ if (line.endsWith("JMXStartStopDoSomething")) {
+ pid.set(line.split(" ")[0]);
+ }
+ }
+ );
+ return pid.get();
+ }
+
+ private static class Something {
+ private Process p;
+ private final ProcessBuilder pb;
+ private final String name;
+ private final AtomicBoolean started = new AtomicBoolean(false);
+ private volatile int pid = -1;
+
+ public Something(ProcessBuilder pb, String name) {
+ this.pb = pb;
+ this.name = name;
+ }
+
+ public synchronized void start() throws InterruptedException, IOException, TimeoutException {
+ if (started.compareAndSet(false, true)) {
+ try {
+ p = ProcessTools.startProcess(
+ "JMXStartStopDoSomething",
+ pb,
+ (line) -> {
+ if (line.toLowerCase().startsWith("pid:")) {
+ pid = Integer.parseInt(line.split("\\:")[1]);
+ }
+ return line.equals("main enter");
+ },
+ 5,
+ TimeUnit.SECONDS
+ );
+ } catch (TimeoutException e) {
+ p.destroy();
+ p.waitFor();
+ throw e;
+ }
+ }
+ }
+
+ public int getPid() {
+ return pid;
+ }
+
+ public synchronized void stop()
+ throws IOException, InterruptedException {
+ if (started.compareAndSet(true, false)) {
+ p.getOutputStream().write(0);
+ p.getOutputStream().flush();
+ int ec = p.waitFor();
+ if (ec != 0) {
+ StringBuilder msg = new StringBuilder();
+ msg.append("Test application '").append(name);
+ msg.append("' failed with exit code: ");
+ msg.append(ec);
+
+ failures.add(new Failure(msg.toString()));
+ }
+ }
+ }
+ }
+
+ /**
+ * Runs the test application "JMXStartStopDoSomething"
+ * @param name Test run name
+ * @param args Additional arguments
+ * @return Returns a {@linkplain Something} instance representing the run
+ * @throws IOException
+ * @throws InterruptedException
+ * @throws TimeoutException
+ */
+ private static Something doSomething(String name, String ... args)
+ throws Exception {
+ List<String> pbArgs = new ArrayList<>(Arrays.asList(
+ "-cp",
+ System.getProperty("test.class.path")
+ ));
+ pbArgs.addAll(Arrays.asList(args));
+ pbArgs.add("JMXStartStopDoSomething");
+ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
+ pbArgs.toArray(new String[pbArgs.size()])
+ );
+ Something s = new Something(pb, name);
+ s.start();
+ return s;
+ }
+
+ /**
+ * Run the "jcmd" command
+ *
+ * @param command Command with parameters; space separated string
+ * @throws IOException
+ * @throws InterruptedException
+ */
+ private static void jcmd(String ... command) throws IOException, InterruptedException {
+ if (command.length == 0) {
+ jcmd(null, (Consumer<String>)null);
+ } else {
+ jcmd(null, command);
+ }
+ }
+
+ /**
+ * Run the "jcmd" command
+ *
+ * @param c {@linkplain Consumer} instance; may be null
+ * @param command Command with parameters; space separated string
+ * @throws IOException
+ * @throws InterruptedException
+ */
+ private static void jcmd(Consumer<String> c, String ... command) throws IOException, InterruptedException {
+ jcmd("JMXStartStopDoSomething", c, command);
+ }
+
+ /**
+ * Run the "jcmd" command
+ * @param target The target application name (or PID)
+ * @param c {@linkplain Consumer} instance; may be null
+ * @param command Command with parameters; space separated string
+ * @throws IOException
+ * @throws InterruptedException
+ */
+ private static void jcmd(String target, final Consumer<String> c, String ... command) throws IOException, InterruptedException {
+ dbg_print("[jcmd] " + (command.length > 0 ? command[0] : "list"));
+
+ JDKToolLauncher l = JDKToolLauncher.createUsingTestJDK("jcmd");
+ l.addToolArg(target);
+ for(String cmd : command) {
+ l.addToolArg(cmd);
+ }
+ Process p = ProcessTools.startProcess(
+ "jcmd",
+ new ProcessBuilder(l.getCommand()),
+ c
+ );
+
+ p.waitFor();
+ dbg_print("[jcmd] --------");
+ }
+
+ private static final String CMD_STOP = "ManagementAgent.stop";
+ private static final String CMD_START= "ManagementAgent.start";
+ private static final String CMD_START_LOCAL = "ManagementAgent.start_local";
+ private static final int port1 = 50234;
+ private static final int port2 = 50235;
+
+ private static void test_01() throws Exception {
+ // Run an app with JMX enabled stop it and
+ // restart on other port
+
+ System.out.println("**** Test one ****");
+
+ Something s = doSomething(
+ "test_01",
+ "-Dcom.sun.management.jmxremote.port=" + port1,
+ "-Dcom.sun.management.jmxremote.authenticate=false",
+ "-Dcom.sun.management.jmxremote.ssl=false");
+
+ try {
+ testConnect(port1);
+
+ jcmd(CMD_STOP);
+ testNoConnect(port1);
+
+ jcmd(CMD_START, "jmxremote.port=" + port2);
+ testConnect(port2);
+ } finally {
+ s.stop();
+ }
+ }
+
+ private static void test_02() throws Exception {
+ // Run an app without JMX enabled
+ // start JMX by jcmd
+
+ System.out.println("**** Test two ****");
+
+ Something s = doSomething("test_02");
+ try {
+ jcmd(CMD_START,
+ "jmxremote.port=" + port1,
+ "jmxremote.authenticate=false",
+ "jmxremote.ssl=false");
+
+ testConnect(port1);
+ } finally {
+ s.stop();
+ }
}
+ private static void test_03() throws Exception {
+ // Run an app without JMX enabled
+ // start JMX by jcmd on one port than on other one
- public static void main(String args[]) {
- JMXStartStopTest manager = new JMXStartStopTest();
+ System.out.println("**** Test three ****");
+
+ Something s = doSomething("test_03");
+ try {
+ jcmd(CMD_START,
+ "jmxremote.port=" + port1,
+ "jmxremote.authenticate=false",
+ "jmxremote.ssl=false");
+
+ // Second agent shouldn't start
+ jcmd(CMD_START,
+ "jmxremote.port=" + port2,
+ "jmxremote.authenticate=false",
+ "jmxremote.ssl=false");
+
+ // First agent should connect
+ testConnect(port1);
+
+ // Second agent should not connect
+ testNoConnect(port2);
+ } finally {
+ s.stop();
+ }
+ }
+
+ private static void test_04() throws Exception {
+ // Run an app without JMX enabled
+ // start JMX by jcmd on one port, specify rmi port explicitly
+
+ System.out.println("**** Test four ****");
+
+ Something s = doSomething("test_04");
+
+ try {
+ jcmd(CMD_START,
+ "jmxremote.port=" + port1,
+ "jmxremote.rmi.port=" + port2,
+ "jmxremote.authenticate=false",
+ "jmxremote.ssl=false");
+
+ testConnect(port1, port2);
+ } finally {
+ s.stop();
+ }
+ }
+
+ private static void test_05() throws Exception {
+ // Run an app without JMX enabled, it will enable local server
+ // but should leave remote server disabled
+
+ System.out.println("**** Test five ****");
+
+ Something s = doSomething("test_05");
try {
- if (args!=null && args[0].equals("local")) {
- manager.run_local(args[1]);
- } else {
- manager.run(args);
+ jcmd(CMD_START_LOCAL);
+
+ testNoConnect(port1);
+ testConnectLocal(s.getPid());
+ } finally {
+ s.stop();
+ }
+ }
+
+ private static void test_06() throws Exception {
+ // Run an app without JMX enabled
+ // start JMX by jcmd on one port, specify rmi port explicitly
+ // attempt to start it again
+ // 1) with the same port
+ // 2) with other port
+ // 3) attempt to stop it twice
+ // Check for valid messages in the output
+
+ System.out.println("**** Test six ****");
+
+ Something s = doSomething("test_06");
+
+ try {
+ jcmd(CMD_START,
+ "jmxremote.port=" + port1,
+ "jmxremote.authenticate=false",
+ "jmxremote.ssl=false");
+
+ testConnect(port1, port2);
+
+ final boolean[] checks = new boolean[3];
+ jcmd(
+ line -> {
+ if (line.equals("java.lang.RuntimeException: Invalid agent state")) {
+ checks[0] = true;
+ }
+ },
+ CMD_START,
+ "jmxremote.port=" + port1,
+ "jmxremote.authenticate=false",
+ "jmxremote.ssl=false");
+
+ jcmd(
+ line -> {
+ if (line.equals("java.lang.RuntimeException: Invalid agent state")) {
+ checks[1] = true;
+ }
+ },
+ CMD_START,
+ "jmxremote.port=" + port2,
+ "jmxremote.authenticate=false",
+ "jmxremote.ssl=false");
+
+ jcmd(CMD_STOP);
+ jcmd(CMD_STOP);
+
+ jcmd(
+ line -> {
+ if (line.contains("Port already in use: 22")) {
+ checks[2] = true;
+ }
+ },
+ CMD_START,
+ "jmxremote.port=22",
+ "jmxremote.rmi.port=" + port2,
+ "jmxremote.authenticate=false",
+ "jmxremote.ssl=false");
+ if (!checks[0]) {
+ throw new Exception("Starting agent on port " + port1 + " should " +
+ "report an invalid agent state");
}
- } catch (RuntimeException r) {
- dbg_print("No connection: ", r);
- System.out.print("NO_CONN");
- System.exit(1);
- } catch (Throwable t) {
- dbg_print("No connection: ", t);
- System.out.print("NO_CONN");
- System.exit(2);
+ if (!checks[1]) {
+ throw new Exception("Starting agent on poprt " + port2 + " should " +
+ "report an invalid agent state");
+ }
+ if (!checks[2]) {
+ throw new Exception("Starting agent on port 22 should " +
+ "report port in use");
+ }
+ } finally {
+ s.stop();
}
- System.out.print("OK_CONN");
- System.exit(0);
+ }
+
+ private static void test_07() throws Exception {
+ // Run an app without JMX enabled, but with some properties set
+ // in command line.
+ // make sure these properties overriden corectly
+
+ System.out.println("**** Test seven ****");
+
+ Something s = doSomething(
+ "test_07",
+ "-Dcom.sun.management.jmxremote.authenticate=false",
+ "-Dcom.sun.management.jmxremote.ssl=true");
+
+ try {
+ testNoConnect(port1);
+ jcmd(
+ CMD_START,
+ "jmxremote.port=" + port2,
+ "jmxremote.authenticate=false",
+ "jmxremote.ssl=false"
+ );
+ testConnect(port2);
+ } finally {
+ s.stop();
+ }
}
+ private static void test_08() throws Exception {
+ // Run an app with JMX enabled and with some properties set
+ // in command line.
+ // stop JMX agent and then start it again with different property values
+ // make sure these properties overriden corectly
+
+ System.out.println("**** Test eight ****");
+
+ Something s = doSomething(
+ "test_08",
+ "-Dcom.sun.management.jmxremote.port=" + port1,
+ "-Dcom.sun.management.jmxremote.authenticate=false",
+ "-Dcom.sun.management.jmxremote.ssl=true");
+
+ try {
+ testNoConnect(port1);
+
+ jcmd(CMD_STOP);
+
+ testNoConnect(port1);
+
+ jcmd(
+ CMD_START,
+ "jmxremote.port=" + port2,
+ "jmxremote.authenticate=false",
+ "jmxremote.ssl=false"
+ );
+
+ testConnect(port2);
+ } finally {
+ s.stop();
+ }
+ }
+
+ private static void test_09() throws Exception {
+ // Run an app with JMX enabled and with some properties set
+ // in command line.
+ // stop JMX agent and then start it again with different property values
+ // specifing some property in management config file and some of them
+ // in command line
+ // make sure these properties overriden corectly
+
+ System.out.println("**** Test nine ****");
+
+ Something s = doSomething("test_09",
+ "-Dcom.sun.management.config.file=" +
+ TEST_SRC + File.separator + "management_cl.properties",
+ "-Dcom.sun.management.jmxremote.authenticate=false"
+ );
+
+ try {
+ testNoConnect(port1);
+
+ jcmd(CMD_STOP);
+
+ testNoConnect(port1);
+
+ jcmd(CMD_START,
+ "config.file=" + TEST_SRC + File.separator +
+ "management_jcmd.properties",
+ "jmxremote.authenticate=false",
+ "jmxremote.port=" + port2
+ );
+
+ testConnect(port2);
+ } finally {
+ s.stop();
+ }
+ }
+
+ private static void test_10() throws Exception {
+ // Run an app with JMX enabled and with some properties set
+ // in command line.
+ // stop JMX agent and then start it again with different property values
+ // stop JMX agent again and then start it without property value
+ // make sure these properties overriden corectly
+
+ System.out.println("**** Test ten ****");
+
+ Something s = doSomething(
+ "test_10",
+ "-Dcom.sun.management.jmxremote.port=" + port1,
+ "-Dcom.sun.management.jmxremote.authenticate=false",
+ "-Dcom.sun.management.jmxremote.ssl=true");
+
+ try {
+ testNoConnect(port1);
+
+ jcmd(CMD_STOP);
+ jcmd(CMD_START,
+ "jmxremote.ssl=false",
+ "jmxremote.port=" + port1
+ );
+ testConnect(port1);
+
+ jcmd(CMD_STOP);
+ jcmd(CMD_START,
+ "jmxremote.port=" + port1
+ );
+
+ testNoConnect(port1);
+ } finally {
+ s.stop();
+ }
+ }
+
+ private static void test_11() throws Exception {
+ // Run an app with JMX enabled
+ // stop remote agent
+ // make sure local agent is not affected
+
+ System.out.println("**** Test eleven ****");
+
+ Something s = doSomething(
+ "test_11",
+ "-Dcom.sun.management.jmxremote.port=" + port1,
+ "-Dcom.sun.management.jmxremote.authenticate=false",
+ "-Dcom.sun.management.jmxremote.ssl=false");
+ try {
+ testConnect(port1);
+ jcmd(CMD_STOP);
+ testConnectLocal(s.getPid());
+ } finally {
+ s.stop();
+ }
+ }
+
+ private static void test_12() throws Exception {
+ // Run an app with JMX disabled
+ // start local agent only
+
+ System.out.println("**** Test twelve ****");
+
+ Something s = doSomething("test_12");
+
+ try {
+ testNoConnect(port1);
+ jcmd(CMD_START + "_local");
+
+ testConnectLocal(s.getPid());
+
+ } finally {
+ s.stop();
+ }
+ }
+
+ private static void test_13() throws Exception {
+ // Run an app with -javaagent make sure it works as expected -
+ // system properties are ignored
+
+ System.out.println("**** Test fourteen ****");
+
+ String agent = TEST_JDK + "/jre/lib/management-agent.jar";
+ if (!new File(agent).exists()) {
+ agent = TEST_JDK + "/lib/management-agent.jar";
+ }
+
+ Something s = doSomething("test_14",
+ "-javaagent:" + agent + "=com.sun.management.jmxremote.port=" +
+ port1 + ",com.sun.management.jmxremote.authenticate=false",
+ "-Dcom.sun.management.jmxremote.ssl=false"
+ );
+
+ try {
+ testNoConnect(port1);
+ } finally {
+ s.stop();
+ }
+ }
}
--- a/jdk/test/sun/management/jmxremote/startstop/JMXStartStopTest.sh Mon Jan 27 21:01:55 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,579 +0,0 @@
-#!/bin/sh
-
-# Copyright (c) 2011, 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.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-
-# @test
-# @bug 7110104
-# @build JMXStartStopTest JMXStartStopDoSomething
-# @run shell JMXStartStopTest.sh --jtreg --no-compile
-# @summary No word Failed expected in the test output
-
-_server=no
-_jtreg=no
-_compile=yes
-_testsuite="01,02,03,04,05,06,07,08,09,10,11,12,13"
-_port_one=50234
-_port_two=50235
-
-
-_testclasses=".classes"
-_testsrc=`pwd`
-
-_logname=".classes/output.txt"
-_lockFileName="JMXStartStop.lck"
-
-_compile(){
-
- if [ ! -d ${_testclasses} ]
- then
- mkdir -p ${_testclasses}
- fi
-
- rm -f ${_testclasses}/JMXStartStopTest.class
-
- # Compile testcase
- ${COMPILEJAVA}/bin/javac ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} -d ${_testclasses} \
- JMXStartStopDoSomething.java JMXStartStopTest.java
-
- if [ ! -f ${_testclasses}/JMXStartStopTest.class ]
- then
- echo "ERROR: Can't compile"
- exit -1
- fi
-}
-
-_app_start(){
- ${TESTJAVA}/bin/java ${TESTVMOPTS} $* -cp ${_testclasses} JMXStartStopDoSomething >> ${_logname} 2>&1 &
-
- x=0
- while [ ! -f ${_lockFileName} ]
- do
- if [ $x -gt 20 ]
- then
- echo "ERROR: Test app not started"
- if [ "${_jtreg}" = "yes" ]
- then
- exit -1
- fi
- fi
-
- echo "Waiting JMXStartStopDoSomething to start: $x"
- x=`expr $x + 1`
- sleep 1
- done
-}
-
-_get_pid(){
- ${COMPILEJAVA}/bin/jps ${TESTTOOLVMOPTS} | sed -n "/JMXStartStopDoSomething/s/ .*//p"
-}
-
-_app_stop(){
- rm ${_lockFileName}
-
- # wait until VM is actually shuts down
- while true
- do
- npid=`_get_pid`
- if [ "${npid}" = "" ]
- then
- break
- fi
- sleep 1
- done
-}
-
-_exit_on_jtreg(){
- # Stop on first failed test under jtreg
- if [ "${_jtreg}" = "yes" ]
- then
- _app_stop
- exit -1
- fi
-}
-
-_testme(){
- ${TESTJAVA}/bin/java ${TESTVMOPTS} -cp ${_testclasses} JMXStartStopTest $*
-}
-
-
-_jcmd(){
- ${TESTJAVA}/bin/jcmd ${TESTTOOLVMOPTS} JMXStartStopDoSomething $* > /dev/null 2>/dev/null
-}
-
-_echo(){
- echo "$*"
- echo "$*" >> ${_logname}
-}
-
-# ============= TESTS ======================================
-
-test_01(){
-# Run an app with JMX enabled stop it and
-# restart on other port
-
- _echo "**** Test one ****"
-
- _app_start -Dcom.sun.management.jmxremote.port=$1 \
- -Dcom.sun.management.jmxremote.authenticate=false \
- -Dcom.sun.management.jmxremote.ssl=false
-
- res1=`_testme $1`
-
- _jcmd ManagementAgent.stop
-
- res2=`_testme $1`
-
- _jcmd ManagementAgent.start jmxremote.port=$2
-
- res3=`_testme $2`
-
- if [ "${res1}" = "OK_CONN" -a "${res2}" = "NO_CONN" -a "${res3}" = "OK_CONN" ]
- then
- _echo "Passed"
- else
- _echo "Failed r1(OK):${res1} r2(NO):${res2} r3(OK):${res3}"
- _exit_on_jtreg
- fi
-
- _app_stop
-}
-
-test_02(){
-# Run an app without JMX enabled
-# start JMX by jcmd
-
- _echo "**** Test two ****"
- _app_start
-
- _jcmd ManagementAgent.start jmxremote.port=$1 jmxremote.authenticate=false jmxremote.ssl=false
-
- res1=`_testme $1`
-
- if [ "${res1}" = "OK_CONN" ]
- then
- _echo "Passed"
- else
- _echo "Failed r1(OK):${res1}"
- _exit_on_jtreg
- fi
- _app_stop
-}
-
-test_03(){
-# Run an app without JMX enabled
-# start JMX by jcmd on one port than on other one
-
- _echo "**** Test three ****"
- _app_start
-
- _jcmd ManagementAgent.start jmxremote.port=$1 jmxremote.authenticate=false jmxremote.ssl=false
-
-# Second agent shouldn't start
- _jcmd ManagementAgent.start jmxremote.port=$2 jmxremote.authenticate=false jmxremote.ssl=false
-
-# First agent should connect
- res1=`_testme $1`
-
- if [ "${res1}" = "OK_CONN" ]
- then
- _echo "Passed $1"
- else
- _echo "Failed r1(NO):${res1}"
- _exit_on_jtreg
- fi
-
-#Second agent shouldn't connect
- res1=`_testme $2`
-
- if [ "${res1}" = "NO_CONN" ]
- then
- _echo "Passed $2"
- else
- _echo "Failed r1(OK):${res1}"
- _exit_on_jtreg
- fi
-
- _app_stop
-}
-
-test_04(){
-# Run an app without JMX enabled
-# start JMX by jcmd on one port, specify rmi port explicitly
-
- _echo "**** Test four ****"
- _app_start
-
- _jcmd ManagementAgent.start jmxremote.port=$1 jmxremote.rmi.port=$2 jmxremote.authenticate=false jmxremote.ssl=false
-
-# First agent should connect
- res1=`_testme $1 $2`
-
- if [ "${res1}" = "OK_CONN" ]
- then
- _echo "Passed $1 $2"
- else
- _echo "Failed r1(NO):${res1}"
- _exit_on_jtreg
- fi
-
- _app_stop
-}
-
-test_05(){
-# Run an app without JMX enabled, it will enable local server
-# but should leave remote server disabled
-
- _echo "**** Test five ****"
- _app_start
-
- _jcmd ManagementAgent.start jmxremote=1
-
- # First agent should connect
- res1=`_testme $1`
-
- if [ "${res1}" = "NO_CONN" ]
- then
- _echo "Passed $1 $2"
- else
- _echo "Failed r1(OK):${res1}"
- _exit_on_jtreg
- fi
-
- _app_stop
-}
-
-test_06(){
-# Run an app without JMX enabled
-# start JMX by jcmd on one port, specify rmi port explicitly
-# attempt to start it again
-# 1) with the same port
-# 2) with other port
-# 3) attempt to stop it twice
-# Check for valid messages in the output
-
- _echo "**** Test six ****"
- _app_start
-
- _jcmd ManagementAgent.start jmxremote.port=$1 jmxremote.authenticate=false jmxremote.ssl=false
-
- # First agent should connect
- res1=`_testme $1 $2`
-
- if [ "${res1}" = "OK_CONN" ]
- then
- _echo "Passed $1 $2"
- else
- _echo "Failed r1(NO):${res1}"
- _exit_on_jtreg
- fi
-
- _jcmd ManagementAgent.start jmxremote.port=$1 jmxremote.authenticate=false jmxremote.ssl=false
-
- _jcmd ManagementAgent.start jmxremote.port=$2 jmxremote.authenticate=false jmxremote.ssl=false
-
- _jcmd ManagementAgent.stop
-
- _jcmd ManagementAgent.stop
-
- _jcmd ManagementAgent.start jmxremote.port=22 jmxremote.rmi.port=$2 jmxremote.authenticate=false jmxremote.ssl=false
-
- _app_stop
-}
-
-test_07(){
-# Run an app without JMX enabled, but with some properties set
-# in command line.
-# make sure these properties overriden corectly
-
- _echo "**** Test seven ****"
-
- _app_start -Dcom.sun.management.jmxremote.authenticate=false \
- -Dcom.sun.management.jmxremote.ssl=true
-
- res1=`_testme $1`
-
- _jcmd ManagementAgent.start jmxremote.port=$2 jmxremote.authenticate=false jmxremote.ssl=false
-
- res2=`_testme $2`
-
- if [ "${res1}" = "NO_CONN" -a "${res2}" = "OK_CONN" ]
- then
- echo "Passed"
- else
- _echo "Failed r1(NO):${res1} r2(OK):${res2}"
- _exit_on_jtreg
- fi
-
- _app_stop
-}
-
-test_08(){
-# Run an app with JMX enabled and with some properties set
-# in command line.
-# stop JMX agent and then start it again with different property values
-# make sure these properties overriden corectly
-
- _echo "**** Test eight ****"
-
- _app_start -Dcom.sun.management.jmxremote.port=$1 \
- -Dcom.sun.management.jmxremote.authenticate=false \
- -Dcom.sun.management.jmxremote.ssl=true
-
- res1=`_testme $1`
-
- _jcmd ManagementAgent.stop
-
- res2=`_testme $1`
-
- _jcmd ManagementAgent.start jmxremote.port=$2 jmxremote.authenticate=false jmxremote.ssl=false
-
- res3=`_testme $2`
-
- if [ "${res1}" = "NO_CONN" -a "${res2}" = "NO_CONN" -a "${res3}" = "OK_CONN" ]
- then
- _echo "Passed"
- else
- _echo "Failed r1(NO):${res1} r2(NO):${res2} r3(OK):${res3}"
- _exit_on_jtreg
- fi
-
- _app_stop
-}
-
-test_09(){
-# Run an app with JMX enabled and with some properties set
-# in command line.
-# stop JMX agent and then start it again with different property values
-# specifing some property in management config file and some of them
-# in command line
-# make sure these properties overriden corectly
-
- _echo "**** Test nine ****"
-
- _app_start -Dcom.sun.management.config.file=${_testsrc}/management_cl.properties \
- -Dcom.sun.management.jmxremote.authenticate=false
-
- res1=`_testme $1`
-
- _jcmd ManagementAgent.stop
-
- res2=`_testme $1`
-
- _jcmd ManagementAgent.start config.file=${_testsrc}/management_jcmd.properties \
- jmxremote.authenticate=false jmxremote.port=$2
-
- res3=`_testme $2`
-
- if [ "${res1}" = "NO_CONN" -a "${res2}" = "NO_CONN" -a "${res3}" = "OK_CONN" ]
- then
- _echo "Passed"
- else
- _echo "Failed r1(NO):${res1} r2(NO):${res2} r3(OK):${res3}"
- _exit_on_jtreg
- fi
-
- _app_stop
-}
-
-test_10(){
-# Run an app with JMX enabled and with some properties set
-# in command line.
-# stop JMX agent and then start it again with different property values
-# stop JMX agent again and then start it without property value
-# make sure these properties overriden corectly
-
- _echo "**** Test ten ****"
-
- _app_start -Dcom.sun.management.jmxremote.port=$1 \
- -Dcom.sun.management.jmxremote.authenticate=false \
- -Dcom.sun.management.jmxremote.ssl=true
-
- res1=`_testme $1`
-
- _jcmd ManagementAgent.stop
- _jcmd ManagementAgent.start jmxremote.ssl=false jmxremote.port=$1
-
-
- res2=`_testme $1`
-
- _jcmd ManagementAgent.stop
- _jcmd ManagementAgent.start jmxremote.port=$1
-
- res3=`_testme $1`
-
- if [ "${res1}" = "NO_CONN" -a "${res2}" = "OK_CONN" -a "${res3}" = "NO_CONN" ]
- then
- _echo "Passed"
- else
- _echo "Failed r1(NO):${res1} r2(OK):${res2} r3(NO):${res3}"
- _exit_on_jtreg
- fi
-
- _app_stop
-}
-
-test_11(){
-# Run an app with JMX enabled
-# stop remote agent
-# make sure local agent is not affected
-
- _echo "**** Test eleven ****"
-
- _app_start -Dcom.sun.management.jmxremote.port=$2 \
- -Dcom.sun.management.jmxremote.authenticate=false \
- -Dcom.sun.management.jmxremote.ssl=false
-
- res1=`_testme $2`
-
- _jcmd ManagementAgent.stop
-
- pid=`${COMPILEJAVA}/bin/jps ${TESTTOOLVMOPTS} | sed -n "/JMXStartStopDoSomething/s/ .*//p"`
- res2=`_testme local ${pid}`
-
- if [ "${res1}" = "OK_CONN" -a "${res2}" = "OK_CONN" ]
- then
- _echo "Passed"
- else
- _echo "Failed r1(OK):${res1} r2(OK):${res2}"
- _exit_on_jtreg
- fi
-
- _app_stop
-}
-
-test_12(){
-# Run an app with JMX disabled
-# start local agent only
-
- _echo "**** Test twelve ****"
-
- _app_start
-
- res1=`_testme $1`
-
- _jcmd ManagementAgent.start_local
-
- pid=`_get_pid`
- if [ "x${pid}" = "x" ]
- then
- res2="NO_CONN"
- else
- res2=`_testme local ${pid}`
- fi
-
- if [ "${res1}" = "NO_CONN" -a "${res2}" = "OK_CONN" ]
- then
- _echo "Passed"
- else
- _echo "Failed r1(NO):${res1} r2(OK):${res2}"
- _exit_on_jtreg
- fi
-
- _app_stop
-}
-
-test_13(){
-# Run an app with -javaagent make sure it works as expected - system properties are ignored
-
- _echo "**** Test thirteen ****"
-
- AGENT="${TESTJAVA}/jre/lib/management-agent.jar"
- if [ ! -f ${AGENT} ]
- then
- AGENT="${TESTJAVA}/lib/management-agent.jar"
- fi
-
- _app_start -javaagent:${AGENT}=com.sun.management.jmxremote.port=$1,com.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
-
- res1=`_testme $1`
-
- if [ "${res1}" = "NO_CONN" ]
- then
- _echo "Passed"
- else
- _echo "Failed r1(NO):${res1}"
- _exit_on_jtreg
- fi
-
- _app_stop
-}
-
-# ============= MAIN =======================================
-
-if [ "x${TESTJAVA}" = "x" ]
-then
- echo "TESTJAVA env have to be set"
- exit
-fi
-
-if [ ! -x "${TESTJAVA}/bin/jcmd" ]
-then
- echo "${TESTJAVA}/bin/jcmd"
- echo "Doesn't exist or not an executable"
- exit
-fi
-
-
-#------------------------------------------------------------------------------
-# reading parameters
-
-for parm in "$@"
-do
- case $parm in
- --jtreg) _jtreg=yes ;;
- --no-compile) _compile=no ;;
- --testsuite=*) _testsuite=`_echo $parm | sed "s,^--.*=\(.*\),\1,"` ;;
- --port-one=*) _port_one=`_echo $parm | sed "s,^--.*=\(.*\),\1,"` ;;
- --port-two=*) _port_two=`_echo $parm | sed "s,^--.*=\(.*\),\1,"` ;;
- *)
- echo "Undefined parameter $parm. Try --help for help"
- exit
- ;;
- esac
-done
-
-if [ "${COMPILEJAVA}" = "" ]
-then
- COMPILEJAVA=${TESTJAVA}
-fi
-
-if [ ${_compile} = "yes" ]
-then
- _compile
-fi
-
-if [ ${_jtreg} = "yes" ]
-then
- _testclasses=${TESTCLASSES}
- _testsrc=${TESTSRC}
- _logname="JMXStartStopTest_output.txt"
-fi
-
-rm -f ${_logname}
-
-# Local mode tests
-for i in `echo ${_testsuite} | sed -e "s/,/ /g"`
-do
- test_${i} ${_port_one} ${_port_two}
-done
-
-
--- a/jdk/test/sun/security/ec/TestEC.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/security/ec/TestEC.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -59,6 +59,10 @@
public class TestEC {
public static void main(String[] args) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
ProvidersSnapshot snapshot = ProvidersSnapshot.create();
try {
main0(args);
--- a/jdk/test/sun/security/pkcs11/sslecc/ClientJSSEServerJSSE.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/security/pkcs11/sslecc/ClientJSSEServerJSSE.java Wed Jul 05 19:27:58 2017 +0200
@@ -48,6 +48,10 @@
}
public void main(Provider p) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
if (p.getService("KeyFactory", "EC") == null) {
System.out.println("Provider does not support EC, skipping");
return;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPBuilderWithMD5.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,449 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+// This test case relies on static security property, no way to re-use
+// security property in samevm/agentvm mode.
+
+/**
+ * @test
+ *
+ * @bug 8030829
+ * @summary Add MD5 to jdk.certpath.disabledAlgorithms security property
+ *
+ * @run main/othervm CPBuilderWithMD5 trustAnchor_SHA1withRSA_1024 0 true
+ * @run main/othervm CPBuilderWithMD5 trustAnchor_SHA1withRSA_512 0 true
+ * @run main/othervm CPBuilderWithMD5 intermediate_SHA1withRSA_1024_1024 1 true
+ * @run main/othervm CPBuilderWithMD5 intermediate_SHA1withRSA_1024_512 1 false
+ * @run main/othervm CPBuilderWithMD5 intermediate_SHA1withRSA_512_1024 1 false
+ * @run main/othervm CPBuilderWithMD5 intermediate_SHA1withRSA_512_512 1 false
+ * @run main/othervm CPBuilderWithMD5 intermediate_MD5withRSA_1024_1024 1 false
+ * @run main/othervm CPBuilderWithMD5 intermediate_MD5withRSA_1024_512 1 false
+ * @run main/othervm CPBuilderWithMD5 endentiry_SHA1withRSA_1024_1024 2 true
+ * @run main/othervm CPBuilderWithMD5 endentiry_SHA1withRSA_1024_512 2 false
+ * @run main/othervm CPBuilderWithMD5 endentiry_SHA1withRSA_512_1024 2 false
+ * @run main/othervm CPBuilderWithMD5 endentiry_SHA1withRSA_512_512 2 false
+ * @run main/othervm CPBuilderWithMD5 endentiry_MD5withRSA_1024_1024 2 false
+ * @run main/othervm CPBuilderWithMD5 endentiry_MD5withRSA_1024_512 2 false
+ *
+ * @author Xuelei Fan
+ */
+
+/*
+ * The generate.sh was designed to generate MD2 signed certificates. The
+ * certificates used in this test are generated by an updated generate.sh that
+ * replacing MD2 with MD5 algorithm.
+ */
+import java.io.*;
+import java.net.SocketException;
+import java.util.*;
+import java.security.Security;
+import java.security.cert.*;
+import sun.security.util.DerInputStream;
+
+public class CPBuilderWithMD5 {
+
+ // SHA1withRSA 1024
+ static String trustAnchor_SHA1withRSA_1024 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIICPjCCAaegAwIBAgIBADANBgkqhkiG9w0BAQUFADAfMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTAeFw0xMzEyMjgxMTA4NTFaFw0zNDEyMDgxMTA4NTFa\n" +
+ "MB8xCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMIGfMA0GCSqGSIb3DQEB\n" +
+ "AQUAA4GNADCBiQKBgQDn3JSHACqi/bcohVy7eFqDs3L5ehnXmF9Jrg4rMRUeNrxA\n" +
+ "61F8bJ9JXx4j8WyqmT0TtokgXuqGxbsXRQVVw4AdXLF2PwCs/y+Y+AwU59uDHA3J\n" +
+ "AMk4VvjV9MB2Ea6YzuLnbbj/TNrfxB6LZ7KBvh0fYGt2T40yMvOvilU/f6e3zQID\n" +
+ "AQABo4GJMIGGMB0GA1UdDgQWBBSIxINDFVm8GpUz3v+BbWNmDEKP7TBHBgNVHSME\n" +
+ "QDA+gBSIxINDFVm8GpUz3v+BbWNmDEKP7aEjpCEwHzELMAkGA1UEBhMCVVMxEDAO\n" +
+ "BgNVBAoTB0V4YW1wbGWCAQAwDwYDVR0TAQH/BAUwAwEB/zALBgNVHQ8EBAMCAgQw\n" +
+ "DQYJKoZIhvcNAQEFBQADgYEAt0mYDXTpInrGvEOylIL2gx65A/bpdz9iDQsSs5sZ\n" +
+ "r3m0v9zJnzR8lRqN4GbaD1vrFdkUrIoObcvXjXitnf5QqDzmc9BbIYj83Ft8QSUj\n" +
+ "jCMy04EGT/7ATss4SiFEu6sJpmOBjsgH6wYuobR27wl/01XOu2CXUo3OOjgAoPBs\n" +
+ "QoQ=\n" +
+ "-----END CERTIFICATE-----";
+
+ // SHA1withRSA 512
+ static String trustAnchor_SHA1withRSA_512 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIIBuTCCAWOgAwIBAgIBADANBgkqhkiG9w0BAQUFADAfMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTAeFw0xMzEyMjgxMTA4NTFaFw0zNDEyMDgxMTA4NTFa\n" +
+ "MB8xCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMFwwDQYJKoZIhvcNAQEB\n" +
+ "BQADSwAwSAJBANLqQkOpH7rBTo/a2ccYjJxvNib/Lxm6UXO1uAd/0AUzPWzJsOpB\n" +
+ "u2zyD26UYc0GNyXCkWMZ44FrtSQ8VI146j8CAwEAAaOBiTCBhjAdBgNVHQ4EFgQU\n" +
+ "5PVLxBY//smN31jHb/MAmCEz5NIwRwYDVR0jBEAwPoAU5PVLxBY//smN31jHb/MA\n" +
+ "mCEz5NKhI6QhMB8xCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlggEAMA8G\n" +
+ "A1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgIEMA0GCSqGSIb3DQEBBQUAA0EAzF9E\n" +
+ "dXYPLqziCRY45IHCUtxaLjLQmwsjEu91TV4xyuuozGEumcqH7m6Hg6Ohnd1FGfsN\n" +
+ "X+vt1tdaDIu9+OzGjQ==\n" +
+ "-----END CERTIFICATE-----";
+
+ // SHA1withRSA 1024 signed with RSA 1024
+ static String intermediate_SHA1withRSA_1024_1024 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIICUDCCAbmgAwIBAgIBAzANBgkqhkiG9w0BAQUFADAfMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTAeFw0xMzEyMjgxMTA5MDlaFw0zMzA5MTQxMTA5MDla\n" +
+ "MDExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMRAwDgYDVQQLEwdDbGFz\n" +
+ "cy0xMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/m9wdJT0HR+exquh2Q2Yq\n" +
+ "XvL9HtEsCabCikd0Vjuoi3sZJ/5SBbbHTvh7z7enW0NEpLHQee0ry5FW8mLxDtrR\n" +
+ "38NjE9W7zutucBG5WztwGuvcts13aEw+vH+EwhokJW9PXz9Do+y4PTJo3vdsk7Zs\n" +
+ "bGVY9+YjvlgEaozWXZ1JhQIDAQABo4GJMIGGMB0GA1UdDgQWBBQIsaDZL94kLug/\n" +
+ "A1N4EkNOA4z47DBHBgNVHSMEQDA+gBSIxINDFVm8GpUz3v+BbWNmDEKP7aEjpCEw\n" +
+ "HzELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0V4YW1wbGWCAQAwDwYDVR0TAQH/BAUw\n" +
+ "AwEB/zALBgNVHQ8EBAMCAgQwDQYJKoZIhvcNAQEFBQADgYEA0673aIUF2k20jkpR\n" +
+ "4USN9UkbfX57Uazhl4n765EeAiteWnTzKztISeH1GTrCw7bSl1r07aaflsnbKOHC\n" +
+ "RrL2RxbxNwQARvuuCxr664vXnsGrt86xA5F2iNF22uDM/5HA5sIfBmEk5xXSLrgH\n" +
+ "I7jOaYqAA1b8C+4DU2Z5ZgO4LOA=\n" +
+ "-----END CERTIFICATE-----";
+
+ // SHA1withRSA 1024 signed with RSA 512
+ static String intermediate_SHA1withRSA_1024_512 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIICDzCCAbmgAwIBAgIBBDANBgkqhkiG9w0BAQUFADAfMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTAeFw0xMzEyMjgxMTA5MDlaFw0zMzA5MTQxMTA5MDla\n" +
+ "MDExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMRAwDgYDVQQLEwdDbGFz\n" +
+ "cy0xMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/m9wdJT0HR+exquh2Q2Yq\n" +
+ "XvL9HtEsCabCikd0Vjuoi3sZJ/5SBbbHTvh7z7enW0NEpLHQee0ry5FW8mLxDtrR\n" +
+ "38NjE9W7zutucBG5WztwGuvcts13aEw+vH+EwhokJW9PXz9Do+y4PTJo3vdsk7Zs\n" +
+ "bGVY9+YjvlgEaozWXZ1JhQIDAQABo4GJMIGGMB0GA1UdDgQWBBQIsaDZL94kLug/\n" +
+ "A1N4EkNOA4z47DBHBgNVHSMEQDA+gBTk9UvEFj/+yY3fWMdv8wCYITPk0qEjpCEw\n" +
+ "HzELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0V4YW1wbGWCAQAwDwYDVR0TAQH/BAUw\n" +
+ "AwEB/zALBgNVHQ8EBAMCAgQwDQYJKoZIhvcNAQEFBQADQQAihshnF7RWZ13tUGsH\n" +
+ "iM4i8HmBjw2+pwW/cs0E8BcycYEy3beWMcL1Np2yfOa/7K5ZvGPhe/piwzTel+Kt\n" +
+ "5VLm\n" +
+ "-----END CERTIFICATE-----";
+
+ // SHA1withRSA 512 signed with RSA 1024
+ static String intermediate_SHA1withRSA_512_1024 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIICDDCCAXWgAwIBAgIBBTANBgkqhkiG9w0BAQUFADAfMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTAeFw0xMzEyMjgxMTA5MDlaFw0zMzA5MTQxMTA5MDla\n" +
+ "MDExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMRAwDgYDVQQLEwdDbGFz\n" +
+ "cy0xMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAK4h/iW3wt+ugR5ObWiFSl394UU/\n" +
+ "lWNm+N6UAgsBRhSzZz/Iof7xZTQI+usNXzOrTnU3+uZsMgokpjkrko1osxUCAwEA\n" +
+ "AaOBiTCBhjAdBgNVHQ4EFgQU88OD48Osuh7lJiLnhfMhrySqW8QwRwYDVR0jBEAw\n" +
+ "PoAUiMSDQxVZvBqVM97/gW1jZgxCj+2hI6QhMB8xCzAJBgNVBAYTAlVTMRAwDgYD\n" +
+ "VQQKEwdFeGFtcGxlggEAMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgIEMA0G\n" +
+ "CSqGSIb3DQEBBQUAA4GBAAHN8XUTT6asa1MvpfqAvKTH6tNrMOmzoFsUamPxSrUB\n" +
+ "tnBv/fa/E9+1QvQwl3g6luVXBkQf2/nVD0195IdkEuD/C6psuGKerXmiaRMv5Wcs\n" +
+ "B+8bTzhNxMzHKPZDJ8Tf/RD3XpPvtxw0T+I5xud68FH/WDhJtu7TiXPAhs7srtHt\n" +
+ "-----END CERTIFICATE-----";
+
+ // SHA1withRSA 512 signed with RSA 512
+ static String intermediate_SHA1withRSA_512_512 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIIByzCCAXWgAwIBAgIBBjANBgkqhkiG9w0BAQUFADAfMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTAeFw0xMzEyMjgxMTA5MDlaFw0zMzA5MTQxMTA5MDla\n" +
+ "MDExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMRAwDgYDVQQLEwdDbGFz\n" +
+ "cy0xMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAK4h/iW3wt+ugR5ObWiFSl394UU/\n" +
+ "lWNm+N6UAgsBRhSzZz/Iof7xZTQI+usNXzOrTnU3+uZsMgokpjkrko1osxUCAwEA\n" +
+ "AaOBiTCBhjAdBgNVHQ4EFgQU88OD48Osuh7lJiLnhfMhrySqW8QwRwYDVR0jBEAw\n" +
+ "PoAU5PVLxBY//smN31jHb/MAmCEz5NKhI6QhMB8xCzAJBgNVBAYTAlVTMRAwDgYD\n" +
+ "VQQKEwdFeGFtcGxlggEAMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgIEMA0G\n" +
+ "CSqGSIb3DQEBBQUAA0EASLN+1/pfo+9ty5EaYkoPu4QeYGr+5wmXyDceiaED/Lok\n" +
+ "RdV0ZH0qwD4kiarlJssNOgMCk+2EzgvXcIhEMDa5hA==\n" +
+ "-----END CERTIFICATE-----";
+
+ // MD5withRSA 1024 signed with RSA 1024
+ static String intermediate_MD5withRSA_1024_1024 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIICUDCCAbmgAwIBAgIBBzANBgkqhkiG9w0BAQQFADAfMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTAeFw0xMzEyMjgxMTA5MDlaFw0zMzA5MTQxMTA5MDla\n" +
+ "MDExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMRAwDgYDVQQLEwdDbGFz\n" +
+ "cy0xMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/m9wdJT0HR+exquh2Q2Yq\n" +
+ "XvL9HtEsCabCikd0Vjuoi3sZJ/5SBbbHTvh7z7enW0NEpLHQee0ry5FW8mLxDtrR\n" +
+ "38NjE9W7zutucBG5WztwGuvcts13aEw+vH+EwhokJW9PXz9Do+y4PTJo3vdsk7Zs\n" +
+ "bGVY9+YjvlgEaozWXZ1JhQIDAQABo4GJMIGGMB0GA1UdDgQWBBQIsaDZL94kLug/\n" +
+ "A1N4EkNOA4z47DBHBgNVHSMEQDA+gBSIxINDFVm8GpUz3v+BbWNmDEKP7aEjpCEw\n" +
+ "HzELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0V4YW1wbGWCAQAwDwYDVR0TAQH/BAUw\n" +
+ "AwEB/zALBgNVHQ8EBAMCAgQwDQYJKoZIhvcNAQEEBQADgYEAerx2je3FBVn2eoPs\n" +
+ "nTzLKILezqCTCO7mXWiyBidRhh4RGdM8JggMN5SRmuwRurxfYFgPfqmAenWtEFqO\n" +
+ "xZrTXQUvIrrEgpzqkfppFnkCh4kDsX4roD5Nho3J4MTBQkqE0r676Yq6Rp6cywCq\n" +
+ "CHQQztRGY7n/ZYRNJ3uzvuoT1tk=\n" +
+ "-----END CERTIFICATE-----";
+
+ // MD5withRSA 1024 signed with RSA 512
+ static String intermediate_MD5withRSA_1024_512 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIICDzCCAbmgAwIBAgIBCDANBgkqhkiG9w0BAQQFADAfMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTAeFw0xMzEyMjgxMTA5MTBaFw0zMzA5MTQxMTA5MTBa\n" +
+ "MDExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMRAwDgYDVQQLEwdDbGFz\n" +
+ "cy0xMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/m9wdJT0HR+exquh2Q2Yq\n" +
+ "XvL9HtEsCabCikd0Vjuoi3sZJ/5SBbbHTvh7z7enW0NEpLHQee0ry5FW8mLxDtrR\n" +
+ "38NjE9W7zutucBG5WztwGuvcts13aEw+vH+EwhokJW9PXz9Do+y4PTJo3vdsk7Zs\n" +
+ "bGVY9+YjvlgEaozWXZ1JhQIDAQABo4GJMIGGMB0GA1UdDgQWBBQIsaDZL94kLug/\n" +
+ "A1N4EkNOA4z47DBHBgNVHSMEQDA+gBTk9UvEFj/+yY3fWMdv8wCYITPk0qEjpCEw\n" +
+ "HzELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0V4YW1wbGWCAQAwDwYDVR0TAQH/BAUw\n" +
+ "AwEB/zALBgNVHQ8EBAMCAgQwDQYJKoZIhvcNAQEEBQADQQA3XGQPNin8cDIsJ4vx\n" +
+ "tTxUO6XVJoWOdTsjwzlMrPmLvjJNZeXLtQe3pQu0vjgyUpQ59VYLW3qKN/LF3UH0\n" +
+ "Ep7V\n" +
+ "-----END CERTIFICATE-----";
+
+ // SHA1withRSA 1024 signed with RSA 1024
+ static String endentiry_SHA1withRSA_1024_1024 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIICNzCCAaCgAwIBAgIBAjANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTEQMA4GA1UECxMHQ2xhc3MtMTAeFw0xMzEyMjgxMTA5\n" +
+ "MTJaFw0zMzA5MTQxMTA5MTJaMEExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFt\n" +
+ "cGxlMRAwDgYDVQQLEwdDbGFzcy0xMQ4wDAYDVQQDEwVBbGljZTCBnzANBgkqhkiG\n" +
+ "9w0BAQEFAAOBjQAwgYkCgYEAvktJqK4/SvQrTyGgV8tM6zP/K5xQP1pFRipRKS8i\n" +
+ "2yaXdlW4jQBZWVXdfEsm8YwGwtXFKIlleALmgJcLldPwNm0qaKixL4mRJVMm4bXM\n" +
+ "UXCfmr+Im1SpA4Yum4VFCfIJ1kkeQkXqc57sCSfS+rFnC+1kSNa9wj+Mc4+5FR4k\n" +
+ "zqUCAwEAAaNPME0wCwYDVR0PBAQDAgPoMB0GA1UdDgQWBBRDzLh/sWyTsdq1KKnG\n" +
+ "8e7JW1tPUDAfBgNVHSMEGDAWgBQIsaDZL94kLug/A1N4EkNOA4z47DANBgkqhkiG\n" +
+ "9w0BAQUFAAOBgQB2RkWHOaL4WTOGoeTS4J4o9FW+4UXihbocdI/64rMExERjDkE/\n" +
+ "Jh31TEmatnP1gPrF1AfmqQPubqVSbRtCHrZF+Ilk6L6YeyRNzKvsLiMUtgrLYLas\n" +
+ "Vop0DFZxR02xHgaJdoJkcWBjNadb9zG7eZtt8OOOJ4lRwg02aLTy+WDqPA==\n" +
+ "-----END CERTIFICATE-----";
+
+ // SHA1withRSA 1024 signed with RSA 512
+ static String endentiry_SHA1withRSA_1024_512 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIIB9jCCAaCgAwIBAgIBAzANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTEQMA4GA1UECxMHQ2xhc3MtMTAeFw0xMzEyMjgxMTA5\n" +
+ "MTJaFw0zMzA5MTQxMTA5MTJaMEExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFt\n" +
+ "cGxlMRAwDgYDVQQLEwdDbGFzcy0xMQ4wDAYDVQQDEwVBbGljZTCBnzANBgkqhkiG\n" +
+ "9w0BAQEFAAOBjQAwgYkCgYEAvktJqK4/SvQrTyGgV8tM6zP/K5xQP1pFRipRKS8i\n" +
+ "2yaXdlW4jQBZWVXdfEsm8YwGwtXFKIlleALmgJcLldPwNm0qaKixL4mRJVMm4bXM\n" +
+ "UXCfmr+Im1SpA4Yum4VFCfIJ1kkeQkXqc57sCSfS+rFnC+1kSNa9wj+Mc4+5FR4k\n" +
+ "zqUCAwEAAaNPME0wCwYDVR0PBAQDAgPoMB0GA1UdDgQWBBRDzLh/sWyTsdq1KKnG\n" +
+ "8e7JW1tPUDAfBgNVHSMEGDAWgBTzw4Pjw6y6HuUmIueF8yGvJKpbxDANBgkqhkiG\n" +
+ "9w0BAQUFAANBAIapvjECUm4YD4O99G0v2SM17cKQzjZtSWkScS7FSk4sxS+dP3hM\n" +
+ "Qb2UpoRl6CGynhOVVy2G/VJN8BEqOfywj8k=\n" +
+ "-----END CERTIFICATE-----";
+
+ // SHA1withRSA 512 signed with RSA 1024
+ static String endentiry_SHA1withRSA_512_1024 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIIB8zCCAVygAwIBAgIBBDANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTEQMA4GA1UECxMHQ2xhc3MtMTAeFw0xMzEyMjgxMTA5\n" +
+ "MTJaFw0zMzA5MTQxMTA5MTJaMEExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFt\n" +
+ "cGxlMRAwDgYDVQQLEwdDbGFzcy0xMQ4wDAYDVQQDEwVBbGljZTBcMA0GCSqGSIb3\n" +
+ "DQEBAQUAA0sAMEgCQQCngiNTE+qngHcfj2jUpdc82gCw+TFRjR7oMSdp7b/3NwpD\n" +
+ "E+11z9WspoXTDzvbKcGUH9svFl691NyY0ZUmf+4RAgMBAAGjTzBNMAsGA1UdDwQE\n" +
+ "AwID6DAdBgNVHQ4EFgQUK+oVsFTQbz08evgQZ5Sd82c2y4UwHwYDVR0jBBgwFoAU\n" +
+ "CLGg2S/eJC7oPwNTeBJDTgOM+OwwDQYJKoZIhvcNAQEFBQADgYEAMd/8XnjRz5jK\n" +
+ "nbss9DDQQC2mUuCbV/tGdke7eQ1DtBVZLBU6wDgisGr52sUXmyZIPmSVKpQqwCG5\n" +
+ "8cY5uQhaNwPtPmMMKXzX32zN9NhVkiDNceL+zHs3vdjD1i/QiUTST+NKfLYVb6dF\n" +
+ "YMG65lxe3gMVxMweiHSZSukmk1k3gUA=\n" +
+ "-----END CERTIFICATE-----";
+
+ // SHA1withRSA 512 signed with RSA 512
+ static String endentiry_SHA1withRSA_512_512 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIIBsjCCAVygAwIBAgIBBTANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTEQMA4GA1UECxMHQ2xhc3MtMTAeFw0xMzEyMjgxMTA5\n" +
+ "MTJaFw0zMzA5MTQxMTA5MTJaMEExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFt\n" +
+ "cGxlMRAwDgYDVQQLEwdDbGFzcy0xMQ4wDAYDVQQDEwVBbGljZTBcMA0GCSqGSIb3\n" +
+ "DQEBAQUAA0sAMEgCQQCngiNTE+qngHcfj2jUpdc82gCw+TFRjR7oMSdp7b/3NwpD\n" +
+ "E+11z9WspoXTDzvbKcGUH9svFl691NyY0ZUmf+4RAgMBAAGjTzBNMAsGA1UdDwQE\n" +
+ "AwID6DAdBgNVHQ4EFgQUK+oVsFTQbz08evgQZ5Sd82c2y4UwHwYDVR0jBBgwFoAU\n" +
+ "88OD48Osuh7lJiLnhfMhrySqW8QwDQYJKoZIhvcNAQEFBQADQQB4xFWtC6ijDBIe\n" +
+ "/Gkf3B9+ycmP52pTPNiPwMS6u1a5vTRXMn5xRDexWfxJKJVZ2s9UR1jheZvWgPC8\n" +
+ "VUWO8bbG\n" +
+ "-----END CERTIFICATE-----";
+
+ // MD5withRSA 1024 signed with RSA 1024
+ static String endentiry_MD5withRSA_1024_1024 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIICNzCCAaCgAwIBAgIBBjANBgkqhkiG9w0BAQQFADAxMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTEQMA4GA1UECxMHQ2xhc3MtMTAeFw0xMzEyMjgxMTA5\n" +
+ "MTJaFw0zMzA5MTQxMTA5MTJaMEExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFt\n" +
+ "cGxlMRAwDgYDVQQLEwdDbGFzcy0xMQ4wDAYDVQQDEwVBbGljZTCBnzANBgkqhkiG\n" +
+ "9w0BAQEFAAOBjQAwgYkCgYEAvktJqK4/SvQrTyGgV8tM6zP/K5xQP1pFRipRKS8i\n" +
+ "2yaXdlW4jQBZWVXdfEsm8YwGwtXFKIlleALmgJcLldPwNm0qaKixL4mRJVMm4bXM\n" +
+ "UXCfmr+Im1SpA4Yum4VFCfIJ1kkeQkXqc57sCSfS+rFnC+1kSNa9wj+Mc4+5FR4k\n" +
+ "zqUCAwEAAaNPME0wCwYDVR0PBAQDAgPoMB0GA1UdDgQWBBRDzLh/sWyTsdq1KKnG\n" +
+ "8e7JW1tPUDAfBgNVHSMEGDAWgBQIsaDZL94kLug/A1N4EkNOA4z47DANBgkqhkiG\n" +
+ "9w0BAQQFAAOBgQBCVn9/JQxsRTaKIKSrgB+KtEreat+33k3SXuJICuRxcmvjOXIx\n" +
+ "wSdq+mRCA+DpIPSNtgnDAUyipnyxRxpdmRRUHuRYpkALq4a5QtTJK0Y/CEMfsd2J\n" +
+ "Yd2zKcfynDLW6LVeNdtjlY7fTemJnbA/WImNhwyW55V9vbnk3J04EZN8jw==\n" +
+ "-----END CERTIFICATE-----";
+
+ // MD5withRSA 1024 signed with RSA 512
+ static String endentiry_MD5withRSA_1024_512 =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIIB9jCCAaCgAwIBAgIBBzANBgkqhkiG9w0BAQQFADAxMQswCQYDVQQGEwJVUzEQ\n" +
+ "MA4GA1UEChMHRXhhbXBsZTEQMA4GA1UECxMHQ2xhc3MtMTAeFw0xMzEyMjgxMTA5\n" +
+ "MTNaFw0zMzA5MTQxMTA5MTNaMEExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFt\n" +
+ "cGxlMRAwDgYDVQQLEwdDbGFzcy0xMQ4wDAYDVQQDEwVBbGljZTCBnzANBgkqhkiG\n" +
+ "9w0BAQEFAAOBjQAwgYkCgYEAvktJqK4/SvQrTyGgV8tM6zP/K5xQP1pFRipRKS8i\n" +
+ "2yaXdlW4jQBZWVXdfEsm8YwGwtXFKIlleALmgJcLldPwNm0qaKixL4mRJVMm4bXM\n" +
+ "UXCfmr+Im1SpA4Yum4VFCfIJ1kkeQkXqc57sCSfS+rFnC+1kSNa9wj+Mc4+5FR4k\n" +
+ "zqUCAwEAAaNPME0wCwYDVR0PBAQDAgPoMB0GA1UdDgQWBBRDzLh/sWyTsdq1KKnG\n" +
+ "8e7JW1tPUDAfBgNVHSMEGDAWgBTzw4Pjw6y6HuUmIueF8yGvJKpbxDANBgkqhkiG\n" +
+ "9w0BAQQFAANBAAbZwmkqb6sfiiIxuLnj6PjhJsXGfvPomkkbLu5CapAMhen/p6ZG\n" +
+ "6vh69TbIsBR9UHu7qDyTl5Xax7bmYeW+sDQ=\n" +
+ "-----END CERTIFICATE-----";
+
+ static HashMap<String, String> certmap = new HashMap<String, String>();
+ static {
+ certmap.put("trustAnchor_SHA1withRSA_1024",
+ trustAnchor_SHA1withRSA_1024);
+ certmap.put("trustAnchor_SHA1withRSA_512",
+ trustAnchor_SHA1withRSA_512);
+ certmap.put("intermediate_SHA1withRSA_1024_1024",
+ intermediate_SHA1withRSA_1024_1024);
+ certmap.put("intermediate_SHA1withRSA_1024_512",
+ intermediate_SHA1withRSA_1024_512);
+ certmap.put("intermediate_SHA1withRSA_512_1024",
+ intermediate_SHA1withRSA_512_1024);
+ certmap.put("intermediate_SHA1withRSA_512_512",
+ intermediate_SHA1withRSA_512_512);
+ certmap.put("intermediate_MD5withRSA_1024_1024",
+ intermediate_MD5withRSA_1024_1024);
+ certmap.put("intermediate_MD5withRSA_1024_512",
+ intermediate_MD5withRSA_1024_512);
+ certmap.put("endentiry_SHA1withRSA_1024_1024",
+ endentiry_SHA1withRSA_1024_1024);
+ certmap.put("endentiry_SHA1withRSA_1024_512",
+ endentiry_SHA1withRSA_1024_512);
+ certmap.put("endentiry_SHA1withRSA_512_1024",
+ endentiry_SHA1withRSA_512_1024);
+ certmap.put("endentiry_SHA1withRSA_512_512",
+ endentiry_SHA1withRSA_512_512);
+ certmap.put("endentiry_MD5withRSA_1024_1024",
+ endentiry_MD5withRSA_1024_1024);
+ certmap.put("endentiry_MD5withRSA_1024_512",
+ endentiry_MD5withRSA_1024_512);
+ }
+
+ private static Set<TrustAnchor> generateTrustAnchors()
+ throws CertificateException {
+ // generate certificate from cert string
+ CertificateFactory cf = CertificateFactory.getInstance("X.509");
+ HashSet<TrustAnchor> anchors = new HashSet<TrustAnchor>();
+
+ ByteArrayInputStream is =
+ new ByteArrayInputStream(trustAnchor_SHA1withRSA_1024.getBytes());
+ Certificate cert = cf.generateCertificate(is);
+ TrustAnchor anchor = new TrustAnchor((X509Certificate)cert, null);
+ anchors.add(anchor);
+
+ is = new ByteArrayInputStream(trustAnchor_SHA1withRSA_512.getBytes());
+ cert = cf.generateCertificate(is);
+ anchor = new TrustAnchor((X509Certificate)cert, null);
+ anchors.add(anchor);
+
+ return anchors;
+ }
+
+ private static CertStore generateCertificateStore() throws Exception {
+ Collection entries = new HashSet();
+
+ // generate certificate from certificate string
+ CertificateFactory cf = CertificateFactory.getInstance("X.509");
+
+ for (String key : certmap.keySet()) {
+ String certStr = certmap.get(key);
+ ByteArrayInputStream is =
+ new ByteArrayInputStream(certStr.getBytes());;
+ Certificate cert = cf.generateCertificate(is);
+ entries.add(cert);
+ }
+
+ return CertStore.getInstance("Collection",
+ new CollectionCertStoreParameters(entries));
+ }
+
+ private static X509CertSelector generateSelector(String name)
+ throws Exception {
+ X509CertSelector selector = new X509CertSelector();
+
+ String certStr = certmap.get(name);
+ if (certStr == null) {
+ return null;
+ }
+
+ // generate certificate from certificate string
+ CertificateFactory cf = CertificateFactory.getInstance("X.509");
+ ByteArrayInputStream is = new ByteArrayInputStream(certStr.getBytes());
+ X509Certificate target = (X509Certificate)cf.generateCertificate(is);
+
+ selector.setCertificate(target);
+
+ return selector;
+ }
+
+ private static boolean match(String name, Certificate cert)
+ throws Exception {
+ X509CertSelector selector = new X509CertSelector();
+
+ String certStr = certmap.get(name);
+ if (certStr == null) {
+ return false;
+ }
+
+ // generate certificate from certificate string
+ CertificateFactory cf = CertificateFactory.getInstance("X.509");
+ ByteArrayInputStream is = new ByteArrayInputStream(certStr.getBytes());
+ X509Certificate target = (X509Certificate)cf.generateCertificate(is);
+
+ return target.equals(cert);
+ }
+
+ public static void main(String args[]) throws Exception {
+ CertPathBuilder builder = CertPathBuilder.getInstance("PKIX");
+
+ X509CertSelector selector = generateSelector(args[0]);
+ if (selector == null) {
+ // no target certificate, ignore it
+ return;
+ }
+
+ Set<TrustAnchor> anchors = generateTrustAnchors();
+ CertStore certs = generateCertificateStore();
+
+ PKIXBuilderParameters params =
+ new PKIXBuilderParameters(anchors, selector);
+ params.addCertStore(certs);
+ params.setRevocationEnabled(false);
+ params.setDate(new Date(114, 9, 1)); // 2014-09-01
+
+ boolean success = Boolean.valueOf(args[2]);
+ try {
+ PKIXCertPathBuilderResult result =
+ (PKIXCertPathBuilderResult)builder.build(params);
+ if (!success) {
+ throw new Exception("expected algorithm disabled exception");
+ }
+
+ int length = Integer.parseInt(args[1]);
+ List<? extends Certificate> path =
+ result.getCertPath().getCertificates();
+ if (length != path.size()) {
+ throw new Exception("unexpected certification path length");
+ }
+
+ if (!path.isEmpty()) { // the target is not a trust anchor
+ if (!match(args[0], path.get(0))) {
+ throw new Exception("unexpected certificate");
+ }
+ }
+ } catch (CertPathBuilderException cpbe) {
+ if (success) {
+ throw new Exception("unexpected exception", cpbe);
+ } else {
+ System.out.println("Get the expected exception " + cpbe);
+ }
+ }
+ }
+
+}
--- a/jdk/test/sun/security/provider/certpath/ReverseBuilder/ReverseBuild.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/security/provider/certpath/ReverseBuilder/ReverseBuild.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,15 +21,23 @@
* questions.
*/
+//
+// Security properties, once set, cannot revert to unset. To avoid
+// conflicts with tests running in the same VM isolate this test by
+// running it in otherVM mode.
+//
+
/*
* @test
* @bug 7167988
* @summary PKIX CertPathBuilder in reverse mode doesn't work if more than
* one trust anchor is specified
+ * @run main/othervm ReverseBuild
*/
import java.io.*;
import java.util.*;
import java.security.cert.*;
+import java.security.Security;
import sun.security.provider.certpath.SunCertPathBuilderParameters;
@@ -279,6 +287,9 @@
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
// generate certificate from cert string
CertificateFactory cf = CertificateFactory.getInstance("X.509");
--- a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLContextImpl/MD2InTrustAnchor.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLContextImpl/MD2InTrustAnchor.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,13 +23,15 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
+
/*
* @test
* @bug 7113275
* @summary compatibility issue with MD2 trust anchor and old X509TrustManager
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
* @run main/othervm MD2InTrustAnchor PKIX TLSv1.1
* @run main/othervm MD2InTrustAnchor SunX509 TLSv1.1
* @run main/othervm MD2InTrustAnchor PKIX TLSv1.2
@@ -40,6 +42,7 @@
import java.util.*;
import java.io.*;
import javax.net.ssl.*;
+import java.security.Security;
import java.security.KeyStore;
import java.security.KeyFactory;
import java.security.cert.Certificate;
@@ -283,6 +286,10 @@
volatile Exception clientException = null;
public static void main(String[] args) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
if (debug)
System.setProperty("javax.net.debug", "all");
--- a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLContextImpl/TrustTrustedCert.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLContextImpl/TrustTrustedCert.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,13 +23,15 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
+
/*
* @test
* @bug 7113275
* @summary compatibility issue with MD2 trust anchor and old X509TrustManager
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
* @run main/othervm TrustTrustedCert PKIX TLSv1.1
* @run main/othervm TrustTrustedCert SunX509 TLSv1.1
* @run main/othervm TrustTrustedCert PKIX TLSv1.2
@@ -336,6 +338,10 @@
volatile Exception clientException = null;
public static void main(String[] args) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
if (debug)
System.setProperty("javax.net.debug", "all");
--- a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLEngineImpl/SSLEngineBadBufferArrayAccess.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLEngineImpl/SSLEngineBadBufferArrayAccess.java Wed Jul 05 19:27:58 2017 +0200
@@ -148,14 +148,14 @@
"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2" };
for (String protocol : protocols) {
- log("Testing " + protocol);
/*
* Run the tests with direct and indirect buffers.
*/
- SSLEngineBadBufferArrayAccess test =
- new SSLEngineBadBufferArrayAccess(protocol);
- test.runTest(true);
- test.runTest(false);
+ log("Testing " + protocol + ":true");
+ new SSLEngineBadBufferArrayAccess(protocol).runTest(true);
+
+ log("Testing " + protocol + ":false");
+ new SSLEngineBadBufferArrayAccess(protocol).runTest(false);
}
System.out.println("Test Passed.");
--- a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509KeyManager/PreferredKey.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509KeyManager/PreferredKey.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,11 +21,18 @@
* questions.
*/
+//
+// Security properties, once set, cannot revert to unset. To avoid
+// conflicts with tests running in the same VM isolate this test by
+// running it in otherVM mode.
+//
+
/*
* @test
* @bug 6302644
* @summary X509KeyManager implementation for NewSunX509 doesn't return most
* preferable key
+ * @run main/othervm PreferredKey
*/
import java.io.*;
import java.net.*;
@@ -49,6 +56,10 @@
public static void main(String[] args) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
KeyStore ks;
KeyManagerFactory kmf;
X509KeyManager km;
--- a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/BasicConstraints.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/BasicConstraints.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,14 +21,16 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
+
/*
* @test
* @bug 7166570
* @summary JSSE certificate validation has started to fail for
* certificate chains
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
* @run main/othervm BasicConstraints PKIX
* @run main/othervm BasicConstraints SunX509
*/
@@ -37,6 +39,7 @@
import java.util.*;
import java.io.*;
import javax.net.ssl.*;
+import java.security.Security;
import java.security.KeyStore;
import java.security.KeyFactory;
import java.security.cert.*;
@@ -454,6 +457,10 @@
volatile Exception clientException = null;
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
if (debug)
System.setProperty("javax.net.debug", "all");
--- a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/PKIXExtendedTM.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/PKIXExtendedTM.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,21 +21,23 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
/*
* @test
* @bug 6916074
* @summary Add support for TLS 1.2
* @run main/othervm PKIXExtendedTM
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
*/
import java.net.*;
import java.util.*;
import java.io.*;
import javax.net.ssl.*;
+import java.security.Security;
import java.security.KeyStore;
import java.security.KeyFactory;
import java.security.cert.Certificate;
@@ -791,6 +793,10 @@
volatile Exception clientException = null;
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
if (debug)
System.setProperty("javax.net.debug", "all");
--- a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/SelfIssuedCert.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/SelfIssuedCert.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,15 +21,17 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
+
/*
* @test
* @bug 6822460
* @summary support self-issued certificate
* @run main/othervm SelfIssuedCert PKIX
* @run main/othervm SelfIssuedCert SunX509
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
* @author Xuelei Fan
*/
@@ -37,6 +39,7 @@
import java.util.*;
import java.io.*;
import javax.net.ssl.*;
+import java.security.Security;
import java.security.KeyStore;
import java.security.KeyFactory;
import java.security.cert.Certificate;
@@ -302,6 +305,10 @@
volatile Exception clientException = null;
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
if (debug)
System.setProperty("javax.net.debug", "all");
--- a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/SunX509ExtendedTM.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/X509TrustManagerImpl/SunX509ExtendedTM.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,20 +21,23 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
+
/*
* @test
* @bug 6916074
* @summary Add support for TLS 1.2
* @run main/othervm SunX509ExtendedTM
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
*/
import java.net.*;
import java.util.*;
import java.io.*;
import javax.net.ssl.*;
+import java.security.Security;
import java.security.KeyStore;
import java.security.KeyFactory;
import java.security.cert.Certificate;
@@ -792,6 +795,10 @@
volatile Exception clientException = null;
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
if (debug)
System.setProperty("javax.net.debug", "all");
--- a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/www/protocol/https/HttpsURLConnection/CriticalSubjectAltName.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/www/protocol/https/HttpsURLConnection/CriticalSubjectAltName.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,18 +21,21 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
+
/*
* @test
* @bug 6668231
* @summary Presence of a critical subjectAltName causes JSSE's SunX509 to
* fail trusted checks
* @run main/othervm CriticalSubjectAltName
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
- *
* @author Xuelei Fan
- *
+ */
+
+/*
* This test depends on binary keystore, crisubn.jks and trusted.jks. Because
* JAVA keytool cannot generate X509 certificate with SubjectAltName extension,
* the certificates are generated with openssl toolkits and then imported into
@@ -47,6 +50,7 @@
import java.io.*;
import java.net.*;
import javax.net.ssl.*;
+import java.security.Security;
import java.security.cert.Certificate;
public class CriticalSubjectAltName implements HostnameVerifier {
@@ -154,6 +158,10 @@
volatile Exception clientException = null;
public static void main(String[] args) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
String keyFilename =
System.getProperty("test.src", "./") + "/" + pathToStores +
"/" + keyStoreFile;
--- a/jdk/test/sun/security/ssl/javax/net/ssl/ServerName/SSLSocketSNISensitive.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/security/ssl/javax/net/ssl/ServerName/SSLSocketSNISensitive.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -44,6 +44,7 @@
import java.util.*;
import java.io.*;
import javax.net.ssl.*;
+import java.security.Security;
import java.security.KeyStore;
import java.security.KeyFactory;
import java.security.cert.Certificate;
@@ -431,6 +432,10 @@
volatile Exception clientException = null;
public static void main(String[] args) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
if (debug)
System.setProperty("javax.net.debug", "all");
--- a/jdk/test/sun/security/ssl/javax/net/ssl/TLSv11/EmptyCertificateAuthorities.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/security/ssl/javax/net/ssl/TLSv11/EmptyCertificateAuthorities.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,15 +23,16 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
+
/*
* @test
* @bug 4873188
* @summary Support TLS 1.1
* @run main/othervm EmptyCertificateAuthorities
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
- *
* @author Xuelei Fan
*/
@@ -228,6 +229,10 @@
volatile Exception clientException = null;
public static void main(String[] args) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
String keyFilename =
System.getProperty("test.src", ".") + "/" + pathToStores +
"/" + keyStoreFile;
--- a/jdk/test/sun/security/ssl/sanity/ciphersuites/CipherSuitesInOrder.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/security/ssl/sanity/ciphersuites/CipherSuitesInOrder.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -35,12 +35,28 @@
import java.util.*;
import javax.net.ssl.*;
+import java.security.Security;
public class CipherSuitesInOrder {
// supported ciphersuites
private final static List<String> supportedCipherSuites =
Arrays.<String>asList(
+ "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
+ "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
+ "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
+ "TLS_RSA_WITH_AES_256_GCM_SHA384",
+ "TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384",
+ "TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384",
+ "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384",
+ "TLS_DHE_DSS_WITH_AES_256_GCM_SHA384",
+ "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
+ "TLS_RSA_WITH_AES_128_GCM_SHA256",
+ "TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256",
+ "TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256",
+ "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256",
+ "TLS_DHE_DSS_WITH_AES_128_GCM_SHA256",
+
"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384",
"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384",
"TLS_RSA_WITH_AES_256_CBC_SHA256",
@@ -75,21 +91,6 @@
"TLS_ECDH_ECDSA_WITH_RC4_128_SHA",
"TLS_ECDH_RSA_WITH_RC4_128_SHA",
- "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
- "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
- "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
- "TLS_RSA_WITH_AES_256_GCM_SHA384",
- "TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384",
- "TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384",
- "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384",
- "TLS_DHE_DSS_WITH_AES_256_GCM_SHA384",
- "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
- "TLS_RSA_WITH_AES_128_GCM_SHA256",
- "TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256",
- "TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256",
- "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256",
- "TLS_DHE_DSS_WITH_AES_128_GCM_SHA256",
-
"TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA",
"TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA",
"SSL_RSA_WITH_3DES_EDE_CBC_SHA",
--- a/jdk/test/sun/security/ssl/sanity/interop/ClientJSSEServerJSSE.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/security/ssl/sanity/interop/ClientJSSEServerJSSE.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -28,10 +28,15 @@
* @author Andreas Sterbenz
* @run main/othervm/timeout=300 ClientJSSEServerJSSE
*/
+import java.security.Security;
public class ClientJSSEServerJSSE {
public static void main(String[] args) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
CipherTest.main(new JSSEFactory(), args);
}
--- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/DNSIdentities.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/DNSIdentities.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,13 +21,15 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
+
/* @test
* @bug 6766775
* @summary X509 certificate hostname checking is broken in JDK1.6.0_10
* @run main/othervm DNSIdentities
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
* @author Xuelei Fan
*/
@@ -35,6 +37,7 @@
import java.util.*;
import java.io.*;
import javax.net.ssl.*;
+import java.security.Security;
import java.security.KeyStore;
import java.security.KeyFactory;
import java.security.cert.Certificate;
@@ -743,6 +746,10 @@
volatile Exception clientException = null;
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
if (debug)
System.setProperty("javax.net.debug", "all");
--- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressIPIdentities.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPAddressIPIdentities.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,13 +21,15 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
+
/* @test
* @summary X509 certificate hostname checking is broken in JDK1.6.0_10
* @bug 6766775
* @run main/othervm IPAddressIPIdentities
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
* @author Xuelei Fan
*/
@@ -35,6 +37,7 @@
import java.util.*;
import java.io.*;
import javax.net.ssl.*;
+import java.security.Security;
import java.security.KeyStore;
import java.security.KeyFactory;
import java.security.cert.Certificate;
@@ -744,6 +747,10 @@
volatile Exception clientException = null;
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
if (debug)
System.setProperty("javax.net.debug", "all");
--- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,13 +21,15 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
+
/* @test
* @summary X509 certificate hostname checking is broken in JDK1.6.0_10
* @bug 6766775
* @run main/othervm IPIdentities
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
* @author Xuelei Fan
*/
@@ -35,6 +37,7 @@
import java.util.*;
import java.io.*;
import javax.net.ssl.*;
+import java.security.Security;
import java.security.KeyStore;
import java.security.KeyFactory;
import java.security.cert.Certificate;
@@ -743,6 +746,10 @@
volatile Exception clientException = null;
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
if (debug)
System.setProperty("javax.net.debug", "all");
--- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/Identities.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/Identities.java Wed Jul 05 19:27:58 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,13 +21,15 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
+
/* @test
* @bug 6766775
* @summary X509 certificate hostname checking is broken in JDK1.6.0_10
* @run main/othervm Identities
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
* @author Xuelei Fan
*/
@@ -35,6 +37,7 @@
import java.util.*;
import java.io.*;
import javax.net.ssl.*;
+import java.security.Security;
import java.security.KeyStore;
import java.security.KeyFactory;
import java.security.cert.Certificate;
@@ -743,6 +746,10 @@
volatile Exception clientException = null;
public static void main(String args[]) throws Exception {
+ // MD5 is used in this test case, don't disable MD5 algorithm.
+ Security.setProperty(
+ "jdk.certpath.disabledAlgorithms", "MD2, RSA keySize < 1024");
+
if (debug)
System.setProperty("javax.net.debug", "all");
--- a/jdk/test/sun/security/tools/jarsigner/TimestampCheck.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/security/tools/jarsigner/TimestampCheck.java Wed Jul 05 19:27:58 2017 +0200
@@ -239,13 +239,13 @@
" -J-Djava.security.egd=file:/dev/./urandom" +
" -debug -keystore " + TSKS + " -storepass changeit" +
" -tsa http://localhost:" + port + "/%d" +
- " -signedjar new.jar " + JAR + " old";
+ " -signedjar new_%d.jar " + JAR + " old";
} else {
cmd = System.getProperty("java.home") + "/bin/jarsigner" +
" -J-Djava.security.egd=file:/dev/./urandom" +
" -debug -keystore " + TSKS + " -storepass changeit" +
" -tsa http://localhost:" + port + "/%d" +
- " -signedjar new.jar " + JAR + " old";
+ " -signedjar new_%d.jar " + JAR + " old";
}
try {
@@ -280,7 +280,7 @@
static void jarsigner(String cmd, int path, boolean expected)
throws Exception {
System.err.println("Test " + path);
- Process p = Runtime.getRuntime().exec(String.format(cmd, path));
+ Process p = Runtime.getRuntime().exec(String.format(cmd, path, path));
BufferedReader reader = new BufferedReader(
new InputStreamReader(p.getErrorStream()));
while (true) {
@@ -288,9 +288,25 @@
if (s == null) break;
System.err.println(s);
}
+
+ // Will not see noTimestamp warning
+ boolean seeWarning = false;
+ reader = new BufferedReader(
+ new InputStreamReader(p.getInputStream()));
+ while (true) {
+ String s = reader.readLine();
+ if (s == null) break;
+ System.err.println(s);
+ if (s.indexOf("Warning:") >= 0) {
+ seeWarning = true;
+ }
+ }
int result = p.waitFor();
if (expected && result != 0 || !expected && result == 0) {
throw new Exception("Failed");
}
+ if (seeWarning) {
+ throw new Exception("See warning");
+ }
}
}
--- a/jdk/test/sun/security/tools/jarsigner/concise_jarsigner.sh Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/security/tools/jarsigner/concise_jarsigner.sh Wed Jul 05 19:27:58 2017 +0200
@@ -139,7 +139,6 @@
# 16 and 32 already covered in the first part
# ==========================================================
-$KT -genkeypair -alias expiring -dname CN=expiring -startdate -1m
$KT -genkeypair -alias expired -dname CN=expired -startdate -10m
$KT -genkeypair -alias notyetvalid -dname CN=notyetvalid -startdate +1m
$KT -genkeypair -alias badku -dname CN=badku -ext KU=cRLSign -validity 365
@@ -154,9 +153,6 @@
$KT -importcert -alias badchain
$KT -delete -alias ca
-$JARSIGNER -strict -keystore js.jks -storepass changeit a.jar expiring
-[ $? = 2 ] || exit $LINENO
-
$JARSIGNER -strict -keystore js.jks -storepass changeit a.jar expired
[ $? = 4 ] || exit $LINENO
--- a/jdk/test/sun/security/tools/jarsigner/ts.sh Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/security/tools/jarsigner/ts.sh Wed Jul 05 19:27:58 2017 +0200
@@ -22,7 +22,7 @@
#
# @test
-# @bug 6543842 6543440 6939248 8009636
+# @bug 6543842 6543440 6939248 8009636 8024302
# @summary checking response of timestamp
#
# @run shell/timeout=600 ts.sh
@@ -53,7 +53,7 @@
JAR="${TESTJAVA}${FS}bin${FS}jar"
JAVA="${TESTJAVA}${FS}bin${FS}java"
JAVAC="${TESTJAVA}${FS}bin${FS}javac"
-KT="${TESTJAVA}${FS}bin${FS}keytool -keystore tsks -storepass changeit -keypass changeit -keyalg rsa"
+KT="${TESTJAVA}${FS}bin${FS}keytool -keystore tsks -storepass changeit -keypass changeit -keyalg rsa -validity 200"
rm tsks
echo Nothing > A
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/tools/jarsigner/warnings.sh Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,119 @@
+#
+# Copyright (c) 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
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# @test
+# @bug 8024302
+# @bug 8026037
+# @summary Clarify jar verifications
+#
+
+if [ "${TESTJAVA}" = "" ] ; then
+ JAVAC_CMD=`which javac`
+ TESTJAVA=`dirname $JAVAC_CMD`/..
+fi
+
+# set platform-dependent variables
+OS=`uname -s`
+case "$OS" in
+ Windows_* )
+ FS="\\"
+ ;;
+ * )
+ FS="/"
+ ;;
+esac
+
+KS=warnings.jks
+JFILE=warnings.jar
+
+KT="$TESTJAVA${FS}bin${FS}keytool -storepass changeit -keypass changeit \
+ -keystore $KS"
+JAR=$TESTJAVA${FS}bin${FS}jar
+JARSIGNER="$TESTJAVA${FS}bin${FS}jarsigner -keystore $KS -storepass changeit"
+
+rm $KS 2> /dev/null
+
+LANG=C
+export LANG
+
+echo 12345 > file
+
+ERR=""
+
+# Normal signer expiring on 2100-01-01
+$KT -alias s1 -dname CN=s1 -genkey -startdate 2000/01/01 -validity 36525 || ERR="$ERR keytool s1,"
+# Cert expiring soon, informational warning
+$KT -alias s2 -dname CN=s2 -genkey -validity 100 || ERR="$ERR keytool s2,"
+# Cert expired, severe warning
+$KT -alias s3 -dname CN=s3 -genkey -startdate -200d -validity 100 || ERR="$ERR keytool s3,"
+
+# noTimestamp is informatiional warning and includes a date
+$JAR cvf $JFILE file
+$JARSIGNER $JFILE s1 > output1 || ERR="$ERR jarsigner s1,"
+$JARSIGNER -strict $JFILE s1 >> output1 || ERR="$ERR jarsigner s1 strict,"
+$JARSIGNER -verify $JFILE s1 >> output1 || ERR="$ERR jarsigner s1,"
+$JARSIGNER -verify -strict $JFILE s1 >> output1 || ERR="$ERR jarsigner s1 strict,"
+
+cat output1 | grep Warning || ERR="$ERR s1 warning,"
+cat output1 | grep Error && ERR="$ERR s1 error,"
+cat output1 | grep timestamp | grep 2100-01-01 || ERR="$ERR s1 timestamp,"
+cat output1 | grep "with signer errors" && ERR="$ERR s1 err,"
+
+# hasExpiringCert is informatiional warning
+$JAR cvf $JFILE file
+$JARSIGNER $JFILE s2 > output2 || ERR="$ERR jarsigner s2,"
+$JARSIGNER -strict $JFILE s2 >> output2 || ERR="$ERR jarsigner s2 strict,"
+$JARSIGNER -verify $JFILE s2 >> output2 || ERR="$ERR jarsigner s2,"
+$JARSIGNER -verify -strict $JFILE s2 >> output2 || ERR="$ERR jarsigner s2 strict,"
+
+cat output2 | grep Warning || ERR="$ERR s2 warning,"
+cat output2 | grep Error && ERR="$ERR s2 error,"
+cat output2 | grep timestamp || ERR="$ERR s2 timestamp,"
+cat output2 | grep "will expire" || ERR="$ERR s2 expiring,"
+cat output2 | grep "with signer errors" && ERR="$ERR s2 err,"
+
+# hasExpiredCert is severe warning
+$JAR cvf $JFILE file
+$JARSIGNER $JFILE s3 > output3 || ERR="$ERR jarsigner s3,"
+$JARSIGNER -strict $JFILE s3 > output3s && ERR="$ERR jarsigner s3 strict,"
+$JARSIGNER -verify $JFILE s3 >> output3 || ERR="$ERR jarsigner s3,"
+$JARSIGNER -verify -strict $JFILE s3 >> output3s && ERR="$ERR jarsigner s3 strict,"
+
+# warning without -strict
+cat output3 | grep Warning || ERR="$ERR s3 warning,"
+cat output3 | grep Error && ERR="$ERR s3 error,"
+cat output3 | grep "with signer errors" && ERR="$ERR s3 err,"
+
+# error with -strict
+cat output3s | grep Warning || ERR="$ERR s3s warning,"
+cat output3s | grep Error || ERR="$ERR s3s error,"
+cat output3s | grep "with signer errors" || ERR="$ERR s3 err,"
+
+if [ "$ERR" = "" ]; then
+ exit 0
+else
+ echo "ERR is $ERR"
+ exit 1
+fi
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/tools/jcmd/TestJcmdDefaults.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import static jdk.testlibrary.Asserts.*;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+import jdk.testlibrary.JcmdBase;
+import jdk.testlibrary.OutputAnalyzer;
+import jdk.testlibrary.Utils;
+
+/**
+ * Unit test for jcmd utility. Tests jcmd options which do not send
+ * requests to a specific JVM process.
+ */
+/*
+ * @test
+ * @bug 7104647
+ * @library /lib/testlibrary
+ * @run main TestJcmdDefaults
+ */
+public class TestJcmdDefaults {
+
+ private static final String TEST_SRC = System.getProperty("test.src").trim();
+ private static final String[] VM_ARGS = new String[] { "-XX:+UsePerfData" };
+ private static final String JCMD_LIST_REGEX = "^\\d+\\s*.*";
+
+ public static void main(String[] args) throws Exception {
+ testJcmdUsage("-h");
+ testJcmdUsage("-help");
+ testJcmdDefaults();
+ testJcmdDefaults("-l");
+ }
+
+ /**
+ * jcmd -J-XX:+UsePerfData -h
+ * jcmd -J-XX:+UsePerfData -help
+ */
+ private static void testJcmdUsage(String... jcmdArgs) throws Exception {
+ OutputAnalyzer output = JcmdBase.jcmdNoPid(VM_ARGS, jcmdArgs);
+
+ assertNotEquals(output.getExitValue(), 0);
+ verifyOutputAgainstFile(output);
+ }
+
+ /**
+ * jcmd -J-XX:+UsePerfData
+ * jcmd -J-XX:+UsePerfData -l
+ */
+ private static void testJcmdDefaults(String... jcmdArgs) throws Exception {
+ OutputAnalyzer output = JcmdBase.jcmdNoPid(VM_ARGS, jcmdArgs);
+
+ output.shouldHaveExitValue(0);
+ output.shouldContain("sun.tools.jcmd.JCmd");
+ matchListedProcesses(output);
+ }
+
+ /**
+ * Verifies the listed processes match a certain pattern.
+ *
+ * The output should look like:
+ * 12246 sun.tools.jcmd.JCmd
+ * 24428 com.sun.javatest.regtest.MainWrapper /tmp/jtreg/jtreg-workdir/classes/sun/tools/jcmd/TestJcmdDefaults.jta
+ *
+ * @param output The generated output from the jcmd.
+ * @throws Exception
+ */
+ private static void matchListedProcesses(OutputAnalyzer output) throws Exception {
+ int matchedCount = output.shouldMatchByLine(JCMD_LIST_REGEX);
+ assertGreaterThan(matchedCount , 0,
+ "Found no lines matching pattern: " + JCMD_LIST_REGEX);
+ }
+
+ private static void verifyOutputAgainstFile(OutputAnalyzer output) throws IOException {
+ File file = new File(TEST_SRC, "usage.out");
+ List<String> fileOutput = Utils.fileAsList(file);
+ List<String> outputAsLines = output.asLines();
+ assertTrue(outputAsLines.containsAll(fileOutput),
+ "The ouput should contain all content of " + file.getAbsolutePath());
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/tools/jcmd/TestJcmdSanity.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,169 @@
+/*
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import static jdk.testlibrary.Asserts.*;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+import jdk.testlibrary.JcmdBase;
+import jdk.testlibrary.OutputAnalyzer;
+import jdk.testlibrary.ProcessTools;
+import jdk.testlibrary.Utils;
+
+/**
+ * Unit test for jcmd utility. The test will send different diagnostic command
+ * requests to the current java process.
+ */
+/*
+ * @test
+ * @bug 7104647 7154822
+ * @library /lib/testlibrary
+ * @run main TestJcmdSanity
+ */
+public class TestJcmdSanity {
+
+ private static final String TEST_SRC = System.getProperty("test.src").trim();
+ private static final String[] VM_ARGS = new String[] { "-XX:+UsePerfData" };
+ private static final String JCMD_COMMAND_REGEX = "(\\w|\\.)*";
+ private static final String PERF_COUNTER_REGEX = "(\\w|\\.)*\\=.*";
+
+ public static void main(String[] args) throws Exception {
+ testJcmdPidHelp();
+ testJcmdPidHelpHelp();
+ testJcmdPid_f();
+ testJcmdPidPerfCounterPrint();
+ testJcmdPidBigScript();
+ }
+
+ /**
+ * jcmd -J-XX:+UsePerfData pid help
+ */
+ private static void testJcmdPidHelp() throws Exception {
+ OutputAnalyzer output = JcmdBase.jcmd(VM_ARGS,
+ new String[] {"help"});
+
+ output.shouldHaveExitValue(0);
+ output.shouldNotContain("Exception");
+ output.shouldContain(Integer.toString(ProcessTools.getProcessId()) + ":");
+ matchJcmdCommands(output);
+ output.shouldContain("For more information about a specific command use 'help <command>'.");
+ }
+
+ /**
+ * jcmd -J-XX:+UsePerfData pid help help
+ */
+ private static void testJcmdPidHelpHelp() throws Exception {
+ OutputAnalyzer output = JcmdBase.jcmd(VM_ARGS,
+ new String[] {"help", "help"});
+
+ output.shouldHaveExitValue(0);
+ verifyOutputAgainstFile(output);
+ }
+
+ /**
+ * jcmd -J-XX:+UsePerfData pid PerfCounter.print
+ */
+ private static void testJcmdPidPerfCounterPrint() throws Exception {
+ OutputAnalyzer output = JcmdBase.jcmd(VM_ARGS,
+ new String[] {"PerfCounter.print"});
+
+ output.shouldHaveExitValue(0);
+ matchPerfCounters(output);
+ }
+
+ /**
+ * jcmd -J-XX:+UsePerfData pid -f dcmd-script.txt
+ */
+ private static void testJcmdPid_f() throws Exception {
+ File scrpitFile = new File(TEST_SRC, "dcmd-script.txt");
+ OutputAnalyzer output = JcmdBase.jcmd(VM_ARGS,
+ new String[] {"-f", scrpitFile.getAbsolutePath()});
+
+ output.shouldHaveExitValue(0);
+ verifyOutputAgainstFile(output);
+ }
+
+ /**
+ * Tests that it possible send a file over 1024 bytes large via jcmd -f.
+ *
+ * jcmd -J-XX:+UsePerfData pid -f dcmd-big-script.txt
+ */
+ private static void testJcmdPidBigScript() throws Exception {
+ File scrpitFile = new File(TEST_SRC, "dcmd-big-script.txt");
+ OutputAnalyzer output = JcmdBase.jcmd(VM_ARGS,
+ new String[] {"-f", scrpitFile.getAbsolutePath()});
+
+ output.shouldHaveExitValue(0);
+ output.shouldNotContain("Exception");
+ output.shouldContain(System.getProperty("java.vm.name").trim());
+ }
+
+ /**
+ * Verifies the listed jcmd commands match a certain pattern.
+ *
+ * The output of the jcmd commands should look like:
+ * VM.uptime
+ * VM.flags
+ * VM.system_properties
+ *
+ * @param output The generated output from the jcmd.
+ * @throws Exception
+ */
+ private static void matchJcmdCommands(OutputAnalyzer output) throws Exception {
+ int matchedCount = output.shouldMatchByLine(JCMD_COMMAND_REGEX,
+ "help",
+ JCMD_COMMAND_REGEX);
+ assertGreaterThan(matchedCount , 0,
+ "Found no lines matching pattern: " + JCMD_COMMAND_REGEX);
+ }
+
+ /**
+ * Verifies the generated output from the PerfCounter.print command
+ * matches a certain pattern.
+ *
+ * The output of perf counters should look like:
+ * java.property.java.vm.name="Java HotSpot(TM) 64-Bit Server VM"
+ * java.threads.daemon=7
+ * sun.rt.javaCommand="com.sun.javatest.regtest.MainWrapper /tmp/jtreg/jtreg-workdir/classes/sun/tools/jcmd/TestJcmdSanity.jta"
+ *
+ * @param output The generated output from the PerfCounter.print command.
+ * @throws Exception
+ */
+ private static void matchPerfCounters(OutputAnalyzer output) throws Exception {
+ int matchedCount = output.shouldMatchByLineFrom(PERF_COUNTER_REGEX,
+ PERF_COUNTER_REGEX);
+ assertGreaterThan(matchedCount , 0,
+ "Found no lines matching pattern: " + PERF_COUNTER_REGEX);
+ }
+
+ private static void verifyOutputAgainstFile(OutputAnalyzer output) throws IOException {
+ File file = new File(TEST_SRC, "help_help.out");
+ List<String> fileOutput = Utils.fileAsList(file);
+ List<String> outputAsLines = output.asLines();
+ assertTrue(outputAsLines.containsAll(fileOutput),
+ "The ouput should contain all content of " + file.getAbsolutePath());
+ }
+
+}
--- a/jdk/test/sun/tools/jcmd/help_help.out Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/tools/jcmd/help_help.out Wed Jul 05 19:27:58 2017 +0200
@@ -1,7 +1,7 @@
help
For more information about a specific command use 'help <command>'. With no argument this will show a list of available commands. 'help all' will show help for all commands.
-Impact: Low
+Impact: Low
Syntax : help [options] [<command name>]
--- a/jdk/test/sun/tools/jcmd/jcmd-Defaults.sh Mon Jan 27 21:01:55 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-#
-# Copyright (c) 2011, 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.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# @test
-# @bug 7104647
-# @run shell jcmd-Defaults.sh
-# @summary Test that output of 'jcmd' and 'jcmd -l' match a specific pattern
-
-JCMD="${TESTJAVA}/bin/jcmd"
-
-${JCMD} -J-XX:+UsePerfData 2>&1 | awk -f ${TESTSRC}/jcmd_Output1.awk
-
-${JCMD} -J-XX:+UsePerfData -l 2>&1 | awk -f ${TESTSRC}/jcmd_Output1.awk
--- a/jdk/test/sun/tools/jcmd/jcmd-big-script.sh Mon Jan 27 21:01:55 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-#!/bin/sh
-
-#
-# 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.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-
-# @test
-# @bug 7154822
-# @summary test if we can send a file over 1024 bytes large via jcmd -f
-# @author David Buck
-#
-# @library ../common
-# @build SimpleApplication ShutdownSimpleApplication
-# @run shell jcmd-big-script.sh
-
-. ${TESTSRC}/../common/CommonSetup.sh
-. ${TESTSRC}/../common/ApplicationSetup.sh
-
-# Start application and use PORTFILE for coordination
-PORTFILE="${TESTCLASSES}"/shutdown.port
-startApplication SimpleApplication "${PORTFILE}"
-
-failed=0;
-
-# -f <script>
-rm -f jcmd.out 2>/dev/null
-set +e # even if jcmd fails, we do not want abort the script yet.
-${JCMD} -J-XX:+UsePerfData $appJavaPid -f ${TESTSRC}/dcmd-big-script.txt > jcmd.out 2>&1
-status="$?"
-set -e
-if [ "$status" != 0 ]; then
- echo "jcmd command returned non-zero exit code (status=$status). Failed."
- failed=1;
-fi
-cat jcmd.out
-set +e # if the test passes, grep will "fail" with an exit code of 1
-grep Exception jcmd.out > /dev/null 2>&1
-status="$?"
-set -e
-if [ "$status" = 0 ]; then
- echo "Output of \"jcmd [pid] -f dcmd-big-script.txt\" contains string \"Exception\". Failed."
- failed=1;
-fi
-
-# clean up
-rm -f jcmd.out 2>/dev/null
-stopApplication "${PORTFILE}"
-waitForApplication
-
-exit $failed
--- a/jdk/test/sun/tools/jcmd/jcmd-f.sh Mon Jan 27 21:01:55 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2011, 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.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-
-# @test
-# @bug 7104647
-# @summary Unit test for jcmd utility
-#
-# @library ../common
-# @build SimpleApplication ShutdownSimpleApplication
-# @run shell jcmd-f.sh
-
-. ${TESTSRC}/../common/CommonSetup.sh
-. ${TESTSRC}/../common/ApplicationSetup.sh
-
-# Start application and use PORTFILE for coordination
-PORTFILE="${TESTCLASSES}"/shutdown.port
-startApplication SimpleApplication "${PORTFILE}"
-
-# all return statuses are checked in this test
-set +e
-
-failed=0
-
-# -f <script>
-rm -f jcmd.out 2>/dev/null
-${JCMD} -J-XX:+UsePerfData $appJavaPid -f ${TESTSRC}/dcmd-script.txt | awk '{ if (NR>1) print $0;}' > jcmd.out 2>&1
-echo jcmd.out
-diff -w jcmd.out ${TESTSRC}/help_help.out
-if [ $? != 0 ]; then
- echo "Output of jcmd [pid] -f dcmd-script.txt differ from expected output. Failed."
- rm -f jcmd.out 2>/dev/null
- failed=1;
-fi
-
-set -e
-
-stopApplication "${PORTFILE}"
-waitForApplication
-
-exit $failed
--- a/jdk/test/sun/tools/jcmd/jcmd-help-help.sh Mon Jan 27 21:01:55 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2011, 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.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-
-# @test
-# @bug 7104647
-# @summary Unit test for jcmd utility
-#
-# @library ../common
-# @build SimpleApplication ShutdownSimpleApplication
-# @run shell jcmd-help-help.sh
-
-. ${TESTSRC}/../common/CommonSetup.sh
-. ${TESTSRC}/../common/ApplicationSetup.sh
-
-# Start application and use PORTFILE for coordination
-PORTFILE="${TESTCLASSES}"/shutdown.port
-startApplication SimpleApplication "${PORTFILE}"
-
-# all return statuses are checked in this test
-set +e
-
-failed=0
-
-# help help
-rm -f jcmd.out 2>/dev/null
-${JCMD} -J-XX:+UsePerfData $appJavaPid help help | awk '{ if (NR>1) print $0;}' > jcmd.out 2>&1
-echo jcmd.out
-diff -w jcmd.out ${TESTSRC}/help_help.out
-if [ $? != 0 ]; then
- echo "Output of jcmd [pid] help help differ from expected output. Failed."
- rm -f jcmd.out 2>/dev/null
- failed=1;
-fi
-
-set -e
-
-stopApplication "${PORTFILE}"
-waitForApplication
-
-exit $failed
--- a/jdk/test/sun/tools/jcmd/jcmd-help.sh Mon Jan 27 21:01:55 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-#
-# Copyright (c) 2011, 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.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# @test
-# @bug 7104647
-# @run shell jcmd-help.sh
-# @summary Test that output of 'jcmd -h' matches the usage.out file
-
-JCMD="${TESTJAVA}/bin/jcmd"
-
-rm -f jcmd.out 2>/dev/null
-${JCMD} -J-XX:+UsePerfData -h > jcmd.out 2>&1
-
-diff -w jcmd.out ${TESTSRC}/usage.out
-if [ $? != 0 ]
-then
- echo "Output of jcmd -h differ from expected output. Failed."
- rm -f jcmd.out 2>/dev/null
- exit 1
-fi
-
-rm -f jcmd.out 2>/dev/null
-${JCMD} -J-XX:+UsePerfData -help > jcmd.out 2>&1
-
-diff -w jcmd.out ${TESTSRC}/usage.out
-if [ $? != 0 ]
-then
- echo "Output of jcmd -help differ from expected output. Failed."
- rm -f jcmd.out 2>/dev/null
- exit 1
-fi
-
-rm -f jcmd.out 2>/dev/null
-exit 0
--- a/jdk/test/sun/tools/jcmd/jcmd-pid.sh Mon Jan 27 21:01:55 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2011, 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.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-
-# @test
-# @bug 7104647
-# @summary Unit test for jcmd utility
-#
-# @library ../common
-# @build SimpleApplication ShutdownSimpleApplication
-# @run shell jcmd-pid.sh
-
-. ${TESTSRC}/../common/CommonSetup.sh
-. ${TESTSRC}/../common/ApplicationSetup.sh
-
-# Start application and use PORTFILE for coordination
-PORTFILE="${TESTCLASSES}"/shutdown.port
-startApplication SimpleApplication "${PORTFILE}"
-
-# all return statuses are checked in this test
-set +e
-
-failed=0
-
-# help command
-${JCMD} -J-XX:+UsePerfData $appJavaPid help 2>&1 | awk -f ${TESTSRC}/jcmd_pid_Output1.awk
-if [ $? != 0 ]; then failed=1; fi
-
-# PerfCounter.list option
-${JCMD} -J-XX:+UsePerfData $appJavaPid PerfCounter.print 2>&1 | awk -f ${TESTSRC}/jcmd_pid_Output2.awk
-if [ $? != 0 ]; then failed=1; fi
-
-set -e
-
-stopApplication "${PORTFILE}"
-waitForApplication
-
-exit $failed
--- a/jdk/test/sun/tools/jcmd/jcmd_Output1.awk Mon Jan 27 21:01:55 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-#
-BEGIN {
- totallines=0; matched=0; current=0
- }
-
-# match on a main class name followed by arbitrary arguments
-/^[0-9]+ [a-z|A-Z][a-z|A-Z|0-9|\.]*($| .*$)/ {
- current=1;
- }
-
-# or match on a path name to a jar or war file followed by arbitraty arguments
-# - note, jar files ending with ".jar" is only a convention, not a requirement.
-#Theoretically, any valid file name could occur here.
-/^[0-9]+ .*\.(jar|war)($| .*$)/ {
- current=1;
-}
-
-# or match on the condition that the class name is not available
-/^[0-9]+ -- .*$/ {
- current=1;
- }
-
-# or match an empty class name
-/^[0-9]+ $/ {
- current=1;
- }
-
- { totallines++; matched+=current; current=0; print $0 }
-
-END {
- if ((totallines > 0) && (matched == totallines)) {
- exit 0
- }
- else {
- exit 1
- }
- }
--- a/jdk/test/sun/tools/jcmd/jcmd_pid_Output1.awk Mon Jan 27 21:01:55 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-#
-
-# section 0 = [PID]:
-# section 1 = "The following commands are available:"
-# section 2 = <list of commands, one command per line>
-# section 3 = blank line
-# section 4 = "For more information about a specific command use 'help <command>'."
-
-BEGIN {
- totallines=0; matched=0; section=0;
-}
-
-# match the first line (PID of the JVM followed by ':')
-/^[0-9]+:/{
- if(section==0) {
- matched++;
- section=1;
- }
-}
-
-/^The following commands are available:$/{
- if(section==1) {
- matched++;
- section=2;
- }
-}
-
-# match a command name
-/^[a-z|A-Z][a-z|A-Z|0-9|\.|_]*$/{
- if(section==2) {
- matched++;
- }
-}
-
-/^$/{
- if(section==2) {
- matched++;
- section=4;
- }
-}
-
-/^For more information about a specific command use 'help <command>'\.$/{
- if(section==4) {
- matched++;
- section=5;
- }
-}
-
-{ totallines++; print $0 }
-
-END {
- if ((totallines > 0) && (matched == totallines)) {
- exit 0
- }
- else {
- exit 1
- }
-}
--- a/jdk/test/sun/tools/jcmd/jcmd_pid_Output2.awk Mon Jan 27 21:01:55 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-#
-BEGIN {
- totallines=0; matched=0
- }
-
-# match on counter name followed '=' and an arbitrary value
-/^[a-z|A-Z][a-z|A-Z|0-9|\.|_]*=.*$/ {
- matched++;
- }
-
-# or match the first line (PID of the JVM followed by ':')
-/^[0-9]+:/ {
- matched++;
- }
-
- { totallines++; print $0 }
-
-END {
- if ((totallines > 0) && (matched == totallines)) {
- exit 0
- }
- else {
- exit 1
- }
-}
--- a/jdk/test/sun/tools/jcmd/usage.out Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/tools/jcmd/usage.out Wed Jul 05 19:27:58 2017 +0200
@@ -1,15 +1,15 @@
Usage: jcmd <pid | main class> <command ...|PerfCounter.print|-f file>
- or: jcmd -l
- or: jcmd -h
+ or: jcmd -l
+ or: jcmd -h
- command must be a valid jcmd command for the selected jvm.
+ command must be a valid jcmd command for the selected jvm.
Use the command "help" to see which commands are available.
If the pid is 0, commands will be sent to all Java processes.
The main class argument will be used to match (either partially
or fully) the class used to start Java.
If no options are given, lists Java processes (same as -p).
- PerfCounter.print display the counters exposed by this process
+ PerfCounter.print display the counters exposed by this process
-f read and execute commands from the file
-l list JVM processes on the local machine
-h this help
--- a/jdk/test/sun/tools/jmap/Basic.sh Mon Jan 27 21:01:55 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2005, 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.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-
-# @test
-# @bug 6321286
-# @summary Unit test for jmap utility
-#
-# @library ../common
-# @build SimpleApplication ShutdownSimpleApplication
-# @run shell Basic.sh
-
-. ${TESTSRC}/../common/CommonSetup.sh
-. ${TESTSRC}/../common/ApplicationSetup.sh
-
-# Start application and use PORTFILE for coordination
-PORTFILE="${TESTCLASSES}"/shutdown.port
-startApplication SimpleApplication "${PORTFILE}"
-
-# all return statuses are checked in this test
-set +e
-
-failed=0
-
-# -histo[:live] option
-${JMAP} -J-XX:+UsePerfData -histo $appJavaPid
-if [ $? != 0 ]; then failed=1; fi
-
-${JMAP} -J-XX:+UsePerfData -histo:live $appJavaPid
-if [ $? != 0 ]; then failed=1; fi
-
-# -dump option
-DUMPFILE="java_pid${appJavaPid}.hprof"
-${JMAP} -J-XX:+UsePerfData -dump:format=b,file=${DUMPFILE} $appJavaPid
-if [ $? != 0 ]; then failed=1; fi
-
-# check that heap dump is parsable
-${JHAT} -parseonly true ${DUMPFILE}
-if [ $? != 0 ]; then failed=1; fi
-
-# dump file is large so remove it
-rm ${DUMPFILE}
-
-# -dump:live option
-${JMAP} -J-XX:+UsePerfData -dump:live,format=b,file=${DUMPFILE} $appJavaPid
-if [ $? != 0 ]; then failed=1; fi
-
-# check that heap dump is parsable
-${JHAT} -parseonly true ${DUMPFILE}
-if [ $? != 0 ]; then failed=1; fi
-
-# dump file is large so remove it
-rm -f ${DUMPFILE}
-
-set -e
-
-stopApplication "${PORTFILE}"
-waitForApplication
-
-exit $failed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/tools/jmap/BasicJMapTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.io.File;
+import java.util.Arrays;
+
+import static jdk.testlibrary.Asserts.*;
+import jdk.testlibrary.JDKToolLauncher;
+import jdk.testlibrary.OutputAnalyzer;
+import jdk.testlibrary.ProcessTools;
+
+/*
+ * @test
+ * @bug 6321286
+ * @summary Unit test for jmap utility
+ * @library /lib/testlibrary
+ * @run main BasicJMapTest
+ */
+public class BasicJMapTest {
+
+ private static ProcessBuilder processBuilder = new ProcessBuilder();
+
+ public static void main(String[] args) throws Exception {
+ testHisto();
+ testHistoLive();
+ testDump();
+ testDumpLive();
+ }
+
+ private static void testHisto() throws Exception {
+ OutputAnalyzer output = jmap("-histo");
+ output.shouldHaveExitValue(0);
+ }
+
+ private static void testHistoLive() throws Exception {
+ OutputAnalyzer output = jmap("-histo:live");
+ output.shouldHaveExitValue(0);
+ }
+
+ private static void testDump() throws Exception {
+ File dump = new File("java_pid$" + ProcessTools.getProcessId() + ".hprof");
+ OutputAnalyzer output = jmap("-dump:format=b,file=" + dump.getName());
+ output.shouldHaveExitValue(0);
+ output.shouldContain("Heap dump file created");
+ verifyDumpFile(dump);
+ }
+
+ private static void testDumpLive() throws Exception {
+ File dump = new File("java_pid$" + ProcessTools.getProcessId() + ".hprof");
+ OutputAnalyzer output = jmap("-dump:live,format=b,file=" + dump.getName());
+ output.shouldHaveExitValue(0);
+ output.shouldContain("Heap dump file created");
+ verifyDumpFile(dump);
+ }
+
+ private static void verifyDumpFile(File dump) {
+ assertTrue(dump.exists() && dump.isFile(), "Could not create dump file");
+ dump.delete();
+ }
+
+ private static OutputAnalyzer jmap(String... toolArgs) throws Exception {
+ JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("jmap");
+ launcher.addVMArg("-XX:+UsePerfData");
+ if (toolArgs != null) {
+ for (String toolArg : toolArgs) {
+ launcher.addToolArg(toolArg);
+ }
+ }
+ launcher.addToolArg(Integer.toString(ProcessTools.getProcessId()));
+
+ processBuilder.command(launcher.getCommand());
+ System.out.println(Arrays.toString(processBuilder.command().toArray()).replace(",", ""));
+ OutputAnalyzer output = new OutputAnalyzer(processBuilder.start());
+ System.out.println(output.getOutput());
+
+ return output;
+ }
+
+}
--- a/jdk/test/sun/tools/jstack/Basic.sh Mon Jan 27 21:01:55 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2005, 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.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-
-# @test
-# @bug 6260070
-# @summary Unit test for jstack utility
-#
-# @library ../common
-# @build SimpleApplication ShutdownSimpleApplication
-# @run shell Basic.sh
-
-. ${TESTSRC}/../common/CommonSetup.sh
-. ${TESTSRC}/../common/ApplicationSetup.sh
-
-# Start application and use PORTFILE for coordination
-PORTFILE="${TESTCLASSES}"/shutdown.port
-startApplication SimpleApplication "${PORTFILE}"
-
-# all return statuses are checked in this test
-set +e
-
-failed=0
-
-# normal
-$JSTACK -J-XX:+UsePerfData $appJavaPid 2>&1
-if [ $? != 0 ]; then failed=1; fi
-
-# long
-$JSTACK -J-XX:+UsePerfData -l $appJavaPid 2>&1
-if [ $? != 0 ]; then failed=1; fi
-
-set -e
-
-stopApplication "${PORTFILE}"
-waitForApplication
-
-exit $failed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/tools/jstack/BasicJStackTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.util.Arrays;
+
+import jdk.testlibrary.JDKToolLauncher;
+import jdk.testlibrary.OutputAnalyzer;
+import jdk.testlibrary.ProcessTools;
+
+/*
+ * @test
+ * @bug 6260070
+ * @summary Unit test for jstack utility
+ * @library /lib/testlibrary
+ * @run main BasicJStackTest
+ */
+public class BasicJStackTest {
+
+ private static ProcessBuilder processBuilder = new ProcessBuilder();
+
+ public static void main(String[] args) throws Exception {
+ testJstackNoArgs();
+ testJstack_l();
+ }
+
+ private static void testJstackNoArgs() throws Exception {
+ OutputAnalyzer output = jstack();
+ output.shouldHaveExitValue(0);
+ }
+
+ private static void testJstack_l() throws Exception {
+ OutputAnalyzer output = jstack("-l");
+ output.shouldHaveExitValue(0);
+ }
+
+ private static OutputAnalyzer jstack(String... toolArgs) throws Exception {
+ JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("jstack");
+ launcher.addVMArg("-XX:+UsePerfData");
+ if (toolArgs != null) {
+ for (String toolArg : toolArgs) {
+ launcher.addToolArg(toolArg);
+ }
+ }
+ launcher.addToolArg(Integer.toString(ProcessTools.getProcessId()));
+
+ processBuilder.command(launcher.getCommand());
+ System.out.println(Arrays.toString(processBuilder.command().toArray()).replace(",", ""));
+ OutputAnalyzer output = new OutputAnalyzer(processBuilder.start());
+ System.out.println(output.getOutput());
+
+ return output;
+ }
+
+}
--- a/jdk/test/sun/util/resources/TimeZone/Bug6317929.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/sun/util/resources/TimeZone/Bug6317929.java Wed Jul 05 19:27:58 2017 +0200
@@ -130,12 +130,12 @@
"(New South Wales)\"");
tzLocale = locales2Test[1];
if (!Currie.getDisplayName(false, TimeZone.LONG, tzLocale).equals
- ("Eastern Normalzeit (Neus\u00fcdwales)"))
+ ("\u00D6stliche Normalzeit (New South Wales)"))
throw new RuntimeException("\n" + tzLocale + ": LONG, " +
"non-daylight saving name for " +
"Australia/Currie should be " +
- "\"Eastern Normalzeit " +
- "(Neus\u00fcdwales)\"");
+ "\"\u00D6stliche Normalzeit " +
+ "(New South Wales)\"");
tzLocale = locales2Test[2];
if (!Currie.getDisplayName(false, TimeZone.LONG, tzLocale).equals
("Hora est\u00e1ndar Oriental (Nueva Gales del Sur)"))
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames.properties Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,651 @@
+ACT.daylight.long=Central Summer Time (Northern Territory)
+ACT.generic.long=Central Time (Northern Territory)
+ACT.standard.long=Central Standard Time (Northern Territory)
+AET.daylight.long=Eastern Summer Time (New South Wales)
+AET.generic.long=Eastern Time (New South Wales)
+AET.standard.long=Eastern Standard Time (New South Wales)
+AGT.generic.long=Argentine Time
+ART.generic.long=Eastern European Time
+AST.generic.long=Alaska Time
+Africa/Abidjan.generic.long=Greenwich Mean Time
+Africa/Accra.generic.long=Ghana Mean Time
+Africa/Addis_Ababa.generic.long=Eastern Africa Time
+Africa/Algiers.generic.long=Central European Time
+Africa/Asmara.generic.long=Eastern Africa Time
+Africa/Asmera.generic.long=Eastern Africa Time
+Africa/Bamako.generic.long=Greenwich Mean Time
+Africa/Bangui.generic.long=Western African Time
+Africa/Banjul.generic.long=Greenwich Mean Time
+Africa/Bissau.generic.long=Greenwich Mean Time
+Africa/Blantyre.generic.long=Central Africa Time
+Africa/Brazzaville.generic.long=Western African Time
+Africa/Bujumbura.generic.long=Central Africa Time
+Africa/Cairo.generic.long=Eastern European Time
+Africa/Casablanca.generic.long=Western European Time
+Africa/Ceuta.generic.long=Central European Time
+Africa/Conakry.generic.long=Greenwich Mean Time
+Africa/Dakar.generic.long=Greenwich Mean Time
+Africa/Dar_es_Salaam.generic.long=Eastern Africa Time
+Africa/Djibouti.generic.long=Eastern Africa Time
+Africa/Douala.generic.long=Western African Time
+Africa/El_Aaiun.generic.long=Western European Time
+Africa/Freetown.generic.long=Sierra Leone Time
+Africa/Gaborone.generic.long=Central Africa Time
+Africa/Harare.generic.long=Central Africa Time
+Africa/Johannesburg.generic.long=South Africa Time
+Africa/Juba.generic.long=Eastern Africa Time
+Africa/Kampala.generic.long=Eastern Africa Time
+Africa/Khartoum.generic.long=Eastern Africa Time
+Africa/Kigali.generic.long=Central Africa Time
+Africa/Kinshasa.generic.long=Western African Time
+Africa/Lagos.generic.long=Western African Time
+Africa/Libreville.generic.long=Western African Time
+Africa/Lome.generic.long=Greenwich Mean Time
+Africa/Luanda.generic.long=Western African Time
+Africa/Lubumbashi.generic.long=Central Africa Time
+Africa/Lusaka.generic.long=Central Africa Time
+Africa/Malabo.generic.long=Western African Time
+Africa/Maputo.generic.long=Central Africa Time
+Africa/Maseru.generic.long=South Africa Time
+Africa/Mbabane.generic.long=South Africa Time
+Africa/Mogadishu.generic.long=Eastern Africa Time
+Africa/Monrovia.generic.long=Greenwich Mean Time
+Africa/Nairobi.generic.long=Eastern Africa Time
+Africa/Ndjamena.generic.long=Western African Time
+Africa/Niamey.generic.long=Western African Time
+Africa/Nouakchott.generic.long=Greenwich Mean Time
+Africa/Ouagadougou.generic.long=Greenwich Mean Time
+Africa/Porto-Novo.generic.long=Western African Time
+Africa/Sao_Tome.generic.long=Greenwich Mean Time
+Africa/Timbuktu.generic.long=Greenwich Mean Time
+Africa/Tripoli.generic.long=Eastern European Time
+Africa/Tunis.generic.long=Central European Time
+Africa/Windhoek.generic.long=Western African Time
+America/Adak.generic.long=Hawaii-Aleutian Time
+America/Anchorage.generic.long=Alaska Time
+America/Anguilla.generic.long=Atlantic Time
+America/Antigua.generic.long=Atlantic Time
+America/Araguaina.generic.long=Brasilia Time
+America/Argentina/Buenos_Aires.generic.long=Argentine Time
+America/Argentina/Catamarca.generic.long=Argentine Time
+America/Argentina/ComodRivadavia.generic.long=Argentine Time
+America/Argentina/Cordoba.generic.long=Argentine Time
+America/Argentina/Jujuy.generic.long=Argentine Time
+America/Argentina/La_Rioja.generic.long=Argentine Time
+America/Argentina/Mendoza.generic.long=Argentine Time
+America/Argentina/Rio_Gallegos.generic.long=Argentine Time
+America/Argentina/Salta.generic.long=Argentine Time
+America/Argentina/San_Juan.generic.long=Argentine Time
+America/Argentina/San_Luis.generic.long=Argentine Time
+America/Argentina/Tucuman.generic.long=Argentine Time
+America/Argentina/Ushuaia.generic.long=Argentine Time
+America/Aruba.generic.long=Atlantic Time
+America/Asuncion.generic.long=Paraguay Time
+America/Atikokan.generic.long=Eastern Time
+America/Atka.generic.long=Hawaii-Aleutian Time
+America/Bahia.generic.long=Brasilia Time
+America/Bahia_Banderas.generic.long=Central Time
+America/Barbados.generic.long=Atlantic Time
+America/Belem.generic.long=Brasilia Time
+America/Belize.generic.long=Central Time
+America/Blanc-Sablon.generic.long=Atlantic Time
+America/Boa_Vista.generic.long=Amazon Time
+America/Bogota.generic.long=Colombia Time
+America/Boise.generic.long=Mountain Time
+America/Buenos_Aires.generic.long=Argentine Time
+America/Cambridge_Bay.generic.long=Mountain Time
+America/Campo_Grande.generic.long=Amazon Time
+America/Cancun.generic.long=Central Time
+America/Caracas.generic.long=Venezuela Time
+America/Catamarca.generic.long=Argentine Time
+America/Cayenne.generic.long=French Guiana Time
+America/Cayman.generic.long=Eastern Time
+America/Chicago.generic.long=Central Time
+America/Chihuahua.generic.long=Mountain Time
+America/Coral_Harbour.generic.long=Eastern Time
+America/Cordoba.generic.long=Argentine Time
+America/Costa_Rica.generic.long=Central Time
+America/Creston.generic.long=Mountain Time
+America/Cuiaba.generic.long=Amazon Time
+America/Curacao.generic.long=Atlantic Time
+America/Danmarkshavn.generic.long=Greenwich Mean Time
+America/Dawson.generic.long=Pacific Time
+America/Dawson_Creek.generic.long=Mountain Time
+America/Denver.generic.long=Mountain Time
+America/Detroit.generic.long=Eastern Time
+America/Dominica.generic.long=Atlantic Time
+America/Edmonton.generic.long=Mountain Time
+America/Eirunepe.generic.long=Acre Time
+America/El_Salvador.generic.long=Central Time
+America/Ensenada.generic.long=Pacific Time
+America/Fort_Wayne.generic.long=Eastern Time
+America/Fortaleza.generic.long=Brasilia Time
+America/Glace_Bay.generic.long=Atlantic Time
+America/Godthab.generic.long=Western Greenland Time
+America/Goose_Bay.generic.long=Atlantic Time
+America/Grand_Turk.generic.long=Eastern Time
+America/Grenada.generic.long=Atlantic Time
+America/Guadeloupe.generic.long=Atlantic Time
+America/Guatemala.generic.long=Central Time
+America/Guayaquil.generic.long=Ecuador Time
+America/Guyana.generic.long=Guyana Time
+America/Halifax.generic.long=Atlantic Time
+America/Havana.generic.long=Cuba Time
+America/Hermosillo.generic.long=Mountain Time
+America/Indiana/Indianapolis.generic.long=Eastern Time
+America/Indiana/Knox.generic.long=Central Time
+America/Indiana/Marengo.generic.long=Eastern Time
+America/Indiana/Petersburg.generic.long=Eastern Time
+America/Indiana/Tell_City.generic.long=Central Time
+America/Indiana/Vevay.generic.long=Eastern Time
+America/Indiana/Vincennes.generic.long=Eastern Time
+America/Indiana/Winamac.generic.long=Eastern Time
+America/Indianapolis.generic.long=Eastern Time
+America/Inuvik.generic.long=Mountain Time
+America/Iqaluit.generic.long=Eastern Time
+America/Jamaica.generic.long=Eastern Time
+America/Jujuy.generic.long=Argentine Time
+America/Juneau.generic.long=Alaska Time
+America/Kentucky/Louisville.generic.long=Eastern Time
+America/Kentucky/Monticello.generic.long=Eastern Time
+America/Knox_IN.generic.long=Central Time
+America/Kralendijk.generic.long=Atlantic Time
+America/La_Paz.generic.long=Bolivia Time
+America/Lima.generic.long=Peru Time
+America/Los_Angeles.generic.long=Pacific Time
+America/Louisville.generic.long=Eastern Time
+America/Lower_Princes.generic.long=Atlantic Time
+America/Maceio.generic.long=Brasilia Time
+America/Managua.generic.long=Central Time
+America/Manaus.generic.long=Amazon Time
+America/Marigot.generic.long=Atlantic Time
+America/Martinique.generic.long=Atlantic Time
+America/Matamoros.generic.long=Central Time
+America/Mazatlan.generic.long=Mountain Time
+America/Mendoza.generic.long=Argentine Time
+America/Menominee.generic.long=Central Time
+America/Merida.generic.long=Central Time
+America/Metlakatla.daylight.long=Metlakatla Daylight Time
+America/Metlakatla.generic.long=Metlakatla Time
+America/Metlakatla.standard.long=Metlakatla Standard Time
+America/Mexico_City.generic.long=Central Time
+America/Miquelon.generic.long=Pierre & Miquelon Time
+America/Moncton.generic.long=Atlantic Time
+America/Monterrey.generic.long=Central Time
+America/Montevideo.generic.long=Uruguay Time
+America/Montreal.generic.long=Eastern Time
+America/Montserrat.generic.long=Atlantic Time
+America/Nassau.generic.long=Eastern Time
+America/New_York.generic.long=Eastern Time
+America/Nipigon.generic.long=Eastern Time
+America/Nome.generic.long=Alaska Time
+America/Noronha.generic.long=Fernando de Noronha Time
+America/North_Dakota/Beulah.generic.long=Central Time
+America/North_Dakota/Center.generic.long=Central Time
+America/North_Dakota/New_Salem.generic.long=Central Time
+America/Ojinaga.generic.long=Mountain Time
+America/Panama.generic.long=Eastern Time
+America/Pangnirtung.generic.long=Eastern Time
+America/Paramaribo.generic.long=Suriname Time
+America/Phoenix.generic.long=Mountain Time
+America/Port-au-Prince.generic.long=Eastern Time
+America/Port_of_Spain.generic.long=Atlantic Time
+America/Porto_Acre.generic.long=Acre Time
+America/Porto_Velho.generic.long=Amazon Time
+America/Puerto_Rico.generic.long=Atlantic Time
+America/Rainy_River.generic.long=Central Time
+America/Rankin_Inlet.generic.long=Central Time
+America/Recife.generic.long=Brasilia Time
+America/Regina.generic.long=Central Time
+America/Resolute.generic.long=Central Time
+America/Rio_Branco.generic.long=Acre Time
+America/Rosario.generic.long=Argentine Time
+America/Santa_Isabel.generic.long=Pacific Time
+America/Santarem.generic.long=Brasilia Time
+America/Santiago.generic.long=Chile Time
+America/Santo_Domingo.generic.long=Atlantic Time
+America/Sao_Paulo.generic.long=Brasilia Time
+America/Scoresbysund.generic.long=Eastern Greenland Time
+America/Shiprock.generic.long=Mountain Time
+America/Sitka.generic.long=Alaska Time
+America/St_Barthelemy.generic.long=Atlantic Time
+America/St_Johns.generic.long=Newfoundland Time
+America/St_Kitts.generic.long=Atlantic Time
+America/St_Lucia.generic.long=Atlantic Time
+America/St_Thomas.generic.long=Atlantic Time
+America/St_Vincent.generic.long=Atlantic Time
+America/Swift_Current.generic.long=Central Time
+America/Tegucigalpa.generic.long=Central Time
+America/Thule.generic.long=Atlantic Time
+America/Thunder_Bay.generic.long=Eastern Time
+America/Tijuana.generic.long=Pacific Time
+America/Toronto.generic.long=Eastern Time
+America/Tortola.generic.long=Atlantic Time
+America/Vancouver.generic.long=Pacific Time
+America/Virgin.generic.long=Atlantic Time
+America/Whitehorse.generic.long=Pacific Time
+America/Winnipeg.generic.long=Central Time
+America/Yakutat.generic.long=Alaska Time
+America/Yellowknife.generic.long=Mountain Time
+Antarctica/Casey.daylight.long=Western Summer Time (Australia)
+Antarctica/Casey.generic.long=Western Time (Australia)
+Antarctica/Casey.standard.long=Western Standard Time (Australia)
+Antarctica/Davis.generic.long=Davis Time
+Antarctica/DumontDUrville.generic.long=Dumont-d'Urville Time
+Antarctica/Macquarie.daylight.long=Macquarie Island Summer Time
+Antarctica/Macquarie.generic.long=Macquarie Island Time
+Antarctica/Macquarie.standard.long=Macquarie Island Time
+Antarctica/Mawson.generic.long=Mawson Time
+Antarctica/McMurdo.generic.long=New Zealand Time
+Antarctica/Palmer.generic.long=Chile Time
+Antarctica/Rothera.generic.long=Rothera Time
+Antarctica/South_Pole.generic.long=New Zealand Time
+Antarctica/Syowa.generic.long=Syowa Time
+Antarctica/Vostok.generic.long=Vostok Time
+Arctic/Longyearbyen.generic.long=Central European Time
+Asia/Aden.generic.long=Arabia Time
+Asia/Almaty.generic.long=Alma-Ata Time
+Asia/Amman.generic.long=Arabia Time
+Asia/Anadyr.generic.long=Anadyr Time
+Asia/Aqtau.generic.long=Aqtau Time
+Asia/Aqtobe.generic.long=Aqtobe Time
+Asia/Ashgabat.generic.long=Turkmenistan Time
+Asia/Ashkhabad.generic.long=Turkmenistan Time
+Asia/Baghdad.generic.long=Arabia Time
+Asia/Bahrain.generic.long=Arabia Time
+Asia/Baku.generic.long=Azerbaijan Time
+Asia/Bangkok.generic.long=Indochina Time
+Asia/Beirut.generic.long=Eastern European Time
+Asia/Bishkek.generic.long=Kirgizstan Time
+Asia/Brunei.generic.long=Brunei Time
+Asia/Calcutta.generic.long=India Time
+Asia/Choibalsan.generic.long=Choibalsan Time
+Asia/Chongqing.generic.long=China Time
+Asia/Chungking.generic.long=China Time
+Asia/Colombo.generic.long=India Time
+Asia/Dacca.generic.long=Bangladesh Time
+Asia/Damascus.generic.long=Eastern European Time
+Asia/Dhaka.generic.long=Bangladesh Time
+Asia/Dili.generic.long=Timor-Leste Time
+Asia/Dubai.generic.long=Gulf Time
+Asia/Dushanbe.generic.long=Tajikistan Time
+Asia/Gaza.generic.long=Eastern European Time
+Asia/Harbin.generic.long=China Time
+Asia/Hebron.generic.long=Eastern European Time
+Asia/Ho_Chi_Minh.generic.long=Indochina Time
+Asia/Hong_Kong.generic.long=Hong Kong Time
+Asia/Hovd.generic.long=Hovd Time
+Asia/Irkutsk.generic.long=Irkutsk Time
+Asia/Istanbul.generic.long=Eastern European Time
+Asia/Jakarta.generic.long=West Indonesia Time
+Asia/Jayapura.generic.long=East Indonesia Time
+Asia/Jerusalem.generic.long=Israel Time
+Asia/Kabul.generic.long=Afghanistan Time
+Asia/Kamchatka.generic.long=Petropavlovsk-Kamchatski Time
+Asia/Karachi.generic.long=Pakistan Time
+Asia/Kashgar.generic.long=China Time
+Asia/Kathmandu.generic.long=Nepal Time
+Asia/Katmandu.generic.long=Nepal Time
+Asia/Khandyga.daylight.long=Khandyga Summer Time
+Asia/Khandyga.generic.long=Khandyga Time
+Asia/Khandyga.standard.long=Khandyga Time
+Asia/Kolkata.generic.long=India Time
+Asia/Krasnoyarsk.generic.long=Krasnoyarsk Time
+Asia/Kuala_Lumpur.generic.long=Malaysia Time
+Asia/Kuching.generic.long=Malaysia Time
+Asia/Kuwait.generic.long=Arabia Time
+Asia/Macao.generic.long=China Time
+Asia/Macau.generic.long=China Time
+Asia/Magadan.generic.long=Magadan Time
+Asia/Makassar.generic.long=Central Indonesia Time
+Asia/Manila.generic.long=Philippines Time
+Asia/Muscat.generic.long=Gulf Time
+Asia/Nicosia.generic.long=Eastern European Time
+Asia/Novokuznetsk.generic.long=Novosibirsk Time
+Asia/Novosibirsk.generic.long=Novosibirsk Time
+Asia/Omsk.generic.long=Omsk Time
+Asia/Oral.generic.long=Oral Time
+Asia/Phnom_Penh.generic.long=Indochina Time
+Asia/Pontianak.generic.long=West Indonesia Time
+Asia/Pyongyang.generic.long=Korea Time
+Asia/Qatar.generic.long=Arabia Time
+Asia/Qyzylorda.generic.long=Qyzylorda Time
+Asia/Rangoon.generic.long=Myanmar Time
+Asia/Saigon.generic.long=Indochina Time
+Asia/Sakhalin.generic.long=Sakhalin Time
+Asia/Samarkand.generic.long=Uzbekistan Time
+Asia/Seoul.generic.long=Korea Time
+Asia/Shanghai.generic.long=China Time
+Asia/Singapore.generic.long=Singapore Time
+Asia/Taipei.generic.long=China Time
+Asia/Tashkent.generic.long=Uzbekistan Time
+Asia/Tbilisi.generic.long=Georgia Time
+Asia/Tehran.generic.long=Iran Time
+Asia/Tel_Aviv.generic.long=Israel Time
+Asia/Thimbu.generic.long=Bhutan Time
+Asia/Thimphu.generic.long=Bhutan Time
+Asia/Tokyo.generic.long=Japan Time
+Asia/Ujung_Pandang.generic.long=Central Indonesia Time
+Asia/Ulaanbaatar.generic.long=Ulaanbaatar Time
+Asia/Ulan_Bator.generic.long=Ulaanbaatar Time
+Asia/Urumqi.generic.long=China Time
+Asia/Ust-Nera.daylight.long=Ust-Nera Summer Time
+Asia/Ust-Nera.generic.long=Ust-Nera Time
+Asia/Ust-Nera.standard.long=Ust-Nera Time
+Asia/Vientiane.generic.long=Indochina Time
+Asia/Vladivostok.generic.long=Vladivostok Time
+Asia/Yakutsk.generic.long=Yakutsk Time
+Asia/Yekaterinburg.generic.long=Yekaterinburg Time
+Asia/Yerevan.generic.long=Armenia Time
+Atlantic/Azores.generic.long=Azores Time
+Atlantic/Bermuda.generic.long=Atlantic Time
+Atlantic/Canary.generic.long=Western European Time
+Atlantic/Cape_Verde.generic.long=Cape Verde Time
+Atlantic/Faeroe.generic.long=Western European Time
+Atlantic/Faroe.generic.long=Western European Time
+Atlantic/Jan_Mayen.generic.long=Central European Time
+Atlantic/Madeira.generic.long=Western European Time
+Atlantic/Reykjavik.generic.long=Greenwich Mean Time
+Atlantic/South_Georgia.generic.long=South Georgia Time
+Atlantic/St_Helena.generic.long=Greenwich Mean Time
+Atlantic/Stanley.generic.long=Falkland Is. Time
+Australia/ACT.daylight.long=Eastern Summer Time (New South Wales)
+Australia/ACT.generic.long=Eastern Time (New South Wales)
+Australia/ACT.standard.long=Eastern Standard Time (New South Wales)
+Australia/Adelaide.daylight.long=Central Summer Time (South Australia)
+Australia/Adelaide.generic.long=Central Time (South Australia)
+Australia/Adelaide.standard.long=Central Standard Time (South Australia)
+Australia/Brisbane.daylight.long=Eastern Summer Time (Queensland)
+Australia/Brisbane.generic.long=Eastern Time (Queensland)
+Australia/Brisbane.standard.long=Eastern Standard Time (Queensland)
+Australia/Broken_Hill.daylight.long=Central Summer Time (South Australia/New South Wales)
+Australia/Broken_Hill.generic.long=Central Time (South Australia/New South Wales)
+Australia/Broken_Hill.standard.long=Central Standard Time (South Australia/New South Wales)
+Australia/Canberra.daylight.long=Eastern Summer Time (New South Wales)
+Australia/Canberra.generic.long=Eastern Time (New South Wales)
+Australia/Canberra.standard.long=Eastern Standard Time (New South Wales)
+Australia/Currie.daylight.long=Eastern Summer Time (New South Wales)
+Australia/Currie.generic.long=Eastern Time (New South Wales)
+Australia/Currie.standard.long=Eastern Standard Time (New South Wales)
+Australia/Darwin.daylight.long=Central Summer Time (Northern Territory)
+Australia/Darwin.generic.long=Central Time (Northern Territory)
+Australia/Darwin.standard.long=Central Standard Time (Northern Territory)
+Australia/Eucla.daylight.long=Central Western Summer Time (Australia)
+Australia/Eucla.generic.long=Central Western Time (Australia)
+Australia/Eucla.standard.long=Central Western Standard Time (Australia)
+Australia/Hobart.daylight.long=Eastern Summer Time (Tasmania)
+Australia/Hobart.generic.long=Eastern Time (Tasmania)
+Australia/Hobart.standard.long=Eastern Standard Time (Tasmania)
+Australia/LHI.generic.long=Lord Howe Time
+Australia/Lindeman.daylight.long=Eastern Summer Time (Queensland)
+Australia/Lindeman.generic.long=Eastern Time (Queensland)
+Australia/Lindeman.standard.long=Eastern Standard Time (Queensland)
+Australia/Lord_Howe.generic.long=Lord Howe Time
+Australia/Melbourne.daylight.long=Eastern Summer Time (Victoria)
+Australia/Melbourne.generic.long=Eastern Time (Victoria)
+Australia/Melbourne.standard.long=Eastern Standard Time (Victoria)
+Australia/NSW.daylight.long=Eastern Summer Time (New South Wales)
+Australia/NSW.generic.long=Eastern Time (New South Wales)
+Australia/NSW.standard.long=Eastern Standard Time (New South Wales)
+Australia/North.daylight.long=Central Summer Time (Northern Territory)
+Australia/North.generic.long=Central Time (Northern Territory)
+Australia/North.standard.long=Central Standard Time (Northern Territory)
+Australia/Perth.daylight.long=Western Summer Time (Australia)
+Australia/Perth.generic.long=Western Time (Australia)
+Australia/Perth.standard.long=Western Standard Time (Australia)
+Australia/Queensland.daylight.long=Eastern Summer Time (Queensland)
+Australia/Queensland.generic.long=Eastern Time (Queensland)
+Australia/Queensland.standard.long=Eastern Standard Time (Queensland)
+Australia/South.daylight.long=Central Summer Time (South Australia)
+Australia/South.generic.long=Central Time (South Australia)
+Australia/South.standard.long=Central Standard Time (South Australia)
+Australia/Sydney.daylight.long=Eastern Summer Time (New South Wales)
+Australia/Sydney.generic.long=Eastern Time (New South Wales)
+Australia/Sydney.standard.long=Eastern Standard Time (New South Wales)
+Australia/Tasmania.daylight.long=Eastern Summer Time (Tasmania)
+Australia/Tasmania.generic.long=Eastern Time (Tasmania)
+Australia/Tasmania.standard.long=Eastern Standard Time (Tasmania)
+Australia/Victoria.daylight.long=Eastern Summer Time (Victoria)
+Australia/Victoria.generic.long=Eastern Time (Victoria)
+Australia/Victoria.standard.long=Eastern Standard Time (Victoria)
+Australia/West.daylight.long=Western Summer Time (Australia)
+Australia/West.generic.long=Western Time (Australia)
+Australia/West.standard.long=Western Standard Time (Australia)
+Australia/Yancowinna.daylight.long=Central Summer Time (South Australia/New South Wales)
+Australia/Yancowinna.generic.long=Central Time (South Australia/New South Wales)
+Australia/Yancowinna.standard.long=Central Standard Time (South Australia/New South Wales)
+BET.generic.long=Brasilia Time
+BST.generic.long=Bangladesh Time
+Brazil/Acre.generic.long=Acre Time
+Brazil/DeNoronha.generic.long=Fernando de Noronha Time
+Brazil/East.generic.long=Brasilia Time
+Brazil/West.generic.long=Amazon Time
+CAT.generic.long=Central Africa Time
+CET.generic.long=Central European Time
+CNT.generic.long=Newfoundland Time
+CST.generic.long=Central Time
+CST6CDT.generic.long=Central Time
+CTT.generic.long=China Time
+Canada/Atlantic.generic.long=Atlantic Time
+Canada/Central.generic.long=Central Time
+Canada/East-Saskatchewan.generic.long=Central Time
+Canada/Eastern.generic.long=Eastern Time
+Canada/Mountain.generic.long=Mountain Time
+Canada/Newfoundland.generic.long=Newfoundland Time
+Canada/Pacific.generic.long=Pacific Time
+Canada/Saskatchewan.generic.long=Central Time
+Canada/Yukon.generic.long=Pacific Time
+Chile/Continental.generic.long=Chile Time
+Chile/EasterIsland.generic.long=Easter Is. Time
+Cuba.generic.long=Cuba Time
+EAT.generic.long=Eastern Africa Time
+ECT.generic.long=Central European Time
+EET.generic.long=Eastern European Time
+EST.generic.long=Eastern Time
+EST5EDT.generic.long=Eastern Time
+Egypt.generic.long=Eastern European Time
+Eire.generic.long=Irish Time
+Etc/Greenwich.generic.long=Greenwich Mean Time
+Etc/UCT.generic.long=Coordinated Universal Time
+Etc/UTC.generic.long=Coordinated Universal Time
+Etc/Universal.generic.long=Coordinated Universal Time
+Etc/Zulu.generic.long=Coordinated Universal Time
+Europe/Amsterdam.generic.long=Central European Time
+Europe/Andorra.generic.long=Central European Time
+Europe/Athens.generic.long=Eastern European Time
+Europe/Belfast.generic.long=British Time
+Europe/Belgrade.generic.long=Central European Time
+Europe/Berlin.generic.long=Central European Time
+Europe/Bratislava.generic.long=Central European Time
+Europe/Brussels.generic.long=Central European Time
+Europe/Bucharest.generic.long=Eastern European Time
+Europe/Budapest.generic.long=Central European Time
+Europe/Busingen.generic.long=Central European Time
+Europe/Chisinau.generic.long=Eastern European Time
+Europe/Copenhagen.generic.long=Central European Time
+Europe/Dublin.generic.long=Irish Time
+Europe/Gibraltar.generic.long=Central European Time
+Europe/Guernsey.generic.long=British Time
+Europe/Helsinki.generic.long=Eastern European Time
+Europe/Isle_of_Man.generic.long=British Time
+Europe/Istanbul.generic.long=Eastern European Time
+Europe/Jersey.generic.long=British Time
+Europe/Kaliningrad.daylight.long=Further-eastern European Summer Time
+Europe/Kaliningrad.generic.long=Further-eastern European Time
+Europe/Kaliningrad.standard.long=Further-eastern European Time
+Europe/Kiev.generic.long=Eastern European Time
+Europe/Lisbon.generic.long=Western European Time
+Europe/Ljubljana.generic.long=Central European Time
+Europe/London.generic.long=British Time
+Europe/Luxembourg.generic.long=Central European Time
+Europe/Madrid.generic.long=Central European Time
+Europe/Malta.generic.long=Central European Time
+Europe/Mariehamn.generic.long=Eastern European Time
+Europe/Minsk.daylight.long=Further-eastern European Summer Time
+Europe/Minsk.generic.long=Further-eastern European Time
+Europe/Minsk.standard.long=Further-eastern European Time
+Europe/Monaco.generic.long=Central European Time
+Europe/Moscow.generic.long=Moscow Time
+Europe/Nicosia.generic.long=Eastern European Time
+Europe/Oslo.generic.long=Central European Time
+Europe/Paris.generic.long=Central European Time
+Europe/Podgorica.generic.long=Central European Time
+Europe/Prague.generic.long=Central European Time
+Europe/Riga.generic.long=Eastern European Time
+Europe/Rome.generic.long=Central European Time
+Europe/Samara.generic.long=Samara Time
+Europe/San_Marino.generic.long=Central European Time
+Europe/Sarajevo.generic.long=Central European Time
+Europe/Simferopol.generic.long=Eastern European Time
+Europe/Skopje.generic.long=Central European Time
+Europe/Sofia.generic.long=Eastern European Time
+Europe/Stockholm.generic.long=Central European Time
+Europe/Tallinn.generic.long=Eastern European Time
+Europe/Tirane.generic.long=Central European Time
+Europe/Tiraspol.generic.long=Eastern European Time
+Europe/Uzhgorod.generic.long=Eastern European Time
+Europe/Vaduz.generic.long=Central European Time
+Europe/Vatican.generic.long=Central European Time
+Europe/Vienna.generic.long=Central European Time
+Europe/Vilnius.generic.long=Eastern European Time
+Europe/Volgograd.generic.long=Volgograd Time
+Europe/Warsaw.generic.long=Central European Time
+Europe/Zagreb.generic.long=Central European Time
+Europe/Zaporozhye.generic.long=Eastern European Time
+Europe/Zurich.generic.long=Central European Time
+GB-Eire.generic.long=British Time
+GB.generic.long=British Time
+GMT.generic.long=Greenwich Mean Time
+Greenwich.generic.long=Greenwich Mean Time
+HST.generic.long=Hawaii Time
+Hongkong.generic.long=Hong Kong Time
+IET.generic.long=Eastern Time
+IST.generic.long=India Time
+Iceland.generic.long=Greenwich Mean Time
+Indian/Antananarivo.generic.long=Eastern Africa Time
+Indian/Chagos.generic.long=Indian Ocean Territory Time
+Indian/Christmas.generic.long=Christmas Island Time
+Indian/Cocos.generic.long=Cocos Islands Time
+Indian/Comoro.generic.long=Eastern Africa Time
+Indian/Kerguelen.generic.long=French Southern & Antarctic Lands Time
+Indian/Mahe.generic.long=Seychelles Time
+Indian/Maldives.generic.long=Maldives Time
+Indian/Mauritius.generic.long=Mauritius Time
+Indian/Mayotte.generic.long=Eastern Africa Time
+Indian/Reunion.generic.long=Reunion Time
+Iran.generic.long=Iran Time
+Israel.generic.long=Israel Time
+JST.generic.long=Japan Time
+Jamaica.generic.long=Eastern Time
+Japan.generic.long=Japan Time
+Kwajalein.generic.long=Marshall Islands Time
+Libya.generic.long=Eastern European Time
+MET.generic.long=Middle Europe Time
+MIT.generic.long=West Samoa Time
+MST.generic.long=Mountain Time
+MST7MDT.generic.long=Mountain Time
+Mexico/BajaNorte.generic.long=Pacific Time
+Mexico/BajaSur.generic.long=Mountain Time
+Mexico/General.generic.long=Central Time
+NET.generic.long=Armenia Time
+NST.generic.long=New Zealand Time
+NZ-CHAT.generic.long=Chatham Time
+NZ.generic.long=New Zealand Time
+Navajo.generic.long=Mountain Time
+PLT.generic.long=Pakistan Time
+PNT.generic.long=Mountain Time
+PRC.generic.long=China Time
+PRT.generic.long=Atlantic Time
+PST.generic.long=Pacific Time
+PST8PDT.generic.long=Pacific Time
+Pacific/Apia.generic.long=West Samoa Time
+Pacific/Auckland.generic.long=New Zealand Time
+Pacific/Chatham.generic.long=Chatham Time
+Pacific/Chuuk.daylight.long=Chuuk Summer Time
+Pacific/Chuuk.generic.long=Chuuk Time
+Pacific/Chuuk.standard.long=Chuuk Time
+Pacific/Easter.generic.long=Easter Is. Time
+Pacific/Efate.generic.long=Vanuatu Time
+Pacific/Enderbury.generic.long=Phoenix Is. Time
+Pacific/Fakaofo.generic.long=Tokelau Time
+Pacific/Fiji.generic.long=Fiji Time
+Pacific/Funafuti.generic.long=Tuvalu Time
+Pacific/Galapagos.generic.long=Galapagos Time
+Pacific/Gambier.generic.long=Gambier Time
+Pacific/Guadalcanal.generic.long=Solomon Is. Time
+Pacific/Guam.generic.long=Chamorro Time
+Pacific/Honolulu.generic.long=Hawaii Time
+Pacific/Johnston.generic.long=Hawaii Time
+Pacific/Kiritimati.generic.long=Line Is. Time
+Pacific/Kosrae.generic.long=Kosrae Time
+Pacific/Kwajalein.generic.long=Marshall Islands Time
+Pacific/Majuro.generic.long=Marshall Islands Time
+Pacific/Marquesas.generic.long=Marquesas Time
+Pacific/Midway.generic.long=Samoa Time
+Pacific/Nauru.generic.long=Nauru Time
+Pacific/Niue.generic.long=Niue Time
+Pacific/Norfolk.generic.long=Norfolk Time
+Pacific/Noumea.generic.long=New Caledonia Time
+Pacific/Pago_Pago.generic.long=Samoa Time
+Pacific/Palau.generic.long=Palau Time
+Pacific/Pitcairn.generic.long=Pitcairn Time
+Pacific/Pohnpei.daylight.long=Pohnpei Summer Time
+Pacific/Pohnpei.generic.long=Ponape Time
+Pacific/Pohnpei.standard.long=Pohnpei Time
+Pacific/Ponape.daylight.long=Pohnpei Summer Time
+Pacific/Ponape.generic.long=Ponape Time
+Pacific/Ponape.standard.long=Pohnpei Time
+Pacific/Port_Moresby.generic.long=Papua New Guinea Time
+Pacific/Rarotonga.generic.long=Cook Is. Time
+Pacific/Saipan.generic.long=Chamorro Time
+Pacific/Samoa.generic.long=Samoa Time
+Pacific/Tahiti.generic.long=Tahiti Time
+Pacific/Tarawa.generic.long=Gilbert Is. Time
+Pacific/Tongatapu.generic.long=Tonga Time
+Pacific/Truk.daylight.long=Chuuk Summer Time
+Pacific/Truk.generic.long=Chuuk Time
+Pacific/Truk.standard.long=Chuuk Time
+Pacific/Wake.generic.long=Wake Time
+Pacific/Wallis.generic.long=Wallis & Futuna Time
+Pacific/Yap.daylight.long=Chuuk Summer Time
+Pacific/Yap.generic.long=Chuuk Time
+Pacific/Yap.standard.long=Chuuk Time
+Poland.generic.long=Central European Time
+Portugal.generic.long=Western European Time
+ROK.generic.long=Korea Time
+SST.generic.long=Solomon Is. Time
+Singapore.generic.long=Singapore Time
+SystemV/AST4.generic.long=Atlantic Time
+SystemV/AST4ADT.generic.long=Atlantic Time
+SystemV/CST6.generic.long=Central Time
+SystemV/CST6CDT.generic.long=Central Time
+SystemV/EST5.generic.long=Eastern Time
+SystemV/EST5EDT.generic.long=Eastern Time
+SystemV/HST10.generic.long=Hawaii Time
+SystemV/MST7.generic.long=Mountain Time
+SystemV/MST7MDT.generic.long=Mountain Time
+SystemV/PST8.generic.long=Pacific Time
+SystemV/PST8PDT.generic.long=Pacific Time
+SystemV/YST9.generic.long=Alaska Time
+SystemV/YST9YDT.generic.long=Alaska Time
+Turkey.generic.long=Eastern European Time
+UCT.generic.long=Coordinated Universal Time
+US/Alaska.generic.long=Alaska Time
+US/Aleutian.generic.long=Hawaii-Aleutian Time
+US/Arizona.generic.long=Mountain Time
+US/Central.generic.long=Central Time
+US/East-Indiana.generic.long=Eastern Time
+US/Eastern.generic.long=Eastern Time
+US/Hawaii.generic.long=Hawaii Time
+US/Indiana-Starke.generic.long=Central Time
+US/Michigan.generic.long=Eastern Time
+US/Mountain.generic.long=Mountain Time
+US/Pacific-New.generic.long=Pacific Time
+US/Pacific.generic.long=Pacific Time
+US/Samoa.generic.long=Samoa Time
+UTC.generic.long=Coordinated Universal Time
+Universal.generic.long=Coordinated Universal Time
+VST.generic.long=Indochina Time
+W-SU.generic.long=Moscow Time
+WET.generic.long=Western European Time
+Zulu.generic.long=Coordinated Universal Time
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNamesTest.java Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,186 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 8025051
+ * @summary Test time zone names across all locales
+ * @run main TimeZoneNamesTest
+ */
+
+import sun.util.locale.provider.TimeZoneNameUtility;
+import java.util.TimeZone;
+import java.util.Locale;
+import java.util.Properties;
+import java.io.IOException;
+import java.io.FileInputStream;
+
+public class TimeZoneNamesTest {
+ // name type to test. Possible: long, short.
+ static String requestedTestType = "long";
+ // test Standard/DST (false) or Generic (true) TZ names
+ static boolean testGeneric = false;
+
+ public static void testGenericTZName( Locale locale, String timezoneName,
+ int nameType, String expectedName ) throws RuntimeException {
+ if (testGeneric) {
+ String genericName = TimeZoneNameUtility.retrieveGenericDisplayName(timezoneName, nameType, locale);
+ //Check for equality
+ if (!genericName.equals(expectedName))
+ throw new RuntimeException( "Time zone ("+timezoneName+") name is incorrect for locale \""+locale.getDisplayName()
+ +"\" nameType: Generic"+"("+nameType+") Should be: " +expectedName+" Observed: "+genericName);
+ }
+ }
+
+ public static void testTZName( Locale locale, String timezoneName, boolean isDaylight,
+ int nameType, String expectedName ) throws RuntimeException {
+ if (!testGeneric) {
+ //Construct time zone objects
+ TimeZone zone = TimeZone.getTimeZone(timezoneName);
+ //Get name from JDK
+ String name = zone.getDisplayName(isDaylight, nameType, locale);
+ //Check for equality
+ if (!name.equals(expectedName))
+ throw new RuntimeException( "Time zone ("+timezoneName+") name is incorrect for locale: \""+locale.getDisplayName()
+ +"\" nameType:"+requestedTestType+" DST:"+isDaylight+" Should be: " +expectedName+" Observed: "+name);
+ }
+ }
+
+ public static boolean testPropertyEntry( Locale locale, String entry, String value ) {
+ boolean result = true;
+ String[] params = entry.split("\\.");
+ if (params.length != 3) {
+ System.out.println("Incorrect property file entry="+entry+" "+params.length);
+ result = false;
+ } else {
+ boolean isDaylight = true;
+ int nameType = TimeZone.LONG;
+
+ if (params[2].equals("short"))
+ nameType = TimeZone.SHORT;
+
+ if (params[1].equals("standard"))
+ isDaylight = false;
+
+ // Names with non-requested tz name type are ignored
+ if (requestedTestType.equals(params[2])) {
+ try {
+ if (params[1].equals("generic"))
+ testGenericTZName( locale, params[0], nameType, value );
+ else
+ testTZName( locale, params[0], isDaylight, nameType, value );
+ } catch (RuntimeException e) {
+ System.out.println( "Test FAILED: "+e );
+ result = false;
+ }
+ }
+ }
+ return result;
+ }
+
+ public static boolean testPropertyFile( String propFile, String shortName, Locale locale ) throws RuntimeException {
+ boolean result = true;
+ Properties property = new Properties();
+ try {
+ property.load( new FileInputStream(propFile) );
+ } catch (IOException e) {
+ throw new RuntimeException("Property file "+propFile+" is not found", e);
+ }
+ for (String key: property.stringPropertyNames()) {
+ result &= testPropertyEntry(locale, key, property.getProperty(key) );
+ }
+ return result;
+ }
+
+ // Locale to test, file with names data, test long/short names, test generic names (true/false)
+ static Object[][] testTargets = {
+ { Locale.ROOT,"TimeZoneNames.properties","long",false},
+ { Locale.ROOT,"TimeZoneNames_short.properties","short",false},
+ { Locale.ROOT,"TimeZoneNames.properties","long",true},
+ { Locale.ROOT,"TimeZoneNames_short.properties","short",true},
+
+ { new Locale("de"),"TimeZoneNames_de.properties","long",false},
+ { new Locale("de"),"TimeZoneNames_de_short.properties","short",false},
+ { new Locale("de"),"TimeZoneNames_de.properties","long",true},
+ { new Locale("de"),"TimeZoneNames_de_short.properties","short",true},
+
+ { new Locale("es"),"TimeZoneNames_es.properties","long",false},
+ { new Locale("es"),"TimeZoneNames_es_short.properties","short",false},
+ { new Locale("es"),"TimeZoneNames_es.properties","long",true},
+ { new Locale("es"),"TimeZoneNames_es_short.properties","short",true},
+
+ { new Locale("fr"),"TimeZoneNames_fr.properties","long",false},
+ { new Locale("fr"),"TimeZoneNames_fr_short.properties","short",false},
+ { new Locale("fr"),"TimeZoneNames_fr.properties","long",true},
+ { new Locale("fr"),"TimeZoneNames_fr_short.properties","short",true},
+
+ { new Locale("it"),"TimeZoneNames_it.properties","long",false},
+ { new Locale("it"),"TimeZoneNames_it_short.properties","short",false},
+ { new Locale("it"),"TimeZoneNames_it.properties","long",true},
+ { new Locale("it"),"TimeZoneNames_it_short.properties","short",true},
+
+ { new Locale("ja"),"TimeZoneNames_ja.properties","long",false},
+ { new Locale("ja"),"TimeZoneNames_ja_short.properties","short",false},
+ { new Locale("ja"),"TimeZoneNames_ja.properties","long",true},
+ { new Locale("ja"),"TimeZoneNames_ja_short.properties","short",true},
+
+ { new Locale("ko"),"TimeZoneNames_ko.properties","long",false},
+ { new Locale("ko"),"TimeZoneNames_ko_short.properties","short",false},
+ { new Locale("ko"),"TimeZoneNames_ko.properties","long",true},
+ { new Locale("ko"),"TimeZoneNames_ko_short.properties","short",true},
+
+ { new Locale("pt","BR"),"TimeZoneNames_pt_BR.properties","long",false},
+ { new Locale("pt","BR"),"TimeZoneNames_pt_BR_short.properties","short",false},
+ { new Locale("pt","BR"),"TimeZoneNames_pt_BR.properties","long",true},
+ { new Locale("pt","BR"),"TimeZoneNames_pt_BR_short.properties","short",true},
+
+ { new Locale("sv"),"TimeZoneNames_sv.properties","long",false},
+ { new Locale("sv"),"TimeZoneNames_sv_short.properties","short",false},
+ { new Locale("sv"),"TimeZoneNames_sv.properties","long",true},
+ { new Locale("sv"),"TimeZoneNames_sv_short.properties","short",true},
+
+ { new Locale("zh","CN"),"TimeZoneNames_zh_CN.properties","long",false},
+ { new Locale("zh","CN"),"TimeZoneNames_zh_CN_short.properties","short",false},
+ { new Locale("zh","CN"),"TimeZoneNames_zh_CN.properties","long",true},
+ { new Locale("zh","CN"),"TimeZoneNames_zh_CN_short.properties","short",true},
+
+ { new Locale("zh","TW"),"TimeZoneNames_zh_TW.properties","long",false},
+ { new Locale("zh","TW"),"TimeZoneNames_zh_TW_short.properties","short",false},
+ { new Locale("zh","TW"),"TimeZoneNames_zh_TW.properties","long",true},
+ { new Locale("zh","TW"),"TimeZoneNames_zh_TW_short.properties","short",true}
+ };
+
+ public static void main(String[] args) {
+ boolean result = true;
+
+ for (Object [] test: testTargets) {
+ Locale testLocale = (Locale) test[0];
+ String testFile = (String) test[1];
+ requestedTestType = (String) test[2];
+ testGeneric = (Boolean) test[3];
+ result &= testPropertyFile( System.getProperty("test.src",".")+"/"+testFile, testFile, testLocale);
+ }
+ if (!result)
+ throw new RuntimeException("Some time zones has unexpected names. Please, check test output.");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_de.properties Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,651 @@
+ACT.daylight.long=Zentrale Sommerzeit (Northern Territory)
+ACT.generic.long=Zentrale Zeitzone (Northern Territory)
+ACT.standard.long=Zentrale Normalzeit (Northern Territory)
+AET.daylight.long=\u00D6stliche Sommerzeit (New South Wales)
+AET.generic.long=\u00D6stliche Zeitzone (New South Wales)
+AET.standard.long=\u00D6stliche Normalzeit (New South Wales)
+AGT.generic.long=Argentinische Zeit
+ART.generic.long=Osteurop\u00E4ische Zeit
+AST.generic.long=Zeitzone f\u00FCr Alaska
+Africa/Abidjan.generic.long=Greenwich Zeit
+Africa/Accra.generic.long=Ghanaische Normalzeit
+Africa/Addis_Ababa.generic.long=Ostafrikanische Zeit
+Africa/Algiers.generic.long=Mitteleurop\u00E4ische Zeit
+Africa/Asmara.generic.long=Ostafrikanische Zeit
+Africa/Asmera.generic.long=Ostafrikanische Zeit
+Africa/Bamako.generic.long=Greenwich Zeit
+Africa/Bangui.generic.long=Westafrikanische Zeit
+Africa/Banjul.generic.long=Greenwich Zeit
+Africa/Bissau.generic.long=Greenwich Zeit
+Africa/Blantyre.generic.long=Zentralafrikanische Zeit
+Africa/Brazzaville.generic.long=Westafrikanische Zeit
+Africa/Bujumbura.generic.long=Zentralafrikanische Zeit
+Africa/Cairo.generic.long=Osteurop\u00E4ische Zeit
+Africa/Casablanca.generic.long=Westeurop\u00E4ische Zeit
+Africa/Ceuta.generic.long=Mitteleurop\u00E4ische Zeit
+Africa/Conakry.generic.long=Greenwich Zeit
+Africa/Dakar.generic.long=Greenwich Zeit
+Africa/Dar_es_Salaam.generic.long=Ostafrikanische Zeit
+Africa/Djibouti.generic.long=Ostafrikanische Zeit
+Africa/Douala.generic.long=Westafrikanische Zeit
+Africa/El_Aaiun.generic.long=Westeurop\u00E4ische Zeit
+Africa/Freetown.generic.long=Sierra Leone Zeit
+Africa/Gaborone.generic.long=Zentralafrikanische Zeit
+Africa/Harare.generic.long=Zentralafrikanische Zeit
+Africa/Johannesburg.generic.long=Zeitzone f\u00FCr S\u00FCdafrika
+Africa/Juba.generic.long=Ostafrikanische Zeit
+Africa/Kampala.generic.long=Ostafrikanische Zeit
+Africa/Khartoum.generic.long=Ostafrikanische Zeit
+Africa/Kigali.generic.long=Zentralafrikanische Zeit
+Africa/Kinshasa.generic.long=Westafrikanische Zeit
+Africa/Lagos.generic.long=Westafrikanische Zeit
+Africa/Libreville.generic.long=Westafrikanische Zeit
+Africa/Lome.generic.long=Greenwich Zeit
+Africa/Luanda.generic.long=Westafrikanische Zeit
+Africa/Lubumbashi.generic.long=Zentralafrikanische Zeit
+Africa/Lusaka.generic.long=Zentralafrikanische Zeit
+Africa/Malabo.generic.long=Westafrikanische Zeit
+Africa/Maputo.generic.long=Zentralafrikanische Zeit
+Africa/Maseru.generic.long=Zeitzone f\u00FCr S\u00FCdafrika
+Africa/Mbabane.generic.long=Zeitzone f\u00FCr S\u00FCdafrika
+Africa/Mogadishu.generic.long=Ostafrikanische Zeit
+Africa/Monrovia.generic.long=Greenwich Zeit
+Africa/Nairobi.generic.long=Ostafrikanische Zeit
+Africa/Ndjamena.generic.long=Westafrikanische Zeit
+Africa/Niamey.generic.long=Westafrikanische Zeit
+Africa/Nouakchott.generic.long=Greenwich Zeit
+Africa/Ouagadougou.generic.long=Greenwich Zeit
+Africa/Porto-Novo.generic.long=Westafrikanische Zeit
+Africa/Sao_Tome.generic.long=Greenwich Zeit
+Africa/Timbuktu.generic.long=Greenwich Zeit
+Africa/Tripoli.generic.long=Osteurop\u00e4ische Zeit
+Africa/Tunis.generic.long=Mitteleurop\u00E4ische Zeit
+Africa/Windhoek.generic.long=Westafrikanische Zeit
+America/Adak.generic.long=Zeitzone f\u00FCr Hawaii und Al\u00EButen
+America/Anchorage.generic.long=Zeitzone f\u00FCr Alaska
+America/Anguilla.generic.long=Zeitzone Atlantik
+America/Antigua.generic.long=Zeitzone Atlantik
+America/Araguaina.generic.long=Brasilianische Zeit
+America/Argentina/Buenos_Aires.generic.long=Argentinische Zeit
+America/Argentina/Catamarca.generic.long=Argentinische Zeit
+America/Argentina/ComodRivadavia.generic.long=Argentinische Zeit
+America/Argentina/Cordoba.generic.long=Argentinische Zeit
+America/Argentina/Jujuy.generic.long=Argentinische Zeit
+America/Argentina/La_Rioja.generic.long=Argentinische Zeit
+America/Argentina/Mendoza.generic.long=Argentinische Zeit
+America/Argentina/Rio_Gallegos.generic.long=Argentinische Zeit
+America/Argentina/Salta.generic.long=Argentinische Zeit
+America/Argentina/San_Juan.generic.long=Argentinische Zeit
+America/Argentina/San_Luis.generic.long=Argentinische Zeit
+America/Argentina/Tucuman.generic.long=Argentinische Zeit
+America/Argentina/Ushuaia.generic.long=Argentinische Zeit
+America/Aruba.generic.long=Zeitzone Atlantik
+America/Asuncion.generic.long=Paraguay Zeit
+America/Atikokan.generic.long=\u00D6stliche Zeitzone
+America/Atka.generic.long=Zeitzone f\u00FCr Hawaii und Al\u00EButen
+America/Bahia.generic.long=Brasilianische Zeit
+America/Bahia_Banderas.generic.long=Zentrale Zeitzone
+America/Barbados.generic.long=Zeitzone Atlantik
+America/Belem.generic.long=Brasilianische Zeit
+America/Belize.generic.long=Zentrale Zeitzone
+America/Blanc-Sablon.generic.long=Zeitzone Atlantik
+America/Boa_Vista.generic.long=Amazonas Normalzeit
+America/Bogota.generic.long=Kolumbianische Zeit
+America/Boise.generic.long=Zeitzone Mountain
+America/Buenos_Aires.generic.long=Argentinische Zeit
+America/Cambridge_Bay.generic.long=Zeitzone Mountain
+America/Campo_Grande.generic.long=Amazonas Normalzeit
+America/Cancun.generic.long=Zentrale Zeitzone
+America/Caracas.generic.long=Venezuelanische Zeit
+America/Catamarca.generic.long=Argentinische Zeit
+America/Cayenne.generic.long=Franz\u00F6sisch-Guiana Zeit
+America/Cayman.generic.long=\u00D6stliche Zeitzone
+America/Chicago.generic.long=Zentrale Zeitzone
+America/Chihuahua.generic.long=Zeitzone Mountain
+America/Coral_Harbour.generic.long=\u00D6stliche Zeitzone
+America/Cordoba.generic.long=Argentinische Zeit
+America/Costa_Rica.generic.long=Zentrale Zeitzone
+America/Creston.generic.long=Zeitzone Mountain
+America/Cuiaba.generic.long=Amazonas Normalzeit
+America/Curacao.generic.long=Zeitzone Atlantik
+America/Danmarkshavn.generic.long=Greenwich Zeit
+America/Dawson.generic.long=Zeitzone Pazifik
+America/Dawson_Creek.generic.long=Zeitzone Mountain
+America/Denver.generic.long=Zeitzone Mountain
+America/Detroit.generic.long=\u00D6stliche Zeitzone
+America/Dominica.generic.long=Zeitzone Atlantik
+America/Edmonton.generic.long=Zeitzone Mountain
+America/Eirunepe.generic.long=Acre Normalzeit
+America/El_Salvador.generic.long=Zentrale Zeitzone
+America/Ensenada.generic.long=Zeitzone Pazifik
+America/Fort_Wayne.generic.long=\u00D6stliche Zeitzone
+America/Fortaleza.generic.long=Brasilianische Zeit
+America/Glace_Bay.generic.long=Zeitzone Atlantik
+America/Godthab.generic.long=Westgr\u00F6nl\u00E4ndische Zeit
+America/Goose_Bay.generic.long=Zeitzone Atlantik
+America/Grand_Turk.generic.long=\u00D6stliche Zeitzone
+America/Grenada.generic.long=Zeitzone Atlantik
+America/Guadeloupe.generic.long=Zeitzone Atlantik
+America/Guatemala.generic.long=Zentrale Zeitzone
+America/Guayaquil.generic.long=Ecuadorianische Zeit
+America/Guyana.generic.long=Guyanische Zeit
+America/Halifax.generic.long=Zeitzone Atlantik
+America/Havana.generic.long=Kubanische Normalzeit
+America/Hermosillo.generic.long=Zeitzone Mountain
+America/Indiana/Indianapolis.generic.long=\u00D6stliche Zeitzone
+America/Indiana/Knox.generic.long=Zentrale Zeitzone
+America/Indiana/Marengo.generic.long=\u00D6stliche Zeitzone
+America/Indiana/Petersburg.generic.long=\u00D6stliche Zeitzone
+America/Indiana/Tell_City.generic.long=Zentrale Zeitzone
+America/Indiana/Vevay.generic.long=\u00D6stliche Zeitzone
+America/Indiana/Vincennes.generic.long=\u00D6stliche Zeitzone
+America/Indiana/Winamac.generic.long=\u00D6stliche Zeitzone
+America/Indianapolis.generic.long=\u00D6stliche Zeitzone
+America/Inuvik.generic.long=Zeitzone Mountain
+America/Iqaluit.generic.long=\u00D6stliche Zeitzone
+America/Jamaica.generic.long=\u00D6stliche Zeitzone
+America/Jujuy.generic.long=Argentinische Zeit
+America/Juneau.generic.long=Zeitzone f\u00FCr Alaska
+America/Kentucky/Louisville.generic.long=\u00D6stliche Zeitzone
+America/Kentucky/Monticello.generic.long=\u00D6stliche Zeitzone
+America/Knox_IN.generic.long=Zentrale Zeitzone
+America/Kralendijk.generic.long=Zeitzone Atlantik
+America/La_Paz.generic.long=Bolivianische Zeit
+America/Lima.generic.long=Peruanische Zeit
+America/Los_Angeles.generic.long=Zeitzone Pazifik
+America/Louisville.generic.long=\u00D6stliche Zeitzone
+America/Lower_Princes.generic.long=Zeitzone Atlantik
+America/Maceio.generic.long=Brasilianische Zeit
+America/Managua.generic.long=Zentrale Zeitzone
+America/Manaus.generic.long=Amazonas Normalzeit
+America/Marigot.generic.long=Zeitzone Atlantik
+America/Martinique.generic.long=Zeitzone Atlantik
+America/Matamoros.generic.long=Zentrale Zeitzone
+America/Mazatlan.generic.long=Zeitzone Mountain
+America/Mendoza.generic.long=Argentinische Zeit
+America/Menominee.generic.long=Zentrale Zeitzone
+America/Merida.generic.long=Zentrale Zeitzone
+America/Metlakatla.daylight.long=Metlakatla Sommerzeit
+America/Metlakatla.generic.long=Metlakatla Normalzeit
+America/Metlakatla.standard.long=Metlakatla Normalzeit
+America/Mexico_City.generic.long=Zentrale Zeitzone
+America/Miquelon.generic.long=Zeitzone f\u00FCr St. Pierre und Miquelon
+America/Moncton.generic.long=Zeitzone Atlantik
+America/Monterrey.generic.long=Zentrale Zeitzone
+America/Montevideo.generic.long=Uruguayanische Zeit
+America/Montreal.generic.long=\u00D6stliche Zeitzone
+America/Montserrat.generic.long=Zeitzone Atlantik
+America/Nassau.generic.long=\u00D6stliche Zeitzone
+America/New_York.generic.long=\u00D6stliche Zeitzone
+America/Nipigon.generic.long=\u00D6stliche Zeitzone
+America/Nome.generic.long=Zeitzone f\u00FCr Alaska
+America/Noronha.generic.long=Fernando de Noronha Zeit
+America/North_Dakota/Beulah.generic.long=Zentrale Zeitzone
+America/North_Dakota/Center.generic.long=Zentrale Zeitzone
+America/North_Dakota/New_Salem.generic.long=Zentrale Zeitzone
+America/Ojinaga.generic.long=Zeitzone Mountain
+America/Panama.generic.long=\u00D6stliche Zeitzone
+America/Pangnirtung.generic.long=\u00D6stliche Zeitzone
+America/Paramaribo.generic.long=Suriname Zeit
+America/Phoenix.generic.long=Zeitzone Mountain
+America/Port-au-Prince.generic.long=\u00D6stliche Zeitzone
+America/Port_of_Spain.generic.long=Zeitzone Atlantik
+America/Porto_Acre.generic.long=Acre Normalzeit
+America/Porto_Velho.generic.long=Amazonas Normalzeit
+America/Puerto_Rico.generic.long=Zeitzone Atlantik
+America/Rainy_River.generic.long=Zentrale Zeitzone
+America/Rankin_Inlet.generic.long=Zentrale Zeitzone
+America/Recife.generic.long=Brasilianische Zeit
+America/Regina.generic.long=Zentrale Zeitzone
+America/Resolute.generic.long=Zentrale Zeitzone
+America/Rio_Branco.generic.long=Acre Normalzeit
+America/Rosario.generic.long=Argentinische Zeit
+America/Santa_Isabel.generic.long=Zeitzone Pazifik
+America/Santarem.generic.long=Brasilianische Zeit
+America/Santiago.generic.long=Chilenische Zeit
+America/Santo_Domingo.generic.long=Zeitzone Atlantik
+America/Sao_Paulo.generic.long=Brasilianische Zeit
+America/Scoresbysund.generic.long=Ostgr\u00F6nl\u00E4ndische Zeit
+America/Shiprock.generic.long=Zeitzone Mountain
+America/Sitka.generic.long=Zeitzone f\u00FCr Alaska
+America/St_Barthelemy.generic.long=Zeitzone Atlantik
+America/St_Johns.generic.long=Zeitzone f\u00FCr Neufundland
+America/St_Kitts.generic.long=Zeitzone Atlantik
+America/St_Lucia.generic.long=Zeitzone Atlantik
+America/St_Thomas.generic.long=Zeitzone Atlantik
+America/St_Vincent.generic.long=Zeitzone Atlantik
+America/Swift_Current.generic.long=Zentrale Zeitzone
+America/Tegucigalpa.generic.long=Zentrale Zeitzone
+America/Thule.generic.long=Zeitzone Atlantik
+America/Thunder_Bay.generic.long=\u00D6stliche Zeitzone
+America/Tijuana.generic.long=Zeitzone Pazifik
+America/Toronto.generic.long=\u00D6stliche Zeitzone
+America/Tortola.generic.long=Zeitzone Atlantik
+America/Vancouver.generic.long=Zeitzone Pazifik
+America/Virgin.generic.long=Zeitzone Atlantik
+America/Whitehorse.generic.long=Zeitzone Pazifik
+America/Winnipeg.generic.long=Zentrale Zeitzone
+America/Yakutat.generic.long=Zeitzone f\u00FCr Alaska
+America/Yellowknife.generic.long=Zeitzone Mountain
+Antarctica/Casey.daylight.long=Westliche Sommerzeit (Australien)
+Antarctica/Casey.generic.long=Westliche Zeitzone (Australien)
+Antarctica/Casey.standard.long=Westliche Normalzeit (Australien)
+Antarctica/Davis.generic.long=Davis Zeit
+Antarctica/DumontDUrville.generic.long=Dumont-d'Urville Zeit
+Antarctica/Macquarie.daylight.long=Macquarieinsel Sommerzeit
+Antarctica/Macquarie.generic.long=Macquarieinsel Zeit
+Antarctica/Macquarie.standard.long=Macquarieinsel Zeit
+Antarctica/Mawson.generic.long=Mawson Zeit
+Antarctica/McMurdo.generic.long=Zeitzone f\u00FCr Neuseeland
+Antarctica/Palmer.generic.long=Chilenische Zeit
+Antarctica/Rothera.generic.long=Rothera Zeit
+Antarctica/South_Pole.generic.long=Zeitzone f\u00FCr Neuseeland
+Antarctica/Syowa.generic.long=Syowa Zeit
+Antarctica/Vostok.generic.long=Vostok Zeit
+Arctic/Longyearbyen.generic.long=Mitteleurop\u00E4ische Zeit
+Asia/Aden.generic.long=Zeitzone f\u00FCr Arabische Halbinsel
+Asia/Almaty.generic.long=Alma Ata Zeit
+Asia/Amman.generic.long=Zeitzone f\u00fcr Arabische Halbinsel
+Asia/Anadyr.generic.long=Anadyr Zeit
+Asia/Aqtau.generic.long=Aqtau Zeit
+Asia/Aqtobe.generic.long=Aqtobe Zeit
+Asia/Ashgabat.generic.long=Turkmenische Zeit
+Asia/Ashkhabad.generic.long=Turkmenische Zeit
+Asia/Baghdad.generic.long=Zeitzone f\u00FCr Arabische Halbinsel
+Asia/Bahrain.generic.long=Zeitzone f\u00FCr Arabische Halbinsel
+Asia/Baku.generic.long=Aserbaidschanische Zeit
+Asia/Bangkok.generic.long=Indochina Zeit
+Asia/Beirut.generic.long=Osteurop\u00E4ische Zeit
+Asia/Bishkek.generic.long=Kirgisische Zeit
+Asia/Brunei.generic.long=Brunei Zeit
+Asia/Calcutta.generic.long=Zeitzone f\u00FCr Indien
+Asia/Choibalsan.generic.long=Choibalsan Zeit
+Asia/Chongqing.generic.long=Zeitzone f\u00FCr China
+Asia/Chungking.generic.long=Zeitzone f\u00FCr China
+Asia/Colombo.generic.long=Zeitzone f\u00FCr Indien
+Asia/Dacca.generic.long=Bangladesch Zeit
+Asia/Damascus.generic.long=Osteurop\u00E4ische Zeit
+Asia/Dhaka.generic.long=Bangladesch Zeit
+Asia/Dili.generic.long=Timor-Leste Normalzeit
+Asia/Dubai.generic.long=Zeitzone f\u00FCr Persischen Golf
+Asia/Dushanbe.generic.long=Tadschikische Zeit
+Asia/Gaza.generic.long=Osteurop\u00E4ische Zeit
+Asia/Harbin.generic.long=Zeitzone f\u00FCr China
+Asia/Hebron.generic.long=Osteurop\u00E4ische Zeit
+Asia/Ho_Chi_Minh.generic.long=Indochina Zeit
+Asia/Hong_Kong.generic.long=Hongkong Zeit
+Asia/Hovd.generic.long=Hovd Zeit
+Asia/Irkutsk.generic.long=Irkutsk Zeit
+Asia/Istanbul.generic.long=Osteurop\u00E4ische Zeit
+Asia/Jakarta.generic.long=Westindonesische Zeit
+Asia/Jayapura.generic.long=Ostindonesische Zeit
+Asia/Jerusalem.generic.long=Zeitzone f\u00FCr Israel
+Asia/Kabul.generic.long=Afghanistanische Zeit
+Asia/Kamchatka.generic.long=Petropawlowsk-Kamtschatkische Zeit
+Asia/Karachi.generic.long=Pakistanische Zeit
+Asia/Kashgar.generic.long=Zeitzone f\u00FCr China
+Asia/Kathmandu.generic.long=Nepalesische Zeit
+Asia/Katmandu.generic.long=Nepalesische Zeit
+Asia/Khandyga.daylight.long=Chandyga Sommerzeit
+Asia/Khandyga.generic.long=Chandyga Zeit
+Asia/Khandyga.standard.long=Chandyga Zeit
+Asia/Kolkata.generic.long=Zeitzone f\u00FCr Indien
+Asia/Krasnoyarsk.generic.long=Krasnojarsker Zeit
+Asia/Kuala_Lumpur.generic.long=Malaysische Zeit
+Asia/Kuching.generic.long=Malaysische Zeit
+Asia/Kuwait.generic.long=Zeitzone f\u00FCr Arabische Halbinsel
+Asia/Macao.generic.long=Zeitzone f\u00FCr China
+Asia/Macau.generic.long=Zeitzone f\u00FCr China
+Asia/Magadan.generic.long=Magadanische Zeit
+Asia/Makassar.generic.long=Zentralindonesische Zeit
+Asia/Manila.generic.long=Philippinische Zeit
+Asia/Muscat.generic.long=Zeitzone f\u00FCr Persischen Golf
+Asia/Nicosia.generic.long=Osteurop\u00E4ische Zeit
+Asia/Novokuznetsk.generic.long=Nowosibirsker Zeit
+Asia/Novosibirsk.generic.long=Nowosibirsker Zeit
+Asia/Omsk.generic.long=Omsk Zeit
+Asia/Oral.generic.long=Oral Zeit
+Asia/Phnom_Penh.generic.long=Indochina Zeit
+Asia/Pontianak.generic.long=Westindonesische Zeit
+Asia/Pyongyang.generic.long=Zeitzone f\u00FCr Korea
+Asia/Qatar.generic.long=Zeitzone f\u00FCr Arabische Halbinsel
+Asia/Qyzylorda.generic.long=Qyzylorda Zeit
+Asia/Rangoon.generic.long=Myanmar Zeit
+Asia/Saigon.generic.long=Indochina Zeit
+Asia/Sakhalin.generic.long=Sakhalin Zeit
+Asia/Samarkand.generic.long=Usbekistan Zeit
+Asia/Seoul.generic.long=Zeitzone f\u00FCr Korea
+Asia/Shanghai.generic.long=Zeitzone f\u00FCr China
+Asia/Singapore.generic.long=Singapur Zeit
+Asia/Taipei.generic.long=Zeitzone f\u00FCr China
+Asia/Tashkent.generic.long=Usbekistan Zeit
+Asia/Tbilisi.generic.long=Georgische Zeit
+Asia/Tehran.generic.long=Iranische Zeit
+Asia/Tel_Aviv.generic.long=Zeitzone f\u00FCr Israel
+Asia/Thimbu.generic.long=Bhutanische Zeit
+Asia/Thimphu.generic.long=Bhutanische Zeit
+Asia/Tokyo.generic.long=Zeitzone f\u00FCr Japan
+Asia/Ujung_Pandang.generic.long=Zentralindonesische Zeit
+Asia/Ulaanbaatar.generic.long=Ulaanbaatar Zeit
+Asia/Ulan_Bator.generic.long=Ulaanbaatar Zeit
+Asia/Urumqi.generic.long=Zeitzone f\u00FCr China
+Asia/Ust-Nera.daylight.long=Ust-Nera Sommerzeit
+Asia/Ust-Nera.generic.long=Ust-Nera Zeit
+Asia/Ust-Nera.standard.long=Ust-Nera Zeit
+Asia/Vientiane.generic.long=Indochina Zeit
+Asia/Vladivostok.generic.long=Wladiwostok Zeit
+Asia/Yakutsk.generic.long=Jakutsk Zeit
+Asia/Yekaterinburg.generic.long=Jekaterinburger Zeit
+Asia/Yerevan.generic.long=Armenische Zeit
+Atlantic/Azores.generic.long=Azoren Zeit
+Atlantic/Bermuda.generic.long=Zeitzone Atlantik
+Atlantic/Canary.generic.long=Westeurop\u00E4ische Zeit
+Atlantic/Cape_Verde.generic.long=Kap Verde Zeit
+Atlantic/Faeroe.generic.long=Westeurop\u00E4ische Zeit
+Atlantic/Faroe.generic.long=Westeurop\u00E4ische Zeit
+Atlantic/Jan_Mayen.generic.long=Mitteleurop\u00E4ische Zeit
+Atlantic/Madeira.generic.long=Westeurop\u00E4ische Zeit
+Atlantic/Reykjavik.generic.long=Greenwich Zeit
+Atlantic/South_Georgia.generic.long=Zeitzone f\u00FCr S\u00FCdgeorgien
+Atlantic/St_Helena.generic.long=Greenwich Zeit
+Atlantic/Stanley.generic.long=Falkland Inseln Zeit
+Australia/ACT.daylight.long=\u00D6stliche Sommerzeit (New South Wales)
+Australia/ACT.generic.long=\u00D6stliche Zeitzone (New South Wales)
+Australia/ACT.standard.long=\u00D6stliche Normalzeit (New South Wales)
+Australia/Adelaide.daylight.long=Zentrale Sommerzeit (S\u00FCdaustralien)
+Australia/Adelaide.generic.long=Zentrale Zeitzone (S\u00FCdaustralien)
+Australia/Adelaide.standard.long=Zentrale Normalzeit (S\u00FCdaustralien)
+Australia/Brisbane.daylight.long=\u00D6stliche Sommerzeit (Queensland)
+Australia/Brisbane.generic.long=\u00D6stliche Zeitzone (Queensland)
+Australia/Brisbane.standard.long=\u00D6stliche Normalzeit (Queensland)
+Australia/Broken_Hill.daylight.long=Zentrale Sommerzeit (S\u00FCdaustralien/New South Wales)
+Australia/Broken_Hill.generic.long=Zentrale Zeitzone (S\u00FCdaustralien/New South Wales)
+Australia/Broken_Hill.standard.long=Zentrale Normalzeit (S\u00FCdaustralien/New South Wales)
+Australia/Canberra.daylight.long=\u00D6stliche Sommerzeit (New South Wales)
+Australia/Canberra.generic.long=\u00D6stliche Zeitzone (New South Wales)
+Australia/Canberra.standard.long=\u00D6stliche Normalzeit (New South Wales)
+Australia/Currie.daylight.long=\u00D6stliche Sommerzeit (New South Wales)
+Australia/Currie.generic.long=\u00D6stliche Zeitzone (New South Wales)
+Australia/Currie.standard.long=\u00D6stliche Normalzeit (New South Wales)
+Australia/Darwin.daylight.long=Zentrale Sommerzeit (Northern Territory)
+Australia/Darwin.generic.long=Zentrale Zeitzone (Northern Territory)
+Australia/Darwin.standard.long=Zentrale Normalzeit (Northern Territory)
+Australia/Eucla.daylight.long=Zentral-Westliche Sommerzeit (Australien)
+Australia/Eucla.generic.long=Zentral-Westliche Normalzeit (Australien)
+Australia/Eucla.standard.long=Zentral-Westliche Normalzeit (Australien)
+Australia/Hobart.daylight.long=\u00D6stliche Sommerzeit (Tasmanien)
+Australia/Hobart.generic.long=\u00D6stliche Zeitzone (Tasmanien)
+Australia/Hobart.standard.long=\u00D6stliche Normalzeit (Tasmanien)
+Australia/LHI.generic.long=Lord-Howe Normalzeit
+Australia/Lindeman.daylight.long=\u00D6stliche Sommerzeit (Queensland)
+Australia/Lindeman.generic.long=\u00D6stliche Zeitzone (Queensland)
+Australia/Lindeman.standard.long=\u00D6stliche Normalzeit (Queensland)
+Australia/Lord_Howe.generic.long=Lord-Howe Normalzeit
+Australia/Melbourne.daylight.long=\u00D6stliche Sommerzeit (Victoria)
+Australia/Melbourne.generic.long=\u00D6stliche Zeitzone (Victoria)
+Australia/Melbourne.standard.long=\u00D6stliche Normalzeit (Victoria)
+Australia/NSW.daylight.long=\u00D6stliche Sommerzeit (New South Wales)
+Australia/NSW.generic.long=\u00D6stliche Zeitzone (New South Wales)
+Australia/NSW.standard.long=\u00D6stliche Normalzeit (New South Wales)
+Australia/North.daylight.long=Zentrale Sommerzeit (Northern Territory)
+Australia/North.generic.long=Zentrale Zeitzone (Northern Territory)
+Australia/North.standard.long=Zentrale Normalzeit (Northern Territory)
+Australia/Perth.daylight.long=Westliche Sommerzeit (Australien)
+Australia/Perth.generic.long=Westliche Zeitzone (Australien)
+Australia/Perth.standard.long=Westliche Normalzeit (Australien)
+Australia/Queensland.daylight.long=\u00D6stliche Sommerzeit (Queensland)
+Australia/Queensland.generic.long=\u00D6stliche Zeitzone (Queensland)
+Australia/Queensland.standard.long=\u00D6stliche Normalzeit (Queensland)
+Australia/South.daylight.long=Zentrale Sommerzeit (S\u00FCdaustralien)
+Australia/South.generic.long=Zentrale Zeitzone (S\u00FCdaustralien)
+Australia/South.standard.long=Zentrale Normalzeit (S\u00FCdaustralien)
+Australia/Sydney.daylight.long=\u00D6stliche Sommerzeit (New South Wales)
+Australia/Sydney.generic.long=\u00D6stliche Zeitzone (New South Wales)
+Australia/Sydney.standard.long=\u00D6stliche Normalzeit (New South Wales)
+Australia/Tasmania.daylight.long=\u00D6stliche Sommerzeit (Tasmanien)
+Australia/Tasmania.generic.long=\u00D6stliche Zeitzone (Tasmanien)
+Australia/Tasmania.standard.long=\u00D6stliche Normalzeit (Tasmanien)
+Australia/Victoria.daylight.long=\u00D6stliche Sommerzeit (Victoria)
+Australia/Victoria.generic.long=\u00D6stliche Zeitzone (Victoria)
+Australia/Victoria.standard.long=\u00D6stliche Normalzeit (Victoria)
+Australia/West.daylight.long=Westliche Sommerzeit (Australien)
+Australia/West.generic.long=Westliche Zeitzone (Australien)
+Australia/West.standard.long=Westliche Normalzeit (Australien)
+Australia/Yancowinna.daylight.long=Zentrale Sommerzeit (S\u00FCdaustralien/New South Wales)
+Australia/Yancowinna.generic.long=Zentrale Zeitzone (S\u00FCdaustralien/New South Wales)
+Australia/Yancowinna.standard.long=Zentrale Normalzeit (S\u00FCdaustralien/New South Wales)
+BET.generic.long=Brasilianische Zeit
+BST.generic.long=Bangladesch Zeit
+Brazil/Acre.generic.long=Acre Normalzeit
+Brazil/DeNoronha.generic.long=Fernando de Noronha Zeit
+Brazil/East.generic.long=Brasilianische Zeit
+Brazil/West.generic.long=Amazonas Normalzeit
+CAT.generic.long=Zentralafrikanische Zeit
+CET.generic.long=Mitteleurop\u00e4ische Zeit
+CNT.generic.long=Zeitzone f\u00FCr Neufundland
+CST.generic.long=Zentrale Zeitzone
+CST6CDT.generic.long=Zentrale Zeitzone
+CTT.generic.long=Zeitzone f\u00FCr China
+Canada/Atlantic.generic.long=Zeitzone Atlantik
+Canada/Central.generic.long=Zentrale Zeitzone
+Canada/East-Saskatchewan.generic.long=Zentrale Zeitzone
+Canada/Eastern.generic.long=\u00D6stliche Zeitzone
+Canada/Mountain.generic.long=Zeitzone Mountain
+Canada/Newfoundland.generic.long=Zeitzone f\u00FCr Neufundland
+Canada/Pacific.generic.long=Zeitzone Pazifik
+Canada/Saskatchewan.generic.long=Zentrale Zeitzone
+Canada/Yukon.generic.long=Zeitzone Pazifik
+Chile/Continental.generic.long=Chilenische Zeit
+Chile/EasterIsland.generic.long=Osterinseln Zeit
+Cuba.generic.long=Kubanische Normalzeit
+EAT.generic.long=Ostafrikanische Zeit
+ECT.generic.long=Mitteleurop\u00E4ische Zeit
+EET.generic.long=Osteurop\u00e4ische Zeit
+EST.generic.long=\u00d6stliche Zeitzone
+EST5EDT.generic.long=\u00d6stliche Zeitzone
+Egypt.generic.long=Osteurop\u00E4ische Zeit
+Eire.generic.long=Irische Zeit
+Etc/Greenwich.generic.long=Greenwich Zeit
+Etc/UCT.generic.long=Koordinierte Universalzeit
+Etc/UTC.generic.long=Koordinierte Universalzeit
+Etc/Universal.generic.long=Koordinierte Universalzeit
+Etc/Zulu.generic.long=Koordinierte Universalzeit
+Europe/Amsterdam.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Andorra.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Athens.generic.long=Osteurop\u00E4ische Zeit
+Europe/Belfast.generic.long=Britische Zeit
+Europe/Belgrade.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Berlin.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Bratislava.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Brussels.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Bucharest.generic.long=Osteurop\u00E4ische Zeit
+Europe/Budapest.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Busingen.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Chisinau.generic.long=Osteurop\u00E4ische Zeit
+Europe/Copenhagen.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Dublin.generic.long=Irische Zeit
+Europe/Gibraltar.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Guernsey.generic.long=Britische Zeit
+Europe/Helsinki.generic.long=Osteurop\u00E4ische Zeit
+Europe/Isle_of_Man.generic.long=Britische Zeit
+Europe/Istanbul.generic.long=Osteurop\u00E4ische Zeit
+Europe/Jersey.generic.long=Britische Zeit
+Europe/Kaliningrad.daylight.long=Kaliningrader Sommerzeit
+Europe/Kaliningrad.generic.long=Kaliningrader Zeit
+Europe/Kaliningrad.standard.long=Kaliningrader Zeit
+Europe/Kiev.generic.long=Osteurop\u00E4ische Zeit
+Europe/Lisbon.generic.long=Westeurop\u00E4ische Zeit
+Europe/Ljubljana.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/London.generic.long=Britische Zeit
+Europe/Luxembourg.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Madrid.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Malta.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Mariehamn.generic.long=Osteurop\u00E4ische Zeit
+Europe/Minsk.daylight.long=Kaliningrader Sommerzeit
+Europe/Minsk.generic.long=Kaliningrader Zeit
+Europe/Minsk.standard.long=Kaliningrader Zeit
+Europe/Monaco.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Moscow.generic.long=Zeitzone f\u00FCr Moskau
+Europe/Nicosia.generic.long=Osteurop\u00E4ische Zeit
+Europe/Oslo.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Paris.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Podgorica.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Prague.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Riga.generic.long=Osteurop\u00E4ische Zeit
+Europe/Rome.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Samara.generic.long=Samarische Zeit
+Europe/San_Marino.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Sarajevo.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Simferopol.generic.long=Osteurop\u00E4ische Zeit
+Europe/Skopje.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Sofia.generic.long=Osteurop\u00E4ische Zeit
+Europe/Stockholm.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Tallinn.generic.long=Osteurop\u00E4ische Zeit
+Europe/Tirane.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Tiraspol.generic.long=Osteurop\u00E4ische Zeit
+Europe/Uzhgorod.generic.long=Osteurop\u00E4ische Zeit
+Europe/Vaduz.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Vatican.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Vienna.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Vilnius.generic.long=Osteurop\u00E4ische Zeit
+Europe/Volgograd.generic.long=Wolgograder Zeit
+Europe/Warsaw.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Zagreb.generic.long=Mitteleurop\u00E4ische Zeit
+Europe/Zaporozhye.generic.long=Osteurop\u00E4ische Zeit
+Europe/Zurich.generic.long=Mitteleurop\u00E4ische Zeit
+GB-Eire.generic.long=Britische Zeit
+GB.generic.long=Britische Zeit
+GMT.generic.long=Greenwich Zeit
+Greenwich.generic.long=Greenwich Zeit
+HST.generic.long=Zeitzone f\u00fcr Hawaii
+Hongkong.generic.long=Hongkong Zeit
+IET.generic.long=\u00D6stliche Zeitzone
+IST.generic.long=Zeitzone f\u00FCr Indien
+Iceland.generic.long=Greenwich Zeit
+Indian/Antananarivo.generic.long=Ostafrikanische Zeit
+Indian/Chagos.generic.long=Indischer Ozean Territorium Zeit
+Indian/Christmas.generic.long=Weihnachtsinseln Zeit
+Indian/Cocos.generic.long=Kokos-Inseln Zeit
+Indian/Comoro.generic.long=Ostafrikanische Zeit
+Indian/Kerguelen.generic.long=Franz\u00F6sisch S\u00FCd- u. Antarktische Landzeit
+Indian/Mahe.generic.long=Seychellen Zeit
+Indian/Maldives.generic.long=Maledivische Zeit
+Indian/Mauritius.generic.long=Mauritius Zeit
+Indian/Mayotte.generic.long=Ostafrikanische Zeit
+Indian/Reunion.generic.long=R\u00E9union Zeit
+Iran.generic.long=Iranische Zeit
+Israel.generic.long=Zeitzone f\u00FCr Israel
+JST.generic.long=Zeitzone f\u00FCr Japan
+Jamaica.generic.long=\u00D6stliche Zeitzone
+Japan.generic.long=Zeitzone f\u00FCr Japan
+Kwajalein.generic.long=Marshallinseln Zeit
+Libya.generic.long=Osteurop\u00e4ische Zeit
+MET.generic.long=MET
+MIT.generic.long=West Samoa Zeit
+MST.generic.long=Zeitzone Mountain
+MST7MDT.generic.long=Zeitzone Mountain
+Mexico/BajaNorte.generic.long=Zeitzone Pazifik
+Mexico/BajaSur.generic.long=Zeitzone Mountain
+Mexico/General.generic.long=Zentrale Zeitzone
+NET.generic.long=Armenische Zeit
+NST.generic.long=Zeitzone f\u00FCr Neuseeland
+NZ-CHAT.generic.long=Zeitzone f\u00FCr Chatham-Inseln
+NZ.generic.long=Zeitzone f\u00FCr Neuseeland
+Navajo.generic.long=Zeitzone Mountain
+PLT.generic.long=Pakistanische Zeit
+PNT.generic.long=Zeitzone Mountain
+PRC.generic.long=Zeitzone f\u00FCr China
+PRT.generic.long=Zeitzone Atlantik
+PST.generic.long=Zeitzone Pazifik
+PST8PDT.generic.long=Zeitzone Pazifik
+Pacific/Apia.generic.long=West Samoa Zeit
+Pacific/Auckland.generic.long=Zeitzone f\u00FCr Neuseeland
+Pacific/Chatham.generic.long=Zeitzone f\u00FCr Chatham-Inseln
+Pacific/Chuuk.daylight.long=Chuuk Sommerzeit
+Pacific/Chuuk.generic.long=Chuuk Zeit
+Pacific/Chuuk.standard.long=Chuuk Zeit
+Pacific/Easter.generic.long=Osterinseln Zeit
+Pacific/Efate.generic.long=Vanuatu Zeit
+Pacific/Enderbury.generic.long=Phoenix Inseln Zeit
+Pacific/Fakaofo.generic.long=Tokelau Zeit
+Pacific/Fiji.generic.long=Fidschi Zeit
+Pacific/Funafuti.generic.long=Tuvalu Zeit
+Pacific/Galapagos.generic.long=Galapagos Zeit
+Pacific/Gambier.generic.long=Gambier Zeit
+Pacific/Guadalcanal.generic.long=Salomoninseln Zeit
+Pacific/Guam.generic.long=Zeitzone f\u00FCr die Marianen
+Pacific/Honolulu.generic.long=Zeitzone f\u00FCr Hawaii
+Pacific/Johnston.generic.long=Zeitzone f\u00FCr Hawaii
+Pacific/Kiritimati.generic.long=Line Inseln Zeit
+Pacific/Kosrae.generic.long=Kosrae Zeit
+Pacific/Kwajalein.generic.long=Marshallinseln Zeit
+Pacific/Majuro.generic.long=Marshallinseln Zeit
+Pacific/Marquesas.generic.long=Marquesas Zeit
+Pacific/Midway.generic.long=Zeitzone f\u00FCr Samoa
+Pacific/Nauru.generic.long=Nauru Zeit
+Pacific/Niue.generic.long=Niue Zeit
+Pacific/Norfolk.generic.long=Norfolk Zeit
+Pacific/Noumea.generic.long=Neukaledonische Zeit
+Pacific/Pago_Pago.generic.long=Zeitzone f\u00FCr Samoa
+Pacific/Palau.generic.long=Palau Zeit
+Pacific/Pitcairn.generic.long=Zeitzone f\u00FCr Pitcairn
+Pacific/Pohnpei.daylight.long=Pohnpei Sommerzeit
+Pacific/Pohnpei.generic.long=Pohnpei-Inseln Zeit
+Pacific/Pohnpei.standard.long=Pohnpei Zeit
+Pacific/Ponape.daylight.long=Pohnpei Sommerzeit
+Pacific/Ponape.generic.long=Pohnpei-Inseln Zeit
+Pacific/Ponape.standard.long=Pohnpei Zeit
+Pacific/Port_Moresby.generic.long=Papua-Neuguinea Zeit
+Pacific/Rarotonga.generic.long=Cook-Inseln Zeit
+Pacific/Saipan.generic.long=Zeitzone f\u00FCr die Marianen
+Pacific/Samoa.generic.long=Zeitzone f\u00FCr Samoa
+Pacific/Tahiti.generic.long=Tahiti Zeit
+Pacific/Tarawa.generic.long=Gilbert-Inseln Zeit
+Pacific/Tongatapu.generic.long=Tonga Zeit
+Pacific/Truk.daylight.long=Chuuk Sommerzeit
+Pacific/Truk.generic.long=Chuuk Zeit
+Pacific/Truk.standard.long=Chuuk Zeit
+Pacific/Wake.generic.long=Wake Zeit
+Pacific/Wallis.generic.long=Wallis u. Futuna Zeit
+Pacific/Yap.daylight.long=Chuuk Sommerzeit
+Pacific/Yap.generic.long=Chuuk Zeit
+Pacific/Yap.standard.long=Chuuk Zeit
+Poland.generic.long=Mitteleurop\u00E4ische Zeit
+Portugal.generic.long=Westeurop\u00E4ische Zeit
+ROK.generic.long=Zeitzone f\u00FCr Korea
+SST.generic.long=Salomoninseln Zeit
+Singapore.generic.long=Singapur Zeit
+SystemV/AST4.generic.long=Zeitzone Atlantik
+SystemV/AST4ADT.generic.long=Zeitzone Atlantik
+SystemV/CST6.generic.long=Zentrale Zeitzone
+SystemV/CST6CDT.generic.long=Zentrale Zeitzone
+SystemV/EST5.generic.long=\u00D6stliche Zeitzone
+SystemV/EST5EDT.generic.long=\u00D6stliche Zeitzone
+SystemV/HST10.generic.long=Zeitzone f\u00FCr Hawaii
+SystemV/MST7.generic.long=Zeitzone Mountain
+SystemV/MST7MDT.generic.long=Zeitzone Mountain
+SystemV/PST8.generic.long=Zeitzone Pazifik
+SystemV/PST8PDT.generic.long=Zeitzone Pazifik
+SystemV/YST9.generic.long=Zeitzone f\u00FCr Alaska
+SystemV/YST9YDT.generic.long=Zeitzone f\u00FCr Alaska
+Turkey.generic.long=Osteurop\u00E4ische Zeit
+UCT.generic.long=Koordinierte Universalzeit
+US/Alaska.generic.long=Zeitzone f\u00FCr Alaska
+US/Aleutian.generic.long=Zeitzone f\u00FCr Hawaii und Al\u00EButen
+US/Arizona.generic.long=Zeitzone Mountain
+US/Central.generic.long=Zentrale Zeitzone
+US/East-Indiana.generic.long=\u00D6stliche Zeitzone
+US/Eastern.generic.long=\u00D6stliche Zeitzone
+US/Hawaii.generic.long=Zeitzone f\u00FCr Hawaii
+US/Indiana-Starke.generic.long=Zentrale Zeitzone
+US/Michigan.generic.long=\u00D6stliche Zeitzone
+US/Mountain.generic.long=Zeitzone Mountain
+US/Pacific-New.generic.long=Zeitzone Pazifik
+US/Pacific.generic.long=Zeitzone Pazifik
+US/Samoa.generic.long=Zeitzone f\u00FCr Samoa
+UTC.generic.long=Koordinierte Universalzeit
+Universal.generic.long=Koordinierte Universalzeit
+VST.generic.long=Indochina Zeit
+W-SU.generic.long=Zeitzone f\u00FCr Moskau
+WET.generic.long=Westeurop\u00e4ische Zeit
+Zulu.generic.long=Koordinierte Universalzeit
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_de_short.properties Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,1743 @@
+ACT.daylight.short=CST
+ACT.generic.short=CT
+ACT.standard.short=CST
+AET.daylight.short=EST
+AET.generic.short=ET
+AET.standard.short=EST
+Africa/Abidjan.daylight.short=GMT
+Africa/Abidjan.generic.short=GMT
+Africa/Abidjan.standard.short=GMT
+Africa/Accra.daylight.short=GHST
+Africa/Accra.generic.short=GMT
+Africa/Accra.standard.short=GMT
+Africa/Addis_Ababa.daylight.short=EAST
+Africa/Addis_Ababa.generic.short=EAT
+Africa/Addis_Ababa.standard.short=EAT
+Africa/Algiers.daylight.short=MESZ
+Africa/Algiers.generic.short=MEZ
+Africa/Algiers.standard.short=MEZ
+Africa/Asmara.daylight.short=EAST
+Africa/Asmara.generic.short=EAT
+Africa/Asmara.standard.short=EAT
+Africa/Asmera.daylight.short=EAST
+Africa/Asmera.generic.short=EAT
+Africa/Asmera.standard.short=EAT
+Africa/Bamako.daylight.short=GMT
+Africa/Bamako.generic.short=GMT
+Africa/Bamako.standard.short=GMT
+Africa/Bangui.daylight.short=WAST
+Africa/Bangui.generic.short=WAT
+Africa/Bangui.standard.short=WAT
+Africa/Banjul.daylight.short=GMT
+Africa/Banjul.generic.short=GMT
+Africa/Banjul.standard.short=GMT
+Africa/Bissau.daylight.short=GMT
+Africa/Bissau.generic.short=GMT
+Africa/Bissau.standard.short=GMT
+Africa/Blantyre.daylight.short=CAST
+Africa/Blantyre.generic.short=CAT
+Africa/Blantyre.standard.short=CAT
+Africa/Brazzaville.daylight.short=WAST
+Africa/Brazzaville.generic.short=WAT
+Africa/Brazzaville.standard.short=WAT
+Africa/Bujumbura.daylight.short=CAST
+Africa/Bujumbura.generic.short=CAT
+Africa/Bujumbura.standard.short=CAT
+Africa/Cairo.daylight.short=OESZ
+Africa/Cairo.generic.short=OEZ
+Africa/Cairo.standard.short=OEZ
+Africa/Casablanca.daylight.short=WESZ
+Africa/Casablanca.generic.short=WEZ
+Africa/Casablanca.standard.short=WEZ
+Africa/Ceuta.daylight.short=MESZ
+Africa/Ceuta.generic.short=MEZ
+Africa/Ceuta.standard.short=MEZ
+Africa/Conakry.daylight.short=GMT
+Africa/Conakry.generic.short=GMT
+Africa/Conakry.standard.short=GMT
+Africa/Dakar.daylight.short=GMT
+Africa/Dakar.generic.short=GMT
+Africa/Dakar.standard.short=GMT
+Africa/Dar_es_Salaam.daylight.short=EAST
+Africa/Dar_es_Salaam.generic.short=EAT
+Africa/Dar_es_Salaam.standard.short=EAT
+Africa/Djibouti.daylight.short=EAST
+Africa/Djibouti.generic.short=EAT
+Africa/Djibouti.standard.short=EAT
+Africa/Douala.daylight.short=WAST
+Africa/Douala.generic.short=WAT
+Africa/Douala.standard.short=WAT
+Africa/El_Aaiun.daylight.short=WESZ
+Africa/El_Aaiun.generic.short=WEZ
+Africa/El_Aaiun.standard.short=WEZ
+Africa/Freetown.daylight.short=SLST
+Africa/Freetown.generic.short=SLT
+Africa/Freetown.standard.short=GMT
+Africa/Gaborone.daylight.short=CAST
+Africa/Gaborone.generic.short=CAT
+Africa/Gaborone.standard.short=CAT
+Africa/Harare.daylight.short=CAST
+Africa/Harare.generic.short=CAT
+Africa/Harare.standard.short=CAT
+Africa/Johannesburg.daylight.short=SAST
+Africa/Johannesburg.generic.short=SAT
+Africa/Johannesburg.standard.short=SAST
+Africa/Juba.daylight.short=EAST
+Africa/Juba.generic.short=EAT
+Africa/Juba.standard.short=EAT
+Africa/Kampala.daylight.short=EAST
+Africa/Kampala.generic.short=EAT
+Africa/Kampala.standard.short=EAT
+Africa/Khartoum.daylight.short=EAST
+Africa/Khartoum.generic.short=EAT
+Africa/Khartoum.standard.short=EAT
+Africa/Kigali.daylight.short=CAST
+Africa/Kigali.generic.short=CAT
+Africa/Kigali.standard.short=CAT
+Africa/Kinshasa.daylight.short=WAST
+Africa/Kinshasa.generic.short=WAT
+Africa/Kinshasa.standard.short=WAT
+Africa/Lagos.daylight.short=WAST
+Africa/Lagos.generic.short=WAT
+Africa/Lagos.standard.short=WAT
+Africa/Libreville.daylight.short=WAST
+Africa/Libreville.generic.short=WAT
+Africa/Libreville.standard.short=WAT
+Africa/Lome.daylight.short=GMT
+Africa/Lome.generic.short=GMT
+Africa/Lome.standard.short=GMT
+Africa/Luanda.daylight.short=WAST
+Africa/Luanda.generic.short=WAT
+Africa/Luanda.standard.short=WAT
+Africa/Lubumbashi.daylight.short=CAST
+Africa/Lubumbashi.generic.short=CAT
+Africa/Lubumbashi.standard.short=CAT
+Africa/Lusaka.daylight.short=CAST
+Africa/Lusaka.generic.short=CAT
+Africa/Lusaka.standard.short=CAT
+Africa/Malabo.daylight.short=WAST
+Africa/Malabo.generic.short=WAT
+Africa/Malabo.standard.short=WAT
+Africa/Maputo.daylight.short=CAST
+Africa/Maputo.generic.short=CAT
+Africa/Maputo.standard.short=CAT
+Africa/Maseru.daylight.short=SAST
+Africa/Maseru.generic.short=SAT
+Africa/Maseru.standard.short=SAST
+Africa/Mbabane.daylight.short=SAST
+Africa/Mbabane.generic.short=SAT
+Africa/Mbabane.standard.short=SAST
+Africa/Mogadishu.daylight.short=EAST
+Africa/Mogadishu.generic.short=EAT
+Africa/Mogadishu.standard.short=EAT
+Africa/Monrovia.daylight.short=GMT
+Africa/Monrovia.generic.short=GMT
+Africa/Monrovia.standard.short=GMT
+Africa/Nairobi.daylight.short=EAST
+Africa/Nairobi.generic.short=EAT
+Africa/Nairobi.standard.short=EAT
+Africa/Ndjamena.daylight.short=WAST
+Africa/Ndjamena.generic.short=WAT
+Africa/Ndjamena.standard.short=WAT
+Africa/Niamey.daylight.short=WAST
+Africa/Niamey.generic.short=WAT
+Africa/Niamey.standard.short=WAT
+Africa/Nouakchott.daylight.short=GMT
+Africa/Nouakchott.generic.short=GMT
+Africa/Nouakchott.standard.short=GMT
+Africa/Ouagadougou.daylight.short=GMT
+Africa/Ouagadougou.generic.short=GMT
+Africa/Ouagadougou.standard.short=GMT
+Africa/Porto-Novo.daylight.short=WAST
+Africa/Porto-Novo.generic.short=WAT
+Africa/Porto-Novo.standard.short=WAT
+Africa/Sao_Tome.daylight.short=GMT
+Africa/Sao_Tome.generic.short=GMT
+Africa/Sao_Tome.standard.short=GMT
+Africa/Timbuktu.daylight.short=GMT
+Africa/Timbuktu.generic.short=GMT
+Africa/Timbuktu.standard.short=GMT
+Africa/Tripoli.daylight.short=OESZ
+Africa/Tripoli.generic.short=OEZ
+Africa/Tripoli.standard.short=OEZ
+Africa/Tunis.daylight.short=MESZ
+Africa/Tunis.generic.short=MEZ
+Africa/Tunis.standard.short=MEZ
+Africa/Windhoek.daylight.short=WAST
+Africa/Windhoek.generic.short=WAT
+Africa/Windhoek.standard.short=WAT
+AGT.daylight.short=ARST
+AGT.generic.short=ART
+AGT.standard.short=ART
+America/Adak.daylight.short=HADT
+America/Adak.generic.short=HAT
+America/Adak.standard.short=HAST
+America/Anchorage.daylight.short=AKDT
+America/Anchorage.generic.short=AKT
+America/Anchorage.standard.short=AKST
+America/Anguilla.daylight.short=ADT
+America/Anguilla.generic.short=AT
+America/Anguilla.standard.short=AST
+America/Antigua.daylight.short=ADT
+America/Antigua.generic.short=AT
+America/Antigua.standard.short=AST
+America/Araguaina.daylight.short=BRST
+America/Araguaina.generic.short=BRT
+America/Araguaina.standard.short=BRT
+America/Argentina/Buenos_Aires.daylight.short=ARST
+America/Argentina/Buenos_Aires.generic.short=ART
+America/Argentina/Buenos_Aires.standard.short=ART
+America/Argentina/Catamarca.daylight.short=ARST
+America/Argentina/Catamarca.generic.short=ART
+America/Argentina/Catamarca.standard.short=ART
+America/Argentina/ComodRivadavia.daylight.short=ARST
+America/Argentina/ComodRivadavia.generic.short=ART
+America/Argentina/ComodRivadavia.standard.short=ART
+America/Argentina/Cordoba.daylight.short=ARST
+America/Argentina/Cordoba.generic.short=ART
+America/Argentina/Cordoba.standard.short=ART
+America/Argentina/Jujuy.daylight.short=ARST
+America/Argentina/Jujuy.generic.short=ART
+America/Argentina/Jujuy.standard.short=ART
+America/Argentina/La_Rioja.daylight.short=ARST
+America/Argentina/La_Rioja.generic.short=ART
+America/Argentina/La_Rioja.standard.short=ART
+America/Argentina/Mendoza.daylight.short=ARST
+America/Argentina/Mendoza.generic.short=ART
+America/Argentina/Mendoza.standard.short=ART
+America/Argentina/Rio_Gallegos.daylight.short=ARST
+America/Argentina/Rio_Gallegos.generic.short=ART
+America/Argentina/Rio_Gallegos.standard.short=ART
+America/Argentina/Salta.daylight.short=ARST
+America/Argentina/Salta.generic.short=ART
+America/Argentina/Salta.standard.short=ART
+America/Argentina/San_Juan.daylight.short=ARST
+America/Argentina/San_Juan.generic.short=ART
+America/Argentina/San_Juan.standard.short=ART
+America/Argentina/San_Luis.daylight.short=ARST
+America/Argentina/San_Luis.generic.short=ART
+America/Argentina/San_Luis.standard.short=ART
+America/Argentina/Tucuman.daylight.short=ARST
+America/Argentina/Tucuman.generic.short=ART
+America/Argentina/Tucuman.standard.short=ART
+America/Argentina/Ushuaia.daylight.short=ARST
+America/Argentina/Ushuaia.generic.short=ART
+America/Argentina/Ushuaia.standard.short=ART
+America/Aruba.daylight.short=ADT
+America/Aruba.generic.short=AT
+America/Aruba.standard.short=AST
+America/Asuncion.daylight.short=PYST
+America/Asuncion.generic.short=PYT
+America/Asuncion.standard.short=PYT
+America/Atikokan.daylight.short=EDT
+America/Atikokan.generic.short=ET
+America/Atikokan.standard.short=EST
+America/Atka.daylight.short=HADT
+America/Atka.generic.short=HAT
+America/Atka.standard.short=HAST
+America/Bahia_Banderas.daylight.short=CDT
+America/Bahia_Banderas.generic.short=CT
+America/Bahia_Banderas.standard.short=CST
+America/Bahia.daylight.short=BRST
+America/Bahia.generic.short=BRT
+America/Bahia.standard.short=BRT
+America/Barbados.daylight.short=ADT
+America/Barbados.generic.short=AT
+America/Barbados.standard.short=AST
+America/Belem.daylight.short=BRST
+America/Belem.generic.short=BRT
+America/Belem.standard.short=BRT
+America/Belize.daylight.short=CDT
+America/Belize.generic.short=CT
+America/Belize.standard.short=CST
+America/Blanc-Sablon.daylight.short=ADT
+America/Blanc-Sablon.generic.short=AT
+America/Blanc-Sablon.standard.short=AST
+America/Boa_Vista.daylight.short=AMST
+America/Boa_Vista.generic.short=AMT
+America/Boa_Vista.standard.short=AMT
+America/Bogota.daylight.short=COST
+America/Bogota.generic.short=COT
+America/Bogota.standard.short=COT
+America/Boise.daylight.short=MDT
+America/Boise.generic.short=MT
+America/Boise.standard.short=MST
+America/Buenos_Aires.daylight.short=ARST
+America/Buenos_Aires.generic.short=ART
+America/Buenos_Aires.standard.short=ART
+America/Cambridge_Bay.daylight.short=MDT
+America/Cambridge_Bay.generic.short=MT
+America/Cambridge_Bay.standard.short=MST
+America/Campo_Grande.daylight.short=AMST
+America/Campo_Grande.generic.short=AMT
+America/Campo_Grande.standard.short=AMT
+America/Cancun.daylight.short=CDT
+America/Cancun.generic.short=CT
+America/Cancun.standard.short=CST
+America/Caracas.daylight.short=VEST
+America/Caracas.generic.short=VET
+America/Caracas.standard.short=VET
+America/Catamarca.daylight.short=ARST
+America/Catamarca.generic.short=ART
+America/Catamarca.standard.short=ART
+America/Cayenne.daylight.short=GFST
+America/Cayenne.generic.short=GFT
+America/Cayenne.standard.short=GFT
+America/Cayman.daylight.short=EDT
+America/Cayman.generic.short=ET
+America/Cayman.standard.short=EST
+America/Chicago.daylight.short=CDT
+America/Chicago.generic.short=CT
+America/Chicago.standard.short=CST
+America/Chihuahua.daylight.short=MDT
+America/Chihuahua.generic.short=MT
+America/Chihuahua.standard.short=MST
+America/Coral_Harbour.daylight.short=EDT
+America/Coral_Harbour.generic.short=ET
+America/Coral_Harbour.standard.short=EST
+America/Cordoba.daylight.short=ARST
+America/Cordoba.generic.short=ART
+America/Cordoba.standard.short=ART
+America/Costa_Rica.daylight.short=CDT
+America/Costa_Rica.generic.short=CT
+America/Costa_Rica.standard.short=CST
+America/Creston.daylight.short=MDT
+America/Creston.generic.short=MT
+America/Creston.standard.short=MST
+America/Cuiaba.daylight.short=AMST
+America/Cuiaba.generic.short=AMT
+America/Cuiaba.standard.short=AMT
+America/Curacao.daylight.short=ADT
+America/Curacao.generic.short=AT
+America/Curacao.standard.short=AST
+America/Danmarkshavn.daylight.short=GMT
+America/Danmarkshavn.generic.short=GMT
+America/Danmarkshavn.standard.short=GMT
+America/Dawson_Creek.daylight.short=MDT
+America/Dawson_Creek.generic.short=MT
+America/Dawson_Creek.standard.short=MST
+America/Dawson.daylight.short=PDT
+America/Dawson.generic.short=PT
+America/Dawson.standard.short=PST
+America/Denver.daylight.short=MDT
+America/Denver.generic.short=MT
+America/Denver.standard.short=MST
+America/Detroit.daylight.short=EDT
+America/Detroit.generic.short=ET
+America/Detroit.standard.short=EST
+America/Dominica.daylight.short=ADT
+America/Dominica.generic.short=AT
+America/Dominica.standard.short=AST
+America/Edmonton.daylight.short=MDT
+America/Edmonton.generic.short=MT
+America/Edmonton.standard.short=MST
+America/Eirunepe.daylight.short=ACST
+America/Eirunepe.generic.short=ACT
+America/Eirunepe.standard.short=ACT
+America/El_Salvador.daylight.short=CDT
+America/El_Salvador.generic.short=CT
+America/El_Salvador.standard.short=CST
+America/Ensenada.daylight.short=PDT
+America/Ensenada.generic.short=PT
+America/Ensenada.standard.short=PST
+America/Fortaleza.daylight.short=BRST
+America/Fortaleza.generic.short=BRT
+America/Fortaleza.standard.short=BRT
+America/Fort_Wayne.daylight.short=EDT
+America/Fort_Wayne.generic.short=ET
+America/Fort_Wayne.standard.short=EST
+America/Glace_Bay.daylight.short=ADT
+America/Glace_Bay.generic.short=AT
+America/Glace_Bay.standard.short=AST
+America/Godthab.daylight.short=WGST
+America/Godthab.generic.short=WGT
+America/Godthab.standard.short=WGT
+America/Goose_Bay.daylight.short=ADT
+America/Goose_Bay.generic.short=AT
+America/Goose_Bay.standard.short=AST
+America/Grand_Turk.daylight.short=EDT
+America/Grand_Turk.generic.short=ET
+America/Grand_Turk.standard.short=EST
+America/Grenada.daylight.short=ADT
+America/Grenada.generic.short=AT
+America/Grenada.standard.short=AST
+America/Guadeloupe.daylight.short=ADT
+America/Guadeloupe.generic.short=AT
+America/Guadeloupe.standard.short=AST
+America/Guatemala.daylight.short=CDT
+America/Guatemala.generic.short=CT
+America/Guatemala.standard.short=CST
+America/Guayaquil.daylight.short=ECST
+America/Guayaquil.generic.short=ECT
+America/Guayaquil.standard.short=ECT
+America/Guyana.daylight.short=GYST
+America/Guyana.generic.short=GYT
+America/Guyana.standard.short=GYT
+America/Halifax.daylight.short=ADT
+America/Halifax.generic.short=AT
+America/Halifax.standard.short=AST
+America/Havana.daylight.short=CDT
+America/Havana.generic.short=CT
+America/Havana.standard.short=CST
+America/Hermosillo.daylight.short=MDT
+America/Hermosillo.generic.short=MT
+America/Hermosillo.standard.short=MST
+America/Indiana/Indianapolis.daylight.short=EDT
+America/Indiana/Indianapolis.generic.short=ET
+America/Indiana/Indianapolis.standard.short=EST
+America/Indiana/Knox.daylight.short=CDT
+America/Indiana/Knox.generic.short=CT
+America/Indiana/Knox.standard.short=CST
+America/Indiana/Marengo.daylight.short=EDT
+America/Indiana/Marengo.generic.short=ET
+America/Indiana/Marengo.standard.short=EST
+America/Indiana/Petersburg.daylight.short=EDT
+America/Indiana/Petersburg.generic.short=ET
+America/Indiana/Petersburg.standard.short=EST
+America/Indianapolis.daylight.short=EDT
+America/Indianapolis.generic.short=ET
+America/Indianapolis.standard.short=EST
+America/Indiana/Tell_City.daylight.short=CDT
+America/Indiana/Tell_City.generic.short=CT
+America/Indiana/Tell_City.standard.short=CST
+America/Indiana/Vevay.daylight.short=EDT
+America/Indiana/Vevay.generic.short=ET
+America/Indiana/Vevay.standard.short=EST
+America/Indiana/Vincennes.daylight.short=EDT
+America/Indiana/Vincennes.generic.short=ET
+America/Indiana/Vincennes.standard.short=EST
+America/Indiana/Winamac.daylight.short=EDT
+America/Indiana/Winamac.generic.short=ET
+America/Indiana/Winamac.standard.short=EST
+America/Inuvik.daylight.short=MDT
+America/Inuvik.generic.short=MT
+America/Inuvik.standard.short=MST
+America/Iqaluit.daylight.short=EDT
+America/Iqaluit.generic.short=ET
+America/Iqaluit.standard.short=EST
+America/Jamaica.daylight.short=EDT
+America/Jamaica.generic.short=ET
+America/Jamaica.standard.short=EST
+America/Jujuy.daylight.short=ARST
+America/Jujuy.generic.short=ART
+America/Jujuy.standard.short=ART
+America/Juneau.daylight.short=AKDT
+America/Juneau.generic.short=AKT
+America/Juneau.standard.short=AKST
+America/Kentucky/Louisville.daylight.short=EDT
+America/Kentucky/Louisville.generic.short=ET
+America/Kentucky/Louisville.standard.short=EST
+America/Kentucky/Monticello.daylight.short=EDT
+America/Kentucky/Monticello.generic.short=ET
+America/Kentucky/Monticello.standard.short=EST
+America/Knox_IN.daylight.short=CDT
+America/Knox_IN.generic.short=CT
+America/Knox_IN.standard.short=CST
+America/Kralendijk.daylight.short=ADT
+America/Kralendijk.generic.short=AT
+America/Kralendijk.standard.short=AST
+America/La_Paz.daylight.short=BOST
+America/La_Paz.generic.short=BOT
+America/La_Paz.standard.short=BOT
+America/Lima.daylight.short=PEST
+America/Lima.generic.short=PET
+America/Lima.standard.short=PET
+America/Los_Angeles.daylight.short=PDT
+America/Los_Angeles.generic.short=PT
+America/Los_Angeles.standard.short=PST
+America/Louisville.daylight.short=EDT
+America/Louisville.generic.short=ET
+America/Louisville.standard.short=EST
+America/Lower_Princes.daylight.short=ADT
+America/Lower_Princes.generic.short=AT
+America/Lower_Princes.standard.short=AST
+America/Maceio.daylight.short=BRST
+America/Maceio.generic.short=BRT
+America/Maceio.standard.short=BRT
+America/Managua.daylight.short=CDT
+America/Managua.generic.short=CT
+America/Managua.standard.short=CST
+America/Manaus.daylight.short=AMST
+America/Manaus.generic.short=AMT
+America/Manaus.standard.short=AMT
+America/Marigot.daylight.short=ADT
+America/Marigot.generic.short=AT
+America/Marigot.standard.short=AST
+America/Martinique.daylight.short=ADT
+America/Martinique.generic.short=AT
+America/Martinique.standard.short=AST
+America/Matamoros.daylight.short=CDT
+America/Matamoros.generic.short=CT
+America/Matamoros.standard.short=CST
+America/Mazatlan.daylight.short=MDT
+America/Mazatlan.generic.short=MT
+America/Mazatlan.standard.short=MST
+America/Mendoza.daylight.short=ARST
+America/Mendoza.generic.short=ART
+America/Mendoza.standard.short=ART
+America/Menominee.daylight.short=CDT
+America/Menominee.generic.short=CT
+America/Menominee.standard.short=CST
+America/Merida.daylight.short=CDT
+America/Merida.generic.short=CT
+America/Merida.standard.short=CST
+America/Metlakatla.daylight.short=MeDT
+America/Metlakatla.generic.short=MeT
+America/Metlakatla.standard.short=MeST
+America/Mexico_City.daylight.short=CDT
+America/Mexico_City.generic.short=CT
+America/Mexico_City.standard.short=CST
+America/Miquelon.daylight.short=PMDT
+America/Miquelon.generic.short=PMT
+America/Miquelon.standard.short=PMST
+America/Moncton.daylight.short=ADT
+America/Moncton.generic.short=AT
+America/Moncton.standard.short=AST
+America/Monterrey.daylight.short=CDT
+America/Monterrey.generic.short=CT
+America/Monterrey.standard.short=CST
+America/Montevideo.daylight.short=UYST
+America/Montevideo.generic.short=UYT
+America/Montevideo.standard.short=UYT
+America/Montreal.daylight.short=EDT
+America/Montreal.generic.short=ET
+America/Montreal.standard.short=EST
+America/Montserrat.daylight.short=ADT
+America/Montserrat.generic.short=AT
+America/Montserrat.standard.short=AST
+America/Nassau.daylight.short=EDT
+America/Nassau.generic.short=ET
+America/Nassau.standard.short=EST
+America/New_York.daylight.short=EDT
+America/New_York.generic.short=ET
+America/New_York.standard.short=EST
+America/Nipigon.daylight.short=EDT
+America/Nipigon.generic.short=ET
+America/Nipigon.standard.short=EST
+America/Nome.daylight.short=AKDT
+America/Nome.generic.short=AKT
+America/Nome.standard.short=AKST
+America/Noronha.daylight.short=FNST
+America/Noronha.generic.short=FNT
+America/Noronha.standard.short=FNT
+America/North_Dakota/Beulah.daylight.short=CDT
+America/North_Dakota/Beulah.generic.short=CT
+America/North_Dakota/Beulah.standard.short=CST
+America/North_Dakota/Center.daylight.short=CDT
+America/North_Dakota/Center.generic.short=CT
+America/North_Dakota/Center.standard.short=CST
+America/North_Dakota/New_Salem.daylight.short=CDT
+America/North_Dakota/New_Salem.generic.short=CT
+America/North_Dakota/New_Salem.standard.short=CST
+America/Ojinaga.daylight.short=MDT
+America/Ojinaga.generic.short=MT
+America/Ojinaga.standard.short=MST
+America/Panama.daylight.short=EDT
+America/Panama.generic.short=ET
+America/Panama.standard.short=EST
+America/Pangnirtung.daylight.short=EDT
+America/Pangnirtung.generic.short=ET
+America/Pangnirtung.standard.short=EST
+America/Paramaribo.daylight.short=SRST
+America/Paramaribo.generic.short=SRT
+America/Paramaribo.standard.short=SRT
+America/Phoenix.daylight.short=MDT
+America/Phoenix.generic.short=MT
+America/Phoenix.standard.short=MST
+America/Port-au-Prince.daylight.short=EDT
+America/Port-au-Prince.generic.short=ET
+America/Port-au-Prince.standard.short=EST
+America/Porto_Acre.daylight.short=ACST
+America/Porto_Acre.generic.short=ACT
+America/Porto_Acre.standard.short=ACT
+America/Port_of_Spain.daylight.short=ADT
+America/Port_of_Spain.generic.short=AT
+America/Port_of_Spain.standard.short=AST
+America/Porto_Velho.daylight.short=AMST
+America/Porto_Velho.generic.short=AMT
+America/Porto_Velho.standard.short=AMT
+America/Puerto_Rico.daylight.short=ADT
+America/Puerto_Rico.generic.short=AT
+America/Puerto_Rico.standard.short=AST
+America/Rainy_River.daylight.short=CDT
+America/Rainy_River.generic.short=CT
+America/Rainy_River.standard.short=CST
+America/Rankin_Inlet.daylight.short=CDT
+America/Rankin_Inlet.generic.short=CT
+America/Rankin_Inlet.standard.short=CST
+America/Recife.daylight.short=BRST
+America/Recife.generic.short=BRT
+America/Recife.standard.short=BRT
+America/Regina.daylight.short=CDT
+America/Regina.generic.short=CT
+America/Regina.standard.short=CST
+America/Resolute.daylight.short=CDT
+America/Resolute.generic.short=CT
+America/Resolute.standard.short=CST
+America/Rio_Branco.daylight.short=ACST
+America/Rio_Branco.generic.short=ACT
+America/Rio_Branco.standard.short=ACT
+America/Rosario.daylight.short=ARST
+America/Rosario.generic.short=ART
+America/Rosario.standard.short=ART
+America/Santa_Isabel.daylight.short=PDT
+America/Santa_Isabel.generic.short=PT
+America/Santa_Isabel.standard.short=PST
+America/Santarem.daylight.short=BRST
+America/Santarem.generic.short=BRT
+America/Santarem.standard.short=BRT
+America/Santiago.daylight.short=CLST
+America/Santiago.generic.short=CLT
+America/Santiago.standard.short=CLT
+America/Santo_Domingo.daylight.short=ADT
+America/Santo_Domingo.generic.short=AT
+America/Santo_Domingo.standard.short=AST
+America/Sao_Paulo.daylight.short=BRST
+America/Sao_Paulo.generic.short=BRT
+America/Sao_Paulo.standard.short=BRT
+America/Scoresbysund.daylight.short=EGST
+America/Scoresbysund.generic.short=EGT
+America/Scoresbysund.standard.short=EGT
+America/Shiprock.daylight.short=MDT
+America/Shiprock.generic.short=MT
+America/Shiprock.standard.short=MST
+America/Sitka.daylight.short=AKDT
+America/Sitka.generic.short=AKT
+America/Sitka.standard.short=AKST
+America/St_Barthelemy.daylight.short=ADT
+America/St_Barthelemy.generic.short=AT
+America/St_Barthelemy.standard.short=AST
+America/St_Johns.daylight.short=NDT
+America/St_Johns.generic.short=NT
+America/St_Johns.standard.short=NST
+America/St_Kitts.daylight.short=ADT
+America/St_Kitts.generic.short=AT
+America/St_Kitts.standard.short=AST
+America/St_Lucia.daylight.short=ADT
+America/St_Lucia.generic.short=AT
+America/St_Lucia.standard.short=AST
+America/St_Thomas.daylight.short=ADT
+America/St_Thomas.generic.short=AT
+America/St_Thomas.standard.short=AST
+America/St_Vincent.daylight.short=ADT
+America/St_Vincent.generic.short=AT
+America/St_Vincent.standard.short=AST
+America/Swift_Current.daylight.short=CDT
+America/Swift_Current.generic.short=CT
+America/Swift_Current.standard.short=CST
+America/Tegucigalpa.daylight.short=CDT
+America/Tegucigalpa.generic.short=CT
+America/Tegucigalpa.standard.short=CST
+America/Thule.daylight.short=ADT
+America/Thule.generic.short=AT
+America/Thule.standard.short=AST
+America/Thunder_Bay.daylight.short=EDT
+America/Thunder_Bay.generic.short=ET
+America/Thunder_Bay.standard.short=EST
+America/Tijuana.daylight.short=PDT
+America/Tijuana.generic.short=PT
+America/Tijuana.standard.short=PST
+America/Toronto.daylight.short=EDT
+America/Toronto.generic.short=ET
+America/Toronto.standard.short=EST
+America/Tortola.daylight.short=ADT
+America/Tortola.generic.short=AT
+America/Tortola.standard.short=AST
+America/Vancouver.daylight.short=PDT
+America/Vancouver.generic.short=PT
+America/Vancouver.standard.short=PST
+America/Virgin.daylight.short=ADT
+America/Virgin.generic.short=AT
+America/Virgin.standard.short=AST
+America/Whitehorse.daylight.short=PDT
+America/Whitehorse.generic.short=PT
+America/Whitehorse.standard.short=PST
+America/Winnipeg.daylight.short=CDT
+America/Winnipeg.generic.short=CT
+America/Winnipeg.standard.short=CST
+America/Yakutat.daylight.short=AKDT
+America/Yakutat.generic.short=AKT
+America/Yakutat.standard.short=AKST
+America/Yellowknife.daylight.short=MDT
+America/Yellowknife.generic.short=MT
+America/Yellowknife.standard.short=MST
+Antarctica/Casey.daylight.short=WST
+Antarctica/Casey.generic.short=WT
+Antarctica/Casey.standard.short=WST
+Antarctica/Davis.daylight.short=DAVST
+Antarctica/Davis.generic.short=DAVT
+Antarctica/Davis.standard.short=DAVT
+Antarctica/DumontDUrville.daylight.short=DDUST
+Antarctica/DumontDUrville.generic.short=DDUT
+Antarctica/DumontDUrville.standard.short=DDUT
+Antarctica/Macquarie.daylight.short=MIST
+Antarctica/Macquarie.generic.short=MIST
+Antarctica/Macquarie.standard.short=MIST
+Antarctica/Mawson.daylight.short=MAWST
+Antarctica/Mawson.generic.short=MAWT
+Antarctica/Mawson.standard.short=MAWT
+Antarctica/McMurdo.daylight.short=NZDT
+Antarctica/McMurdo.generic.short=NZT
+Antarctica/McMurdo.standard.short=NZST
+Antarctica/Palmer.daylight.short=CLST
+Antarctica/Palmer.generic.short=CLT
+Antarctica/Palmer.standard.short=CLT
+Antarctica/Rothera.daylight.short=ROTST
+Antarctica/Rothera.generic.short=ROTT
+Antarctica/Rothera.standard.short=ROTT
+Antarctica/South_Pole.daylight.short=NZDT
+Antarctica/South_Pole.generic.short=NZT
+Antarctica/South_Pole.standard.short=NZST
+Antarctica/Syowa.daylight.short=SYOST
+Antarctica/Syowa.generic.short=SYOT
+Antarctica/Syowa.standard.short=SYOT
+Antarctica/Vostok.daylight.short=VOSST
+Antarctica/Vostok.generic.short=VOST
+Antarctica/Vostok.standard.short=VOST
+Arctic/Longyearbyen.daylight.short=MESZ
+Arctic/Longyearbyen.generic.short=MEZ
+Arctic/Longyearbyen.standard.short=MEZ
+ART.daylight.short=OESZ
+ART.generic.short=OEZ
+ART.standard.short=OEZ
+Asia/Aden.daylight.short=ADT
+Asia/Aden.generic.short=AT
+Asia/Aden.standard.short=AST
+Asia/Almaty.daylight.short=ALMST
+Asia/Almaty.generic.short=ALMT
+Asia/Almaty.standard.short=ALMT
+Asia/Amman.daylight.short=ADT
+Asia/Amman.generic.short=AT
+Asia/Amman.standard.short=AST
+Asia/Anadyr.daylight.short=ANAST
+Asia/Anadyr.generic.short=ANAT
+Asia/Anadyr.standard.short=ANAT
+Asia/Aqtau.daylight.short=AQTST
+Asia/Aqtau.generic.short=AQTT
+Asia/Aqtau.standard.short=AQTT
+Asia/Aqtobe.daylight.short=AQTST
+Asia/Aqtobe.generic.short=AQTT
+Asia/Aqtobe.standard.short=AQTT
+Asia/Ashgabat.daylight.short=TMST
+Asia/Ashgabat.generic.short=TMT
+Asia/Ashgabat.standard.short=TMT
+Asia/Ashkhabad.daylight.short=TMST
+Asia/Ashkhabad.generic.short=TMT
+Asia/Ashkhabad.standard.short=TMT
+Asia/Baghdad.daylight.short=ADT
+Asia/Baghdad.generic.short=AT
+Asia/Baghdad.standard.short=AST
+Asia/Bahrain.daylight.short=ADT
+Asia/Bahrain.generic.short=AT
+Asia/Bahrain.standard.short=AST
+Asia/Baku.daylight.short=AZST
+Asia/Baku.generic.short=AZT
+Asia/Baku.standard.short=AZT
+Asia/Bangkok.daylight.short=ICST
+Asia/Bangkok.generic.short=ICT
+Asia/Bangkok.standard.short=ICT
+Asia/Beirut.daylight.short=OESZ
+Asia/Beirut.generic.short=OEZ
+Asia/Beirut.standard.short=OEZ
+Asia/Bishkek.daylight.short=KGST
+Asia/Bishkek.generic.short=KGT
+Asia/Bishkek.standard.short=KGT
+Asia/Brunei.daylight.short=BNST
+Asia/Brunei.generic.short=BNT
+Asia/Brunei.standard.short=BNT
+Asia/Calcutta.daylight.short=IDT
+Asia/Calcutta.generic.short=IT
+Asia/Calcutta.standard.short=IST
+Asia/Choibalsan.daylight.short=CHOST
+Asia/Choibalsan.generic.short=CHOT
+Asia/Choibalsan.standard.short=CHOT
+Asia/Chongqing.daylight.short=CDT
+Asia/Chongqing.generic.short=CT
+Asia/Chongqing.standard.short=CST
+Asia/Chungking.daylight.short=CDT
+Asia/Chungking.generic.short=CT
+Asia/Chungking.standard.short=CST
+Asia/Colombo.daylight.short=IDT
+Asia/Colombo.generic.short=IT
+Asia/Colombo.standard.short=IST
+Asia/Dacca.daylight.short=BDST
+Asia/Dacca.generic.short=BDT
+Asia/Dacca.standard.short=BDT
+Asia/Damascus.daylight.short=OESZ
+Asia/Damascus.generic.short=OEZ
+Asia/Damascus.standard.short=OEZ
+Asia/Dhaka.daylight.short=BDST
+Asia/Dhaka.generic.short=BDT
+Asia/Dhaka.standard.short=BDT
+Asia/Dili.daylight.short=TLST
+Asia/Dili.generic.short=TLT
+Asia/Dili.standard.short=TLT
+Asia/Dubai.daylight.short=GDT
+Asia/Dubai.generic.short=GT
+Asia/Dubai.standard.short=GST
+Asia/Dushanbe.daylight.short=TJST
+Asia/Dushanbe.generic.short=TJT
+Asia/Dushanbe.standard.short=TJT
+Asia/Gaza.daylight.short=OESZ
+Asia/Gaza.generic.short=OEZ
+Asia/Gaza.standard.short=OEZ
+Asia/Harbin.daylight.short=CDT
+Asia/Harbin.generic.short=CT
+Asia/Harbin.standard.short=CST
+Asia/Hebron.daylight.short=OESZ
+Asia/Hebron.generic.short=OEZ
+Asia/Hebron.standard.short=OEZ
+Asia/Ho_Chi_Minh.daylight.short=ICST
+Asia/Ho_Chi_Minh.generic.short=ICT
+Asia/Ho_Chi_Minh.standard.short=ICT
+Asia/Hong_Kong.daylight.short=HKST
+Asia/Hong_Kong.generic.short=HKT
+Asia/Hong_Kong.standard.short=HKT
+Asia/Hovd.daylight.short=HOVST
+Asia/Hovd.generic.short=HOVT
+Asia/Hovd.standard.short=HOVT
+Asia/Irkutsk.daylight.short=IRKST
+Asia/Irkutsk.generic.short=IRKT
+Asia/Irkutsk.standard.short=IRKT
+Asia/Istanbul.daylight.short=OESZ
+Asia/Istanbul.generic.short=OEZ
+Asia/Istanbul.standard.short=OEZ
+Asia/Jakarta.daylight.short=WIST
+Asia/Jakarta.generic.short=WIB
+Asia/Jakarta.standard.short=WIB
+Asia/Jayapura.daylight.short=EIST
+Asia/Jayapura.generic.short=WIT
+Asia/Jayapura.standard.short=WIT
+Asia/Jerusalem.daylight.short=IDT
+Asia/Jerusalem.generic.short=IT
+Asia/Jerusalem.standard.short=IST
+Asia/Kabul.daylight.short=AFST
+Asia/Kabul.generic.short=AFT
+Asia/Kabul.standard.short=AFT
+Asia/Kamchatka.daylight.short=PETST
+Asia/Kamchatka.generic.short=PETT
+Asia/Kamchatka.standard.short=PETT
+Asia/Karachi.daylight.short=PKST
+Asia/Karachi.generic.short=PKT
+Asia/Karachi.standard.short=PKT
+Asia/Kashgar.daylight.short=CDT
+Asia/Kashgar.generic.short=CT
+Asia/Kashgar.standard.short=CST
+Asia/Kathmandu.daylight.short=NPST
+Asia/Kathmandu.generic.short=NPT
+Asia/Kathmandu.standard.short=NPT
+Asia/Katmandu.daylight.short=NPST
+Asia/Katmandu.generic.short=NPT
+Asia/Katmandu.standard.short=NPT
+Asia/Khandyga.daylight.short=YAKST
+Asia/Khandyga.generic.short=YAKT
+Asia/Khandyga.standard.short=YAKT
+Asia/Kolkata.daylight.short=IDT
+Asia/Kolkata.generic.short=IT
+Asia/Kolkata.standard.short=IST
+Asia/Krasnoyarsk.daylight.short=KRAST
+Asia/Krasnoyarsk.generic.short=KRAT
+Asia/Krasnoyarsk.standard.short=KRAT
+Asia/Kuala_Lumpur.daylight.short=MYST
+Asia/Kuala_Lumpur.generic.short=MYT
+Asia/Kuala_Lumpur.standard.short=MYT
+Asia/Kuching.daylight.short=MYST
+Asia/Kuching.generic.short=MYT
+Asia/Kuching.standard.short=MYT
+Asia/Kuwait.daylight.short=ADT
+Asia/Kuwait.generic.short=AT
+Asia/Kuwait.standard.short=AST
+Asia/Macao.daylight.short=CDT
+Asia/Macao.generic.short=CT
+Asia/Macao.standard.short=CST
+Asia/Macau.daylight.short=CDT
+Asia/Macau.generic.short=CT
+Asia/Macau.standard.short=CST
+Asia/Magadan.daylight.short=MAGST
+Asia/Magadan.generic.short=MAGT
+Asia/Magadan.standard.short=MAGT
+Asia/Makassar.daylight.short=CIST
+Asia/Makassar.generic.short=WITA
+Asia/Makassar.standard.short=WITA
+Asia/Manila.daylight.short=PHST
+Asia/Manila.generic.short=PHT
+Asia/Manila.standard.short=PHT
+Asia/Muscat.daylight.short=GDT
+Asia/Muscat.generic.short=GT
+Asia/Muscat.standard.short=GST
+Asia/Nicosia.daylight.short=OESZ
+Asia/Nicosia.generic.short=OEZ
+Asia/Nicosia.standard.short=OEZ
+Asia/Novokuznetsk.daylight.short=NOVST
+Asia/Novokuznetsk.generic.short=NOVT
+Asia/Novokuznetsk.standard.short=NOVT
+Asia/Novosibirsk.daylight.short=NOVST
+Asia/Novosibirsk.generic.short=NOVT
+Asia/Novosibirsk.standard.short=NOVT
+Asia/Omsk.daylight.short=OMSST
+Asia/Omsk.generic.short=OMST
+Asia/Omsk.standard.short=OMST
+Asia/Oral.daylight.short=ORAST
+Asia/Oral.generic.short=ORAT
+Asia/Oral.standard.short=ORAT
+Asia/Phnom_Penh.daylight.short=ICST
+Asia/Phnom_Penh.generic.short=ICT
+Asia/Phnom_Penh.standard.short=ICT
+Asia/Pontianak.daylight.short=WIST
+Asia/Pontianak.generic.short=WIB
+Asia/Pontianak.standard.short=WIB
+Asia/Pyongyang.daylight.short=KDT
+Asia/Pyongyang.generic.short=KT
+Asia/Pyongyang.standard.short=KST
+Asia/Qatar.daylight.short=ADT
+Asia/Qatar.generic.short=AT
+Asia/Qatar.standard.short=AST
+Asia/Qyzylorda.daylight.short=QYZST
+Asia/Qyzylorda.generic.short=QYZT
+Asia/Qyzylorda.standard.short=QYZT
+Asia/Rangoon.daylight.short=MMST
+Asia/Rangoon.generic.short=MMT
+Asia/Rangoon.standard.short=MMT
+Asia/Saigon.daylight.short=ICST
+Asia/Saigon.generic.short=ICT
+Asia/Saigon.standard.short=ICT
+Asia/Sakhalin.daylight.short=SAKST
+Asia/Sakhalin.generic.short=SAKT
+Asia/Sakhalin.standard.short=SAKT
+Asia/Samarkand.daylight.short=UZST
+Asia/Samarkand.generic.short=UZT
+Asia/Samarkand.standard.short=UZT
+Asia/Seoul.daylight.short=KDT
+Asia/Seoul.generic.short=KT
+Asia/Seoul.standard.short=KST
+Asia/Shanghai.daylight.short=CDT
+Asia/Shanghai.generic.short=CT
+Asia/Shanghai.standard.short=CST
+Asia/Singapore.daylight.short=SGST
+Asia/Singapore.generic.short=SGT
+Asia/Singapore.standard.short=SGT
+Asia/Taipei.daylight.short=CDT
+Asia/Taipei.generic.short=CT
+Asia/Taipei.standard.short=CST
+Asia/Tashkent.daylight.short=UZST
+Asia/Tashkent.generic.short=UZT
+Asia/Tashkent.standard.short=UZT
+Asia/Tbilisi.daylight.short=GEST
+Asia/Tbilisi.generic.short=GET
+Asia/Tbilisi.standard.short=GET
+Asia/Tehran.daylight.short=IRDT
+Asia/Tehran.generic.short=IRT
+Asia/Tehran.standard.short=IRST
+Asia/Tel_Aviv.daylight.short=IDT
+Asia/Tel_Aviv.generic.short=IT
+Asia/Tel_Aviv.standard.short=IST
+Asia/Thimbu.daylight.short=BTST
+Asia/Thimbu.generic.short=BTT
+Asia/Thimbu.standard.short=BTT
+Asia/Thimphu.daylight.short=BTST
+Asia/Thimphu.generic.short=BTT
+Asia/Thimphu.standard.short=BTT
+Asia/Tokyo.daylight.short=JDT
+Asia/Tokyo.generic.short=JT
+Asia/Tokyo.standard.short=JST
+Asia/Ujung_Pandang.daylight.short=CIST
+Asia/Ujung_Pandang.generic.short=WITA
+Asia/Ujung_Pandang.standard.short=WITA
+Asia/Ulaanbaatar.daylight.short=ULAST
+Asia/Ulaanbaatar.generic.short=ULAT
+Asia/Ulaanbaatar.standard.short=ULAT
+Asia/Ulan_Bator.daylight.short=ULAST
+Asia/Ulan_Bator.generic.short=ULAT
+Asia/Ulan_Bator.standard.short=ULAT
+Asia/Urumqi.daylight.short=CDT
+Asia/Urumqi.generic.short=CT
+Asia/Urumqi.standard.short=CST
+Asia/Ust-Nera.daylight.short=VLAST
+Asia/Ust-Nera.generic.short=VLAT
+Asia/Ust-Nera.standard.short=VLAT
+Asia/Vientiane.daylight.short=ICST
+Asia/Vientiane.generic.short=ICT
+Asia/Vientiane.standard.short=ICT
+Asia/Vladivostok.daylight.short=VLAST
+Asia/Vladivostok.generic.short=VLAT
+Asia/Vladivostok.standard.short=VLAT
+Asia/Yakutsk.daylight.short=YAKST
+Asia/Yakutsk.generic.short=YAKT
+Asia/Yakutsk.standard.short=YAKT
+Asia/Yekaterinburg.daylight.short=YEKST
+Asia/Yekaterinburg.generic.short=YEKT
+Asia/Yekaterinburg.standard.short=YEKT
+Asia/Yerevan.daylight.short=AMST
+Asia/Yerevan.generic.short=AMT
+Asia/Yerevan.standard.short=AMT
+AST.daylight.short=AKDT
+AST.generic.short=AKT
+AST.standard.short=AKST
+Atlantic/Azores.daylight.short=AZOST
+Atlantic/Azores.generic.short=AZOT
+Atlantic/Azores.standard.short=AZOT
+Atlantic/Bermuda.daylight.short=ADT
+Atlantic/Bermuda.generic.short=AT
+Atlantic/Bermuda.standard.short=AST
+Atlantic/Canary.daylight.short=WESZ
+Atlantic/Canary.generic.short=WEZ
+Atlantic/Canary.standard.short=WEZ
+Atlantic/Cape_Verde.daylight.short=CVST
+Atlantic/Cape_Verde.generic.short=CVT
+Atlantic/Cape_Verde.standard.short=CVT
+Atlantic/Faeroe.daylight.short=WESZ
+Atlantic/Faeroe.generic.short=WEZ
+Atlantic/Faeroe.standard.short=WEZ
+Atlantic/Faroe.daylight.short=WESZ
+Atlantic/Faroe.generic.short=WEZ
+Atlantic/Faroe.standard.short=WEZ
+Atlantic/Jan_Mayen.daylight.short=MESZ
+Atlantic/Jan_Mayen.generic.short=MEZ
+Atlantic/Jan_Mayen.standard.short=MEZ
+Atlantic/Madeira.daylight.short=WESZ
+Atlantic/Madeira.generic.short=WEZ
+Atlantic/Madeira.standard.short=WEZ
+Atlantic/Reykjavik.daylight.short=GMT
+Atlantic/Reykjavik.generic.short=GMT
+Atlantic/Reykjavik.standard.short=GMT
+Atlantic/South_Georgia.daylight.short=GDT
+Atlantic/South_Georgia.generic.short=GT
+Atlantic/South_Georgia.standard.short=GST
+Atlantic/Stanley.daylight.short=FKST
+Atlantic/Stanley.generic.short=FKT
+Atlantic/Stanley.standard.short=FKT
+Atlantic/St_Helena.daylight.short=GMT
+Atlantic/St_Helena.generic.short=GMT
+Atlantic/St_Helena.standard.short=GMT
+Australia/ACT.daylight.short=EST
+Australia/ACT.generic.short=ET
+Australia/ACT.standard.short=EST
+Australia/Adelaide.daylight.short=CST
+Australia/Adelaide.generic.short=CT
+Australia/Adelaide.standard.short=CST
+Australia/Brisbane.daylight.short=EST
+Australia/Brisbane.generic.short=ET
+Australia/Brisbane.standard.short=EST
+Australia/Broken_Hill.daylight.short=CST
+Australia/Broken_Hill.generic.short=CT
+Australia/Broken_Hill.standard.short=CST
+Australia/Canberra.daylight.short=EST
+Australia/Canberra.generic.short=ET
+Australia/Canberra.standard.short=EST
+Australia/Currie.daylight.short=EST
+Australia/Currie.generic.short=ET
+Australia/Currie.standard.short=EST
+Australia/Darwin.daylight.short=CST
+Australia/Darwin.generic.short=CT
+Australia/Darwin.standard.short=CST
+Australia/Eucla.daylight.short=CWST
+Australia/Eucla.generic.short=CWT
+Australia/Eucla.standard.short=CWST
+Australia/Hobart.daylight.short=EST
+Australia/Hobart.generic.short=ET
+Australia/Hobart.standard.short=EST
+Australia/LHI.daylight.short=LHST
+Australia/LHI.generic.short=LHT
+Australia/LHI.standard.short=LHST
+Australia/Lindeman.daylight.short=EST
+Australia/Lindeman.generic.short=ET
+Australia/Lindeman.standard.short=EST
+Australia/Lord_Howe.daylight.short=LHST
+Australia/Lord_Howe.generic.short=LHT
+Australia/Lord_Howe.standard.short=LHST
+Australia/Melbourne.daylight.short=EST
+Australia/Melbourne.generic.short=ET
+Australia/Melbourne.standard.short=EST
+Australia/North.daylight.short=CST
+Australia/North.generic.short=CT
+Australia/North.standard.short=CST
+Australia/NSW.daylight.short=EST
+Australia/NSW.generic.short=ET
+Australia/NSW.standard.short=EST
+Australia/Perth.daylight.short=WST
+Australia/Perth.generic.short=WT
+Australia/Perth.standard.short=WST
+Australia/Queensland.daylight.short=EST
+Australia/Queensland.generic.short=ET
+Australia/Queensland.standard.short=EST
+Australia/South.daylight.short=CST
+Australia/South.generic.short=CT
+Australia/South.standard.short=CST
+Australia/Sydney.daylight.short=EST
+Australia/Sydney.generic.short=ET
+Australia/Sydney.standard.short=EST
+Australia/Tasmania.daylight.short=EST
+Australia/Tasmania.generic.short=ET
+Australia/Tasmania.standard.short=EST
+Australia/Victoria.daylight.short=EST
+Australia/Victoria.generic.short=ET
+Australia/Victoria.standard.short=EST
+Australia/West.daylight.short=WST
+Australia/West.generic.short=WT
+Australia/West.standard.short=WST
+Australia/Yancowinna.daylight.short=CST
+Australia/Yancowinna.generic.short=CT
+Australia/Yancowinna.standard.short=CST
+BET.daylight.short=BRST
+BET.generic.short=BRT
+BET.standard.short=BRT
+Brazil/Acre.daylight.short=ACST
+Brazil/Acre.generic.short=ACT
+Brazil/Acre.standard.short=ACT
+Brazil/DeNoronha.daylight.short=FNST
+Brazil/DeNoronha.generic.short=FNT
+Brazil/DeNoronha.standard.short=FNT
+Brazil/East.daylight.short=BRST
+Brazil/East.generic.short=BRT
+Brazil/East.standard.short=BRT
+Brazil/West.daylight.short=AMST
+Brazil/West.generic.short=AMT
+Brazil/West.standard.short=AMT
+BST.daylight.short=BDST
+BST.generic.short=BDT
+BST.standard.short=BDT
+Canada/Atlantic.daylight.short=ADT
+Canada/Atlantic.generic.short=AT
+Canada/Atlantic.standard.short=AST
+Canada/Central.daylight.short=CDT
+Canada/Central.generic.short=CT
+Canada/Central.standard.short=CST
+Canada/Eastern.daylight.short=EDT
+Canada/Eastern.generic.short=ET
+Canada/Eastern.standard.short=EST
+Canada/East-Saskatchewan.daylight.short=CDT
+Canada/East-Saskatchewan.generic.short=CT
+Canada/East-Saskatchewan.standard.short=CST
+Canada/Mountain.daylight.short=MDT
+Canada/Mountain.generic.short=MT
+Canada/Mountain.standard.short=MST
+Canada/Newfoundland.daylight.short=NDT
+Canada/Newfoundland.generic.short=NT
+Canada/Newfoundland.standard.short=NST
+Canada/Pacific.daylight.short=PDT
+Canada/Pacific.generic.short=PT
+Canada/Pacific.standard.short=PST
+Canada/Saskatchewan.daylight.short=CDT
+Canada/Saskatchewan.generic.short=CT
+Canada/Saskatchewan.standard.short=CST
+Canada/Yukon.daylight.short=PDT
+Canada/Yukon.generic.short=PT
+Canada/Yukon.standard.short=PST
+CAT.daylight.short=CAST
+CAT.generic.short=CAT
+CAT.standard.short=CAT
+CET.daylight.short=MESZ
+CET.generic.short=MEZ
+CET.standard.short=MEZ
+Chile/Continental.daylight.short=CLST
+Chile/Continental.generic.short=CLT
+Chile/Continental.standard.short=CLT
+Chile/EasterIsland.daylight.short=EASST
+Chile/EasterIsland.generic.short=EAST
+Chile/EasterIsland.standard.short=EAST
+CNT.daylight.short=NDT
+CNT.generic.short=NT
+CNT.standard.short=NST
+CST6CDT.daylight.short=CDT
+CST6CDT.generic.short=CT
+CST6CDT.standard.short=CST
+CST.daylight.short=CDT
+CST.generic.short=CT
+CST.standard.short=CST
+CTT.daylight.short=CDT
+CTT.generic.short=CT
+CTT.standard.short=CST
+Cuba.daylight.short=CDT
+Cuba.generic.short=CT
+Cuba.standard.short=CST
+EAT.daylight.short=EAST
+EAT.generic.short=EAT
+EAT.standard.short=EAT
+ECT.daylight.short=MESZ
+ECT.generic.short=MEZ
+ECT.standard.short=MEZ
+EET.daylight.short=OESZ
+EET.generic.short=OEZ
+EET.standard.short=OEZ
+Egypt.daylight.short=OESZ
+Egypt.generic.short=OEZ
+Egypt.standard.short=OEZ
+Eire.daylight.short=IST
+Eire.generic.short=IT
+Eire.standard.short=GMT
+EST5EDT.daylight.short=EDT
+EST5EDT.generic.short=ET
+EST5EDT.standard.short=EST
+EST.daylight.short=EDT
+EST.generic.short=ET
+EST.standard.short=EST
+Etc/Greenwich.daylight.short=GMT
+Etc/Greenwich.generic.short=GMT
+Etc/Greenwich.standard.short=GMT
+Etc/UCT.daylight.short=UTC
+Etc/UCT.generic.short=UTC
+Etc/UCT.standard.short=UTC
+Etc/Universal.daylight.short=UTC
+Etc/Universal.generic.short=UTC
+Etc/Universal.standard.short=UTC
+Etc/UTC.daylight.short=UTC
+Etc/UTC.generic.short=UTC
+Etc/UTC.standard.short=UTC
+Etc/Zulu.daylight.short=UTC
+Etc/Zulu.generic.short=UTC
+Etc/Zulu.standard.short=UTC
+Europe/Amsterdam.daylight.short=MESZ
+Europe/Amsterdam.generic.short=MEZ
+Europe/Amsterdam.standard.short=MEZ
+Europe/Andorra.daylight.short=MESZ
+Europe/Andorra.generic.short=MEZ
+Europe/Andorra.standard.short=MEZ
+Europe/Athens.daylight.short=OESZ
+Europe/Athens.generic.short=OEZ
+Europe/Athens.standard.short=OEZ
+Europe/Belfast.daylight.short=BST
+Europe/Belfast.generic.short=BT
+Europe/Belfast.standard.short=GMT
+Europe/Belgrade.daylight.short=MESZ
+Europe/Belgrade.generic.short=MEZ
+Europe/Belgrade.standard.short=MEZ
+Europe/Berlin.daylight.short=MESZ
+Europe/Berlin.generic.short=MEZ
+Europe/Berlin.standard.short=MEZ
+Europe/Bratislava.daylight.short=MESZ
+Europe/Bratislava.generic.short=MEZ
+Europe/Bratislava.standard.short=MEZ
+Europe/Brussels.daylight.short=MESZ
+Europe/Brussels.generic.short=MEZ
+Europe/Brussels.standard.short=MEZ
+Europe/Bucharest.daylight.short=OESZ
+Europe/Bucharest.generic.short=OEZ
+Europe/Bucharest.standard.short=OEZ
+Europe/Budapest.daylight.short=MESZ
+Europe/Budapest.generic.short=MEZ
+Europe/Budapest.standard.short=MEZ
+Europe/Busingen.daylight.short=MESZ
+Europe/Busingen.generic.short=MEZ
+Europe/Busingen.standard.short=MEZ
+Europe/Chisinau.daylight.short=OESZ
+Europe/Chisinau.generic.short=OEZ
+Europe/Chisinau.standard.short=OEZ
+Europe/Copenhagen.daylight.short=MESZ
+Europe/Copenhagen.generic.short=MEZ
+Europe/Copenhagen.standard.short=MEZ
+Europe/Dublin.daylight.short=IST
+Europe/Dublin.generic.short=IT
+Europe/Dublin.standard.short=GMT
+Europe/Gibraltar.daylight.short=MESZ
+Europe/Gibraltar.generic.short=MEZ
+Europe/Gibraltar.standard.short=MEZ
+Europe/Guernsey.daylight.short=BST
+Europe/Guernsey.generic.short=BT
+Europe/Guernsey.standard.short=GMT
+Europe/Helsinki.daylight.short=OESZ
+Europe/Helsinki.generic.short=OEZ
+Europe/Helsinki.standard.short=OEZ
+Europe/Isle_of_Man.daylight.short=BST
+Europe/Isle_of_Man.generic.short=BT
+Europe/Isle_of_Man.standard.short=GMT
+Europe/Istanbul.daylight.short=OESZ
+Europe/Istanbul.generic.short=OEZ
+Europe/Istanbul.standard.short=OEZ
+Europe/Jersey.daylight.short=BST
+Europe/Jersey.generic.short=BT
+Europe/Jersey.standard.short=GMT
+Europe/Kaliningrad.daylight.short=FEST
+Europe/Kaliningrad.generic.short=FET
+Europe/Kaliningrad.standard.short=FET
+Europe/Kiev.daylight.short=OESZ
+Europe/Kiev.generic.short=OEZ
+Europe/Kiev.standard.short=OEZ
+Europe/Lisbon.daylight.short=WESZ
+Europe/Lisbon.generic.short=WEZ
+Europe/Lisbon.standard.short=WEZ
+Europe/Ljubljana.daylight.short=MESZ
+Europe/Ljubljana.generic.short=MEZ
+Europe/Ljubljana.standard.short=MEZ
+Europe/London.daylight.short=BST
+Europe/London.generic.short=BT
+Europe/London.standard.short=GMT
+Europe/Luxembourg.daylight.short=MESZ
+Europe/Luxembourg.generic.short=MEZ
+Europe/Luxembourg.standard.short=MEZ
+Europe/Madrid.daylight.short=MESZ
+Europe/Madrid.generic.short=MEZ
+Europe/Madrid.standard.short=MEZ
+Europe/Malta.daylight.short=MESZ
+Europe/Malta.generic.short=MEZ
+Europe/Malta.standard.short=MEZ
+Europe/Mariehamn.daylight.short=OESZ
+Europe/Mariehamn.generic.short=OEZ
+Europe/Mariehamn.standard.short=OEZ
+Europe/Minsk.daylight.short=FEST
+Europe/Minsk.generic.short=FET
+Europe/Minsk.standard.short=FET
+Europe/Monaco.daylight.short=MESZ
+Europe/Monaco.generic.short=MEZ
+Europe/Monaco.standard.short=MEZ
+Europe/Moscow.daylight.short=MSD
+Europe/Moscow.generic.short=MT
+Europe/Moscow.standard.short=MSK
+Europe/Nicosia.daylight.short=OESZ
+Europe/Nicosia.generic.short=OEZ
+Europe/Nicosia.standard.short=OEZ
+Europe/Oslo.daylight.short=MESZ
+Europe/Oslo.generic.short=MEZ
+Europe/Oslo.standard.short=MEZ
+Europe/Paris.daylight.short=MESZ
+Europe/Paris.generic.short=MEZ
+Europe/Paris.standard.short=MEZ
+Europe/Podgorica.daylight.short=MESZ
+Europe/Podgorica.generic.short=MEZ
+Europe/Podgorica.standard.short=MEZ
+Europe/Prague.daylight.short=MESZ
+Europe/Prague.generic.short=MEZ
+Europe/Prague.standard.short=MEZ
+Europe/Riga.daylight.short=OESZ
+Europe/Riga.generic.short=OEZ
+Europe/Riga.standard.short=OEZ
+Europe/Rome.daylight.short=MESZ
+Europe/Rome.generic.short=MEZ
+Europe/Rome.standard.short=MEZ
+Europe/Samara.daylight.short=SAMST
+Europe/Samara.generic.short=SAMT
+Europe/Samara.standard.short=SAMT
+Europe/San_Marino.daylight.short=MESZ
+Europe/San_Marino.generic.short=MEZ
+Europe/San_Marino.standard.short=MEZ
+Europe/Sarajevo.daylight.short=MESZ
+Europe/Sarajevo.generic.short=MEZ
+Europe/Sarajevo.standard.short=MEZ
+Europe/Simferopol.daylight.short=OESZ
+Europe/Simferopol.generic.short=OEZ
+Europe/Simferopol.standard.short=OEZ
+Europe/Skopje.daylight.short=MESZ
+Europe/Skopje.generic.short=MEZ
+Europe/Skopje.standard.short=MEZ
+Europe/Sofia.daylight.short=OESZ
+Europe/Sofia.generic.short=OEZ
+Europe/Sofia.standard.short=OEZ
+Europe/Stockholm.daylight.short=MESZ
+Europe/Stockholm.generic.short=MEZ
+Europe/Stockholm.standard.short=MEZ
+Europe/Tallinn.daylight.short=OESZ
+Europe/Tallinn.generic.short=OEZ
+Europe/Tallinn.standard.short=OEZ
+Europe/Tirane.daylight.short=MESZ
+Europe/Tirane.generic.short=MEZ
+Europe/Tirane.standard.short=MEZ
+Europe/Tiraspol.daylight.short=OESZ
+Europe/Tiraspol.generic.short=OEZ
+Europe/Tiraspol.standard.short=OEZ
+Europe/Uzhgorod.daylight.short=OESZ
+Europe/Uzhgorod.generic.short=OEZ
+Europe/Uzhgorod.standard.short=OEZ
+Europe/Vaduz.daylight.short=MESZ
+Europe/Vaduz.generic.short=MEZ
+Europe/Vaduz.standard.short=MEZ
+Europe/Vatican.daylight.short=MESZ
+Europe/Vatican.generic.short=MEZ
+Europe/Vatican.standard.short=MEZ
+Europe/Vienna.daylight.short=MESZ
+Europe/Vienna.generic.short=MEZ
+Europe/Vienna.standard.short=MEZ
+Europe/Vilnius.daylight.short=OESZ
+Europe/Vilnius.generic.short=OEZ
+Europe/Vilnius.standard.short=OEZ
+Europe/Volgograd.daylight.short=VOLST
+Europe/Volgograd.generic.short=VOLT
+Europe/Volgograd.standard.short=VOLT
+Europe/Warsaw.daylight.short=MESZ
+Europe/Warsaw.generic.short=MEZ
+Europe/Warsaw.standard.short=MEZ
+Europe/Zagreb.daylight.short=MESZ
+Europe/Zagreb.generic.short=MEZ
+Europe/Zagreb.standard.short=MEZ
+Europe/Zaporozhye.daylight.short=OESZ
+Europe/Zaporozhye.generic.short=OEZ
+Europe/Zaporozhye.standard.short=OEZ
+Europe/Zurich.daylight.short=MESZ
+Europe/Zurich.generic.short=MEZ
+Europe/Zurich.standard.short=MEZ
+GB.daylight.short=BST
+GB-Eire.daylight.short=BST
+GB-Eire.generic.short=BT
+GB-Eire.standard.short=GMT
+GB.generic.short=BT
+GB.standard.short=GMT
+GMT.daylight.short=GMT
+GMT.generic.short=GMT
+GMT.standard.short=GMT
+Greenwich.daylight.short=GMT
+Greenwich.generic.short=GMT
+Greenwich.standard.short=GMT
+Hongkong.daylight.short=HKST
+Hongkong.generic.short=HKT
+Hongkong.standard.short=HKT
+HST.daylight.short=HDT
+HST.generic.short=HT
+HST.standard.short=HST
+Iceland.daylight.short=GMT
+Iceland.generic.short=GMT
+Iceland.standard.short=GMT
+IET.daylight.short=EDT
+IET.generic.short=ET
+IET.standard.short=EST
+Indian/Antananarivo.daylight.short=EAST
+Indian/Antananarivo.generic.short=EAT
+Indian/Antananarivo.standard.short=EAT
+Indian/Chagos.daylight.short=IOST
+Indian/Chagos.generic.short=IOT
+Indian/Chagos.standard.short=IOT
+Indian/Christmas.daylight.short=CXST
+Indian/Christmas.generic.short=CIT
+Indian/Christmas.standard.short=CXT
+Indian/Cocos.daylight.short=CCST
+Indian/Cocos.generic.short=CCT
+Indian/Cocos.standard.short=CCT
+Indian/Comoro.daylight.short=EAST
+Indian/Comoro.generic.short=EAT
+Indian/Comoro.standard.short=EAT
+Indian/Kerguelen.daylight.short=TFST
+Indian/Kerguelen.generic.short=TFT
+Indian/Kerguelen.standard.short=TFT
+Indian/Mahe.daylight.short=SCST
+Indian/Mahe.generic.short=SCT
+Indian/Mahe.standard.short=SCT
+Indian/Maldives.daylight.short=MVST
+Indian/Maldives.generic.short=MVT
+Indian/Maldives.standard.short=MVT
+Indian/Mauritius.daylight.short=MUST
+Indian/Mauritius.generic.short=MUT
+Indian/Mauritius.standard.short=MUT
+Indian/Mayotte.daylight.short=EAST
+Indian/Mayotte.generic.short=EAT
+Indian/Mayotte.standard.short=EAT
+Indian/Reunion.daylight.short=REST
+Indian/Reunion.generic.short=RET
+Indian/Reunion.standard.short=RET
+Iran.daylight.short=IRDT
+Iran.generic.short=IRT
+Iran.standard.short=IRST
+Israel.daylight.short=IDT
+Israel.generic.short=IT
+Israel.standard.short=IST
+IST.daylight.short=IDT
+IST.generic.short=IT
+IST.standard.short=IST
+Jamaica.daylight.short=EDT
+Jamaica.generic.short=ET
+Jamaica.standard.short=EST
+Japan.daylight.short=JDT
+Japan.generic.short=JT
+Japan.standard.short=JST
+JST.daylight.short=JDT
+JST.generic.short=JT
+JST.standard.short=JST
+Kwajalein.daylight.short=MHST
+Kwajalein.generic.short=MHT
+Kwajalein.standard.short=MHT
+Libya.daylight.short=OESZ
+Libya.generic.short=OEZ
+Libya.standard.short=OEZ
+MET.daylight.short=MEST
+MET.generic.short=MET
+MET.standard.short=MET
+Mexico/BajaNorte.daylight.short=PDT
+Mexico/BajaNorte.generic.short=PT
+Mexico/BajaNorte.standard.short=PST
+Mexico/BajaSur.daylight.short=MDT
+Mexico/BajaSur.generic.short=MT
+Mexico/BajaSur.standard.short=MST
+Mexico/General.daylight.short=CDT
+Mexico/General.generic.short=CT
+Mexico/General.standard.short=CST
+MIT.daylight.short=WSDT
+MIT.generic.short=WST
+MIT.standard.short=WST
+MST7MDT.daylight.short=MDT
+MST7MDT.generic.short=MT
+MST7MDT.standard.short=MST
+MST.daylight.short=MDT
+MST.generic.short=MT
+MST.standard.short=MST
+Navajo.daylight.short=MDT
+Navajo.generic.short=MT
+Navajo.standard.short=MST
+NET.daylight.short=AMST
+NET.generic.short=AMT
+NET.standard.short=AMT
+NST.daylight.short=NZDT
+NST.generic.short=NZT
+NST.standard.short=NZST
+NZ-CHAT.daylight.short=CHADT
+NZ-CHAT.generic.short=CHAT
+NZ-CHAT.standard.short=CHAST
+NZ.daylight.short=NZDT
+NZ.generic.short=NZT
+NZ.standard.short=NZST
+Pacific/Apia.daylight.short=WSDT
+Pacific/Apia.generic.short=WST
+Pacific/Apia.standard.short=WST
+Pacific/Auckland.daylight.short=NZDT
+Pacific/Auckland.generic.short=NZT
+Pacific/Auckland.standard.short=NZST
+Pacific/Chatham.daylight.short=CHADT
+Pacific/Chatham.generic.short=CHAT
+Pacific/Chatham.standard.short=CHAST
+Pacific/Chuuk.daylight.short=CHUST
+Pacific/Chuuk.generic.short=CHUT
+Pacific/Chuuk.standard.short=CHUT
+Pacific/Easter.daylight.short=EASST
+Pacific/Easter.generic.short=EAST
+Pacific/Easter.standard.short=EAST
+Pacific/Efate.daylight.short=VUST
+Pacific/Efate.generic.short=VUT
+Pacific/Efate.standard.short=VUT
+Pacific/Enderbury.daylight.short=PHOST
+Pacific/Enderbury.generic.short=PHOT
+Pacific/Enderbury.standard.short=PHOT
+Pacific/Fakaofo.daylight.short=TKST
+Pacific/Fakaofo.generic.short=TKT
+Pacific/Fakaofo.standard.short=TKT
+Pacific/Fiji.daylight.short=FJST
+Pacific/Fiji.generic.short=FJT
+Pacific/Fiji.standard.short=FJT
+Pacific/Funafuti.daylight.short=TVST
+Pacific/Funafuti.generic.short=TVT
+Pacific/Funafuti.standard.short=TVT
+Pacific/Galapagos.daylight.short=GALST
+Pacific/Galapagos.generic.short=GALT
+Pacific/Galapagos.standard.short=GALT
+Pacific/Gambier.daylight.short=GAMST
+Pacific/Gambier.generic.short=GAMT
+Pacific/Gambier.standard.short=GAMT
+Pacific/Guadalcanal.daylight.short=SBST
+Pacific/Guadalcanal.generic.short=SBT
+Pacific/Guadalcanal.standard.short=SBT
+Pacific/Guam.daylight.short=ChDT
+Pacific/Guam.generic.short=ChT
+Pacific/Guam.standard.short=ChST
+Pacific/Honolulu.daylight.short=HDT
+Pacific/Honolulu.generic.short=HT
+Pacific/Honolulu.standard.short=HST
+Pacific/Johnston.daylight.short=HDT
+Pacific/Johnston.generic.short=HT
+Pacific/Johnston.standard.short=HST
+Pacific/Kiritimati.daylight.short=LINST
+Pacific/Kiritimati.generic.short=LINT
+Pacific/Kiritimati.standard.short=LINT
+Pacific/Kosrae.daylight.short=KOSST
+Pacific/Kosrae.generic.short=KOST
+Pacific/Kosrae.standard.short=KOST
+Pacific/Kwajalein.daylight.short=MHST
+Pacific/Kwajalein.generic.short=MHT
+Pacific/Kwajalein.standard.short=MHT
+Pacific/Majuro.daylight.short=MHST
+Pacific/Majuro.generic.short=MHT
+Pacific/Majuro.standard.short=MHT
+Pacific/Marquesas.daylight.short=MARST
+Pacific/Marquesas.generic.short=MART
+Pacific/Marquesas.standard.short=MART
+Pacific/Midway.daylight.short=SDT
+Pacific/Midway.generic.short=ST
+Pacific/Midway.standard.short=SST
+Pacific/Nauru.daylight.short=NRST
+Pacific/Nauru.generic.short=NRT
+Pacific/Nauru.standard.short=NRT
+Pacific/Niue.daylight.short=NUST
+Pacific/Niue.generic.short=NUT
+Pacific/Niue.standard.short=NUT
+Pacific/Norfolk.daylight.short=NFST
+Pacific/Norfolk.generic.short=NFT
+Pacific/Norfolk.standard.short=NFT
+Pacific/Noumea.daylight.short=NCST
+Pacific/Noumea.generic.short=NCT
+Pacific/Noumea.standard.short=NCT
+Pacific/Pago_Pago.daylight.short=SDT
+Pacific/Pago_Pago.generic.short=ST
+Pacific/Pago_Pago.standard.short=SST
+Pacific/Palau.daylight.short=PWST
+Pacific/Palau.generic.short=PWT
+Pacific/Palau.standard.short=PWT
+Pacific/Pitcairn.daylight.short=PDT
+Pacific/Pitcairn.generic.short=PT
+Pacific/Pitcairn.standard.short=PST
+Pacific/Pohnpei.daylight.short=PONST
+Pacific/Pohnpei.generic.short=PONT
+Pacific/Pohnpei.standard.short=PONT
+Pacific/Ponape.daylight.short=PONST
+Pacific/Ponape.generic.short=PONT
+Pacific/Ponape.standard.short=PONT
+Pacific/Port_Moresby.daylight.short=PGST
+Pacific/Port_Moresby.generic.short=PGT
+Pacific/Port_Moresby.standard.short=PGT
+Pacific/Rarotonga.daylight.short=CKHST
+Pacific/Rarotonga.generic.short=CKT
+Pacific/Rarotonga.standard.short=CKT
+Pacific/Saipan.daylight.short=ChDT
+Pacific/Saipan.generic.short=ChT
+Pacific/Saipan.standard.short=ChST
+Pacific/Samoa.daylight.short=SDT
+Pacific/Samoa.generic.short=ST
+Pacific/Samoa.standard.short=SST
+Pacific/Tahiti.daylight.short=TAHST
+Pacific/Tahiti.generic.short=TAHT
+Pacific/Tahiti.standard.short=TAHT
+Pacific/Tarawa.daylight.short=GILST
+Pacific/Tarawa.generic.short=GILT
+Pacific/Tarawa.standard.short=GILT
+Pacific/Tongatapu.daylight.short=TOST
+Pacific/Tongatapu.generic.short=TOT
+Pacific/Tongatapu.standard.short=TOT
+Pacific/Truk.daylight.short=CHUST
+Pacific/Truk.generic.short=CHUT
+Pacific/Truk.standard.short=CHUT
+Pacific/Wake.daylight.short=WAKST
+Pacific/Wake.generic.short=WAKT
+Pacific/Wake.standard.short=WAKT
+Pacific/Wallis.daylight.short=WFST
+Pacific/Wallis.generic.short=WFT
+Pacific/Wallis.standard.short=WFT
+Pacific/Yap.daylight.short=CHUST
+Pacific/Yap.generic.short=CHUT
+Pacific/Yap.standard.short=CHUT
+PLT.daylight.short=PKST
+PLT.generic.short=PKT
+PLT.standard.short=PKT
+PNT.daylight.short=MDT
+PNT.generic.short=MT
+PNT.standard.short=MST
+Poland.daylight.short=MESZ
+Poland.generic.short=MEZ
+Poland.standard.short=MEZ
+Portugal.daylight.short=WESZ
+Portugal.generic.short=WEZ
+Portugal.standard.short=WEZ
+PRC.daylight.short=CDT
+PRC.generic.short=CT
+PRC.standard.short=CST
+PRT.daylight.short=ADT
+PRT.generic.short=AT
+PRT.standard.short=AST
+PST8PDT.daylight.short=PDT
+PST8PDT.generic.short=PT
+PST8PDT.standard.short=PST
+PST.daylight.short=PDT
+PST.generic.short=PT
+PST.standard.short=PST
+ROK.daylight.short=KDT
+ROK.generic.short=KT
+ROK.standard.short=KST
+Singapore.daylight.short=SGST
+Singapore.generic.short=SGT
+Singapore.standard.short=SGT
+SST.daylight.short=SBST
+SST.generic.short=SBT
+SST.standard.short=SBT
+SystemV/AST4ADT.daylight.short=ADT
+SystemV/AST4ADT.generic.short=AT
+SystemV/AST4ADT.standard.short=AST
+SystemV/AST4.daylight.short=ADT
+SystemV/AST4.generic.short=AT
+SystemV/AST4.standard.short=AST
+SystemV/CST6CDT.daylight.short=CDT
+SystemV/CST6CDT.generic.short=CT
+SystemV/CST6CDT.standard.short=CST
+SystemV/CST6.daylight.short=CDT
+SystemV/CST6.generic.short=CT
+SystemV/CST6.standard.short=CST
+SystemV/EST5.daylight.short=EDT
+SystemV/EST5EDT.daylight.short=EDT
+SystemV/EST5EDT.generic.short=ET
+SystemV/EST5EDT.standard.short=EST
+SystemV/EST5.generic.short=ET
+SystemV/EST5.standard.short=EST
+SystemV/HST10.daylight.short=HDT
+SystemV/HST10.generic.short=HT
+SystemV/HST10.standard.short=HST
+SystemV/MST7.daylight.short=MDT
+SystemV/MST7.generic.short=MT
+SystemV/MST7MDT.daylight.short=MDT
+SystemV/MST7MDT.generic.short=MT
+SystemV/MST7MDT.standard.short=MST
+SystemV/MST7.standard.short=MST
+SystemV/PST8.daylight.short=PDT
+SystemV/PST8.generic.short=PT
+SystemV/PST8PDT.daylight.short=PDT
+SystemV/PST8PDT.generic.short=PT
+SystemV/PST8PDT.standard.short=PST
+SystemV/PST8.standard.short=PST
+SystemV/YST9.daylight.short=AKDT
+SystemV/YST9.generic.short=AKT
+SystemV/YST9.standard.short=AKST
+SystemV/YST9YDT.daylight.short=AKDT
+SystemV/YST9YDT.generic.short=AKT
+SystemV/YST9YDT.standard.short=AKST
+Turkey.daylight.short=OESZ
+Turkey.generic.short=OEZ
+Turkey.standard.short=OEZ
+UCT.daylight.short=UTC
+UCT.generic.short=UTC
+UCT.standard.short=UTC
+Universal.daylight.short=UTC
+Universal.generic.short=UTC
+Universal.standard.short=UTC
+US/Alaska.daylight.short=AKDT
+US/Alaska.generic.short=AKT
+US/Alaska.standard.short=AKST
+US/Aleutian.daylight.short=HADT
+US/Aleutian.generic.short=HAT
+US/Aleutian.standard.short=HAST
+US/Arizona.daylight.short=MDT
+US/Arizona.generic.short=MT
+US/Arizona.standard.short=MST
+US/Central.daylight.short=CDT
+US/Central.generic.short=CT
+US/Central.standard.short=CST
+US/Eastern.daylight.short=EDT
+US/Eastern.generic.short=ET
+US/Eastern.standard.short=EST
+US/East-Indiana.daylight.short=EDT
+US/East-Indiana.generic.short=ET
+US/East-Indiana.standard.short=EST
+US/Hawaii.daylight.short=HDT
+US/Hawaii.generic.short=HT
+US/Hawaii.standard.short=HST
+US/Indiana-Starke.daylight.short=CDT
+US/Indiana-Starke.generic.short=CT
+US/Indiana-Starke.standard.short=CST
+US/Michigan.daylight.short=EDT
+US/Michigan.generic.short=ET
+US/Michigan.standard.short=EST
+US/Mountain.daylight.short=MDT
+US/Mountain.generic.short=MT
+US/Mountain.standard.short=MST
+US/Pacific.daylight.short=PDT
+US/Pacific.generic.short=PT
+US/Pacific-New.daylight.short=PDT
+US/Pacific-New.generic.short=PT
+US/Pacific-New.standard.short=PST
+US/Pacific.standard.short=PST
+US/Samoa.daylight.short=SDT
+US/Samoa.generic.short=ST
+US/Samoa.standard.short=SST
+UTC.daylight.short=UTC
+UTC.generic.short=UTC
+UTC.standard.short=UTC
+VST.daylight.short=ICST
+VST.generic.short=ICT
+VST.standard.short=ICT
+WET.daylight.short=WESZ
+WET.generic.short=WEZ
+WET.standard.short=WEZ
+W-SU.daylight.short=MSD
+W-SU.generic.short=MT
+W-SU.standard.short=MSK
+Zulu.daylight.short=UTC
+Zulu.generic.short=UTC
+Zulu.standard.short=UTC
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_es.properties Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,651 @@
+ACT.daylight.long=Hora de verano Central (territorio del Norte)
+ACT.generic.long=Hora Central (Territorio Septentrional)
+ACT.standard.long=Hora est\u00E1ndar Central (territorio del Norte)
+AET.daylight.long=Hora de verano Oriental (Nueva Gales del Sur)
+AET.generic.long=Hora Oriental (Nueva Gales del Sur)
+AET.standard.long=Hora est\u00E1ndar Oriental (Nueva Gales del Sur)
+AGT.generic.long=Hora de Argentina
+ART.generic.long=Hora de Europa Oriental
+AST.generic.long=Hora de Alaska
+Africa/Abidjan.generic.long=Hora del Meridiano de Greenwich
+Africa/Accra.generic.long=Hora central de Ghana
+Africa/Addis_Ababa.generic.long=Hora de \u00C1frica Oriental
+Africa/Algiers.generic.long=Hora de Europa Central
+Africa/Asmara.generic.long=Hora de \u00C1frica Oriental
+Africa/Asmera.generic.long=Hora de \u00C1frica Oriental
+Africa/Bamako.generic.long=Hora del Meridiano de Greenwich
+Africa/Bangui.generic.long=Hora de \u00C1frica Occidental
+Africa/Banjul.generic.long=Hora del Meridiano de Greenwich
+Africa/Bissau.generic.long=Hora del Meridiano de Greenwich
+Africa/Blantyre.generic.long=Hora de \u00C1frica Central
+Africa/Brazzaville.generic.long=Hora de \u00C1frica Occidental
+Africa/Bujumbura.generic.long=Hora de \u00C1frica Central
+Africa/Cairo.generic.long=Hora de Europa Oriental
+Africa/Casablanca.generic.long=Hora de Europa Occidental
+Africa/Ceuta.generic.long=Hora de Europa Central
+Africa/Conakry.generic.long=Hora del Meridiano de Greenwich
+Africa/Dakar.generic.long=Hora del Meridiano de Greenwich
+Africa/Dar_es_Salaam.generic.long=Hora de \u00C1frica Oriental
+Africa/Djibouti.generic.long=Hora de \u00C1frica Oriental
+Africa/Douala.generic.long=Hora de \u00C1frica Occidental
+Africa/El_Aaiun.generic.long=Hora de Europa Occidental
+Africa/Freetown.generic.long=Horario de Sierra Leona
+Africa/Gaborone.generic.long=Hora de \u00C1frica Central
+Africa/Harare.generic.long=Hora de \u00C1frica Central
+Africa/Johannesburg.generic.long=Hora de Sud\u00E1frica
+Africa/Juba.generic.long=Hora de \u00C1frica Oriental
+Africa/Kampala.generic.long=Hora de \u00C1frica Oriental
+Africa/Khartoum.generic.long=Hora de \u00C1frica Oriental
+Africa/Kigali.generic.long=Hora de \u00C1frica Central
+Africa/Kinshasa.generic.long=Hora de \u00C1frica Occidental
+Africa/Lagos.generic.long=Hora de \u00C1frica Occidental
+Africa/Libreville.generic.long=Hora de \u00C1frica Occidental
+Africa/Lome.generic.long=Hora del Meridiano de Greenwich
+Africa/Luanda.generic.long=Hora de \u00C1frica Occidental
+Africa/Lubumbashi.generic.long=Hora de \u00C1frica Central
+Africa/Lusaka.generic.long=Hora de \u00C1frica Central
+Africa/Malabo.generic.long=Hora de \u00C1frica Occidental
+Africa/Maputo.generic.long=Hora de \u00C1frica Central
+Africa/Maseru.generic.long=Hora de Sud\u00E1frica
+Africa/Mbabane.generic.long=Hora de Sud\u00E1frica
+Africa/Mogadishu.generic.long=Hora de \u00C1frica Oriental
+Africa/Monrovia.generic.long=Hora del Meridiano de Greenwich
+Africa/Nairobi.generic.long=Hora de \u00C1frica Oriental
+Africa/Ndjamena.generic.long=Hora de \u00C1frica Occidental
+Africa/Niamey.generic.long=Hora de \u00C1frica Occidental
+Africa/Nouakchott.generic.long=Hora del Meridiano de Greenwich
+Africa/Ouagadougou.generic.long=Hora del Meridiano de Greenwich
+Africa/Porto-Novo.generic.long=Hora de \u00C1frica Occidental
+Africa/Sao_Tome.generic.long=Hora del Meridiano de Greenwich
+Africa/Timbuktu.generic.long=Hora del Meridiano de Greenwich
+Africa/Tripoli.generic.long=Hora de Europa Oriental
+Africa/Tunis.generic.long=Hora de Europa Central
+Africa/Windhoek.generic.long=Hora de \u00C1frica Occidental
+America/Adak.generic.long=Hora de Hawaii-Aleutian
+America/Anchorage.generic.long=Hora de Alaska
+America/Anguilla.generic.long=Hora del Atl\u00E1ntico
+America/Antigua.generic.long=Hora del Atl\u00E1ntico
+America/Araguaina.generic.long=Hora de Brasil
+America/Argentina/Buenos_Aires.generic.long=Hora de Argentina
+America/Argentina/Catamarca.generic.long=Hora de Argentina
+America/Argentina/ComodRivadavia.generic.long=Hora de Argentina
+America/Argentina/Cordoba.generic.long=Hora de Argentina
+America/Argentina/Jujuy.generic.long=Hora de Argentina
+America/Argentina/La_Rioja.generic.long=Hora de Argentina
+America/Argentina/Mendoza.generic.long=Hora de Argentina
+America/Argentina/Rio_Gallegos.generic.long=Hora de Argentina
+America/Argentina/Salta.generic.long=Hora de Argentina
+America/Argentina/San_Juan.generic.long=Hora de Argentina
+America/Argentina/San_Luis.generic.long=Hora de Argentina
+America/Argentina/Tucuman.generic.long=Hora de Argentina
+America/Argentina/Ushuaia.generic.long=Hora de Argentina
+America/Aruba.generic.long=Hora del Atl\u00E1ntico
+America/Asuncion.generic.long=Hora de Paraguay
+America/Atikokan.generic.long=Hora Oriental
+America/Atka.generic.long=Hora de Hawaii-Aleutian
+America/Bahia.generic.long=Hora de Brasil
+America/Bahia_Banderas.generic.long=Hora Central
+America/Barbados.generic.long=Hora del Atl\u00E1ntico
+America/Belem.generic.long=Hora de Brasil
+America/Belize.generic.long=Hora Central
+America/Blanc-Sablon.generic.long=Hora del Atl\u00E1ntico
+America/Boa_Vista.generic.long=Hora est\u00E1ndar de Amazonia
+America/Bogota.generic.long=Hora de Colombia
+America/Boise.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Buenos_Aires.generic.long=Hora de Argentina
+America/Cambridge_Bay.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Campo_Grande.generic.long=Hora est\u00E1ndar de Amazonia
+America/Cancun.generic.long=Hora Central
+America/Caracas.generic.long=Hora de Venezuela
+America/Catamarca.generic.long=Hora de Argentina
+America/Cayenne.generic.long=Hora de la Guayana Francesa
+America/Cayman.generic.long=Hora Oriental
+America/Chicago.generic.long=Hora Central
+America/Chihuahua.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Coral_Harbour.generic.long=Hora Oriental
+America/Cordoba.generic.long=Hora de Argentina
+America/Costa_Rica.generic.long=Hora Central
+America/Creston.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Cuiaba.generic.long=Hora est\u00E1ndar de Amazonia
+America/Curacao.generic.long=Hora del Atl\u00E1ntico
+America/Danmarkshavn.generic.long=Hora del Meridiano de Greenwich
+America/Dawson.generic.long=Hora del Pac\u00EDfico
+America/Dawson_Creek.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Denver.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Detroit.generic.long=Hora Oriental
+America/Dominica.generic.long=Hora del Atl\u00E1ntico
+America/Edmonton.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Eirunepe.generic.long=Hora de Acre
+America/El_Salvador.generic.long=Hora Central
+America/Ensenada.generic.long=Hora del Pac\u00EDfico
+America/Fort_Wayne.generic.long=Hora Oriental
+America/Fortaleza.generic.long=Hora de Brasil
+America/Glace_Bay.generic.long=Hora del Atl\u00E1ntico
+America/Godthab.generic.long=Hora de Groenlandia Occidental
+America/Goose_Bay.generic.long=Hora del Atl\u00E1ntico
+America/Grand_Turk.generic.long=Hora Oriental
+America/Grenada.generic.long=Hora del Atl\u00E1ntico
+America/Guadeloupe.generic.long=Hora del Atl\u00E1ntico
+America/Guatemala.generic.long=Hora Central
+America/Guayaquil.generic.long=Hora de Ecuador
+America/Guyana.generic.long=Hora de Guyana
+America/Halifax.generic.long=Hora del Atl\u00E1ntico
+America/Havana.generic.long=Hora de Cuba
+America/Hermosillo.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Indiana/Indianapolis.generic.long=Hora Oriental
+America/Indiana/Knox.generic.long=Hora Central
+America/Indiana/Marengo.generic.long=Hora Oriental
+America/Indiana/Petersburg.generic.long=Hora Oriental
+America/Indiana/Tell_City.generic.long=Hora Central
+America/Indiana/Vevay.generic.long=Hora Oriental
+America/Indiana/Vincennes.generic.long=Hora Oriental
+America/Indiana/Winamac.generic.long=Hora Oriental
+America/Indianapolis.generic.long=Hora Oriental
+America/Inuvik.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Iqaluit.generic.long=Hora Oriental
+America/Jamaica.generic.long=Hora Oriental
+America/Jujuy.generic.long=Hora de Argentina
+America/Juneau.generic.long=Hora de Alaska
+America/Kentucky/Louisville.generic.long=Hora Oriental
+America/Kentucky/Monticello.generic.long=Hora Oriental
+America/Knox_IN.generic.long=Hora Central
+America/Kralendijk.generic.long=Hora del Atl\u00E1ntico
+America/La_Paz.generic.long=Hora de Bolivia
+America/Lima.generic.long=Hora de Per\u00FA
+America/Los_Angeles.generic.long=Hora del Pac\u00EDfico
+America/Louisville.generic.long=Hora Oriental
+America/Lower_Princes.generic.long=Hora del Atl\u00E1ntico
+America/Maceio.generic.long=Hora de Brasil
+America/Managua.generic.long=Hora Central
+America/Manaus.generic.long=Hora est\u00E1ndar de Amazonia
+America/Marigot.generic.long=Hora del Atl\u00E1ntico
+America/Martinique.generic.long=Hora del Atl\u00E1ntico
+America/Matamoros.generic.long=Hora Central
+America/Mazatlan.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Mendoza.generic.long=Hora de Argentina
+America/Menominee.generic.long=Hora Central
+America/Merida.generic.long=Hora Central
+America/Metlakatla.daylight.long=Hora de verano de Metlakatla
+America/Metlakatla.generic.long=Metlakatla Time
+America/Metlakatla.standard.long=Hora de Metlakatla
+America/Mexico_City.generic.long=Hora Central
+America/Miquelon.generic.long=Hora de San Pedro y Miquel\u00F3n
+America/Moncton.generic.long=Hora del Atl\u00E1ntico
+America/Monterrey.generic.long=Hora Central
+America/Montevideo.generic.long=Hora de Uruguay
+America/Montreal.generic.long=Hora Oriental
+America/Montserrat.generic.long=Hora del Atl\u00E1ntico
+America/Nassau.generic.long=Hora Oriental
+America/New_York.generic.long=Hora Oriental
+America/Nipigon.generic.long=Hora Oriental
+America/Nome.generic.long=Hora de Alaska
+America/Noronha.generic.long=Hora de Fernando de Noronha
+America/North_Dakota/Beulah.generic.long=Hora Central
+America/North_Dakota/Center.generic.long=Hora Central
+America/North_Dakota/New_Salem.generic.long=Hora Central
+America/Ojinaga.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Panama.generic.long=Hora Oriental
+America/Pangnirtung.generic.long=Hora Oriental
+America/Paramaribo.generic.long=Hora de Surinam
+America/Phoenix.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Port-au-Prince.generic.long=Hora Oriental
+America/Port_of_Spain.generic.long=Hora del Atl\u00E1ntico
+America/Porto_Acre.generic.long=Hora de Acre
+America/Porto_Velho.generic.long=Hora est\u00E1ndar de Amazonia
+America/Puerto_Rico.generic.long=Hora del Atl\u00E1ntico
+America/Rainy_River.generic.long=Hora Central
+America/Rankin_Inlet.generic.long=Hora Central
+America/Recife.generic.long=Hora de Brasil
+America/Regina.generic.long=Hora Central
+America/Resolute.generic.long=Hora Central
+America/Rio_Branco.generic.long=Hora de Acre
+America/Rosario.generic.long=Hora de Argentina
+America/Santa_Isabel.generic.long=Hora del Pac\u00EDfico
+America/Santarem.generic.long=Hora de Brasil
+America/Santiago.generic.long=Hora de Chile
+America/Santo_Domingo.generic.long=Hora del Atl\u00E1ntico
+America/Sao_Paulo.generic.long=Hora de Brasil
+America/Scoresbysund.generic.long=Hora de Groenlandia Oriental
+America/Shiprock.generic.long=Hora de las Monta\u00F1as Rocosas
+America/Sitka.generic.long=Hora de Alaska
+America/St_Barthelemy.generic.long=Hora del Atl\u00E1ntico
+America/St_Johns.generic.long=Hora de Terranova
+America/St_Kitts.generic.long=Hora del Atl\u00E1ntico
+America/St_Lucia.generic.long=Hora del Atl\u00E1ntico
+America/St_Thomas.generic.long=Hora del Atl\u00E1ntico
+America/St_Vincent.generic.long=Hora del Atl\u00E1ntico
+America/Swift_Current.generic.long=Hora Central
+America/Tegucigalpa.generic.long=Hora Central
+America/Thule.generic.long=Hora del Atl\u00E1ntico
+America/Thunder_Bay.generic.long=Hora Oriental
+America/Tijuana.generic.long=Hora del Pac\u00EDfico
+America/Toronto.generic.long=Hora Oriental
+America/Tortola.generic.long=Hora del Atl\u00E1ntico
+America/Vancouver.generic.long=Hora del Pac\u00EDfico
+America/Virgin.generic.long=Hora del Atl\u00E1ntico
+America/Whitehorse.generic.long=Hora del Pac\u00EDfico
+America/Winnipeg.generic.long=Hora Central
+America/Yakutat.generic.long=Hora de Alaska
+America/Yellowknife.generic.long=Hora de las Monta\u00F1as Rocosas
+Antarctica/Casey.daylight.long=Hora de verano Occidental (Australia)
+Antarctica/Casey.generic.long=Hora Occidental (Australia)
+Antarctica/Casey.standard.long=Hora est\u00E1ndar Occidental (Australia)
+Antarctica/Davis.generic.long=Hora de Davis
+Antarctica/DumontDUrville.generic.long=Hora de Dumont-d'Urville
+Antarctica/Macquarie.daylight.long=Hora de verano de Isla Macquarie
+Antarctica/Macquarie.generic.long=Hora de Isla Macquarie
+Antarctica/Macquarie.standard.long=Hora de Isla Macquarie
+Antarctica/Mawson.generic.long=Hora de Mawson
+Antarctica/McMurdo.generic.long=Hora de Nueva Zelanda
+Antarctica/Palmer.generic.long=Hora de Chile
+Antarctica/Rothera.generic.long=Hora de Rothera
+Antarctica/South_Pole.generic.long=Hora de Nueva Zelanda
+Antarctica/Syowa.generic.long=Hora de Syowa
+Antarctica/Vostok.generic.long=Hora de Vostok
+Arctic/Longyearbyen.generic.long=Hora de Europa Central
+Asia/Aden.generic.long=Hora de Arabia
+Asia/Almaty.generic.long=Hora de Alma-Ata
+Asia/Amman.generic.long=Hora de Arabia
+Asia/Anadyr.generic.long=Hora de Anadyr
+Asia/Aqtau.generic.long=Hora de Aqtau
+Asia/Aqtobe.generic.long=Hora de Aqtobe
+Asia/Ashgabat.generic.long=Hora de Turkmenist\u00E1n
+Asia/Ashkhabad.generic.long=Hora de Turkmenist\u00E1n
+Asia/Baghdad.generic.long=Hora de Arabia
+Asia/Bahrain.generic.long=Hora de Arabia
+Asia/Baku.generic.long=Hora de Azerbaiy\u00E1n
+Asia/Bangkok.generic.long=Hora de Indochina
+Asia/Beirut.generic.long=Hora de Europa Oriental
+Asia/Bishkek.generic.long=Hora de Kirguizist\u00E1n
+Asia/Brunei.generic.long=Hora de Brunei
+Asia/Calcutta.generic.long=Hora de India
+Asia/Choibalsan.generic.long=Hora de Choibalsan
+Asia/Chongqing.generic.long=Hora de China
+Asia/Chungking.generic.long=Hora de China
+Asia/Colombo.generic.long=Hora de India
+Asia/Dacca.generic.long=Hora de Bangladesh
+Asia/Damascus.generic.long=Hora de Europa Oriental
+Asia/Dhaka.generic.long=Hora de Bangladesh
+Asia/Dili.generic.long=Hora de Timor Leste
+Asia/Dubai.generic.long=Hora del Golfo
+Asia/Dushanbe.generic.long=Hora de Tajikist\u00E1n
+Asia/Gaza.generic.long=Hora de Europa Oriental
+Asia/Harbin.generic.long=Hora de China
+Asia/Hebron.generic.long=Hora de Europa Oriental
+Asia/Ho_Chi_Minh.generic.long=Hora de Indochina
+Asia/Hong_Kong.generic.long=Hora de Hong Kong
+Asia/Hovd.generic.long=Hora de Hovd
+Asia/Irkutsk.generic.long=Hora de Irkutsk
+Asia/Istanbul.generic.long=Hora de Europa Oriental
+Asia/Jakarta.generic.long=Hora de Indonesia Occidental
+Asia/Jayapura.generic.long=Hora de Indonesia Oriental
+Asia/Jerusalem.generic.long=Hora de Israel
+Asia/Kabul.generic.long=Hora de Afganist\u00E1n
+Asia/Kamchatka.generic.long=Hora de Petropavlovsk-Kamchatski
+Asia/Karachi.generic.long=Hora de Pakist\u00E1n
+Asia/Kashgar.generic.long=Hora de China
+Asia/Kathmandu.generic.long=Hora de Nepal
+Asia/Katmandu.generic.long=Hora de Nepal
+Asia/Khandyga.daylight.long=Hora de verano de Khandyga
+Asia/Khandyga.generic.long=Hora de Khandyga
+Asia/Khandyga.standard.long=Hora de Khandyga
+Asia/Kolkata.generic.long=Hora de India
+Asia/Krasnoyarsk.generic.long=Hora de Krasnoyarsk
+Asia/Kuala_Lumpur.generic.long=Hora de Malasia
+Asia/Kuching.generic.long=Hora de Malasia
+Asia/Kuwait.generic.long=Hora de Arabia
+Asia/Macao.generic.long=Hora de China
+Asia/Macau.generic.long=Hora de China
+Asia/Magadan.generic.long=Hora de Magad\u00E1n
+Asia/Makassar.generic.long=Hora de Indonesia Central
+Asia/Manila.generic.long=Hora de Filipinas
+Asia/Muscat.generic.long=Hora del Golfo
+Asia/Nicosia.generic.long=Hora de Europa Oriental
+Asia/Novokuznetsk.generic.long=Hora de Novosibirsk
+Asia/Novosibirsk.generic.long=Hora de Novosibirsk
+Asia/Omsk.generic.long=Hora de Omsk
+Asia/Oral.generic.long=Hora de Uralsk
+Asia/Phnom_Penh.generic.long=Hora de Indochina
+Asia/Pontianak.generic.long=Hora de Indonesia Occidental
+Asia/Pyongyang.generic.long=Hora de Corea
+Asia/Qatar.generic.long=Hora de Arabia
+Asia/Qyzylorda.generic.long=Hora de Qyzylorda
+Asia/Rangoon.generic.long=Hora de Myanmar
+Asia/Saigon.generic.long=Hora de Indochina
+Asia/Sakhalin.generic.long=Hora de Sajalin
+Asia/Samarkand.generic.long=Hora de Uzbekist\u00E1n
+Asia/Seoul.generic.long=Hora de Corea
+Asia/Shanghai.generic.long=Hora de China
+Asia/Singapore.generic.long=Hora de Singapur
+Asia/Taipei.generic.long=Hora de China
+Asia/Tashkent.generic.long=Hora de Uzbekist\u00E1n
+Asia/Tbilisi.generic.long=Hora de Georgia
+Asia/Tehran.generic.long=Hora de Ir\u00E1n
+Asia/Tel_Aviv.generic.long=Hora de Israel
+Asia/Thimbu.generic.long=Hora de But\u00E1n
+Asia/Thimphu.generic.long=Hora de But\u00E1n
+Asia/Tokyo.generic.long=Hora de Jap\u00F3n
+Asia/Ujung_Pandang.generic.long=Hora de Indonesia Central
+Asia/Ulaanbaatar.generic.long=Hora de Ulan Bator
+Asia/Ulan_Bator.generic.long=Hora de Ulan Bator
+Asia/Urumqi.generic.long=Hora de China
+Asia/Ust-Nera.daylight.long=Hora de verano de Ust-Nera
+Asia/Ust-Nera.generic.long=Hora de Ust-Nera
+Asia/Ust-Nera.standard.long=Hora de Ust-Nera
+Asia/Vientiane.generic.long=Hora de Indochina
+Asia/Vladivostok.generic.long=Hora de Vladivostok
+Asia/Yakutsk.generic.long=Hora de Yakutsk
+Asia/Yekaterinburg.generic.long=Hora de Ekaterinburgo
+Asia/Yerevan.generic.long=Hora de Armenia
+Atlantic/Azores.generic.long=Hora de Azores
+Atlantic/Bermuda.generic.long=Hora del Atl\u00E1ntico
+Atlantic/Canary.generic.long=Hora de Europa Occidental
+Atlantic/Cape_Verde.generic.long=Hora de Cabo Verde
+Atlantic/Faeroe.generic.long=Hora de Europa Occidental
+Atlantic/Faroe.generic.long=Hora de Europa Occidental
+Atlantic/Jan_Mayen.generic.long=Hora de Europa Central
+Atlantic/Madeira.generic.long=Hora de Europa Occidental
+Atlantic/Reykjavik.generic.long=Hora del Meridiano de Greenwich
+Atlantic/South_Georgia.generic.long=Hora de Georgia del Sur
+Atlantic/St_Helena.generic.long=Hora del Meridiano de Greenwich
+Atlantic/Stanley.generic.long=Hora de las islas Malvinas
+Australia/ACT.daylight.long=Hora de verano Oriental (Nueva Gales del Sur)
+Australia/ACT.generic.long=Hora Oriental (Nueva Gales del Sur)
+Australia/ACT.standard.long=Hora est\u00E1ndar Oriental (Nueva Gales del Sur)
+Australia/Adelaide.daylight.long=Hora de verano Central (Sur de Australia)
+Australia/Adelaide.generic.long=Hora Central (Australia del Sur)
+Australia/Adelaide.standard.long=Hora est\u00E1ndar Central (Sur de Australia)
+Australia/Brisbane.daylight.long=Hora est\u00E1ndar de verano del Este (Queensland)
+Australia/Brisbane.generic.long=Hora Oriental (Queensland)
+Australia/Brisbane.standard.long=Hora est\u00E1ndar del Este (Queensland)
+Australia/Broken_Hill.daylight.long=Hora de verano Central (Sur de Australia/Nueva Gales del Sur)
+Australia/Broken_Hill.generic.long=Hora Central (Australia del Sur/Nueva Gales del Sur)
+Australia/Broken_Hill.standard.long=Hora est\u00E1ndar Central (Sur de Australia/Nueva Gales del Sur)
+Australia/Canberra.daylight.long=Hora de verano Oriental (Nueva Gales del Sur)
+Australia/Canberra.generic.long=Hora Oriental (Nueva Gales del Sur)
+Australia/Canberra.standard.long=Hora est\u00E1ndar Oriental (Nueva Gales del Sur)
+Australia/Currie.daylight.long=Hora de verano Oriental (Nueva Gales del Sur)
+Australia/Currie.generic.long=Hora Oriental (Nueva Gales del Sur)
+Australia/Currie.standard.long=Hora est\u00E1ndar Oriental (Nueva Gales del Sur)
+Australia/Darwin.daylight.long=Hora de verano Central (territorio del Norte)
+Australia/Darwin.generic.long=Hora Central (Territorio Septentrional)
+Australia/Darwin.standard.long=Hora est\u00E1ndar Central (territorio del Norte)
+Australia/Eucla.daylight.long=Hora est\u00E1ndar de verano de Australia Central y Occidental
+Australia/Eucla.generic.long=Hora de Australia Central y Occidental
+Australia/Eucla.standard.long=Hora est\u00E1ndar de Australia Central y Occidental
+Australia/Hobart.daylight.long=Hora de verano del Este (Tasmania)
+Australia/Hobart.generic.long=Hora Oriental (Tasmania)
+Australia/Hobart.standard.long=Hora est\u00E1ndar del Este (Tasmania)
+Australia/LHI.generic.long=Hora de Lord Howe
+Australia/Lindeman.daylight.long=Hora est\u00E1ndar de verano del Este (Queensland)
+Australia/Lindeman.generic.long=Hora Oriental (Queensland)
+Australia/Lindeman.standard.long=Hora est\u00E1ndar del Este (Queensland)
+Australia/Lord_Howe.generic.long=Hora de Lord Howe
+Australia/Melbourne.daylight.long=Hora de verano del Este (Victoria)
+Australia/Melbourne.generic.long=Hora Oriental (Victoria)
+Australia/Melbourne.standard.long=Hora est\u00E1ndar del Este (Victoria)
+Australia/NSW.daylight.long=Hora de verano Oriental (Nueva Gales del Sur)
+Australia/NSW.generic.long=Hora Oriental (Nueva Gales del Sur)
+Australia/NSW.standard.long=Hora est\u00E1ndar Oriental (Nueva Gales del Sur)
+Australia/North.daylight.long=Hora de verano Central (territorio del Norte)
+Australia/North.generic.long=Hora Central (Territorio Septentrional)
+Australia/North.standard.long=Hora est\u00E1ndar Central (territorio del Norte)
+Australia/Perth.daylight.long=Hora de verano Occidental (Australia)
+Australia/Perth.generic.long=Hora Occidental (Australia)
+Australia/Perth.standard.long=Hora est\u00E1ndar Occidental (Australia)
+Australia/Queensland.daylight.long=Hora est\u00E1ndar de verano del Este (Queensland)
+Australia/Queensland.generic.long=Hora Oriental (Queensland)
+Australia/Queensland.standard.long=Hora est\u00E1ndar del Este (Queensland)
+Australia/South.daylight.long=Hora de verano Central (Sur de Australia)
+Australia/South.generic.long=Hora Central (Australia del Sur)
+Australia/South.standard.long=Hora est\u00E1ndar Central (Sur de Australia)
+Australia/Sydney.daylight.long=Hora de verano Oriental (Nueva Gales del Sur)
+Australia/Sydney.generic.long=Hora Oriental (Nueva Gales del Sur)
+Australia/Sydney.standard.long=Hora est\u00E1ndar Oriental (Nueva Gales del Sur)
+Australia/Tasmania.daylight.long=Hora de verano del Este (Tasmania)
+Australia/Tasmania.generic.long=Hora Oriental (Tasmania)
+Australia/Tasmania.standard.long=Hora est\u00E1ndar del Este (Tasmania)
+Australia/Victoria.daylight.long=Hora de verano del Este (Victoria)
+Australia/Victoria.generic.long=Hora Oriental (Victoria)
+Australia/Victoria.standard.long=Hora est\u00E1ndar del Este (Victoria)
+Australia/West.daylight.long=Hora de verano Occidental (Australia)
+Australia/West.generic.long=Hora Occidental (Australia)
+Australia/West.standard.long=Hora est\u00E1ndar Occidental (Australia)
+Australia/Yancowinna.daylight.long=Hora de verano Central (Sur de Australia/Nueva Gales del Sur)
+Australia/Yancowinna.generic.long=Hora Central (Australia del Sur/Nueva Gales del Sur)
+Australia/Yancowinna.standard.long=Hora est\u00E1ndar Central (Sur de Australia/Nueva Gales del Sur)
+BET.generic.long=Hora de Brasil
+BST.generic.long=Hora de Bangladesh
+Brazil/Acre.generic.long=Hora de Acre
+Brazil/DeNoronha.generic.long=Hora de Fernando de Noronha
+Brazil/East.generic.long=Hora de Brasil
+Brazil/West.generic.long=Hora est\u00E1ndar de Amazonia
+CAT.generic.long=Hora de \u00C1frica Central
+CET.generic.long=Hora de Europa Central
+CNT.generic.long=Hora de Terranova
+CST.generic.long=Hora Central
+CST6CDT.generic.long=Hora Central
+CTT.generic.long=Hora de China
+Canada/Atlantic.generic.long=Hora del Atl\u00E1ntico
+Canada/Central.generic.long=Hora Central
+Canada/East-Saskatchewan.generic.long=Hora Central
+Canada/Eastern.generic.long=Hora Oriental
+Canada/Mountain.generic.long=Hora de las Monta\u00F1as Rocosas
+Canada/Newfoundland.generic.long=Hora de Terranova
+Canada/Pacific.generic.long=Hora del Pac\u00EDfico
+Canada/Saskatchewan.generic.long=Hora Central
+Canada/Yukon.generic.long=Hora del Pac\u00EDfico
+Chile/Continental.generic.long=Hora de Chile
+Chile/EasterIsland.generic.long=Hora de la Isla de Pascua
+Cuba.generic.long=Hora de Cuba
+EAT.generic.long=Hora de \u00C1frica Oriental
+ECT.generic.long=Hora de Europa Central
+EET.generic.long=Hora de Europa Oriental
+EST.generic.long=Hora Oriental
+EST5EDT.generic.long=Hora Oriental
+Egypt.generic.long=Hora de Europa Oriental
+Eire.generic.long=Hora de Irlanda
+Etc/Greenwich.generic.long=Hora del Meridiano de Greenwich
+Etc/UCT.generic.long=Hora Universal Coordinada
+Etc/UTC.generic.long=Hora Universal Coordinada
+Etc/Universal.generic.long=Hora Universal Coordinada
+Etc/Zulu.generic.long=Hora Universal Coordinada
+Europe/Amsterdam.generic.long=Hora de Europa Central
+Europe/Andorra.generic.long=Hora de Europa Central
+Europe/Athens.generic.long=Hora de Europa Oriental
+Europe/Belfast.generic.long=Hora de Gran Breta\u00F1a
+Europe/Belgrade.generic.long=Hora de Europa Central
+Europe/Berlin.generic.long=Hora de Europa Central
+Europe/Bratislava.generic.long=Hora de Europa Central
+Europe/Brussels.generic.long=Hora de Europa Central
+Europe/Bucharest.generic.long=Hora de Europa Oriental
+Europe/Budapest.generic.long=Hora de Europa Central
+Europe/Busingen.generic.long=Hora de Europa Central
+Europe/Chisinau.generic.long=Hora de Europa Oriental
+Europe/Copenhagen.generic.long=Hora de Europa Central
+Europe/Dublin.generic.long=Hora de Irlanda
+Europe/Gibraltar.generic.long=Hora de Europa Central
+Europe/Guernsey.generic.long=Hora de Gran Breta\u00F1a
+Europe/Helsinki.generic.long=Hora de Europa Oriental
+Europe/Isle_of_Man.generic.long=Hora de Gran Breta\u00F1a
+Europe/Istanbul.generic.long=Hora de Europa Oriental
+Europe/Jersey.generic.long=Hora de Gran Breta\u00F1a
+Europe/Kaliningrad.daylight.long=Hora de verano de Europa m\u00E1s Oriental
+Europe/Kaliningrad.generic.long=Hora de Europa m\u00E1s Oriental
+Europe/Kaliningrad.standard.long=Hora de Europa m\u00E1s Oriental
+Europe/Kiev.generic.long=Hora de Europa Oriental
+Europe/Lisbon.generic.long=Hora de Europa Occidental
+Europe/Ljubljana.generic.long=Hora de Europa Central
+Europe/London.generic.long=Hora de Gran Breta\u00F1a
+Europe/Luxembourg.generic.long=Hora de Europa Central
+Europe/Madrid.generic.long=Hora de Europa Central
+Europe/Malta.generic.long=Hora de Europa Central
+Europe/Mariehamn.generic.long=Hora de Europa Oriental
+Europe/Minsk.daylight.long=Hora de verano de Europa m\u00E1s Oriental
+Europe/Minsk.generic.long=Hora de Europa m\u00E1s Oriental
+Europe/Minsk.standard.long=Hora de Europa m\u00E1s Oriental
+Europe/Monaco.generic.long=Hora de Europa Central
+Europe/Moscow.generic.long=Hora de Mosc\u00FA
+Europe/Nicosia.generic.long=Hora de Europa Oriental
+Europe/Oslo.generic.long=Hora de Europa Central
+Europe/Paris.generic.long=Hora de Europa Central
+Europe/Podgorica.generic.long=Hora de Europa Central
+Europe/Prague.generic.long=Hora de Europa Central
+Europe/Riga.generic.long=Hora de Europa Oriental
+Europe/Rome.generic.long=Hora de Europa Central
+Europe/Samara.generic.long=Hora de Samara
+Europe/San_Marino.generic.long=Hora de Europa Central
+Europe/Sarajevo.generic.long=Hora de Europa Central
+Europe/Simferopol.generic.long=Hora de Europa Oriental
+Europe/Skopje.generic.long=Hora de Europa Central
+Europe/Sofia.generic.long=Hora de Europa Oriental
+Europe/Stockholm.generic.long=Hora de Europa Central
+Europe/Tallinn.generic.long=Hora de Europa Oriental
+Europe/Tirane.generic.long=Hora de Europa Central
+Europe/Tiraspol.generic.long=Hora de Europa Oriental
+Europe/Uzhgorod.generic.long=Hora de Europa Oriental
+Europe/Vaduz.generic.long=Hora de Europa Central
+Europe/Vatican.generic.long=Hora de Europa Central
+Europe/Vienna.generic.long=Hora de Europa Central
+Europe/Vilnius.generic.long=Hora de Europa Oriental
+Europe/Volgograd.generic.long=Hora de Volgogrado
+Europe/Warsaw.generic.long=Hora de Europa Central
+Europe/Zagreb.generic.long=Hora de Europa Central
+Europe/Zaporozhye.generic.long=Hora de Europa Oriental
+Europe/Zurich.generic.long=Hora de Europa Central
+GB-Eire.generic.long=Hora de Gran Breta\u00F1a
+GB.generic.long=Hora de Gran Breta\u00F1a
+GMT.generic.long=Hora del Meridiano de Greenwich
+Greenwich.generic.long=Hora del Meridiano de Greenwich
+HST.generic.long=Hora de Hawaii
+Hongkong.generic.long=Hora de Hong Kong
+IET.generic.long=Hora Oriental
+IST.generic.long=Hora de India
+Iceland.generic.long=Hora del Meridiano de Greenwich
+Indian/Antananarivo.generic.long=Hora de \u00C1frica Oriental
+Indian/Chagos.generic.long=Hora del Territorio del Oc\u00E9ano \u00CDndico
+Indian/Christmas.generic.long=Hora de la isla de Christmas
+Indian/Cocos.generic.long=Hora de las islas Cocos
+Indian/Comoro.generic.long=Hora de \u00C1frica Oriental
+Indian/Kerguelen.generic.long=Hora de los Territorios Franceses del Sur y de la Ant\u00E1rtida
+Indian/Mahe.generic.long=Hora de Seychelles
+Indian/Maldives.generic.long=Hora de Maldivas
+Indian/Mauritius.generic.long=Hora de Mauricio
+Indian/Mayotte.generic.long=Hora de \u00C1frica Oriental
+Indian/Reunion.generic.long=Hora de Reuni\u00F3n
+Iran.generic.long=Hora de Ir\u00E1n
+Israel.generic.long=Hora de Israel
+JST.generic.long=Hora de Jap\u00F3n
+Jamaica.generic.long=Hora Oriental
+Japan.generic.long=Hora de Jap\u00F3n
+Kwajalein.generic.long=Hora de Islas Marshall
+Libya.generic.long=Hora de Europa Oriental
+MET.generic.long=MET
+MIT.generic.long=Hora de Samoa Occidental
+MST.generic.long=Hora de las Monta\u00f1as Rocosas
+MST7MDT.generic.long=Hora de las Monta\u00f1as Rocosas
+Mexico/BajaNorte.generic.long=Hora del Pac\u00EDfico
+Mexico/BajaSur.generic.long=Hora de las Monta\u00F1as Rocosas
+Mexico/General.generic.long=Hora Central
+NET.generic.long=Hora de Armenia
+NST.generic.long=Hora de Nueva Zelanda
+NZ-CHAT.generic.long=Hora de Chatam
+NZ.generic.long=Hora de Nueva Zelanda
+Navajo.generic.long=Hora de las Monta\u00F1as Rocosas
+PLT.generic.long=Hora de Pakist\u00E1n
+PNT.generic.long=Hora de las Monta\u00F1as Rocosas
+PRC.generic.long=Hora de China
+PRT.generic.long=Hora del Atl\u00E1ntico
+PST.generic.long=Hora del Pac\u00EDfico
+PST8PDT.generic.long=Hora del Pac\u00edfico
+Pacific/Apia.generic.long=Hora de Samoa Occidental
+Pacific/Auckland.generic.long=Hora de Nueva Zelanda
+Pacific/Chatham.generic.long=Hora de Chatam
+Pacific/Chuuk.daylight.long=Hora de verano de Chuuk
+Pacific/Chuuk.generic.long=Hora de Chuuk
+Pacific/Chuuk.standard.long=Hora de Chuuk
+Pacific/Easter.generic.long=Hora de la Isla de Pascua
+Pacific/Efate.generic.long=Hora de Vanuatu
+Pacific/Enderbury.generic.long=Hora de la isla Phoenix
+Pacific/Fakaofo.generic.long=Hora de Tokelau
+Pacific/Fiji.generic.long=Hora de Fiji
+Pacific/Funafuti.generic.long=Hora de Tuvalu
+Pacific/Galapagos.generic.long=Hora de Gal\u00E1pagos
+Pacific/Gambier.generic.long=Hora de Gambier
+Pacific/Guadalcanal.generic.long=Hora de las Islas Solomon
+Pacific/Guam.generic.long=Hora de Chamorro
+Pacific/Honolulu.generic.long=Hora de Hawaii
+Pacific/Johnston.generic.long=Hora de Hawaii
+Pacific/Kiritimati.generic.long=Hora de las islas Line
+Pacific/Kosrae.generic.long=Hora de Kosrae
+Pacific/Kwajalein.generic.long=Hora de Islas Marshall
+Pacific/Majuro.generic.long=Hora de Islas Marshall
+Pacific/Marquesas.generic.long=Hora de Marquesas
+Pacific/Midway.generic.long=Hora de Samoa
+Pacific/Nauru.generic.long=Hora de Nauru
+Pacific/Niue.generic.long=Hora de Niue
+Pacific/Norfolk.generic.long=Hora de Norfolk
+Pacific/Noumea.generic.long=Hora de Nueva Caledonia
+Pacific/Pago_Pago.generic.long=Hora de Samoa
+Pacific/Palau.generic.long=Hora de Palau
+Pacific/Pitcairn.generic.long=Hora de Islas Pitcairn
+Pacific/Pohnpei.daylight.long=Hora de verano de Pohnpei
+Pacific/Pohnpei.generic.long=Hora de Pohnpei
+Pacific/Pohnpei.standard.long=Hora de Pohnpei
+Pacific/Ponape.daylight.long=Hora de verano de Pohnpei
+Pacific/Ponape.generic.long=Hora de Pohnpei
+Pacific/Ponape.standard.long=Hora de Pohnpei
+Pacific/Port_Moresby.generic.long=Hora de Pap\u00FAa-Nueva Guinea
+Pacific/Rarotonga.generic.long=Hora de las islas Cook
+Pacific/Saipan.generic.long=Hora de Chamorro
+Pacific/Samoa.generic.long=Hora de Samoa
+Pacific/Tahiti.generic.long=Hora de Tahit\u00ED
+Pacific/Tarawa.generic.long=Hora de las islas Gilbert
+Pacific/Tongatapu.generic.long=Hora de Tonga
+Pacific/Truk.daylight.long=Hora de verano de Chuuk
+Pacific/Truk.generic.long=Hora de Chuuk
+Pacific/Truk.standard.long=Hora de Chuuk
+Pacific/Wake.generic.long=Hora de Wake
+Pacific/Wallis.generic.long=Hora de Wallis y Futuna
+Pacific/Yap.daylight.long=Hora de verano de Chuuk
+Pacific/Yap.generic.long=Hora de Chuuk
+Pacific/Yap.standard.long=Hora de Chuuk
+Poland.generic.long=Hora de Europa Central
+Portugal.generic.long=Hora de Europa Occidental
+ROK.generic.long=Hora de Corea
+SST.generic.long=Hora de las Islas Solomon
+Singapore.generic.long=Hora de Singapur
+SystemV/AST4.generic.long=Hora del Atl\u00E1ntico
+SystemV/AST4ADT.generic.long=Hora del Atl\u00E1ntico
+SystemV/CST6.generic.long=Hora Central
+SystemV/CST6CDT.generic.long=Hora Central
+SystemV/EST5.generic.long=Hora Oriental
+SystemV/EST5EDT.generic.long=Hora Oriental
+SystemV/HST10.generic.long=Hora de Hawaii
+SystemV/MST7.generic.long=Hora de las Monta\u00F1as Rocosas
+SystemV/MST7MDT.generic.long=Hora de las Monta\u00F1as Rocosas
+SystemV/PST8.generic.long=Hora del Pac\u00EDfico
+SystemV/PST8PDT.generic.long=Hora del Pac\u00EDfico
+SystemV/YST9.generic.long=Hora de Alaska
+SystemV/YST9YDT.generic.long=Hora de Alaska
+Turkey.generic.long=Hora de Europa Oriental
+UCT.generic.long=Hora Universal Coordinada
+US/Alaska.generic.long=Hora de Alaska
+US/Aleutian.generic.long=Hora de Hawaii-Aleutian
+US/Arizona.generic.long=Hora de las Monta\u00F1as Rocosas
+US/Central.generic.long=Hora Central
+US/East-Indiana.generic.long=Hora Oriental
+US/Eastern.generic.long=Hora Oriental
+US/Hawaii.generic.long=Hora de Hawaii
+US/Indiana-Starke.generic.long=Hora Central
+US/Michigan.generic.long=Hora Oriental
+US/Mountain.generic.long=Hora de las Monta\u00F1as Rocosas
+US/Pacific-New.generic.long=Hora del Pac\u00EDfico
+US/Pacific.generic.long=Hora del Pac\u00EDfico
+US/Samoa.generic.long=Hora de Samoa
+UTC.generic.long=Hora Universal Coordinada
+Universal.generic.long=Hora Universal Coordinada
+VST.generic.long=Hora de Indochina
+W-SU.generic.long=Hora de Mosc\u00FA
+WET.generic.long=Hora de Europa Occidental
+Zulu.generic.long=Hora Universal Coordinada
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_es_short.properties Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,1743 @@
+ACT.daylight.short=CST
+ACT.generic.short=CT
+ACT.standard.short=CST
+AET.daylight.short=EST
+AET.generic.short=ET
+AET.standard.short=EST
+Africa/Abidjan.daylight.short=GMT
+Africa/Abidjan.generic.short=GMT
+Africa/Abidjan.standard.short=GMT
+Africa/Accra.daylight.short=GHST
+Africa/Accra.generic.short=GMT
+Africa/Accra.standard.short=GMT
+Africa/Addis_Ababa.daylight.short=EAST
+Africa/Addis_Ababa.generic.short=EAT
+Africa/Addis_Ababa.standard.short=EAT
+Africa/Algiers.daylight.short=CEST
+Africa/Algiers.generic.short=CET
+Africa/Algiers.standard.short=CET
+Africa/Asmara.daylight.short=EAST
+Africa/Asmara.generic.short=EAT
+Africa/Asmara.standard.short=EAT
+Africa/Asmera.daylight.short=EAST
+Africa/Asmera.generic.short=EAT
+Africa/Asmera.standard.short=EAT
+Africa/Bamako.daylight.short=GMT
+Africa/Bamako.generic.short=GMT
+Africa/Bamako.standard.short=GMT
+Africa/Bangui.daylight.short=WAST
+Africa/Bangui.generic.short=WAT
+Africa/Bangui.standard.short=WAT
+Africa/Banjul.daylight.short=GMT
+Africa/Banjul.generic.short=GMT
+Africa/Banjul.standard.short=GMT
+Africa/Bissau.daylight.short=GMT
+Africa/Bissau.generic.short=GMT
+Africa/Bissau.standard.short=GMT
+Africa/Blantyre.daylight.short=CAST
+Africa/Blantyre.generic.short=CAT
+Africa/Blantyre.standard.short=CAT
+Africa/Brazzaville.daylight.short=WAST
+Africa/Brazzaville.generic.short=WAT
+Africa/Brazzaville.standard.short=WAT
+Africa/Bujumbura.daylight.short=CAST
+Africa/Bujumbura.generic.short=CAT
+Africa/Bujumbura.standard.short=CAT
+Africa/Cairo.daylight.short=EEST
+Africa/Cairo.generic.short=EET
+Africa/Cairo.standard.short=EET
+Africa/Casablanca.daylight.short=WEST
+Africa/Casablanca.generic.short=WET
+Africa/Casablanca.standard.short=WET
+Africa/Ceuta.daylight.short=CEST
+Africa/Ceuta.generic.short=CET
+Africa/Ceuta.standard.short=CET
+Africa/Conakry.daylight.short=GMT
+Africa/Conakry.generic.short=GMT
+Africa/Conakry.standard.short=GMT
+Africa/Dakar.daylight.short=GMT
+Africa/Dakar.generic.short=GMT
+Africa/Dakar.standard.short=GMT
+Africa/Dar_es_Salaam.daylight.short=EAST
+Africa/Dar_es_Salaam.generic.short=EAT
+Africa/Dar_es_Salaam.standard.short=EAT
+Africa/Djibouti.daylight.short=EAST
+Africa/Djibouti.generic.short=EAT
+Africa/Djibouti.standard.short=EAT
+Africa/Douala.daylight.short=WAST
+Africa/Douala.generic.short=WAT
+Africa/Douala.standard.short=WAT
+Africa/El_Aaiun.daylight.short=WEST
+Africa/El_Aaiun.generic.short=WET
+Africa/El_Aaiun.standard.short=WET
+Africa/Freetown.daylight.short=SLST
+Africa/Freetown.generic.short=SLT
+Africa/Freetown.standard.short=GMT
+Africa/Gaborone.daylight.short=CAST
+Africa/Gaborone.generic.short=CAT
+Africa/Gaborone.standard.short=CAT
+Africa/Harare.daylight.short=CAST
+Africa/Harare.generic.short=CAT
+Africa/Harare.standard.short=CAT
+Africa/Johannesburg.daylight.short=SAST
+Africa/Johannesburg.generic.short=SAT
+Africa/Johannesburg.standard.short=SAST
+Africa/Juba.daylight.short=EAST
+Africa/Juba.generic.short=EAT
+Africa/Juba.standard.short=EAT
+Africa/Kampala.daylight.short=EAST
+Africa/Kampala.generic.short=EAT
+Africa/Kampala.standard.short=EAT
+Africa/Khartoum.daylight.short=EAST
+Africa/Khartoum.generic.short=EAT
+Africa/Khartoum.standard.short=EAT
+Africa/Kigali.daylight.short=CAST
+Africa/Kigali.generic.short=CAT
+Africa/Kigali.standard.short=CAT
+Africa/Kinshasa.daylight.short=WAST
+Africa/Kinshasa.generic.short=WAT
+Africa/Kinshasa.standard.short=WAT
+Africa/Lagos.daylight.short=WAST
+Africa/Lagos.generic.short=WAT
+Africa/Lagos.standard.short=WAT
+Africa/Libreville.daylight.short=WAST
+Africa/Libreville.generic.short=WAT
+Africa/Libreville.standard.short=WAT
+Africa/Lome.daylight.short=GMT
+Africa/Lome.generic.short=GMT
+Africa/Lome.standard.short=GMT
+Africa/Luanda.daylight.short=WAST
+Africa/Luanda.generic.short=WAT
+Africa/Luanda.standard.short=WAT
+Africa/Lubumbashi.daylight.short=CAST
+Africa/Lubumbashi.generic.short=CAT
+Africa/Lubumbashi.standard.short=CAT
+Africa/Lusaka.daylight.short=CAST
+Africa/Lusaka.generic.short=CAT
+Africa/Lusaka.standard.short=CAT
+Africa/Malabo.daylight.short=WAST
+Africa/Malabo.generic.short=WAT
+Africa/Malabo.standard.short=WAT
+Africa/Maputo.daylight.short=CAST
+Africa/Maputo.generic.short=CAT
+Africa/Maputo.standard.short=CAT
+Africa/Maseru.daylight.short=SAST
+Africa/Maseru.generic.short=SAT
+Africa/Maseru.standard.short=SAST
+Africa/Mbabane.daylight.short=SAST
+Africa/Mbabane.generic.short=SAT
+Africa/Mbabane.standard.short=SAST
+Africa/Mogadishu.daylight.short=EAST
+Africa/Mogadishu.generic.short=EAT
+Africa/Mogadishu.standard.short=EAT
+Africa/Monrovia.daylight.short=GMT
+Africa/Monrovia.generic.short=GMT
+Africa/Monrovia.standard.short=GMT
+Africa/Nairobi.daylight.short=EAST
+Africa/Nairobi.generic.short=EAT
+Africa/Nairobi.standard.short=EAT
+Africa/Ndjamena.daylight.short=WAST
+Africa/Ndjamena.generic.short=WAT
+Africa/Ndjamena.standard.short=WAT
+Africa/Niamey.daylight.short=WAST
+Africa/Niamey.generic.short=WAT
+Africa/Niamey.standard.short=WAT
+Africa/Nouakchott.daylight.short=GMT
+Africa/Nouakchott.generic.short=GMT
+Africa/Nouakchott.standard.short=GMT
+Africa/Ouagadougou.daylight.short=GMT
+Africa/Ouagadougou.generic.short=GMT
+Africa/Ouagadougou.standard.short=GMT
+Africa/Porto-Novo.daylight.short=WAST
+Africa/Porto-Novo.generic.short=WAT
+Africa/Porto-Novo.standard.short=WAT
+Africa/Sao_Tome.daylight.short=GMT
+Africa/Sao_Tome.generic.short=GMT
+Africa/Sao_Tome.standard.short=GMT
+Africa/Timbuktu.daylight.short=GMT
+Africa/Timbuktu.generic.short=GMT
+Africa/Timbuktu.standard.short=GMT
+Africa/Tripoli.daylight.short=EEST
+Africa/Tripoli.generic.short=EET
+Africa/Tripoli.standard.short=EET
+Africa/Tunis.daylight.short=CEST
+Africa/Tunis.generic.short=CET
+Africa/Tunis.standard.short=CET
+Africa/Windhoek.daylight.short=WAST
+Africa/Windhoek.generic.short=WAT
+Africa/Windhoek.standard.short=WAT
+AGT.daylight.short=ARST
+AGT.generic.short=ART
+AGT.standard.short=ART
+America/Adak.daylight.short=HADT
+America/Adak.generic.short=HAT
+America/Adak.standard.short=HAST
+America/Anchorage.daylight.short=AKDT
+America/Anchorage.generic.short=AKT
+America/Anchorage.standard.short=AKST
+America/Anguilla.daylight.short=ADT
+America/Anguilla.generic.short=AT
+America/Anguilla.standard.short=AST
+America/Antigua.daylight.short=ADT
+America/Antigua.generic.short=AT
+America/Antigua.standard.short=AST
+America/Araguaina.daylight.short=BRST
+America/Araguaina.generic.short=BRT
+America/Araguaina.standard.short=BRT
+America/Argentina/Buenos_Aires.daylight.short=ARST
+America/Argentina/Buenos_Aires.generic.short=ART
+America/Argentina/Buenos_Aires.standard.short=ART
+America/Argentina/Catamarca.daylight.short=ARST
+America/Argentina/Catamarca.generic.short=ART
+America/Argentina/Catamarca.standard.short=ART
+America/Argentina/ComodRivadavia.daylight.short=ARST
+America/Argentina/ComodRivadavia.generic.short=ART
+America/Argentina/ComodRivadavia.standard.short=ART
+America/Argentina/Cordoba.daylight.short=ARST
+America/Argentina/Cordoba.generic.short=ART
+America/Argentina/Cordoba.standard.short=ART
+America/Argentina/Jujuy.daylight.short=ARST
+America/Argentina/Jujuy.generic.short=ART
+America/Argentina/Jujuy.standard.short=ART
+America/Argentina/La_Rioja.daylight.short=ARST
+America/Argentina/La_Rioja.generic.short=ART
+America/Argentina/La_Rioja.standard.short=ART
+America/Argentina/Mendoza.daylight.short=ARST
+America/Argentina/Mendoza.generic.short=ART
+America/Argentina/Mendoza.standard.short=ART
+America/Argentina/Rio_Gallegos.daylight.short=ARST
+America/Argentina/Rio_Gallegos.generic.short=ART
+America/Argentina/Rio_Gallegos.standard.short=ART
+America/Argentina/Salta.daylight.short=ARST
+America/Argentina/Salta.generic.short=ART
+America/Argentina/Salta.standard.short=ART
+America/Argentina/San_Juan.daylight.short=ARST
+America/Argentina/San_Juan.generic.short=ART
+America/Argentina/San_Juan.standard.short=ART
+America/Argentina/San_Luis.daylight.short=ARST
+America/Argentina/San_Luis.generic.short=ART
+America/Argentina/San_Luis.standard.short=ART
+America/Argentina/Tucuman.daylight.short=ARST
+America/Argentina/Tucuman.generic.short=ART
+America/Argentina/Tucuman.standard.short=ART
+America/Argentina/Ushuaia.daylight.short=ARST
+America/Argentina/Ushuaia.generic.short=ART
+America/Argentina/Ushuaia.standard.short=ART
+America/Aruba.daylight.short=ADT
+America/Aruba.generic.short=AT
+America/Aruba.standard.short=AST
+America/Asuncion.daylight.short=PYST
+America/Asuncion.generic.short=PYT
+America/Asuncion.standard.short=PYT
+America/Atikokan.daylight.short=EDT
+America/Atikokan.generic.short=ET
+America/Atikokan.standard.short=EST
+America/Atka.daylight.short=HADT
+America/Atka.generic.short=HAT
+America/Atka.standard.short=HAST
+America/Bahia_Banderas.daylight.short=CDT
+America/Bahia_Banderas.generic.short=CT
+America/Bahia_Banderas.standard.short=CST
+America/Bahia.daylight.short=BRST
+America/Bahia.generic.short=BRT
+America/Bahia.standard.short=BRT
+America/Barbados.daylight.short=ADT
+America/Barbados.generic.short=AT
+America/Barbados.standard.short=AST
+America/Belem.daylight.short=BRST
+America/Belem.generic.short=BRT
+America/Belem.standard.short=BRT
+America/Belize.daylight.short=CDT
+America/Belize.generic.short=CT
+America/Belize.standard.short=CST
+America/Blanc-Sablon.daylight.short=ADT
+America/Blanc-Sablon.generic.short=AT
+America/Blanc-Sablon.standard.short=AST
+America/Boa_Vista.daylight.short=AMST
+America/Boa_Vista.generic.short=AMT
+America/Boa_Vista.standard.short=AMT
+America/Bogota.daylight.short=COST
+America/Bogota.generic.short=COT
+America/Bogota.standard.short=COT
+America/Boise.daylight.short=MDT
+America/Boise.generic.short=MT
+America/Boise.standard.short=MST
+America/Buenos_Aires.daylight.short=ARST
+America/Buenos_Aires.generic.short=ART
+America/Buenos_Aires.standard.short=ART
+America/Cambridge_Bay.daylight.short=MDT
+America/Cambridge_Bay.generic.short=MT
+America/Cambridge_Bay.standard.short=MST
+America/Campo_Grande.daylight.short=AMST
+America/Campo_Grande.generic.short=AMT
+America/Campo_Grande.standard.short=AMT
+America/Cancun.daylight.short=CDT
+America/Cancun.generic.short=CT
+America/Cancun.standard.short=CST
+America/Caracas.daylight.short=VEST
+America/Caracas.generic.short=VET
+America/Caracas.standard.short=VET
+America/Catamarca.daylight.short=ARST
+America/Catamarca.generic.short=ART
+America/Catamarca.standard.short=ART
+America/Cayenne.daylight.short=GFST
+America/Cayenne.generic.short=GFT
+America/Cayenne.standard.short=GFT
+America/Cayman.daylight.short=EDT
+America/Cayman.generic.short=ET
+America/Cayman.standard.short=EST
+America/Chicago.daylight.short=CDT
+America/Chicago.generic.short=CT
+America/Chicago.standard.short=CST
+America/Chihuahua.daylight.short=MDT
+America/Chihuahua.generic.short=MT
+America/Chihuahua.standard.short=MST
+America/Coral_Harbour.daylight.short=EDT
+America/Coral_Harbour.generic.short=ET
+America/Coral_Harbour.standard.short=EST
+America/Cordoba.daylight.short=ARST
+America/Cordoba.generic.short=ART
+America/Cordoba.standard.short=ART
+America/Costa_Rica.daylight.short=CDT
+America/Costa_Rica.generic.short=CT
+America/Costa_Rica.standard.short=CST
+America/Creston.daylight.short=MDT
+America/Creston.generic.short=MT
+America/Creston.standard.short=MST
+America/Cuiaba.daylight.short=AMST
+America/Cuiaba.generic.short=AMT
+America/Cuiaba.standard.short=AMT
+America/Curacao.daylight.short=ADT
+America/Curacao.generic.short=AT
+America/Curacao.standard.short=AST
+America/Danmarkshavn.daylight.short=GMT
+America/Danmarkshavn.generic.short=GMT
+America/Danmarkshavn.standard.short=GMT
+America/Dawson_Creek.daylight.short=MDT
+America/Dawson_Creek.generic.short=MT
+America/Dawson_Creek.standard.short=MST
+America/Dawson.daylight.short=PDT
+America/Dawson.generic.short=PT
+America/Dawson.standard.short=PST
+America/Denver.daylight.short=MDT
+America/Denver.generic.short=MT
+America/Denver.standard.short=MST
+America/Detroit.daylight.short=EDT
+America/Detroit.generic.short=ET
+America/Detroit.standard.short=EST
+America/Dominica.daylight.short=ADT
+America/Dominica.generic.short=AT
+America/Dominica.standard.short=AST
+America/Edmonton.daylight.short=MDT
+America/Edmonton.generic.short=MT
+America/Edmonton.standard.short=MST
+America/Eirunepe.daylight.short=ACST
+America/Eirunepe.generic.short=ACT
+America/Eirunepe.standard.short=ACT
+America/El_Salvador.daylight.short=CDT
+America/El_Salvador.generic.short=CT
+America/El_Salvador.standard.short=CST
+America/Ensenada.daylight.short=PDT
+America/Ensenada.generic.short=PT
+America/Ensenada.standard.short=PST
+America/Fortaleza.daylight.short=BRST
+America/Fortaleza.generic.short=BRT
+America/Fortaleza.standard.short=BRT
+America/Fort_Wayne.daylight.short=EDT
+America/Fort_Wayne.generic.short=ET
+America/Fort_Wayne.standard.short=EST
+America/Glace_Bay.daylight.short=ADT
+America/Glace_Bay.generic.short=AT
+America/Glace_Bay.standard.short=AST
+America/Godthab.daylight.short=WGST
+America/Godthab.generic.short=WGT
+America/Godthab.standard.short=WGT
+America/Goose_Bay.daylight.short=ADT
+America/Goose_Bay.generic.short=AT
+America/Goose_Bay.standard.short=AST
+America/Grand_Turk.daylight.short=EDT
+America/Grand_Turk.generic.short=ET
+America/Grand_Turk.standard.short=EST
+America/Grenada.daylight.short=ADT
+America/Grenada.generic.short=AT
+America/Grenada.standard.short=AST
+America/Guadeloupe.daylight.short=ADT
+America/Guadeloupe.generic.short=AT
+America/Guadeloupe.standard.short=AST
+America/Guatemala.daylight.short=CDT
+America/Guatemala.generic.short=CT
+America/Guatemala.standard.short=CST
+America/Guayaquil.daylight.short=ECST
+America/Guayaquil.generic.short=ECT
+America/Guayaquil.standard.short=ECT
+America/Guyana.daylight.short=GYST
+America/Guyana.generic.short=GYT
+America/Guyana.standard.short=GYT
+America/Halifax.daylight.short=ADT
+America/Halifax.generic.short=AT
+America/Halifax.standard.short=AST
+America/Havana.daylight.short=CDT
+America/Havana.generic.short=CT
+America/Havana.standard.short=CST
+America/Hermosillo.daylight.short=MDT
+America/Hermosillo.generic.short=MT
+America/Hermosillo.standard.short=MST
+America/Indiana/Indianapolis.daylight.short=EDT
+America/Indiana/Indianapolis.generic.short=ET
+America/Indiana/Indianapolis.standard.short=EST
+America/Indiana/Knox.daylight.short=CDT
+America/Indiana/Knox.generic.short=CT
+America/Indiana/Knox.standard.short=CST
+America/Indiana/Marengo.daylight.short=EDT
+America/Indiana/Marengo.generic.short=ET
+America/Indiana/Marengo.standard.short=EST
+America/Indiana/Petersburg.daylight.short=EDT
+America/Indiana/Petersburg.generic.short=ET
+America/Indiana/Petersburg.standard.short=EST
+America/Indianapolis.daylight.short=EDT
+America/Indianapolis.generic.short=ET
+America/Indianapolis.standard.short=EST
+America/Indiana/Tell_City.daylight.short=CDT
+America/Indiana/Tell_City.generic.short=CT
+America/Indiana/Tell_City.standard.short=CST
+America/Indiana/Vevay.daylight.short=EDT
+America/Indiana/Vevay.generic.short=ET
+America/Indiana/Vevay.standard.short=EST
+America/Indiana/Vincennes.daylight.short=EDT
+America/Indiana/Vincennes.generic.short=ET
+America/Indiana/Vincennes.standard.short=EST
+America/Indiana/Winamac.daylight.short=EDT
+America/Indiana/Winamac.generic.short=ET
+America/Indiana/Winamac.standard.short=EST
+America/Inuvik.daylight.short=MDT
+America/Inuvik.generic.short=MT
+America/Inuvik.standard.short=MST
+America/Iqaluit.daylight.short=EDT
+America/Iqaluit.generic.short=ET
+America/Iqaluit.standard.short=EST
+America/Jamaica.daylight.short=EDT
+America/Jamaica.generic.short=ET
+America/Jamaica.standard.short=EST
+America/Jujuy.daylight.short=ARST
+America/Jujuy.generic.short=ART
+America/Jujuy.standard.short=ART
+America/Juneau.daylight.short=AKDT
+America/Juneau.generic.short=AKT
+America/Juneau.standard.short=AKST
+America/Kentucky/Louisville.daylight.short=EDT
+America/Kentucky/Louisville.generic.short=ET
+America/Kentucky/Louisville.standard.short=EST
+America/Kentucky/Monticello.daylight.short=EDT
+America/Kentucky/Monticello.generic.short=ET
+America/Kentucky/Monticello.standard.short=EST
+America/Knox_IN.daylight.short=CDT
+America/Knox_IN.generic.short=CT
+America/Knox_IN.standard.short=CST
+America/Kralendijk.daylight.short=ADT
+America/Kralendijk.generic.short=AT
+America/Kralendijk.standard.short=AST
+America/La_Paz.daylight.short=BOST
+America/La_Paz.generic.short=BOT
+America/La_Paz.standard.short=BOT
+America/Lima.daylight.short=PEST
+America/Lima.generic.short=PET
+America/Lima.standard.short=PET
+America/Los_Angeles.daylight.short=PDT
+America/Los_Angeles.generic.short=PT
+America/Los_Angeles.standard.short=PST
+America/Louisville.daylight.short=EDT
+America/Louisville.generic.short=ET
+America/Louisville.standard.short=EST
+America/Lower_Princes.daylight.short=ADT
+America/Lower_Princes.generic.short=AT
+America/Lower_Princes.standard.short=AST
+America/Maceio.daylight.short=BRST
+America/Maceio.generic.short=BRT
+America/Maceio.standard.short=BRT
+America/Managua.daylight.short=CDT
+America/Managua.generic.short=CT
+America/Managua.standard.short=CST
+America/Manaus.daylight.short=AMST
+America/Manaus.generic.short=AMT
+America/Manaus.standard.short=AMT
+America/Marigot.daylight.short=ADT
+America/Marigot.generic.short=AT
+America/Marigot.standard.short=AST
+America/Martinique.daylight.short=ADT
+America/Martinique.generic.short=AT
+America/Martinique.standard.short=AST
+America/Matamoros.daylight.short=CDT
+America/Matamoros.generic.short=CT
+America/Matamoros.standard.short=CST
+America/Mazatlan.daylight.short=MDT
+America/Mazatlan.generic.short=MT
+America/Mazatlan.standard.short=MST
+America/Mendoza.daylight.short=ARST
+America/Mendoza.generic.short=ART
+America/Mendoza.standard.short=ART
+America/Menominee.daylight.short=CDT
+America/Menominee.generic.short=CT
+America/Menominee.standard.short=CST
+America/Merida.daylight.short=CDT
+America/Merida.generic.short=CT
+America/Merida.standard.short=CST
+America/Metlakatla.daylight.short=MeDT
+America/Metlakatla.generic.short=MeT
+America/Metlakatla.standard.short=MeST
+America/Mexico_City.daylight.short=CDT
+America/Mexico_City.generic.short=CT
+America/Mexico_City.standard.short=CST
+America/Miquelon.daylight.short=PMDT
+America/Miquelon.generic.short=PMT
+America/Miquelon.standard.short=PMST
+America/Moncton.daylight.short=ADT
+America/Moncton.generic.short=AT
+America/Moncton.standard.short=AST
+America/Monterrey.daylight.short=CDT
+America/Monterrey.generic.short=CT
+America/Monterrey.standard.short=CST
+America/Montevideo.daylight.short=UYST
+America/Montevideo.generic.short=UYT
+America/Montevideo.standard.short=UYT
+America/Montreal.daylight.short=EDT
+America/Montreal.generic.short=ET
+America/Montreal.standard.short=EST
+America/Montserrat.daylight.short=ADT
+America/Montserrat.generic.short=AT
+America/Montserrat.standard.short=AST
+America/Nassau.daylight.short=EDT
+America/Nassau.generic.short=ET
+America/Nassau.standard.short=EST
+America/New_York.daylight.short=EDT
+America/New_York.generic.short=ET
+America/New_York.standard.short=EST
+America/Nipigon.daylight.short=EDT
+America/Nipigon.generic.short=ET
+America/Nipigon.standard.short=EST
+America/Nome.daylight.short=AKDT
+America/Nome.generic.short=AKT
+America/Nome.standard.short=AKST
+America/Noronha.daylight.short=FNST
+America/Noronha.generic.short=FNT
+America/Noronha.standard.short=FNT
+America/North_Dakota/Beulah.daylight.short=CDT
+America/North_Dakota/Beulah.generic.short=CT
+America/North_Dakota/Beulah.standard.short=CST
+America/North_Dakota/Center.daylight.short=CDT
+America/North_Dakota/Center.generic.short=CT
+America/North_Dakota/Center.standard.short=CST
+America/North_Dakota/New_Salem.daylight.short=CDT
+America/North_Dakota/New_Salem.generic.short=CT
+America/North_Dakota/New_Salem.standard.short=CST
+America/Ojinaga.daylight.short=MDT
+America/Ojinaga.generic.short=MT
+America/Ojinaga.standard.short=MST
+America/Panama.daylight.short=EDT
+America/Panama.generic.short=ET
+America/Panama.standard.short=EST
+America/Pangnirtung.daylight.short=EDT
+America/Pangnirtung.generic.short=ET
+America/Pangnirtung.standard.short=EST
+America/Paramaribo.daylight.short=SRST
+America/Paramaribo.generic.short=SRT
+America/Paramaribo.standard.short=SRT
+America/Phoenix.daylight.short=MDT
+America/Phoenix.generic.short=MT
+America/Phoenix.standard.short=MST
+America/Port-au-Prince.daylight.short=EDT
+America/Port-au-Prince.generic.short=ET
+America/Port-au-Prince.standard.short=EST
+America/Porto_Acre.daylight.short=ACST
+America/Porto_Acre.generic.short=ACT
+America/Porto_Acre.standard.short=ACT
+America/Port_of_Spain.daylight.short=ADT
+America/Port_of_Spain.generic.short=AT
+America/Port_of_Spain.standard.short=AST
+America/Porto_Velho.daylight.short=AMST
+America/Porto_Velho.generic.short=AMT
+America/Porto_Velho.standard.short=AMT
+America/Puerto_Rico.daylight.short=ADT
+America/Puerto_Rico.generic.short=AT
+America/Puerto_Rico.standard.short=AST
+America/Rainy_River.daylight.short=CDT
+America/Rainy_River.generic.short=CT
+America/Rainy_River.standard.short=CST
+America/Rankin_Inlet.daylight.short=CDT
+America/Rankin_Inlet.generic.short=CT
+America/Rankin_Inlet.standard.short=CST
+America/Recife.daylight.short=BRST
+America/Recife.generic.short=BRT
+America/Recife.standard.short=BRT
+America/Regina.daylight.short=CDT
+America/Regina.generic.short=CT
+America/Regina.standard.short=CST
+America/Resolute.daylight.short=CDT
+America/Resolute.generic.short=CT
+America/Resolute.standard.short=CST
+America/Rio_Branco.daylight.short=ACST
+America/Rio_Branco.generic.short=ACT
+America/Rio_Branco.standard.short=ACT
+America/Rosario.daylight.short=ARST
+America/Rosario.generic.short=ART
+America/Rosario.standard.short=ART
+America/Santa_Isabel.daylight.short=PDT
+America/Santa_Isabel.generic.short=PT
+America/Santa_Isabel.standard.short=PST
+America/Santarem.daylight.short=BRST
+America/Santarem.generic.short=BRT
+America/Santarem.standard.short=BRT
+America/Santiago.daylight.short=CLST
+America/Santiago.generic.short=CLT
+America/Santiago.standard.short=CLT
+America/Santo_Domingo.daylight.short=ADT
+America/Santo_Domingo.generic.short=AT
+America/Santo_Domingo.standard.short=AST
+America/Sao_Paulo.daylight.short=BRST
+America/Sao_Paulo.generic.short=BRT
+America/Sao_Paulo.standard.short=BRT
+America/Scoresbysund.daylight.short=EGST
+America/Scoresbysund.generic.short=EGT
+America/Scoresbysund.standard.short=EGT
+America/Shiprock.daylight.short=MDT
+America/Shiprock.generic.short=MT
+America/Shiprock.standard.short=MST
+America/Sitka.daylight.short=AKDT
+America/Sitka.generic.short=AKT
+America/Sitka.standard.short=AKST
+America/St_Barthelemy.daylight.short=ADT
+America/St_Barthelemy.generic.short=AT
+America/St_Barthelemy.standard.short=AST
+America/St_Johns.daylight.short=NDT
+America/St_Johns.generic.short=NT
+America/St_Johns.standard.short=NST
+America/St_Kitts.daylight.short=ADT
+America/St_Kitts.generic.short=AT
+America/St_Kitts.standard.short=AST
+America/St_Lucia.daylight.short=ADT
+America/St_Lucia.generic.short=AT
+America/St_Lucia.standard.short=AST
+America/St_Thomas.daylight.short=ADT
+America/St_Thomas.generic.short=AT
+America/St_Thomas.standard.short=AST
+America/St_Vincent.daylight.short=ADT
+America/St_Vincent.generic.short=AT
+America/St_Vincent.standard.short=AST
+America/Swift_Current.daylight.short=CDT
+America/Swift_Current.generic.short=CT
+America/Swift_Current.standard.short=CST
+America/Tegucigalpa.daylight.short=CDT
+America/Tegucigalpa.generic.short=CT
+America/Tegucigalpa.standard.short=CST
+America/Thule.daylight.short=ADT
+America/Thule.generic.short=AT
+America/Thule.standard.short=AST
+America/Thunder_Bay.daylight.short=EDT
+America/Thunder_Bay.generic.short=ET
+America/Thunder_Bay.standard.short=EST
+America/Tijuana.daylight.short=PDT
+America/Tijuana.generic.short=PT
+America/Tijuana.standard.short=PST
+America/Toronto.daylight.short=EDT
+America/Toronto.generic.short=ET
+America/Toronto.standard.short=EST
+America/Tortola.daylight.short=ADT
+America/Tortola.generic.short=AT
+America/Tortola.standard.short=AST
+America/Vancouver.daylight.short=PDT
+America/Vancouver.generic.short=PT
+America/Vancouver.standard.short=PST
+America/Virgin.daylight.short=ADT
+America/Virgin.generic.short=AT
+America/Virgin.standard.short=AST
+America/Whitehorse.daylight.short=PDT
+America/Whitehorse.generic.short=PT
+America/Whitehorse.standard.short=PST
+America/Winnipeg.daylight.short=CDT
+America/Winnipeg.generic.short=CT
+America/Winnipeg.standard.short=CST
+America/Yakutat.daylight.short=AKDT
+America/Yakutat.generic.short=AKT
+America/Yakutat.standard.short=AKST
+America/Yellowknife.daylight.short=MDT
+America/Yellowknife.generic.short=MT
+America/Yellowknife.standard.short=MST
+Antarctica/Casey.daylight.short=WST
+Antarctica/Casey.generic.short=WT
+Antarctica/Casey.standard.short=WST
+Antarctica/Davis.daylight.short=DAVST
+Antarctica/Davis.generic.short=DAVT
+Antarctica/Davis.standard.short=DAVT
+Antarctica/DumontDUrville.daylight.short=DDUST
+Antarctica/DumontDUrville.generic.short=DDUT
+Antarctica/DumontDUrville.standard.short=DDUT
+Antarctica/Macquarie.daylight.short=MIST
+Antarctica/Macquarie.generic.short=MIST
+Antarctica/Macquarie.standard.short=MIST
+Antarctica/Mawson.daylight.short=MAWST
+Antarctica/Mawson.generic.short=MAWT
+Antarctica/Mawson.standard.short=MAWT
+Antarctica/McMurdo.daylight.short=NZDT
+Antarctica/McMurdo.generic.short=NZT
+Antarctica/McMurdo.standard.short=NZST
+Antarctica/Palmer.daylight.short=CLST
+Antarctica/Palmer.generic.short=CLT
+Antarctica/Palmer.standard.short=CLT
+Antarctica/Rothera.daylight.short=ROTST
+Antarctica/Rothera.generic.short=ROTT
+Antarctica/Rothera.standard.short=ROTT
+Antarctica/South_Pole.daylight.short=NZDT
+Antarctica/South_Pole.generic.short=NZT
+Antarctica/South_Pole.standard.short=NZST
+Antarctica/Syowa.daylight.short=SYOST
+Antarctica/Syowa.generic.short=SYOT
+Antarctica/Syowa.standard.short=SYOT
+Antarctica/Vostok.daylight.short=VOSST
+Antarctica/Vostok.generic.short=VOST
+Antarctica/Vostok.standard.short=VOST
+Arctic/Longyearbyen.daylight.short=CEST
+Arctic/Longyearbyen.generic.short=CET
+Arctic/Longyearbyen.standard.short=CET
+ART.daylight.short=EEST
+ART.generic.short=EET
+ART.standard.short=EET
+Asia/Aden.daylight.short=ADT
+Asia/Aden.generic.short=AT
+Asia/Aden.standard.short=AST
+Asia/Almaty.daylight.short=ALMST
+Asia/Almaty.generic.short=ALMT
+Asia/Almaty.standard.short=ALMT
+Asia/Amman.daylight.short=ADT
+Asia/Amman.generic.short=AT
+Asia/Amman.standard.short=AST
+Asia/Anadyr.daylight.short=ANAST
+Asia/Anadyr.generic.short=ANAT
+Asia/Anadyr.standard.short=ANAT
+Asia/Aqtau.daylight.short=AQTST
+Asia/Aqtau.generic.short=AQTT
+Asia/Aqtau.standard.short=AQTT
+Asia/Aqtobe.daylight.short=AQTST
+Asia/Aqtobe.generic.short=AQTT
+Asia/Aqtobe.standard.short=AQTT
+Asia/Ashgabat.daylight.short=TMST
+Asia/Ashgabat.generic.short=TMT
+Asia/Ashgabat.standard.short=TMT
+Asia/Ashkhabad.daylight.short=TMST
+Asia/Ashkhabad.generic.short=TMT
+Asia/Ashkhabad.standard.short=TMT
+Asia/Baghdad.daylight.short=ADT
+Asia/Baghdad.generic.short=AT
+Asia/Baghdad.standard.short=AST
+Asia/Bahrain.daylight.short=ADT
+Asia/Bahrain.generic.short=AT
+Asia/Bahrain.standard.short=AST
+Asia/Baku.daylight.short=AZST
+Asia/Baku.generic.short=AZT
+Asia/Baku.standard.short=AZT
+Asia/Bangkok.daylight.short=ICST
+Asia/Bangkok.generic.short=ICT
+Asia/Bangkok.standard.short=ICT
+Asia/Beirut.daylight.short=EEST
+Asia/Beirut.generic.short=EET
+Asia/Beirut.standard.short=EET
+Asia/Bishkek.daylight.short=KGST
+Asia/Bishkek.generic.short=KGT
+Asia/Bishkek.standard.short=KGT
+Asia/Brunei.daylight.short=BNST
+Asia/Brunei.generic.short=BNT
+Asia/Brunei.standard.short=BNT
+Asia/Calcutta.daylight.short=IDT
+Asia/Calcutta.generic.short=IT
+Asia/Calcutta.standard.short=IST
+Asia/Choibalsan.daylight.short=CHOST
+Asia/Choibalsan.generic.short=CHOT
+Asia/Choibalsan.standard.short=CHOT
+Asia/Chongqing.daylight.short=CDT
+Asia/Chongqing.generic.short=CT
+Asia/Chongqing.standard.short=CST
+Asia/Chungking.daylight.short=CDT
+Asia/Chungking.generic.short=CT
+Asia/Chungking.standard.short=CST
+Asia/Colombo.daylight.short=IDT
+Asia/Colombo.generic.short=IT
+Asia/Colombo.standard.short=IST
+Asia/Dacca.daylight.short=BDST
+Asia/Dacca.generic.short=BDT
+Asia/Dacca.standard.short=BDT
+Asia/Damascus.daylight.short=EEST
+Asia/Damascus.generic.short=EET
+Asia/Damascus.standard.short=EET
+Asia/Dhaka.daylight.short=BDST
+Asia/Dhaka.generic.short=BDT
+Asia/Dhaka.standard.short=BDT
+Asia/Dili.daylight.short=TLST
+Asia/Dili.generic.short=TLT
+Asia/Dili.standard.short=TLT
+Asia/Dubai.daylight.short=GDT
+Asia/Dubai.generic.short=GT
+Asia/Dubai.standard.short=GST
+Asia/Dushanbe.daylight.short=TJST
+Asia/Dushanbe.generic.short=TJT
+Asia/Dushanbe.standard.short=TJT
+Asia/Gaza.daylight.short=EEST
+Asia/Gaza.generic.short=EET
+Asia/Gaza.standard.short=EET
+Asia/Harbin.daylight.short=CDT
+Asia/Harbin.generic.short=CT
+Asia/Harbin.standard.short=CST
+Asia/Hebron.daylight.short=EEST
+Asia/Hebron.generic.short=EET
+Asia/Hebron.standard.short=EET
+Asia/Ho_Chi_Minh.daylight.short=ICST
+Asia/Ho_Chi_Minh.generic.short=ICT
+Asia/Ho_Chi_Minh.standard.short=ICT
+Asia/Hong_Kong.daylight.short=HKST
+Asia/Hong_Kong.generic.short=HKT
+Asia/Hong_Kong.standard.short=HKT
+Asia/Hovd.daylight.short=HOVST
+Asia/Hovd.generic.short=HOVT
+Asia/Hovd.standard.short=HOVT
+Asia/Irkutsk.daylight.short=IRKST
+Asia/Irkutsk.generic.short=IRKT
+Asia/Irkutsk.standard.short=IRKT
+Asia/Istanbul.daylight.short=EEST
+Asia/Istanbul.generic.short=EET
+Asia/Istanbul.standard.short=EET
+Asia/Jakarta.daylight.short=WIST
+Asia/Jakarta.generic.short=WIB
+Asia/Jakarta.standard.short=WIB
+Asia/Jayapura.daylight.short=EIST
+Asia/Jayapura.generic.short=WIT
+Asia/Jayapura.standard.short=WIT
+Asia/Jerusalem.daylight.short=IDT
+Asia/Jerusalem.generic.short=IT
+Asia/Jerusalem.standard.short=IST
+Asia/Kabul.daylight.short=AFST
+Asia/Kabul.generic.short=AFT
+Asia/Kabul.standard.short=AFT
+Asia/Kamchatka.daylight.short=PETST
+Asia/Kamchatka.generic.short=PETT
+Asia/Kamchatka.standard.short=PETT
+Asia/Karachi.daylight.short=PKST
+Asia/Karachi.generic.short=PKT
+Asia/Karachi.standard.short=PKT
+Asia/Kashgar.daylight.short=CDT
+Asia/Kashgar.generic.short=CT
+Asia/Kashgar.standard.short=CST
+Asia/Kathmandu.daylight.short=NPST
+Asia/Kathmandu.generic.short=NPT
+Asia/Kathmandu.standard.short=NPT
+Asia/Katmandu.daylight.short=NPST
+Asia/Katmandu.generic.short=NPT
+Asia/Katmandu.standard.short=NPT
+Asia/Khandyga.daylight.short=YAKST
+Asia/Khandyga.generic.short=YAKT
+Asia/Khandyga.standard.short=YAKT
+Asia/Kolkata.daylight.short=IDT
+Asia/Kolkata.generic.short=IT
+Asia/Kolkata.standard.short=IST
+Asia/Krasnoyarsk.daylight.short=KRAST
+Asia/Krasnoyarsk.generic.short=KRAT
+Asia/Krasnoyarsk.standard.short=KRAT
+Asia/Kuala_Lumpur.daylight.short=MYST
+Asia/Kuala_Lumpur.generic.short=MYT
+Asia/Kuala_Lumpur.standard.short=MYT
+Asia/Kuching.daylight.short=MYST
+Asia/Kuching.generic.short=MYT
+Asia/Kuching.standard.short=MYT
+Asia/Kuwait.daylight.short=ADT
+Asia/Kuwait.generic.short=AT
+Asia/Kuwait.standard.short=AST
+Asia/Macao.daylight.short=CDT
+Asia/Macao.generic.short=CT
+Asia/Macao.standard.short=CST
+Asia/Macau.daylight.short=CDT
+Asia/Macau.generic.short=CT
+Asia/Macau.standard.short=CST
+Asia/Magadan.daylight.short=MAGST
+Asia/Magadan.generic.short=MAGT
+Asia/Magadan.standard.short=MAGT
+Asia/Makassar.daylight.short=CIST
+Asia/Makassar.generic.short=WITA
+Asia/Makassar.standard.short=WITA
+Asia/Manila.daylight.short=PHST
+Asia/Manila.generic.short=PHT
+Asia/Manila.standard.short=PHT
+Asia/Muscat.daylight.short=GDT
+Asia/Muscat.generic.short=GT
+Asia/Muscat.standard.short=GST
+Asia/Nicosia.daylight.short=EEST
+Asia/Nicosia.generic.short=EET
+Asia/Nicosia.standard.short=EET
+Asia/Novokuznetsk.daylight.short=NOVST
+Asia/Novokuznetsk.generic.short=NOVT
+Asia/Novokuznetsk.standard.short=NOVT
+Asia/Novosibirsk.daylight.short=NOVST
+Asia/Novosibirsk.generic.short=NOVT
+Asia/Novosibirsk.standard.short=NOVT
+Asia/Omsk.daylight.short=OMSST
+Asia/Omsk.generic.short=OMST
+Asia/Omsk.standard.short=OMST
+Asia/Oral.daylight.short=ORAST
+Asia/Oral.generic.short=ORAT
+Asia/Oral.standard.short=ORAT
+Asia/Phnom_Penh.daylight.short=ICST
+Asia/Phnom_Penh.generic.short=ICT
+Asia/Phnom_Penh.standard.short=ICT
+Asia/Pontianak.daylight.short=WIST
+Asia/Pontianak.generic.short=WIB
+Asia/Pontianak.standard.short=WIB
+Asia/Pyongyang.daylight.short=KDT
+Asia/Pyongyang.generic.short=KT
+Asia/Pyongyang.standard.short=KST
+Asia/Qatar.daylight.short=ADT
+Asia/Qatar.generic.short=AT
+Asia/Qatar.standard.short=AST
+Asia/Qyzylorda.daylight.short=QYZST
+Asia/Qyzylorda.generic.short=QYZT
+Asia/Qyzylorda.standard.short=QYZT
+Asia/Rangoon.daylight.short=MMST
+Asia/Rangoon.generic.short=MMT
+Asia/Rangoon.standard.short=MMT
+Asia/Saigon.daylight.short=ICST
+Asia/Saigon.generic.short=ICT
+Asia/Saigon.standard.short=ICT
+Asia/Sakhalin.daylight.short=SAKST
+Asia/Sakhalin.generic.short=SAKT
+Asia/Sakhalin.standard.short=SAKT
+Asia/Samarkand.daylight.short=UZST
+Asia/Samarkand.generic.short=UZT
+Asia/Samarkand.standard.short=UZT
+Asia/Seoul.daylight.short=KDT
+Asia/Seoul.generic.short=KT
+Asia/Seoul.standard.short=KST
+Asia/Shanghai.daylight.short=CDT
+Asia/Shanghai.generic.short=CT
+Asia/Shanghai.standard.short=CST
+Asia/Singapore.daylight.short=SGST
+Asia/Singapore.generic.short=SGT
+Asia/Singapore.standard.short=SGT
+Asia/Taipei.daylight.short=CDT
+Asia/Taipei.generic.short=CT
+Asia/Taipei.standard.short=CST
+Asia/Tashkent.daylight.short=UZST
+Asia/Tashkent.generic.short=UZT
+Asia/Tashkent.standard.short=UZT
+Asia/Tbilisi.daylight.short=GEST
+Asia/Tbilisi.generic.short=GET
+Asia/Tbilisi.standard.short=GET
+Asia/Tehran.daylight.short=IRDT
+Asia/Tehran.generic.short=IRT
+Asia/Tehran.standard.short=IRST
+Asia/Tel_Aviv.daylight.short=IDT
+Asia/Tel_Aviv.generic.short=IT
+Asia/Tel_Aviv.standard.short=IST
+Asia/Thimbu.daylight.short=BTST
+Asia/Thimbu.generic.short=BTT
+Asia/Thimbu.standard.short=BTT
+Asia/Thimphu.daylight.short=BTST
+Asia/Thimphu.generic.short=BTT
+Asia/Thimphu.standard.short=BTT
+Asia/Tokyo.daylight.short=JDT
+Asia/Tokyo.generic.short=JT
+Asia/Tokyo.standard.short=JST
+Asia/Ujung_Pandang.daylight.short=CIST
+Asia/Ujung_Pandang.generic.short=WITA
+Asia/Ujung_Pandang.standard.short=WITA
+Asia/Ulaanbaatar.daylight.short=ULAST
+Asia/Ulaanbaatar.generic.short=ULAT
+Asia/Ulaanbaatar.standard.short=ULAT
+Asia/Ulan_Bator.daylight.short=ULAST
+Asia/Ulan_Bator.generic.short=ULAT
+Asia/Ulan_Bator.standard.short=ULAT
+Asia/Urumqi.daylight.short=CDT
+Asia/Urumqi.generic.short=CT
+Asia/Urumqi.standard.short=CST
+Asia/Ust-Nera.daylight.short=VLAST
+Asia/Ust-Nera.generic.short=VLAT
+Asia/Ust-Nera.standard.short=VLAT
+Asia/Vientiane.daylight.short=ICST
+Asia/Vientiane.generic.short=ICT
+Asia/Vientiane.standard.short=ICT
+Asia/Vladivostok.daylight.short=VLAST
+Asia/Vladivostok.generic.short=VLAT
+Asia/Vladivostok.standard.short=VLAT
+Asia/Yakutsk.daylight.short=YAKST
+Asia/Yakutsk.generic.short=YAKT
+Asia/Yakutsk.standard.short=YAKT
+Asia/Yekaterinburg.daylight.short=YEKST
+Asia/Yekaterinburg.generic.short=YEKT
+Asia/Yekaterinburg.standard.short=YEKT
+Asia/Yerevan.daylight.short=AMST
+Asia/Yerevan.generic.short=AMT
+Asia/Yerevan.standard.short=AMT
+AST.daylight.short=AKDT
+AST.generic.short=AKT
+AST.standard.short=AKST
+Atlantic/Azores.daylight.short=AZOST
+Atlantic/Azores.generic.short=AZOT
+Atlantic/Azores.standard.short=AZOT
+Atlantic/Bermuda.daylight.short=ADT
+Atlantic/Bermuda.generic.short=AT
+Atlantic/Bermuda.standard.short=AST
+Atlantic/Canary.daylight.short=WEST
+Atlantic/Canary.generic.short=WET
+Atlantic/Canary.standard.short=WET
+Atlantic/Cape_Verde.daylight.short=CVST
+Atlantic/Cape_Verde.generic.short=CVT
+Atlantic/Cape_Verde.standard.short=CVT
+Atlantic/Faeroe.daylight.short=WEST
+Atlantic/Faeroe.generic.short=WET
+Atlantic/Faeroe.standard.short=WET
+Atlantic/Faroe.daylight.short=WEST
+Atlantic/Faroe.generic.short=WET
+Atlantic/Faroe.standard.short=WET
+Atlantic/Jan_Mayen.daylight.short=CEST
+Atlantic/Jan_Mayen.generic.short=CET
+Atlantic/Jan_Mayen.standard.short=CET
+Atlantic/Madeira.daylight.short=WEST
+Atlantic/Madeira.generic.short=WET
+Atlantic/Madeira.standard.short=WET
+Atlantic/Reykjavik.daylight.short=GMT
+Atlantic/Reykjavik.generic.short=GMT
+Atlantic/Reykjavik.standard.short=GMT
+Atlantic/South_Georgia.daylight.short=GDT
+Atlantic/South_Georgia.generic.short=GT
+Atlantic/South_Georgia.standard.short=GST
+Atlantic/Stanley.daylight.short=FKST
+Atlantic/Stanley.generic.short=FKT
+Atlantic/Stanley.standard.short=FKT
+Atlantic/St_Helena.daylight.short=GMT
+Atlantic/St_Helena.generic.short=GMT
+Atlantic/St_Helena.standard.short=GMT
+Australia/ACT.daylight.short=EST
+Australia/ACT.generic.short=ET
+Australia/ACT.standard.short=EST
+Australia/Adelaide.daylight.short=CST
+Australia/Adelaide.generic.short=CT
+Australia/Adelaide.standard.short=CST
+Australia/Brisbane.daylight.short=EST
+Australia/Brisbane.generic.short=ET
+Australia/Brisbane.standard.short=EST
+Australia/Broken_Hill.daylight.short=CST
+Australia/Broken_Hill.generic.short=CT
+Australia/Broken_Hill.standard.short=CST
+Australia/Canberra.daylight.short=EST
+Australia/Canberra.generic.short=ET
+Australia/Canberra.standard.short=EST
+Australia/Currie.daylight.short=EST
+Australia/Currie.generic.short=ET
+Australia/Currie.standard.short=EST
+Australia/Darwin.daylight.short=CST
+Australia/Darwin.generic.short=CT
+Australia/Darwin.standard.short=CST
+Australia/Eucla.daylight.short=CWST
+Australia/Eucla.generic.short=CWT
+Australia/Eucla.standard.short=CWST
+Australia/Hobart.daylight.short=EST
+Australia/Hobart.generic.short=ET
+Australia/Hobart.standard.short=EST
+Australia/LHI.daylight.short=LHST
+Australia/LHI.generic.short=LHT
+Australia/LHI.standard.short=LHST
+Australia/Lindeman.daylight.short=EST
+Australia/Lindeman.generic.short=ET
+Australia/Lindeman.standard.short=EST
+Australia/Lord_Howe.daylight.short=LHST
+Australia/Lord_Howe.generic.short=LHT
+Australia/Lord_Howe.standard.short=LHST
+Australia/Melbourne.daylight.short=EST
+Australia/Melbourne.generic.short=ET
+Australia/Melbourne.standard.short=EST
+Australia/North.daylight.short=CST
+Australia/North.generic.short=CT
+Australia/North.standard.short=CST
+Australia/NSW.daylight.short=EST
+Australia/NSW.generic.short=ET
+Australia/NSW.standard.short=EST
+Australia/Perth.daylight.short=WST
+Australia/Perth.generic.short=WT
+Australia/Perth.standard.short=WST
+Australia/Queensland.daylight.short=EST
+Australia/Queensland.generic.short=ET
+Australia/Queensland.standard.short=EST
+Australia/South.daylight.short=CST
+Australia/South.generic.short=CT
+Australia/South.standard.short=CST
+Australia/Sydney.daylight.short=EST
+Australia/Sydney.generic.short=ET
+Australia/Sydney.standard.short=EST
+Australia/Tasmania.daylight.short=EST
+Australia/Tasmania.generic.short=ET
+Australia/Tasmania.standard.short=EST
+Australia/Victoria.daylight.short=EST
+Australia/Victoria.generic.short=ET
+Australia/Victoria.standard.short=EST
+Australia/West.daylight.short=WST
+Australia/West.generic.short=WT
+Australia/West.standard.short=WST
+Australia/Yancowinna.daylight.short=CST
+Australia/Yancowinna.generic.short=CT
+Australia/Yancowinna.standard.short=CST
+BET.daylight.short=BRST
+BET.generic.short=BRT
+BET.standard.short=BRT
+Brazil/Acre.daylight.short=ACST
+Brazil/Acre.generic.short=ACT
+Brazil/Acre.standard.short=ACT
+Brazil/DeNoronha.daylight.short=FNST
+Brazil/DeNoronha.generic.short=FNT
+Brazil/DeNoronha.standard.short=FNT
+Brazil/East.daylight.short=BRST
+Brazil/East.generic.short=BRT
+Brazil/East.standard.short=BRT
+Brazil/West.daylight.short=AMST
+Brazil/West.generic.short=AMT
+Brazil/West.standard.short=AMT
+BST.daylight.short=BDST
+BST.generic.short=BDT
+BST.standard.short=BDT
+Canada/Atlantic.daylight.short=ADT
+Canada/Atlantic.generic.short=AT
+Canada/Atlantic.standard.short=AST
+Canada/Central.daylight.short=CDT
+Canada/Central.generic.short=CT
+Canada/Central.standard.short=CST
+Canada/Eastern.daylight.short=EDT
+Canada/Eastern.generic.short=ET
+Canada/Eastern.standard.short=EST
+Canada/East-Saskatchewan.daylight.short=CDT
+Canada/East-Saskatchewan.generic.short=CT
+Canada/East-Saskatchewan.standard.short=CST
+Canada/Mountain.daylight.short=MDT
+Canada/Mountain.generic.short=MT
+Canada/Mountain.standard.short=MST
+Canada/Newfoundland.daylight.short=NDT
+Canada/Newfoundland.generic.short=NT
+Canada/Newfoundland.standard.short=NST
+Canada/Pacific.daylight.short=PDT
+Canada/Pacific.generic.short=PT
+Canada/Pacific.standard.short=PST
+Canada/Saskatchewan.daylight.short=CDT
+Canada/Saskatchewan.generic.short=CT
+Canada/Saskatchewan.standard.short=CST
+Canada/Yukon.daylight.short=PDT
+Canada/Yukon.generic.short=PT
+Canada/Yukon.standard.short=PST
+CAT.daylight.short=CAST
+CAT.generic.short=CAT
+CAT.standard.short=CAT
+CET.daylight.short=CEST
+CET.generic.short=CET
+CET.standard.short=CET
+Chile/Continental.daylight.short=CLST
+Chile/Continental.generic.short=CLT
+Chile/Continental.standard.short=CLT
+Chile/EasterIsland.daylight.short=EASST
+Chile/EasterIsland.generic.short=EAST
+Chile/EasterIsland.standard.short=EAST
+CNT.daylight.short=NDT
+CNT.generic.short=NT
+CNT.standard.short=NST
+CST6CDT.daylight.short=CDT
+CST6CDT.generic.short=CT
+CST6CDT.standard.short=CST
+CST.daylight.short=CDT
+CST.generic.short=CT
+CST.standard.short=CST
+CTT.daylight.short=CDT
+CTT.generic.short=CT
+CTT.standard.short=CST
+Cuba.daylight.short=CDT
+Cuba.generic.short=CT
+Cuba.standard.short=CST
+EAT.daylight.short=EAST
+EAT.generic.short=EAT
+EAT.standard.short=EAT
+ECT.daylight.short=CEST
+ECT.generic.short=CET
+ECT.standard.short=CET
+EET.daylight.short=EEST
+EET.generic.short=EET
+EET.standard.short=EET
+Egypt.daylight.short=EEST
+Egypt.generic.short=EET
+Egypt.standard.short=EET
+Eire.daylight.short=IST
+Eire.generic.short=IT
+Eire.standard.short=GMT
+EST5EDT.daylight.short=EDT
+EST5EDT.generic.short=ET
+EST5EDT.standard.short=EST
+EST.daylight.short=EDT
+EST.generic.short=ET
+EST.standard.short=EST
+Etc/Greenwich.daylight.short=GMT
+Etc/Greenwich.generic.short=GMT
+Etc/Greenwich.standard.short=GMT
+Etc/UCT.daylight.short=UTC
+Etc/UCT.generic.short=UTC
+Etc/UCT.standard.short=UTC
+Etc/Universal.daylight.short=UTC
+Etc/Universal.generic.short=UTC
+Etc/Universal.standard.short=UTC
+Etc/UTC.daylight.short=UTC
+Etc/UTC.generic.short=UTC
+Etc/UTC.standard.short=UTC
+Etc/Zulu.daylight.short=UTC
+Etc/Zulu.generic.short=UTC
+Etc/Zulu.standard.short=UTC
+Europe/Amsterdam.daylight.short=CEST
+Europe/Amsterdam.generic.short=CET
+Europe/Amsterdam.standard.short=CET
+Europe/Andorra.daylight.short=CEST
+Europe/Andorra.generic.short=CET
+Europe/Andorra.standard.short=CET
+Europe/Athens.daylight.short=EEST
+Europe/Athens.generic.short=EET
+Europe/Athens.standard.short=EET
+Europe/Belfast.daylight.short=BST
+Europe/Belfast.generic.short=BT
+Europe/Belfast.standard.short=GMT
+Europe/Belgrade.daylight.short=CEST
+Europe/Belgrade.generic.short=CET
+Europe/Belgrade.standard.short=CET
+Europe/Berlin.daylight.short=CEST
+Europe/Berlin.generic.short=CET
+Europe/Berlin.standard.short=CET
+Europe/Bratislava.daylight.short=CEST
+Europe/Bratislava.generic.short=CET
+Europe/Bratislava.standard.short=CET
+Europe/Brussels.daylight.short=CEST
+Europe/Brussels.generic.short=CET
+Europe/Brussels.standard.short=CET
+Europe/Bucharest.daylight.short=EEST
+Europe/Bucharest.generic.short=EET
+Europe/Bucharest.standard.short=EET
+Europe/Budapest.daylight.short=CEST
+Europe/Budapest.generic.short=CET
+Europe/Budapest.standard.short=CET
+Europe/Busingen.daylight.short=CEST
+Europe/Busingen.generic.short=CET
+Europe/Busingen.standard.short=CET
+Europe/Chisinau.daylight.short=EEST
+Europe/Chisinau.generic.short=EET
+Europe/Chisinau.standard.short=EET
+Europe/Copenhagen.daylight.short=CEST
+Europe/Copenhagen.generic.short=CET
+Europe/Copenhagen.standard.short=CET
+Europe/Dublin.daylight.short=IST
+Europe/Dublin.generic.short=IT
+Europe/Dublin.standard.short=GMT
+Europe/Gibraltar.daylight.short=CEST
+Europe/Gibraltar.generic.short=CET
+Europe/Gibraltar.standard.short=CET
+Europe/Guernsey.daylight.short=BST
+Europe/Guernsey.generic.short=BT
+Europe/Guernsey.standard.short=GMT
+Europe/Helsinki.daylight.short=EEST
+Europe/Helsinki.generic.short=EET
+Europe/Helsinki.standard.short=EET
+Europe/Isle_of_Man.daylight.short=BST
+Europe/Isle_of_Man.generic.short=BT
+Europe/Isle_of_Man.standard.short=GMT
+Europe/Istanbul.daylight.short=EEST
+Europe/Istanbul.generic.short=EET
+Europe/Istanbul.standard.short=EET
+Europe/Jersey.daylight.short=BST
+Europe/Jersey.generic.short=BT
+Europe/Jersey.standard.short=GMT
+Europe/Kaliningrad.daylight.short=FEST
+Europe/Kaliningrad.generic.short=FET
+Europe/Kaliningrad.standard.short=FET
+Europe/Kiev.daylight.short=EEST
+Europe/Kiev.generic.short=EET
+Europe/Kiev.standard.short=EET
+Europe/Lisbon.daylight.short=WEST
+Europe/Lisbon.generic.short=WET
+Europe/Lisbon.standard.short=WET
+Europe/Ljubljana.daylight.short=CEST
+Europe/Ljubljana.generic.short=CET
+Europe/Ljubljana.standard.short=CET
+Europe/London.daylight.short=BST
+Europe/London.generic.short=BT
+Europe/London.standard.short=GMT
+Europe/Luxembourg.daylight.short=CEST
+Europe/Luxembourg.generic.short=CET
+Europe/Luxembourg.standard.short=CET
+Europe/Madrid.daylight.short=CEST
+Europe/Madrid.generic.short=CET
+Europe/Madrid.standard.short=CET
+Europe/Malta.daylight.short=CEST
+Europe/Malta.generic.short=CET
+Europe/Malta.standard.short=CET
+Europe/Mariehamn.daylight.short=EEST
+Europe/Mariehamn.generic.short=EET
+Europe/Mariehamn.standard.short=EET
+Europe/Minsk.daylight.short=FEST
+Europe/Minsk.generic.short=FET
+Europe/Minsk.standard.short=FET
+Europe/Monaco.daylight.short=CEST
+Europe/Monaco.generic.short=CET
+Europe/Monaco.standard.short=CET
+Europe/Moscow.daylight.short=MSD
+Europe/Moscow.generic.short=MT
+Europe/Moscow.standard.short=MSK
+Europe/Nicosia.daylight.short=EEST
+Europe/Nicosia.generic.short=EET
+Europe/Nicosia.standard.short=EET
+Europe/Oslo.daylight.short=CEST
+Europe/Oslo.generic.short=CET
+Europe/Oslo.standard.short=CET
+Europe/Paris.daylight.short=CEST
+Europe/Paris.generic.short=CET
+Europe/Paris.standard.short=CET
+Europe/Podgorica.daylight.short=CEST
+Europe/Podgorica.generic.short=CET
+Europe/Podgorica.standard.short=CET
+Europe/Prague.daylight.short=CEST
+Europe/Prague.generic.short=CET
+Europe/Prague.standard.short=CET
+Europe/Riga.daylight.short=EEST
+Europe/Riga.generic.short=EET
+Europe/Riga.standard.short=EET
+Europe/Rome.daylight.short=CEST
+Europe/Rome.generic.short=CET
+Europe/Rome.standard.short=CET
+Europe/Samara.daylight.short=SAMST
+Europe/Samara.generic.short=SAMT
+Europe/Samara.standard.short=SAMT
+Europe/San_Marino.daylight.short=CEST
+Europe/San_Marino.generic.short=CET
+Europe/San_Marino.standard.short=CET
+Europe/Sarajevo.daylight.short=CEST
+Europe/Sarajevo.generic.short=CET
+Europe/Sarajevo.standard.short=CET
+Europe/Simferopol.daylight.short=EEST
+Europe/Simferopol.generic.short=EET
+Europe/Simferopol.standard.short=EET
+Europe/Skopje.daylight.short=CEST
+Europe/Skopje.generic.short=CET
+Europe/Skopje.standard.short=CET
+Europe/Sofia.daylight.short=EEST
+Europe/Sofia.generic.short=EET
+Europe/Sofia.standard.short=EET
+Europe/Stockholm.daylight.short=CEST
+Europe/Stockholm.generic.short=CET
+Europe/Stockholm.standard.short=CET
+Europe/Tallinn.daylight.short=EEST
+Europe/Tallinn.generic.short=EET
+Europe/Tallinn.standard.short=EET
+Europe/Tirane.daylight.short=CEST
+Europe/Tirane.generic.short=CET
+Europe/Tirane.standard.short=CET
+Europe/Tiraspol.daylight.short=EEST
+Europe/Tiraspol.generic.short=EET
+Europe/Tiraspol.standard.short=EET
+Europe/Uzhgorod.daylight.short=EEST
+Europe/Uzhgorod.generic.short=EET
+Europe/Uzhgorod.standard.short=EET
+Europe/Vaduz.daylight.short=CEST
+Europe/Vaduz.generic.short=CET
+Europe/Vaduz.standard.short=CET
+Europe/Vatican.daylight.short=CEST
+Europe/Vatican.generic.short=CET
+Europe/Vatican.standard.short=CET
+Europe/Vienna.daylight.short=CEST
+Europe/Vienna.generic.short=CET
+Europe/Vienna.standard.short=CET
+Europe/Vilnius.daylight.short=EEST
+Europe/Vilnius.generic.short=EET
+Europe/Vilnius.standard.short=EET
+Europe/Volgograd.daylight.short=VOLST
+Europe/Volgograd.generic.short=VOLT
+Europe/Volgograd.standard.short=VOLT
+Europe/Warsaw.daylight.short=CEST
+Europe/Warsaw.generic.short=CET
+Europe/Warsaw.standard.short=CET
+Europe/Zagreb.daylight.short=CEST
+Europe/Zagreb.generic.short=CET
+Europe/Zagreb.standard.short=CET
+Europe/Zaporozhye.daylight.short=EEST
+Europe/Zaporozhye.generic.short=EET
+Europe/Zaporozhye.standard.short=EET
+Europe/Zurich.daylight.short=CEST
+Europe/Zurich.generic.short=CET
+Europe/Zurich.standard.short=CET
+GB.daylight.short=BST
+GB-Eire.daylight.short=BST
+GB-Eire.generic.short=BT
+GB-Eire.standard.short=GMT
+GB.generic.short=BT
+GB.standard.short=GMT
+GMT.daylight.short=GMT
+GMT.generic.short=GMT
+GMT.standard.short=GMT
+Greenwich.daylight.short=GMT
+Greenwich.generic.short=GMT
+Greenwich.standard.short=GMT
+Hongkong.daylight.short=HKST
+Hongkong.generic.short=HKT
+Hongkong.standard.short=HKT
+HST.daylight.short=HDT
+HST.generic.short=HT
+HST.standard.short=HST
+Iceland.daylight.short=GMT
+Iceland.generic.short=GMT
+Iceland.standard.short=GMT
+IET.daylight.short=EDT
+IET.generic.short=ET
+IET.standard.short=EST
+Indian/Antananarivo.daylight.short=EAST
+Indian/Antananarivo.generic.short=EAT
+Indian/Antananarivo.standard.short=EAT
+Indian/Chagos.daylight.short=IOST
+Indian/Chagos.generic.short=IOT
+Indian/Chagos.standard.short=IOT
+Indian/Christmas.daylight.short=CXST
+Indian/Christmas.generic.short=CIT
+Indian/Christmas.standard.short=CXT
+Indian/Cocos.daylight.short=CCST
+Indian/Cocos.generic.short=CCT
+Indian/Cocos.standard.short=CCT
+Indian/Comoro.daylight.short=EAST
+Indian/Comoro.generic.short=EAT
+Indian/Comoro.standard.short=EAT
+Indian/Kerguelen.daylight.short=TFST
+Indian/Kerguelen.generic.short=TFT
+Indian/Kerguelen.standard.short=TFT
+Indian/Mahe.daylight.short=SCST
+Indian/Mahe.generic.short=SCT
+Indian/Mahe.standard.short=SCT
+Indian/Maldives.daylight.short=MVST
+Indian/Maldives.generic.short=MVT
+Indian/Maldives.standard.short=MVT
+Indian/Mauritius.daylight.short=MUST
+Indian/Mauritius.generic.short=MUT
+Indian/Mauritius.standard.short=MUT
+Indian/Mayotte.daylight.short=EAST
+Indian/Mayotte.generic.short=EAT
+Indian/Mayotte.standard.short=EAT
+Indian/Reunion.daylight.short=REST
+Indian/Reunion.generic.short=RET
+Indian/Reunion.standard.short=RET
+Iran.daylight.short=IRDT
+Iran.generic.short=IRT
+Iran.standard.short=IRST
+Israel.daylight.short=IDT
+Israel.generic.short=IT
+Israel.standard.short=IST
+IST.daylight.short=IDT
+IST.generic.short=IT
+IST.standard.short=IST
+Jamaica.daylight.short=EDT
+Jamaica.generic.short=ET
+Jamaica.standard.short=EST
+Japan.daylight.short=JDT
+Japan.generic.short=JT
+Japan.standard.short=JST
+JST.daylight.short=JDT
+JST.generic.short=JT
+JST.standard.short=JST
+Kwajalein.daylight.short=MHST
+Kwajalein.generic.short=MHT
+Kwajalein.standard.short=MHT
+Libya.daylight.short=EEST
+Libya.generic.short=EET
+Libya.standard.short=EET
+MET.daylight.short=MEST
+MET.generic.short=MET
+MET.standard.short=MET
+Mexico/BajaNorte.daylight.short=PDT
+Mexico/BajaNorte.generic.short=PT
+Mexico/BajaNorte.standard.short=PST
+Mexico/BajaSur.daylight.short=MDT
+Mexico/BajaSur.generic.short=MT
+Mexico/BajaSur.standard.short=MST
+Mexico/General.daylight.short=CDT
+Mexico/General.generic.short=CT
+Mexico/General.standard.short=CST
+MIT.daylight.short=WSDT
+MIT.generic.short=WST
+MIT.standard.short=WST
+MST7MDT.daylight.short=MDT
+MST7MDT.generic.short=MT
+MST7MDT.standard.short=MST
+MST.daylight.short=MDT
+MST.generic.short=MT
+MST.standard.short=MST
+Navajo.daylight.short=MDT
+Navajo.generic.short=MT
+Navajo.standard.short=MST
+NET.daylight.short=AMST
+NET.generic.short=AMT
+NET.standard.short=AMT
+NST.daylight.short=NZDT
+NST.generic.short=NZT
+NST.standard.short=NZST
+NZ-CHAT.daylight.short=CHADT
+NZ-CHAT.generic.short=CHAT
+NZ-CHAT.standard.short=CHAST
+NZ.daylight.short=NZDT
+NZ.generic.short=NZT
+NZ.standard.short=NZST
+Pacific/Apia.daylight.short=WSDT
+Pacific/Apia.generic.short=WST
+Pacific/Apia.standard.short=WST
+Pacific/Auckland.daylight.short=NZDT
+Pacific/Auckland.generic.short=NZT
+Pacific/Auckland.standard.short=NZST
+Pacific/Chatham.daylight.short=CHADT
+Pacific/Chatham.generic.short=CHAT
+Pacific/Chatham.standard.short=CHAST
+Pacific/Chuuk.daylight.short=CHUST
+Pacific/Chuuk.generic.short=CHUT
+Pacific/Chuuk.standard.short=CHUT
+Pacific/Easter.daylight.short=EASST
+Pacific/Easter.generic.short=EAST
+Pacific/Easter.standard.short=EAST
+Pacific/Efate.daylight.short=VUST
+Pacific/Efate.generic.short=VUT
+Pacific/Efate.standard.short=VUT
+Pacific/Enderbury.daylight.short=PHOST
+Pacific/Enderbury.generic.short=PHOT
+Pacific/Enderbury.standard.short=PHOT
+Pacific/Fakaofo.daylight.short=TKST
+Pacific/Fakaofo.generic.short=TKT
+Pacific/Fakaofo.standard.short=TKT
+Pacific/Fiji.daylight.short=FJST
+Pacific/Fiji.generic.short=FJT
+Pacific/Fiji.standard.short=FJT
+Pacific/Funafuti.daylight.short=TVST
+Pacific/Funafuti.generic.short=TVT
+Pacific/Funafuti.standard.short=TVT
+Pacific/Galapagos.daylight.short=GALST
+Pacific/Galapagos.generic.short=GALT
+Pacific/Galapagos.standard.short=GALT
+Pacific/Gambier.daylight.short=GAMST
+Pacific/Gambier.generic.short=GAMT
+Pacific/Gambier.standard.short=GAMT
+Pacific/Guadalcanal.daylight.short=SBST
+Pacific/Guadalcanal.generic.short=SBT
+Pacific/Guadalcanal.standard.short=SBT
+Pacific/Guam.daylight.short=ChDT
+Pacific/Guam.generic.short=ChT
+Pacific/Guam.standard.short=ChST
+Pacific/Honolulu.daylight.short=HDT
+Pacific/Honolulu.generic.short=HT
+Pacific/Honolulu.standard.short=HST
+Pacific/Johnston.daylight.short=HDT
+Pacific/Johnston.generic.short=HT
+Pacific/Johnston.standard.short=HST
+Pacific/Kiritimati.daylight.short=LINST
+Pacific/Kiritimati.generic.short=LINT
+Pacific/Kiritimati.standard.short=LINT
+Pacific/Kosrae.daylight.short=KOSST
+Pacific/Kosrae.generic.short=KOST
+Pacific/Kosrae.standard.short=KOST
+Pacific/Kwajalein.daylight.short=MHST
+Pacific/Kwajalein.generic.short=MHT
+Pacific/Kwajalein.standard.short=MHT
+Pacific/Majuro.daylight.short=MHST
+Pacific/Majuro.generic.short=MHT
+Pacific/Majuro.standard.short=MHT
+Pacific/Marquesas.daylight.short=MARST
+Pacific/Marquesas.generic.short=MART
+Pacific/Marquesas.standard.short=MART
+Pacific/Midway.daylight.short=SDT
+Pacific/Midway.generic.short=ST
+Pacific/Midway.standard.short=SST
+Pacific/Nauru.daylight.short=NRST
+Pacific/Nauru.generic.short=NRT
+Pacific/Nauru.standard.short=NRT
+Pacific/Niue.daylight.short=NUST
+Pacific/Niue.generic.short=NUT
+Pacific/Niue.standard.short=NUT
+Pacific/Norfolk.daylight.short=NFST
+Pacific/Norfolk.generic.short=NFT
+Pacific/Norfolk.standard.short=NFT
+Pacific/Noumea.daylight.short=NCST
+Pacific/Noumea.generic.short=NCT
+Pacific/Noumea.standard.short=NCT
+Pacific/Pago_Pago.daylight.short=SDT
+Pacific/Pago_Pago.generic.short=ST
+Pacific/Pago_Pago.standard.short=SST
+Pacific/Palau.daylight.short=PWST
+Pacific/Palau.generic.short=PWT
+Pacific/Palau.standard.short=PWT
+Pacific/Pitcairn.daylight.short=PDT
+Pacific/Pitcairn.generic.short=PT
+Pacific/Pitcairn.standard.short=PST
+Pacific/Pohnpei.daylight.short=PONST
+Pacific/Pohnpei.generic.short=PONT
+Pacific/Pohnpei.standard.short=PONT
+Pacific/Ponape.daylight.short=PONST
+Pacific/Ponape.generic.short=PONT
+Pacific/Ponape.standard.short=PONT
+Pacific/Port_Moresby.daylight.short=PGST
+Pacific/Port_Moresby.generic.short=PGT
+Pacific/Port_Moresby.standard.short=PGT
+Pacific/Rarotonga.daylight.short=CKHST
+Pacific/Rarotonga.generic.short=CKT
+Pacific/Rarotonga.standard.short=CKT
+Pacific/Saipan.daylight.short=ChDT
+Pacific/Saipan.generic.short=ChT
+Pacific/Saipan.standard.short=ChST
+Pacific/Samoa.daylight.short=SDT
+Pacific/Samoa.generic.short=ST
+Pacific/Samoa.standard.short=SST
+Pacific/Tahiti.daylight.short=TAHST
+Pacific/Tahiti.generic.short=TAHT
+Pacific/Tahiti.standard.short=TAHT
+Pacific/Tarawa.daylight.short=GILST
+Pacific/Tarawa.generic.short=GILT
+Pacific/Tarawa.standard.short=GILT
+Pacific/Tongatapu.daylight.short=TOST
+Pacific/Tongatapu.generic.short=TOT
+Pacific/Tongatapu.standard.short=TOT
+Pacific/Truk.daylight.short=CHUST
+Pacific/Truk.generic.short=CHUT
+Pacific/Truk.standard.short=CHUT
+Pacific/Wake.daylight.short=WAKST
+Pacific/Wake.generic.short=WAKT
+Pacific/Wake.standard.short=WAKT
+Pacific/Wallis.daylight.short=WFST
+Pacific/Wallis.generic.short=WFT
+Pacific/Wallis.standard.short=WFT
+Pacific/Yap.daylight.short=CHUST
+Pacific/Yap.generic.short=CHUT
+Pacific/Yap.standard.short=CHUT
+PLT.daylight.short=PKST
+PLT.generic.short=PKT
+PLT.standard.short=PKT
+PNT.daylight.short=MDT
+PNT.generic.short=MT
+PNT.standard.short=MST
+Poland.daylight.short=CEST
+Poland.generic.short=CET
+Poland.standard.short=CET
+Portugal.daylight.short=WEST
+Portugal.generic.short=WET
+Portugal.standard.short=WET
+PRC.daylight.short=CDT
+PRC.generic.short=CT
+PRC.standard.short=CST
+PRT.daylight.short=ADT
+PRT.generic.short=AT
+PRT.standard.short=AST
+PST8PDT.daylight.short=PDT
+PST8PDT.generic.short=PT
+PST8PDT.standard.short=PST
+PST.daylight.short=PDT
+PST.generic.short=PT
+PST.standard.short=PST
+ROK.daylight.short=KDT
+ROK.generic.short=KT
+ROK.standard.short=KST
+Singapore.daylight.short=SGST
+Singapore.generic.short=SGT
+Singapore.standard.short=SGT
+SST.daylight.short=SBST
+SST.generic.short=SBT
+SST.standard.short=SBT
+SystemV/AST4ADT.daylight.short=ADT
+SystemV/AST4ADT.generic.short=AT
+SystemV/AST4ADT.standard.short=AST
+SystemV/AST4.daylight.short=ADT
+SystemV/AST4.generic.short=AT
+SystemV/AST4.standard.short=AST
+SystemV/CST6CDT.daylight.short=CDT
+SystemV/CST6CDT.generic.short=CT
+SystemV/CST6CDT.standard.short=CST
+SystemV/CST6.daylight.short=CDT
+SystemV/CST6.generic.short=CT
+SystemV/CST6.standard.short=CST
+SystemV/EST5.daylight.short=EDT
+SystemV/EST5EDT.daylight.short=EDT
+SystemV/EST5EDT.generic.short=ET
+SystemV/EST5EDT.standard.short=EST
+SystemV/EST5.generic.short=ET
+SystemV/EST5.standard.short=EST
+SystemV/HST10.daylight.short=HDT
+SystemV/HST10.generic.short=HT
+SystemV/HST10.standard.short=HST
+SystemV/MST7.daylight.short=MDT
+SystemV/MST7.generic.short=MT
+SystemV/MST7MDT.daylight.short=MDT
+SystemV/MST7MDT.generic.short=MT
+SystemV/MST7MDT.standard.short=MST
+SystemV/MST7.standard.short=MST
+SystemV/PST8.daylight.short=PDT
+SystemV/PST8.generic.short=PT
+SystemV/PST8PDT.daylight.short=PDT
+SystemV/PST8PDT.generic.short=PT
+SystemV/PST8PDT.standard.short=PST
+SystemV/PST8.standard.short=PST
+SystemV/YST9.daylight.short=AKDT
+SystemV/YST9.generic.short=AKT
+SystemV/YST9.standard.short=AKST
+SystemV/YST9YDT.daylight.short=AKDT
+SystemV/YST9YDT.generic.short=AKT
+SystemV/YST9YDT.standard.short=AKST
+Turkey.daylight.short=EEST
+Turkey.generic.short=EET
+Turkey.standard.short=EET
+UCT.daylight.short=UTC
+UCT.generic.short=UTC
+UCT.standard.short=UTC
+Universal.daylight.short=UTC
+Universal.generic.short=UTC
+Universal.standard.short=UTC
+US/Alaska.daylight.short=AKDT
+US/Alaska.generic.short=AKT
+US/Alaska.standard.short=AKST
+US/Aleutian.daylight.short=HADT
+US/Aleutian.generic.short=HAT
+US/Aleutian.standard.short=HAST
+US/Arizona.daylight.short=MDT
+US/Arizona.generic.short=MT
+US/Arizona.standard.short=MST
+US/Central.daylight.short=CDT
+US/Central.generic.short=CT
+US/Central.standard.short=CST
+US/Eastern.daylight.short=EDT
+US/Eastern.generic.short=ET
+US/Eastern.standard.short=EST
+US/East-Indiana.daylight.short=EDT
+US/East-Indiana.generic.short=ET
+US/East-Indiana.standard.short=EST
+US/Hawaii.daylight.short=HDT
+US/Hawaii.generic.short=HT
+US/Hawaii.standard.short=HST
+US/Indiana-Starke.daylight.short=CDT
+US/Indiana-Starke.generic.short=CT
+US/Indiana-Starke.standard.short=CST
+US/Michigan.daylight.short=EDT
+US/Michigan.generic.short=ET
+US/Michigan.standard.short=EST
+US/Mountain.daylight.short=MDT
+US/Mountain.generic.short=MT
+US/Mountain.standard.short=MST
+US/Pacific.daylight.short=PDT
+US/Pacific.generic.short=PT
+US/Pacific-New.daylight.short=PDT
+US/Pacific-New.generic.short=PT
+US/Pacific-New.standard.short=PST
+US/Pacific.standard.short=PST
+US/Samoa.daylight.short=SDT
+US/Samoa.generic.short=ST
+US/Samoa.standard.short=SST
+UTC.daylight.short=UTC
+UTC.generic.short=UTC
+UTC.standard.short=UTC
+VST.daylight.short=ICST
+VST.generic.short=ICT
+VST.standard.short=ICT
+WET.daylight.short=WEST
+WET.generic.short=WET
+WET.standard.short=WET
+W-SU.daylight.short=MSD
+W-SU.generic.short=MT
+W-SU.standard.short=MSK
+Zulu.daylight.short=UTC
+Zulu.generic.short=UTC
+Zulu.standard.short=UTC
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_fr.properties Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,651 @@
+ACT.daylight.long=Heure d'\u00E9t\u00E9 d'Australie centrale (Territoire du Nord)
+ACT.generic.long=Centre (Territoire du Nord)
+ACT.standard.long=Heure standard d'Australie centrale (Territoire du Nord)
+AET.daylight.long=Heure d'\u00E9t\u00E9 de l'Est (Nouvelle-Galles du Sud)
+AET.generic.long=C\u00F4te Est (Nouvelle-Galles du Sud)
+AET.standard.long=Heure normale de l'Est (Nouvelle-Galles du Sud)
+AGT.generic.long=Heure d'Argentine
+ART.generic.long=Heure d'Europe de l'Est
+AST.generic.long=Alaska
+Africa/Abidjan.generic.long=Heure de Greenwich
+Africa/Accra.generic.long=Heure du Ghana
+Africa/Addis_Ababa.generic.long=Heure d'Afrique de l'Est
+Africa/Algiers.generic.long=Heure d'Europe centrale
+Africa/Asmara.generic.long=Heure d'Afrique de l'Est
+Africa/Asmera.generic.long=Heure d'Afrique de l'Est
+Africa/Bamako.generic.long=Heure de Greenwich
+Africa/Bangui.generic.long=Heure d'Afrique de l'Ouest
+Africa/Banjul.generic.long=Heure de Greenwich
+Africa/Bissau.generic.long=Heure de Greenwich
+Africa/Blantyre.generic.long=Heure d'Afrique centrale
+Africa/Brazzaville.generic.long=Heure d'Afrique de l'Ouest
+Africa/Bujumbura.generic.long=Heure d'Afrique centrale
+Africa/Cairo.generic.long=Heure d'Europe de l'Est
+Africa/Casablanca.generic.long=Heure d'Europe de l'Ouest
+Africa/Ceuta.generic.long=Heure d'Europe centrale
+Africa/Conakry.generic.long=Heure de Greenwich
+Africa/Dakar.generic.long=Heure de Greenwich
+Africa/Dar_es_Salaam.generic.long=Heure d'Afrique de l'Est
+Africa/Djibouti.generic.long=Heure d'Afrique de l'Est
+Africa/Douala.generic.long=Heure d'Afrique de l'Ouest
+Africa/El_Aaiun.generic.long=Heure d'Europe de l'Ouest
+Africa/Freetown.generic.long=Heure de Sierra Leone
+Africa/Gaborone.generic.long=Heure d'Afrique centrale
+Africa/Harare.generic.long=Heure d'Afrique centrale
+Africa/Johannesburg.generic.long=Afrique du Sud
+Africa/Juba.generic.long=Heure d'Afrique de l'Est
+Africa/Kampala.generic.long=Heure d'Afrique de l'Est
+Africa/Khartoum.generic.long=Heure d'Afrique de l'Est
+Africa/Kigali.generic.long=Heure d'Afrique centrale
+Africa/Kinshasa.generic.long=Heure d'Afrique de l'Ouest
+Africa/Lagos.generic.long=Heure d'Afrique de l'Ouest
+Africa/Libreville.generic.long=Heure d'Afrique de l'Ouest
+Africa/Lome.generic.long=Heure de Greenwich
+Africa/Luanda.generic.long=Heure d'Afrique de l'Ouest
+Africa/Lubumbashi.generic.long=Heure d'Afrique centrale
+Africa/Lusaka.generic.long=Heure d'Afrique centrale
+Africa/Malabo.generic.long=Heure d'Afrique de l'Ouest
+Africa/Maputo.generic.long=Heure d'Afrique centrale
+Africa/Maseru.generic.long=Afrique du Sud
+Africa/Mbabane.generic.long=Afrique du Sud
+Africa/Mogadishu.generic.long=Heure d'Afrique de l'Est
+Africa/Monrovia.generic.long=Heure de Greenwich
+Africa/Nairobi.generic.long=Heure d'Afrique de l'Est
+Africa/Ndjamena.generic.long=Heure d'Afrique de l'Ouest
+Africa/Niamey.generic.long=Heure d'Afrique de l'Ouest
+Africa/Nouakchott.generic.long=Heure de Greenwich
+Africa/Ouagadougou.generic.long=Heure de Greenwich
+Africa/Porto-Novo.generic.long=Heure d'Afrique de l'Ouest
+Africa/Sao_Tome.generic.long=Heure de Greenwich
+Africa/Timbuktu.generic.long=Heure de Greenwich
+Africa/Tripoli.generic.long=Heure d'Europe de l'Est
+Africa/Tunis.generic.long=Heure d'Europe centrale
+Africa/Windhoek.generic.long=Heure d'Afrique de l'Ouest
+America/Adak.generic.long=Hawa\u00EF-Iles Al\u00E9outiennes
+America/Anchorage.generic.long=Alaska
+America/Anguilla.generic.long=Atlantique
+America/Antigua.generic.long=Atlantique
+America/Araguaina.generic.long=Heure du Br\u00E9sil
+America/Argentina/Buenos_Aires.generic.long=Heure d'Argentine
+America/Argentina/Catamarca.generic.long=Heure d'Argentine
+America/Argentina/ComodRivadavia.generic.long=Heure d'Argentine
+America/Argentina/Cordoba.generic.long=Heure d'Argentine
+America/Argentina/Jujuy.generic.long=Heure d'Argentine
+America/Argentina/La_Rioja.generic.long=Heure d'Argentine
+America/Argentina/Mendoza.generic.long=Heure d'Argentine
+America/Argentina/Rio_Gallegos.generic.long=Heure d'Argentine
+America/Argentina/Salta.generic.long=Heure d'Argentine
+America/Argentina/San_Juan.generic.long=Heure d'Argentine
+America/Argentina/San_Luis.generic.long=Heure d'Argentine
+America/Argentina/Tucuman.generic.long=Heure d'Argentine
+America/Argentina/Ushuaia.generic.long=Heure d'Argentine
+America/Aruba.generic.long=Atlantique
+America/Asuncion.generic.long=Heure du Paraguay
+America/Atikokan.generic.long=C\u00F4te Est
+America/Atka.generic.long=Hawa\u00EF-Iles Al\u00E9outiennes
+America/Bahia.generic.long=Heure du Br\u00E9sil
+America/Bahia_Banderas.generic.long=Centre
+America/Barbados.generic.long=Atlantique
+America/Belem.generic.long=Heure du Br\u00E9sil
+America/Belize.generic.long=Centre
+America/Blanc-Sablon.generic.long=Atlantique
+America/Boa_Vista.generic.long=Heure d'Amazonie
+America/Bogota.generic.long=Heure de Colombie
+America/Boise.generic.long=Rocheuses
+America/Buenos_Aires.generic.long=Heure d'Argentine
+America/Cambridge_Bay.generic.long=Rocheuses
+America/Campo_Grande.generic.long=Heure d'Amazonie
+America/Cancun.generic.long=Centre
+America/Caracas.generic.long=Heure du Venezuela
+America/Catamarca.generic.long=Heure d'Argentine
+America/Cayenne.generic.long=Heure de Guyane fran\u00E7aise
+America/Cayman.generic.long=C\u00F4te Est
+America/Chicago.generic.long=Centre
+America/Chihuahua.generic.long=Rocheuses
+America/Coral_Harbour.generic.long=C\u00F4te Est
+America/Cordoba.generic.long=Heure d'Argentine
+America/Costa_Rica.generic.long=Centre
+America/Creston.generic.long=Rocheuses
+America/Cuiaba.generic.long=Heure d'Amazonie
+America/Curacao.generic.long=Atlantique
+America/Danmarkshavn.generic.long=Heure de Greenwich
+America/Dawson.generic.long=Pacifique
+America/Dawson_Creek.generic.long=Rocheuses
+America/Denver.generic.long=Rocheuses
+America/Detroit.generic.long=C\u00F4te Est
+America/Dominica.generic.long=Atlantique
+America/Edmonton.generic.long=Rocheuses
+America/Eirunepe.generic.long=Heure de l'Acre
+America/El_Salvador.generic.long=Centre
+America/Ensenada.generic.long=Pacifique
+America/Fort_Wayne.generic.long=C\u00F4te Est
+America/Fortaleza.generic.long=Heure du Br\u00E9sil
+America/Glace_Bay.generic.long=Atlantique
+America/Godthab.generic.long=Heure du Groenland de l'Ouest
+America/Goose_Bay.generic.long=Atlantique
+America/Grand_Turk.generic.long=C\u00F4te Est
+America/Grenada.generic.long=Atlantique
+America/Guadeloupe.generic.long=Atlantique
+America/Guatemala.generic.long=Centre
+America/Guayaquil.generic.long=Heure de l'Equateur
+America/Guyana.generic.long=Heure de Guyana
+America/Halifax.generic.long=Atlantique
+America/Havana.generic.long=Heure de Cuba
+America/Hermosillo.generic.long=Rocheuses
+America/Indiana/Indianapolis.generic.long=C\u00F4te Est
+America/Indiana/Knox.generic.long=Centre
+America/Indiana/Marengo.generic.long=C\u00F4te Est
+America/Indiana/Petersburg.generic.long=C\u00F4te Est
+America/Indiana/Tell_City.generic.long=Centre
+America/Indiana/Vevay.generic.long=C\u00F4te Est
+America/Indiana/Vincennes.generic.long=C\u00F4te Est
+America/Indiana/Winamac.generic.long=C\u00F4te Est
+America/Indianapolis.generic.long=C\u00F4te Est
+America/Inuvik.generic.long=Rocheuses
+America/Iqaluit.generic.long=C\u00F4te Est
+America/Jamaica.generic.long=C\u00F4te Est
+America/Jujuy.generic.long=Heure d'Argentine
+America/Juneau.generic.long=Alaska
+America/Kentucky/Louisville.generic.long=C\u00F4te Est
+America/Kentucky/Monticello.generic.long=C\u00F4te Est
+America/Knox_IN.generic.long=Centre
+America/Kralendijk.generic.long=Atlantique
+America/La_Paz.generic.long=Heure de Bolivie
+America/Lima.generic.long=Heure du P\u00E9rou
+America/Los_Angeles.generic.long=Pacifique
+America/Louisville.generic.long=C\u00F4te Est
+America/Lower_Princes.generic.long=Atlantique
+America/Maceio.generic.long=Heure du Br\u00E9sil
+America/Managua.generic.long=Centre
+America/Manaus.generic.long=Heure d'Amazonie
+America/Marigot.generic.long=Atlantique
+America/Martinique.generic.long=Atlantique
+America/Matamoros.generic.long=Centre
+America/Mazatlan.generic.long=Rocheuses
+America/Mendoza.generic.long=Heure d'Argentine
+America/Menominee.generic.long=Centre
+America/Merida.generic.long=Centre
+America/Metlakatla.daylight.long=Heure avanc\u00E9e de Metlakatla
+America/Metlakatla.generic.long=Heure de Metlakatla
+America/Metlakatla.standard.long=Heure normale de Metlakatla
+America/Mexico_City.generic.long=Centre
+America/Miquelon.generic.long=Saint-Pierre-et-Miquelon
+America/Moncton.generic.long=Atlantique
+America/Monterrey.generic.long=Centre
+America/Montevideo.generic.long=Heure de l'Uruguay
+America/Montreal.generic.long=C\u00F4te Est
+America/Montserrat.generic.long=Atlantique
+America/Nassau.generic.long=C\u00F4te Est
+America/New_York.generic.long=C\u00F4te Est
+America/Nipigon.generic.long=C\u00F4te Est
+America/Nome.generic.long=Alaska
+America/Noronha.generic.long=Heure de Fernando de Noronha
+America/North_Dakota/Beulah.generic.long=Centre
+America/North_Dakota/Center.generic.long=Centre
+America/North_Dakota/New_Salem.generic.long=Centre
+America/Ojinaga.generic.long=Rocheuses
+America/Panama.generic.long=C\u00F4te Est
+America/Pangnirtung.generic.long=C\u00F4te Est
+America/Paramaribo.generic.long=Heure du Surinam
+America/Phoenix.generic.long=Rocheuses
+America/Port-au-Prince.generic.long=C\u00F4te Est
+America/Port_of_Spain.generic.long=Atlantique
+America/Porto_Acre.generic.long=Heure de l'Acre
+America/Porto_Velho.generic.long=Heure d'Amazonie
+America/Puerto_Rico.generic.long=Atlantique
+America/Rainy_River.generic.long=Centre
+America/Rankin_Inlet.generic.long=Centre
+America/Recife.generic.long=Heure du Br\u00E9sil
+America/Regina.generic.long=Centre
+America/Resolute.generic.long=Centre
+America/Rio_Branco.generic.long=Heure de l'Acre
+America/Rosario.generic.long=Heure d'Argentine
+America/Santa_Isabel.generic.long=Pacifique
+America/Santarem.generic.long=Heure du Br\u00E9sil
+America/Santiago.generic.long=Heure du Chili
+America/Santo_Domingo.generic.long=Atlantique
+America/Sao_Paulo.generic.long=Heure du Br\u00E9sil
+America/Scoresbysund.generic.long=Heure du Groenland de l'Est
+America/Shiprock.generic.long=Rocheuses
+America/Sitka.generic.long=Alaska
+America/St_Barthelemy.generic.long=Atlantique
+America/St_Johns.generic.long=Terre-Neuve
+America/St_Kitts.generic.long=Atlantique
+America/St_Lucia.generic.long=Atlantique
+America/St_Thomas.generic.long=Atlantique
+America/St_Vincent.generic.long=Atlantique
+America/Swift_Current.generic.long=Centre
+America/Tegucigalpa.generic.long=Centre
+America/Thule.generic.long=Atlantique
+America/Thunder_Bay.generic.long=C\u00F4te Est
+America/Tijuana.generic.long=Pacifique
+America/Toronto.generic.long=C\u00F4te Est
+America/Tortola.generic.long=Atlantique
+America/Vancouver.generic.long=Pacifique
+America/Virgin.generic.long=Atlantique
+America/Whitehorse.generic.long=Pacifique
+America/Winnipeg.generic.long=Centre
+America/Yakutat.generic.long=Alaska
+America/Yellowknife.generic.long=Rocheuses
+Antarctica/Casey.daylight.long=Heure d'\u00E9t\u00E9 de l'Ouest (Australie)
+Antarctica/Casey.generic.long=Ouest (Australie)
+Antarctica/Casey.standard.long=Heure normale de l'Ouest (Australie)
+Antarctica/Davis.generic.long=Heure de Davis
+Antarctica/DumontDUrville.generic.long=Heure de Dumont-d'Urville
+Antarctica/Macquarie.daylight.long=Heure d'\u00E9t\u00E9 de l'Ile Macquarie
+Antarctica/Macquarie.generic.long=Heure de l'Ile Macquarie
+Antarctica/Macquarie.standard.long=Heure de l'Ile Macquarie
+Antarctica/Mawson.generic.long=Heure de Mawson
+Antarctica/McMurdo.generic.long=Nouvelle-Z\u00E9lande
+Antarctica/Palmer.generic.long=Heure du Chili
+Antarctica/Rothera.generic.long=Heure de Rothera
+Antarctica/South_Pole.generic.long=Nouvelle-Z\u00E9lande
+Antarctica/Syowa.generic.long=Heure de Syowa
+Antarctica/Vostok.generic.long=Heure de Vostok
+Arctic/Longyearbyen.generic.long=Heure d'Europe centrale
+Asia/Aden.generic.long=Arabie
+Asia/Almaty.generic.long=Heure d'Alma-Ata
+Asia/Amman.generic.long=Arabie
+Asia/Anadyr.generic.long=Heure d'Anadyr
+Asia/Aqtau.generic.long=Heure d'Aqtau
+Asia/Aqtobe.generic.long=Heure d'Aqtobe
+Asia/Ashgabat.generic.long=Heure du Turkm\u00E9nistan
+Asia/Ashkhabad.generic.long=Heure du Turkm\u00E9nistan
+Asia/Baghdad.generic.long=Arabie
+Asia/Bahrain.generic.long=Arabie
+Asia/Baku.generic.long=Heure d'Azerba\u00EFdjan
+Asia/Bangkok.generic.long=Heure d'Indochine
+Asia/Beirut.generic.long=Heure d'Europe de l'Est
+Asia/Bishkek.generic.long=Heure du Kirghizistan
+Asia/Brunei.generic.long=Heure du Brunei
+Asia/Calcutta.generic.long=Inde
+Asia/Choibalsan.generic.long=Heure de Choibalsan
+Asia/Chongqing.generic.long=Chine
+Asia/Chungking.generic.long=Chine
+Asia/Colombo.generic.long=Inde
+Asia/Dacca.generic.long=Heure du Bangladesh
+Asia/Damascus.generic.long=Heure d'Europe de l'Est
+Asia/Dhaka.generic.long=Heure du Bangladesh
+Asia/Dili.generic.long=Heure de Timor-Leste
+Asia/Dubai.generic.long=Golfe
+Asia/Dushanbe.generic.long=Heure du Tadjikistan
+Asia/Gaza.generic.long=Heure d'Europe de l'Est
+Asia/Harbin.generic.long=Chine
+Asia/Hebron.generic.long=Heure d'Europe de l'Est
+Asia/Ho_Chi_Minh.generic.long=Heure d'Indochine
+Asia/Hong_Kong.generic.long=Heure de Hong-Kong
+Asia/Hovd.generic.long=Heure de Hovd
+Asia/Irkutsk.generic.long=Heure d'Irkutsk
+Asia/Istanbul.generic.long=Heure d'Europe de l'Est
+Asia/Jakarta.generic.long=Heure de l'Indon\u00E9sie occidentale
+Asia/Jayapura.generic.long=Heure d'Indon\u00E9sie orientale
+Asia/Jerusalem.generic.long=Isra\u00EBl
+Asia/Kabul.generic.long=Heure d'Afghanistan
+Asia/Kamchatka.generic.long=Heure de Petropavlovsk-Kamchatski
+Asia/Karachi.generic.long=Heure du Pakistan
+Asia/Kashgar.generic.long=Chine
+Asia/Kathmandu.generic.long=Heure du N\u00E9pal
+Asia/Katmandu.generic.long=Heure du N\u00E9pal
+Asia/Khandyga.daylight.long=Heure d'\u00E9t\u00E9 de Khandyga
+Asia/Khandyga.generic.long=Heure de Khandyga
+Asia/Khandyga.standard.long=Heure de Khandyga
+Asia/Kolkata.generic.long=Inde
+Asia/Krasnoyarsk.generic.long=Heure de Krasno\u00EFarsk
+Asia/Kuala_Lumpur.generic.long=Heure de Malaisie
+Asia/Kuching.generic.long=Heure de Malaisie
+Asia/Kuwait.generic.long=Arabie
+Asia/Macao.generic.long=Chine
+Asia/Macau.generic.long=Chine
+Asia/Magadan.generic.long=Heure de Magadan
+Asia/Makassar.generic.long=Heure d'Indon\u00E9sie centrale
+Asia/Manila.generic.long=Heure des Philippines
+Asia/Muscat.generic.long=Golfe
+Asia/Nicosia.generic.long=Heure d'Europe de l'Est
+Asia/Novokuznetsk.generic.long=Heure de Novossibirsk
+Asia/Novosibirsk.generic.long=Heure de Novossibirsk
+Asia/Omsk.generic.long=Heure d'Omsk
+Asia/Oral.generic.long=Heure d'Oral
+Asia/Phnom_Penh.generic.long=Heure d'Indochine
+Asia/Pontianak.generic.long=Heure de l'Indon\u00E9sie occidentale
+Asia/Pyongyang.generic.long=Cor\u00E9e
+Asia/Qatar.generic.long=Arabie
+Asia/Qyzylorda.generic.long=Heure de Kyzylorda
+Asia/Rangoon.generic.long=Heure de Myanmar
+Asia/Saigon.generic.long=Heure d'Indochine
+Asia/Sakhalin.generic.long=Heure de Sakhalin
+Asia/Samarkand.generic.long=Heure de l'Ouzb\u00E9kistan
+Asia/Seoul.generic.long=Cor\u00E9e
+Asia/Shanghai.generic.long=Chine
+Asia/Singapore.generic.long=Heure de Singapour
+Asia/Taipei.generic.long=Chine
+Asia/Tashkent.generic.long=Heure de l'Ouzb\u00E9kistan
+Asia/Tbilisi.generic.long=Heure de G\u00E9orgie
+Asia/Tehran.generic.long=Heure d'Iran
+Asia/Tel_Aviv.generic.long=Isra\u00EBl
+Asia/Thimbu.generic.long=Heure du Bhoutan
+Asia/Thimphu.generic.long=Heure du Bhoutan
+Asia/Tokyo.generic.long=Japon
+Asia/Ujung_Pandang.generic.long=Heure d'Indon\u00E9sie centrale
+Asia/Ulaanbaatar.generic.long=Heure de l'Ulaanbaatar
+Asia/Ulan_Bator.generic.long=Heure de l'Ulaanbaatar
+Asia/Urumqi.generic.long=Chine
+Asia/Ust-Nera.daylight.long=Heure d'\u00E9t\u00E9 d'Ust-Nera
+Asia/Ust-Nera.generic.long=Heure d'Ust-Nera
+Asia/Ust-Nera.standard.long=Heure d'Ust-Nera
+Asia/Vientiane.generic.long=Heure d'Indochine
+Asia/Vladivostok.generic.long=Heure de Vladivostok
+Asia/Yakutsk.generic.long=Heure du Iakoutsk
+Asia/Yekaterinburg.generic.long=Heure de Yekaterinburg
+Asia/Yerevan.generic.long=Heure d'Arm\u00E9nie
+Atlantic/Azores.generic.long=Heure des A\u00E7ores
+Atlantic/Bermuda.generic.long=Atlantique
+Atlantic/Canary.generic.long=Heure d'Europe de l'Ouest
+Atlantic/Cape_Verde.generic.long=Heure de Cap-Vert
+Atlantic/Faeroe.generic.long=Heure d'Europe de l'Ouest
+Atlantic/Faroe.generic.long=Heure d'Europe de l'Ouest
+Atlantic/Jan_Mayen.generic.long=Heure d'Europe centrale
+Atlantic/Madeira.generic.long=Heure d'Europe de l'Ouest
+Atlantic/Reykjavik.generic.long=Heure de Greenwich
+Atlantic/South_Georgia.generic.long=G\u00E9orgie du Sud
+Atlantic/St_Helena.generic.long=Heure de Greenwich
+Atlantic/Stanley.generic.long=Heure des \u00EEles Falkland
+Australia/ACT.daylight.long=Heure d'\u00E9t\u00E9 de l'Est (Nouvelle-Galles du Sud)
+Australia/ACT.generic.long=C\u00F4te Est (Nouvelle-Galles du Sud)
+Australia/ACT.standard.long=Heure normale de l'Est (Nouvelle-Galles du Sud)
+Australia/Adelaide.daylight.long=Heure d'\u00E9t\u00E9 d'Australie centrale (Australie du sud)
+Australia/Adelaide.generic.long=Centre (Australie-M\u00E9ridionale)
+Australia/Adelaide.standard.long=Heure standard d'Australie centrale (Australie du sud)
+Australia/Brisbane.daylight.long=Heure d'\u00E9t\u00E9 d'Australie orientale (Queensland)
+Australia/Brisbane.generic.long=C\u00F4te Est (Queensland)
+Australia/Brisbane.standard.long=Heure standard d'Australie orientale (Queensland)
+Australia/Broken_Hill.daylight.long=Heure d'\u00E9t\u00E9 d'Australie centrale (Australie du sud/Nouvelle-Galles du sud)
+Australia/Broken_Hill.generic.long=Centre (Australie-M\u00E9ridionale/Nouvelle-Galles du Sud)
+Australia/Broken_Hill.standard.long=Heure standard d'Australie centrale (Australie du sud/Nouvelle-Galles du sud)
+Australia/Canberra.daylight.long=Heure d'\u00E9t\u00E9 de l'Est (Nouvelle-Galles du Sud)
+Australia/Canberra.generic.long=C\u00F4te Est (Nouvelle-Galles du Sud)
+Australia/Canberra.standard.long=Heure normale de l'Est (Nouvelle-Galles du Sud)
+Australia/Currie.daylight.long=Heure d'\u00E9t\u00E9 de l'Est (Nouvelle-Galles du Sud)
+Australia/Currie.generic.long=C\u00F4te Est (Nouvelle-Galles du Sud)
+Australia/Currie.standard.long=Heure normale de l'Est (Nouvelle-Galles du Sud)
+Australia/Darwin.daylight.long=Heure d'\u00E9t\u00E9 d'Australie centrale (Territoire du Nord)
+Australia/Darwin.generic.long=Centre (Territoire du Nord)
+Australia/Darwin.standard.long=Heure standard d'Australie centrale (Territoire du Nord)
+Australia/Eucla.daylight.long=Heure d'\u00E9t\u00E9 de l'Australie occidentale (centre)
+Australia/Eucla.generic.long=Heure de l'Australie occidentale (centre)
+Australia/Eucla.standard.long=Heure standard de l'Australie occidentale (centre)
+Australia/Hobart.daylight.long=Heure d'\u00E9t\u00E9 d'Australie orientale (Tasmanie)
+Australia/Hobart.generic.long=C\u00F4te Est (Tasmanie)
+Australia/Hobart.standard.long=Heure standard d'Australie orientale (Tasmanie)
+Australia/LHI.generic.long=Heure de Lord Howe
+Australia/Lindeman.daylight.long=Heure d'\u00E9t\u00E9 d'Australie orientale (Queensland)
+Australia/Lindeman.generic.long=C\u00F4te Est (Queensland)
+Australia/Lindeman.standard.long=Heure standard d'Australie orientale (Queensland)
+Australia/Lord_Howe.generic.long=Heure de Lord Howe
+Australia/Melbourne.daylight.long=Heure d'\u00E9t\u00E9 d'Australie orientale (Victoria)
+Australia/Melbourne.generic.long=C\u00F4te Est (Victoria)
+Australia/Melbourne.standard.long=Heure standard d'Australie orientale (Victoria)
+Australia/NSW.daylight.long=Heure d'\u00E9t\u00E9 de l'Est (Nouvelle-Galles du Sud)
+Australia/NSW.generic.long=C\u00F4te Est (Nouvelle-Galles du Sud)
+Australia/NSW.standard.long=Heure normale de l'Est (Nouvelle-Galles du Sud)
+Australia/North.daylight.long=Heure d'\u00E9t\u00E9 d'Australie centrale (Territoire du Nord)
+Australia/North.generic.long=Centre (Territoire du Nord)
+Australia/North.standard.long=Heure standard d'Australie centrale (Territoire du Nord)
+Australia/Perth.daylight.long=Heure d'\u00E9t\u00E9 de l'Ouest (Australie)
+Australia/Perth.generic.long=Ouest (Australie)
+Australia/Perth.standard.long=Heure normale de l'Ouest (Australie)
+Australia/Queensland.daylight.long=Heure d'\u00E9t\u00E9 d'Australie orientale (Queensland)
+Australia/Queensland.generic.long=C\u00F4te Est (Queensland)
+Australia/Queensland.standard.long=Heure standard d'Australie orientale (Queensland)
+Australia/South.daylight.long=Heure d'\u00E9t\u00E9 d'Australie centrale (Australie du sud)
+Australia/South.generic.long=Centre (Australie-M\u00E9ridionale)
+Australia/South.standard.long=Heure standard d'Australie centrale (Australie du sud)
+Australia/Sydney.daylight.long=Heure d'\u00E9t\u00E9 de l'Est (Nouvelle-Galles du Sud)
+Australia/Sydney.generic.long=C\u00F4te Est (Nouvelle-Galles du Sud)
+Australia/Sydney.standard.long=Heure normale de l'Est (Nouvelle-Galles du Sud)
+Australia/Tasmania.daylight.long=Heure d'\u00E9t\u00E9 d'Australie orientale (Tasmanie)
+Australia/Tasmania.generic.long=C\u00F4te Est (Tasmanie)
+Australia/Tasmania.standard.long=Heure standard d'Australie orientale (Tasmanie)
+Australia/Victoria.daylight.long=Heure d'\u00E9t\u00E9 d'Australie orientale (Victoria)
+Australia/Victoria.generic.long=C\u00F4te Est (Victoria)
+Australia/Victoria.standard.long=Heure standard d'Australie orientale (Victoria)
+Australia/West.daylight.long=Heure d'\u00E9t\u00E9 de l'Ouest (Australie)
+Australia/West.generic.long=Ouest (Australie)
+Australia/West.standard.long=Heure normale de l'Ouest (Australie)
+Australia/Yancowinna.daylight.long=Heure d'\u00E9t\u00E9 d'Australie centrale (Australie du sud/Nouvelle-Galles du sud)
+Australia/Yancowinna.generic.long=Centre (Australie-M\u00E9ridionale/Nouvelle-Galles du Sud)
+Australia/Yancowinna.standard.long=Heure standard d'Australie centrale (Australie du sud/Nouvelle-Galles du sud)
+BET.generic.long=Heure du Br\u00E9sil
+BST.generic.long=Heure du Bangladesh
+Brazil/Acre.generic.long=Heure de l'Acre
+Brazil/DeNoronha.generic.long=Heure de Fernando de Noronha
+Brazil/East.generic.long=Heure du Br\u00E9sil
+Brazil/West.generic.long=Heure d'Amazonie
+CAT.generic.long=Heure d'Afrique centrale
+CET.generic.long=Heure d'Europe centrale
+CNT.generic.long=Terre-Neuve
+CST.generic.long=Centre
+CST6CDT.generic.long=Centre
+CTT.generic.long=Chine
+Canada/Atlantic.generic.long=Atlantique
+Canada/Central.generic.long=Centre
+Canada/East-Saskatchewan.generic.long=Centre
+Canada/Eastern.generic.long=C\u00F4te Est
+Canada/Mountain.generic.long=Rocheuses
+Canada/Newfoundland.generic.long=Terre-Neuve
+Canada/Pacific.generic.long=Pacifique
+Canada/Saskatchewan.generic.long=Centre
+Canada/Yukon.generic.long=Pacifique
+Chile/Continental.generic.long=Heure du Chili
+Chile/EasterIsland.generic.long=Heure de l'Ile de P\u00E2ques
+Cuba.generic.long=Heure de Cuba
+EAT.generic.long=Heure d'Afrique de l'Est
+ECT.generic.long=Heure d'Europe centrale
+EET.generic.long=Heure d'Europe de l'Est
+EST.generic.long=C\u00f4te Est
+EST5EDT.generic.long=C\u00f4te Est
+Egypt.generic.long=Heure d'Europe de l'Est
+Eire.generic.long=Heure irlandaise
+Etc/Greenwich.generic.long=Heure de Greenwich
+Etc/UCT.generic.long=Temps universel coordonn\u00E9
+Etc/UTC.generic.long=Temps universel coordonn\u00E9
+Etc/Universal.generic.long=Temps universel coordonn\u00E9
+Etc/Zulu.generic.long=Temps universel coordonn\u00E9
+Europe/Amsterdam.generic.long=Heure d'Europe centrale
+Europe/Andorra.generic.long=Heure d'Europe centrale
+Europe/Athens.generic.long=Heure d'Europe de l'Est
+Europe/Belfast.generic.long=Heure britannique
+Europe/Belgrade.generic.long=Heure d'Europe centrale
+Europe/Berlin.generic.long=Heure d'Europe centrale
+Europe/Bratislava.generic.long=Heure d'Europe centrale
+Europe/Brussels.generic.long=Heure d'Europe centrale
+Europe/Bucharest.generic.long=Heure d'Europe de l'Est
+Europe/Budapest.generic.long=Heure d'Europe centrale
+Europe/Busingen.generic.long=Heure d'Europe centrale
+Europe/Chisinau.generic.long=Heure d'Europe de l'Est
+Europe/Copenhagen.generic.long=Heure d'Europe centrale
+Europe/Dublin.generic.long=Heure irlandaise
+Europe/Gibraltar.generic.long=Heure d'Europe centrale
+Europe/Guernsey.generic.long=Heure britannique
+Europe/Helsinki.generic.long=Heure d'Europe de l'Est
+Europe/Isle_of_Man.generic.long=Heure britannique
+Europe/Istanbul.generic.long=Heure d'Europe de l'Est
+Europe/Jersey.generic.long=Heure britannique
+Europe/Kaliningrad.daylight.long=Heure d'\u00E9t\u00E9 d'Europe de l'Est UTC+3
+Europe/Kaliningrad.generic.long=Heure d'Europe de l'Est UTC+3
+Europe/Kaliningrad.standard.long=Heure d'Europe de l'Est UTC+3
+Europe/Kiev.generic.long=Heure d'Europe de l'Est
+Europe/Lisbon.generic.long=Heure d'Europe de l'Ouest
+Europe/Ljubljana.generic.long=Heure d'Europe centrale
+Europe/London.generic.long=Heure britannique
+Europe/Luxembourg.generic.long=Heure d'Europe centrale
+Europe/Madrid.generic.long=Heure d'Europe centrale
+Europe/Malta.generic.long=Heure d'Europe centrale
+Europe/Mariehamn.generic.long=Heure d'Europe de l'Est
+Europe/Minsk.daylight.long=Heure d'\u00E9t\u00E9 d'Europe de l'Est UTC+3
+Europe/Minsk.generic.long=Heure d'Europe de l'Est UTC+3
+Europe/Minsk.standard.long=Heure d'Europe de l'Est UTC+3
+Europe/Monaco.generic.long=Heure d'Europe centrale
+Europe/Moscow.generic.long=Moscou
+Europe/Nicosia.generic.long=Heure d'Europe de l'Est
+Europe/Oslo.generic.long=Heure d'Europe centrale
+Europe/Paris.generic.long=Heure d'Europe centrale
+Europe/Podgorica.generic.long=Heure d'Europe centrale
+Europe/Prague.generic.long=Heure d'Europe centrale
+Europe/Riga.generic.long=Heure d'Europe de l'Est
+Europe/Rome.generic.long=Heure d'Europe centrale
+Europe/Samara.generic.long=Heure de Samara
+Europe/San_Marino.generic.long=Heure d'Europe centrale
+Europe/Sarajevo.generic.long=Heure d'Europe centrale
+Europe/Simferopol.generic.long=Heure d'Europe de l'Est
+Europe/Skopje.generic.long=Heure d'Europe centrale
+Europe/Sofia.generic.long=Heure d'Europe de l'Est
+Europe/Stockholm.generic.long=Heure d'Europe centrale
+Europe/Tallinn.generic.long=Heure d'Europe de l'Est
+Europe/Tirane.generic.long=Heure d'Europe centrale
+Europe/Tiraspol.generic.long=Heure d'Europe de l'Est
+Europe/Uzhgorod.generic.long=Heure d'Europe de l'Est
+Europe/Vaduz.generic.long=Heure d'Europe centrale
+Europe/Vatican.generic.long=Heure d'Europe centrale
+Europe/Vienna.generic.long=Heure d'Europe centrale
+Europe/Vilnius.generic.long=Heure d'Europe de l'Est
+Europe/Volgograd.generic.long=Heure de Volgograd
+Europe/Warsaw.generic.long=Heure d'Europe centrale
+Europe/Zagreb.generic.long=Heure d'Europe centrale
+Europe/Zaporozhye.generic.long=Heure d'Europe de l'Est
+Europe/Zurich.generic.long=Heure d'Europe centrale
+GB-Eire.generic.long=Heure britannique
+GB.generic.long=Heure britannique
+GMT.generic.long=Heure de Greenwich
+Greenwich.generic.long=Heure de Greenwich
+HST.generic.long=Hawa\u00ef
+Hongkong.generic.long=Heure de Hong-Kong
+IET.generic.long=C\u00F4te Est
+IST.generic.long=Inde
+Iceland.generic.long=Heure de Greenwich
+Indian/Antananarivo.generic.long=Heure d'Afrique de l'Est
+Indian/Chagos.generic.long=Heure de l'oc\u00E9an Indien
+Indian/Christmas.generic.long=Heure de l'Ile Christmas
+Indian/Cocos.generic.long=Heure des Iles Cocos
+Indian/Comoro.generic.long=Heure d'Afrique de l'Est
+Indian/Kerguelen.generic.long=Heure des Terres australes antarctiques fran\u00E7aises
+Indian/Mahe.generic.long=Heure des Seychelles
+Indian/Maldives.generic.long=Heure des Maldives
+Indian/Mauritius.generic.long=Heure de Maurice
+Indian/Mayotte.generic.long=Heure d'Afrique de l'Est
+Indian/Reunion.generic.long=Heure de la R\u00E9union
+Iran.generic.long=Heure d'Iran
+Israel.generic.long=Isra\u00EBl
+JST.generic.long=Japon
+Jamaica.generic.long=C\u00F4te Est
+Japan.generic.long=Japon
+Kwajalein.generic.long=Heure des Iles Marshall
+Libya.generic.long=Heure d'Europe de l'Est
+MET.generic.long=MET
+MIT.generic.long=Heure des Samoas occidentales
+MST.generic.long=Rocheuses
+MST7MDT.generic.long=Rocheuses
+Mexico/BajaNorte.generic.long=Pacifique
+Mexico/BajaSur.generic.long=Rocheuses
+Mexico/General.generic.long=Centre
+NET.generic.long=Heure d'Arm\u00E9nie
+NST.generic.long=Nouvelle-Z\u00E9lande
+NZ-CHAT.generic.long=Chatham
+NZ.generic.long=Nouvelle-Z\u00E9lande
+Navajo.generic.long=Rocheuses
+PLT.generic.long=Heure du Pakistan
+PNT.generic.long=Rocheuses
+PRC.generic.long=Chine
+PRT.generic.long=Atlantique
+PST.generic.long=Pacifique
+PST8PDT.generic.long=Pacifique
+Pacific/Apia.generic.long=Heure des Samoas occidentales
+Pacific/Auckland.generic.long=Nouvelle-Z\u00E9lande
+Pacific/Chatham.generic.long=Chatham
+Pacific/Chuuk.daylight.long=Heure d'\u00E9t\u00E9 de Chuuk
+Pacific/Chuuk.generic.long=Heure de Chuuk
+Pacific/Chuuk.standard.long=Heure de Chuuk
+Pacific/Easter.generic.long=Heure de l'Ile de P\u00E2ques
+Pacific/Efate.generic.long=Heure du Vanuatu
+Pacific/Enderbury.generic.long=Heure de l'Ile de Phoenix
+Pacific/Fakaofo.generic.long=Heure de Tokelau
+Pacific/Fiji.generic.long=Heure de Fidji
+Pacific/Funafuti.generic.long=Heure de Tuvalu
+Pacific/Galapagos.generic.long=Heure des Galapagos
+Pacific/Gambier.generic.long=Heure de Gambi
+Pacific/Guadalcanal.generic.long=Heure des Iles Salomon
+Pacific/Guam.generic.long=Chamorro
+Pacific/Honolulu.generic.long=Hawa\u00EF
+Pacific/Johnston.generic.long=Hawa\u00EF
+Pacific/Kiritimati.generic.long=Heure de l'Ile de Line
+Pacific/Kosrae.generic.long=Heure de Kusaie
+Pacific/Kwajalein.generic.long=Heure des Iles Marshall
+Pacific/Majuro.generic.long=Heure des Iles Marshall
+Pacific/Marquesas.generic.long=Heure des Marquises
+Pacific/Midway.generic.long=Samoa
+Pacific/Nauru.generic.long=Heure de Nauru
+Pacific/Niue.generic.long=Heure de Niue
+Pacific/Norfolk.generic.long=Heure de Norfolk
+Pacific/Noumea.generic.long=Heure de Nouvelle-Cal\u00E9donie
+Pacific/Pago_Pago.generic.long=Samoa
+Pacific/Palau.generic.long=Heure de Palaos
+Pacific/Pitcairn.generic.long=Pitcairn
+Pacific/Pohnpei.daylight.long=Heure d'\u00E9t\u00E9 de Pohnpei
+Pacific/Pohnpei.generic.long=Ponape
+Pacific/Pohnpei.standard.long=Heure de Pohnpei
+Pacific/Ponape.daylight.long=Heure d'\u00E9t\u00E9 de Pohnpei
+Pacific/Ponape.generic.long=Ponape
+Pacific/Ponape.standard.long=Heure de Pohnpei
+Pacific/Port_Moresby.generic.long=Heure de Papouasie-Nouvelle-Guin\u00E9e
+Pacific/Rarotonga.generic.long=Heure des Iles Cook
+Pacific/Saipan.generic.long=Chamorro
+Pacific/Samoa.generic.long=Samoa
+Pacific/Tahiti.generic.long=Heure de Tahiti
+Pacific/Tarawa.generic.long=Heure de Kiribati
+Pacific/Tongatapu.generic.long=Heure de Tonga
+Pacific/Truk.daylight.long=Heure d'\u00E9t\u00E9 de Chuuk
+Pacific/Truk.generic.long=Heure de Chuuk
+Pacific/Truk.standard.long=Heure de Chuuk
+Pacific/Wake.generic.long=Heure de Wake
+Pacific/Wallis.generic.long=Heure de Wallis-et-Futuna
+Pacific/Yap.daylight.long=Heure d'\u00E9t\u00E9 de Chuuk
+Pacific/Yap.generic.long=Heure de Chuuk
+Pacific/Yap.standard.long=Heure de Chuuk
+Poland.generic.long=Heure d'Europe centrale
+Portugal.generic.long=Heure d'Europe de l'Ouest
+ROK.generic.long=Cor\u00E9e
+SST.generic.long=Heure des Iles Salomon
+Singapore.generic.long=Heure de Singapour
+SystemV/AST4.generic.long=Atlantique
+SystemV/AST4ADT.generic.long=Atlantique
+SystemV/CST6.generic.long=Centre
+SystemV/CST6CDT.generic.long=Centre
+SystemV/EST5.generic.long=C\u00F4te Est
+SystemV/EST5EDT.generic.long=C\u00F4te Est
+SystemV/HST10.generic.long=Hawa\u00EF
+SystemV/MST7.generic.long=Rocheuses
+SystemV/MST7MDT.generic.long=Rocheuses
+SystemV/PST8.generic.long=Pacifique
+SystemV/PST8PDT.generic.long=Pacifique
+SystemV/YST9.generic.long=Alaska
+SystemV/YST9YDT.generic.long=Alaska
+Turkey.generic.long=Heure d'Europe de l'Est
+UCT.generic.long=Temps universel coordonn\u00E9
+US/Alaska.generic.long=Alaska
+US/Aleutian.generic.long=Hawa\u00EF-Iles Al\u00E9outiennes
+US/Arizona.generic.long=Rocheuses
+US/Central.generic.long=Centre
+US/East-Indiana.generic.long=C\u00F4te Est
+US/Eastern.generic.long=C\u00F4te Est
+US/Hawaii.generic.long=Hawa\u00EF
+US/Indiana-Starke.generic.long=Centre
+US/Michigan.generic.long=C\u00F4te Est
+US/Mountain.generic.long=Rocheuses
+US/Pacific-New.generic.long=Pacifique
+US/Pacific.generic.long=Pacifique
+US/Samoa.generic.long=Samoa
+UTC.generic.long=Temps universel coordonn\u00E9
+Universal.generic.long=Temps universel coordonn\u00E9
+VST.generic.long=Heure d'Indochine
+W-SU.generic.long=Moscou
+WET.generic.long=Heure d'Europe de l'Ouest
+Zulu.generic.long=Temps universel coordonn\u00E9
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_fr_short.properties Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,1743 @@
+ACT.daylight.short=CST
+ACT.generic.short=CT
+ACT.standard.short=CST
+AET.daylight.short=EST
+AET.generic.short=ET
+AET.standard.short=EST
+Africa/Abidjan.daylight.short=GMT
+Africa/Abidjan.generic.short=GMT
+Africa/Abidjan.standard.short=GMT
+Africa/Accra.daylight.short=GHST
+Africa/Accra.generic.short=GMT
+Africa/Accra.standard.short=GMT
+Africa/Addis_Ababa.daylight.short=EAST
+Africa/Addis_Ababa.generic.short=EAT
+Africa/Addis_Ababa.standard.short=EAT
+Africa/Algiers.daylight.short=CEST
+Africa/Algiers.generic.short=CET
+Africa/Algiers.standard.short=CET
+Africa/Asmara.daylight.short=EAST
+Africa/Asmara.generic.short=EAT
+Africa/Asmara.standard.short=EAT
+Africa/Asmera.daylight.short=EAST
+Africa/Asmera.generic.short=EAT
+Africa/Asmera.standard.short=EAT
+Africa/Bamako.daylight.short=GMT
+Africa/Bamako.generic.short=GMT
+Africa/Bamako.standard.short=GMT
+Africa/Bangui.daylight.short=WAST
+Africa/Bangui.generic.short=WAT
+Africa/Bangui.standard.short=WAT
+Africa/Banjul.daylight.short=GMT
+Africa/Banjul.generic.short=GMT
+Africa/Banjul.standard.short=GMT
+Africa/Bissau.daylight.short=GMT
+Africa/Bissau.generic.short=GMT
+Africa/Bissau.standard.short=GMT
+Africa/Blantyre.daylight.short=CAST
+Africa/Blantyre.generic.short=CAT
+Africa/Blantyre.standard.short=CAT
+Africa/Brazzaville.daylight.short=WAST
+Africa/Brazzaville.generic.short=WAT
+Africa/Brazzaville.standard.short=WAT
+Africa/Bujumbura.daylight.short=CAST
+Africa/Bujumbura.generic.short=CAT
+Africa/Bujumbura.standard.short=CAT
+Africa/Cairo.daylight.short=EEST
+Africa/Cairo.generic.short=EET
+Africa/Cairo.standard.short=EET
+Africa/Casablanca.daylight.short=WEST
+Africa/Casablanca.generic.short=WET
+Africa/Casablanca.standard.short=WET
+Africa/Ceuta.daylight.short=CEST
+Africa/Ceuta.generic.short=CET
+Africa/Ceuta.standard.short=CET
+Africa/Conakry.daylight.short=GMT
+Africa/Conakry.generic.short=GMT
+Africa/Conakry.standard.short=GMT
+Africa/Dakar.daylight.short=GMT
+Africa/Dakar.generic.short=GMT
+Africa/Dakar.standard.short=GMT
+Africa/Dar_es_Salaam.daylight.short=EAST
+Africa/Dar_es_Salaam.generic.short=EAT
+Africa/Dar_es_Salaam.standard.short=EAT
+Africa/Djibouti.daylight.short=EAST
+Africa/Djibouti.generic.short=EAT
+Africa/Djibouti.standard.short=EAT
+Africa/Douala.daylight.short=WAST
+Africa/Douala.generic.short=WAT
+Africa/Douala.standard.short=WAT
+Africa/El_Aaiun.daylight.short=WEST
+Africa/El_Aaiun.generic.short=WET
+Africa/El_Aaiun.standard.short=WET
+Africa/Freetown.daylight.short=SLST
+Africa/Freetown.generic.short=SLT
+Africa/Freetown.standard.short=GMT
+Africa/Gaborone.daylight.short=CAST
+Africa/Gaborone.generic.short=CAT
+Africa/Gaborone.standard.short=CAT
+Africa/Harare.daylight.short=CAST
+Africa/Harare.generic.short=CAT
+Africa/Harare.standard.short=CAT
+Africa/Johannesburg.daylight.short=SAST
+Africa/Johannesburg.generic.short=SAT
+Africa/Johannesburg.standard.short=SAST
+Africa/Juba.daylight.short=EAST
+Africa/Juba.generic.short=EAT
+Africa/Juba.standard.short=EAT
+Africa/Kampala.daylight.short=EAST
+Africa/Kampala.generic.short=EAT
+Africa/Kampala.standard.short=EAT
+Africa/Khartoum.daylight.short=EAST
+Africa/Khartoum.generic.short=EAT
+Africa/Khartoum.standard.short=EAT
+Africa/Kigali.daylight.short=CAST
+Africa/Kigali.generic.short=CAT
+Africa/Kigali.standard.short=CAT
+Africa/Kinshasa.daylight.short=WAST
+Africa/Kinshasa.generic.short=WAT
+Africa/Kinshasa.standard.short=WAT
+Africa/Lagos.daylight.short=WAST
+Africa/Lagos.generic.short=WAT
+Africa/Lagos.standard.short=WAT
+Africa/Libreville.daylight.short=WAST
+Africa/Libreville.generic.short=WAT
+Africa/Libreville.standard.short=WAT
+Africa/Lome.daylight.short=GMT
+Africa/Lome.generic.short=GMT
+Africa/Lome.standard.short=GMT
+Africa/Luanda.daylight.short=WAST
+Africa/Luanda.generic.short=WAT
+Africa/Luanda.standard.short=WAT
+Africa/Lubumbashi.daylight.short=CAST
+Africa/Lubumbashi.generic.short=CAT
+Africa/Lubumbashi.standard.short=CAT
+Africa/Lusaka.daylight.short=CAST
+Africa/Lusaka.generic.short=CAT
+Africa/Lusaka.standard.short=CAT
+Africa/Malabo.daylight.short=WAST
+Africa/Malabo.generic.short=WAT
+Africa/Malabo.standard.short=WAT
+Africa/Maputo.daylight.short=CAST
+Africa/Maputo.generic.short=CAT
+Africa/Maputo.standard.short=CAT
+Africa/Maseru.daylight.short=SAST
+Africa/Maseru.generic.short=SAT
+Africa/Maseru.standard.short=SAST
+Africa/Mbabane.daylight.short=SAST
+Africa/Mbabane.generic.short=SAT
+Africa/Mbabane.standard.short=SAST
+Africa/Mogadishu.daylight.short=EAST
+Africa/Mogadishu.generic.short=EAT
+Africa/Mogadishu.standard.short=EAT
+Africa/Monrovia.daylight.short=GMT
+Africa/Monrovia.generic.short=GMT
+Africa/Monrovia.standard.short=GMT
+Africa/Nairobi.daylight.short=EAST
+Africa/Nairobi.generic.short=EAT
+Africa/Nairobi.standard.short=EAT
+Africa/Ndjamena.daylight.short=WAST
+Africa/Ndjamena.generic.short=WAT
+Africa/Ndjamena.standard.short=WAT
+Africa/Niamey.daylight.short=WAST
+Africa/Niamey.generic.short=WAT
+Africa/Niamey.standard.short=WAT
+Africa/Nouakchott.daylight.short=GMT
+Africa/Nouakchott.generic.short=GMT
+Africa/Nouakchott.standard.short=GMT
+Africa/Ouagadougou.daylight.short=GMT
+Africa/Ouagadougou.generic.short=GMT
+Africa/Ouagadougou.standard.short=GMT
+Africa/Porto-Novo.daylight.short=WAST
+Africa/Porto-Novo.generic.short=WAT
+Africa/Porto-Novo.standard.short=WAT
+Africa/Sao_Tome.daylight.short=GMT
+Africa/Sao_Tome.generic.short=GMT
+Africa/Sao_Tome.standard.short=GMT
+Africa/Timbuktu.daylight.short=GMT
+Africa/Timbuktu.generic.short=GMT
+Africa/Timbuktu.standard.short=GMT
+Africa/Tripoli.daylight.short=EEST
+Africa/Tripoli.generic.short=EET
+Africa/Tripoli.standard.short=EET
+Africa/Tunis.daylight.short=CEST
+Africa/Tunis.generic.short=CET
+Africa/Tunis.standard.short=CET
+Africa/Windhoek.daylight.short=WAST
+Africa/Windhoek.generic.short=WAT
+Africa/Windhoek.standard.short=WAT
+AGT.daylight.short=ARST
+AGT.generic.short=ART
+AGT.standard.short=ART
+America/Adak.daylight.short=HADT
+America/Adak.generic.short=HAT
+America/Adak.standard.short=HAST
+America/Anchorage.daylight.short=AKDT
+America/Anchorage.generic.short=AKT
+America/Anchorage.standard.short=AKST
+America/Anguilla.daylight.short=ADT
+America/Anguilla.generic.short=AT
+America/Anguilla.standard.short=AST
+America/Antigua.daylight.short=ADT
+America/Antigua.generic.short=AT
+America/Antigua.standard.short=AST
+America/Araguaina.daylight.short=BRST
+America/Araguaina.generic.short=BRT
+America/Araguaina.standard.short=BRT
+America/Argentina/Buenos_Aires.daylight.short=ARST
+America/Argentina/Buenos_Aires.generic.short=ART
+America/Argentina/Buenos_Aires.standard.short=ART
+America/Argentina/Catamarca.daylight.short=ARST
+America/Argentina/Catamarca.generic.short=ART
+America/Argentina/Catamarca.standard.short=ART
+America/Argentina/ComodRivadavia.daylight.short=ARST
+America/Argentina/ComodRivadavia.generic.short=ART
+America/Argentina/ComodRivadavia.standard.short=ART
+America/Argentina/Cordoba.daylight.short=ARST
+America/Argentina/Cordoba.generic.short=ART
+America/Argentina/Cordoba.standard.short=ART
+America/Argentina/Jujuy.daylight.short=ARST
+America/Argentina/Jujuy.generic.short=ART
+America/Argentina/Jujuy.standard.short=ART
+America/Argentina/La_Rioja.daylight.short=ARST
+America/Argentina/La_Rioja.generic.short=ART
+America/Argentina/La_Rioja.standard.short=ART
+America/Argentina/Mendoza.daylight.short=ARST
+America/Argentina/Mendoza.generic.short=ART
+America/Argentina/Mendoza.standard.short=ART
+America/Argentina/Rio_Gallegos.daylight.short=ARST
+America/Argentina/Rio_Gallegos.generic.short=ART
+America/Argentina/Rio_Gallegos.standard.short=ART
+America/Argentina/Salta.daylight.short=ARST
+America/Argentina/Salta.generic.short=ART
+America/Argentina/Salta.standard.short=ART
+America/Argentina/San_Juan.daylight.short=ARST
+America/Argentina/San_Juan.generic.short=ART
+America/Argentina/San_Juan.standard.short=ART
+America/Argentina/San_Luis.daylight.short=ARST
+America/Argentina/San_Luis.generic.short=ART
+America/Argentina/San_Luis.standard.short=ART
+America/Argentina/Tucuman.daylight.short=ARST
+America/Argentina/Tucuman.generic.short=ART
+America/Argentina/Tucuman.standard.short=ART
+America/Argentina/Ushuaia.daylight.short=ARST
+America/Argentina/Ushuaia.generic.short=ART
+America/Argentina/Ushuaia.standard.short=ART
+America/Aruba.daylight.short=ADT
+America/Aruba.generic.short=AT
+America/Aruba.standard.short=AST
+America/Asuncion.daylight.short=PYST
+America/Asuncion.generic.short=PYT
+America/Asuncion.standard.short=PYT
+America/Atikokan.daylight.short=EDT
+America/Atikokan.generic.short=ET
+America/Atikokan.standard.short=EST
+America/Atka.daylight.short=HADT
+America/Atka.generic.short=HAT
+America/Atka.standard.short=HAST
+America/Bahia_Banderas.daylight.short=CDT
+America/Bahia_Banderas.generic.short=CT
+America/Bahia_Banderas.standard.short=CST
+America/Bahia.daylight.short=BRST
+America/Bahia.generic.short=BRT
+America/Bahia.standard.short=BRT
+America/Barbados.daylight.short=ADT
+America/Barbados.generic.short=AT
+America/Barbados.standard.short=AST
+America/Belem.daylight.short=BRST
+America/Belem.generic.short=BRT
+America/Belem.standard.short=BRT
+America/Belize.daylight.short=CDT
+America/Belize.generic.short=CT
+America/Belize.standard.short=CST
+America/Blanc-Sablon.daylight.short=ADT
+America/Blanc-Sablon.generic.short=AT
+America/Blanc-Sablon.standard.short=AST
+America/Boa_Vista.daylight.short=AMST
+America/Boa_Vista.generic.short=AMT
+America/Boa_Vista.standard.short=AMT
+America/Bogota.daylight.short=COST
+America/Bogota.generic.short=COT
+America/Bogota.standard.short=COT
+America/Boise.daylight.short=MDT
+America/Boise.generic.short=MT
+America/Boise.standard.short=MST
+America/Buenos_Aires.daylight.short=ARST
+America/Buenos_Aires.generic.short=ART
+America/Buenos_Aires.standard.short=ART
+America/Cambridge_Bay.daylight.short=MDT
+America/Cambridge_Bay.generic.short=MT
+America/Cambridge_Bay.standard.short=MST
+America/Campo_Grande.daylight.short=AMST
+America/Campo_Grande.generic.short=AMT
+America/Campo_Grande.standard.short=AMT
+America/Cancun.daylight.short=CDT
+America/Cancun.generic.short=CT
+America/Cancun.standard.short=CST
+America/Caracas.daylight.short=VEST
+America/Caracas.generic.short=VET
+America/Caracas.standard.short=VET
+America/Catamarca.daylight.short=ARST
+America/Catamarca.generic.short=ART
+America/Catamarca.standard.short=ART
+America/Cayenne.daylight.short=GFST
+America/Cayenne.generic.short=GFT
+America/Cayenne.standard.short=GFT
+America/Cayman.daylight.short=EDT
+America/Cayman.generic.short=ET
+America/Cayman.standard.short=EST
+America/Chicago.daylight.short=CDT
+America/Chicago.generic.short=CT
+America/Chicago.standard.short=CST
+America/Chihuahua.daylight.short=MDT
+America/Chihuahua.generic.short=MT
+America/Chihuahua.standard.short=MST
+America/Coral_Harbour.daylight.short=EDT
+America/Coral_Harbour.generic.short=ET
+America/Coral_Harbour.standard.short=EST
+America/Cordoba.daylight.short=ARST
+America/Cordoba.generic.short=ART
+America/Cordoba.standard.short=ART
+America/Costa_Rica.daylight.short=CDT
+America/Costa_Rica.generic.short=CT
+America/Costa_Rica.standard.short=CST
+America/Creston.daylight.short=MDT
+America/Creston.generic.short=MT
+America/Creston.standard.short=MST
+America/Cuiaba.daylight.short=AMST
+America/Cuiaba.generic.short=AMT
+America/Cuiaba.standard.short=AMT
+America/Curacao.daylight.short=ADT
+America/Curacao.generic.short=AT
+America/Curacao.standard.short=AST
+America/Danmarkshavn.daylight.short=GMT
+America/Danmarkshavn.generic.short=GMT
+America/Danmarkshavn.standard.short=GMT
+America/Dawson_Creek.daylight.short=MDT
+America/Dawson_Creek.generic.short=MT
+America/Dawson_Creek.standard.short=MST
+America/Dawson.daylight.short=PDT
+America/Dawson.generic.short=PT
+America/Dawson.standard.short=PST
+America/Denver.daylight.short=MDT
+America/Denver.generic.short=MT
+America/Denver.standard.short=MST
+America/Detroit.daylight.short=EDT
+America/Detroit.generic.short=ET
+America/Detroit.standard.short=EST
+America/Dominica.daylight.short=ADT
+America/Dominica.generic.short=AT
+America/Dominica.standard.short=AST
+America/Edmonton.daylight.short=MDT
+America/Edmonton.generic.short=MT
+America/Edmonton.standard.short=MST
+America/Eirunepe.daylight.short=ACST
+America/Eirunepe.generic.short=ACT
+America/Eirunepe.standard.short=ACT
+America/El_Salvador.daylight.short=CDT
+America/El_Salvador.generic.short=CT
+America/El_Salvador.standard.short=CST
+America/Ensenada.daylight.short=PDT
+America/Ensenada.generic.short=PT
+America/Ensenada.standard.short=PST
+America/Fortaleza.daylight.short=BRST
+America/Fortaleza.generic.short=BRT
+America/Fortaleza.standard.short=BRT
+America/Fort_Wayne.daylight.short=EDT
+America/Fort_Wayne.generic.short=ET
+America/Fort_Wayne.standard.short=EST
+America/Glace_Bay.daylight.short=ADT
+America/Glace_Bay.generic.short=AT
+America/Glace_Bay.standard.short=AST
+America/Godthab.daylight.short=WGST
+America/Godthab.generic.short=WGT
+America/Godthab.standard.short=WGT
+America/Goose_Bay.daylight.short=ADT
+America/Goose_Bay.generic.short=AT
+America/Goose_Bay.standard.short=AST
+America/Grand_Turk.daylight.short=EDT
+America/Grand_Turk.generic.short=ET
+America/Grand_Turk.standard.short=EST
+America/Grenada.daylight.short=ADT
+America/Grenada.generic.short=AT
+America/Grenada.standard.short=AST
+America/Guadeloupe.daylight.short=ADT
+America/Guadeloupe.generic.short=AT
+America/Guadeloupe.standard.short=AST
+America/Guatemala.daylight.short=CDT
+America/Guatemala.generic.short=CT
+America/Guatemala.standard.short=CST
+America/Guayaquil.daylight.short=ECST
+America/Guayaquil.generic.short=ECT
+America/Guayaquil.standard.short=ECT
+America/Guyana.daylight.short=GYST
+America/Guyana.generic.short=GYT
+America/Guyana.standard.short=GYT
+America/Halifax.daylight.short=ADT
+America/Halifax.generic.short=AT
+America/Halifax.standard.short=AST
+America/Havana.daylight.short=CDT
+America/Havana.generic.short=CT
+America/Havana.standard.short=CST
+America/Hermosillo.daylight.short=MDT
+America/Hermosillo.generic.short=MT
+America/Hermosillo.standard.short=MST
+America/Indiana/Indianapolis.daylight.short=EDT
+America/Indiana/Indianapolis.generic.short=ET
+America/Indiana/Indianapolis.standard.short=EST
+America/Indiana/Knox.daylight.short=CDT
+America/Indiana/Knox.generic.short=CT
+America/Indiana/Knox.standard.short=CST
+America/Indiana/Marengo.daylight.short=EDT
+America/Indiana/Marengo.generic.short=ET
+America/Indiana/Marengo.standard.short=EST
+America/Indiana/Petersburg.daylight.short=EDT
+America/Indiana/Petersburg.generic.short=ET
+America/Indiana/Petersburg.standard.short=EST
+America/Indianapolis.daylight.short=EDT
+America/Indianapolis.generic.short=ET
+America/Indianapolis.standard.short=EST
+America/Indiana/Tell_City.daylight.short=CDT
+America/Indiana/Tell_City.generic.short=CT
+America/Indiana/Tell_City.standard.short=CST
+America/Indiana/Vevay.daylight.short=EDT
+America/Indiana/Vevay.generic.short=ET
+America/Indiana/Vevay.standard.short=EST
+America/Indiana/Vincennes.daylight.short=EDT
+America/Indiana/Vincennes.generic.short=ET
+America/Indiana/Vincennes.standard.short=EST
+America/Indiana/Winamac.daylight.short=EDT
+America/Indiana/Winamac.generic.short=ET
+America/Indiana/Winamac.standard.short=EST
+America/Inuvik.daylight.short=MDT
+America/Inuvik.generic.short=MT
+America/Inuvik.standard.short=MST
+America/Iqaluit.daylight.short=EDT
+America/Iqaluit.generic.short=ET
+America/Iqaluit.standard.short=EST
+America/Jamaica.daylight.short=EDT
+America/Jamaica.generic.short=ET
+America/Jamaica.standard.short=EST
+America/Jujuy.daylight.short=ARST
+America/Jujuy.generic.short=ART
+America/Jujuy.standard.short=ART
+America/Juneau.daylight.short=AKDT
+America/Juneau.generic.short=AKT
+America/Juneau.standard.short=AKST
+America/Kentucky/Louisville.daylight.short=EDT
+America/Kentucky/Louisville.generic.short=ET
+America/Kentucky/Louisville.standard.short=EST
+America/Kentucky/Monticello.daylight.short=EDT
+America/Kentucky/Monticello.generic.short=ET
+America/Kentucky/Monticello.standard.short=EST
+America/Knox_IN.daylight.short=CDT
+America/Knox_IN.generic.short=CT
+America/Knox_IN.standard.short=CST
+America/Kralendijk.daylight.short=ADT
+America/Kralendijk.generic.short=AT
+America/Kralendijk.standard.short=AST
+America/La_Paz.daylight.short=BOST
+America/La_Paz.generic.short=BOT
+America/La_Paz.standard.short=BOT
+America/Lima.daylight.short=PEST
+America/Lima.generic.short=PET
+America/Lima.standard.short=PET
+America/Los_Angeles.daylight.short=PDT
+America/Los_Angeles.generic.short=PT
+America/Los_Angeles.standard.short=PST
+America/Louisville.daylight.short=EDT
+America/Louisville.generic.short=ET
+America/Louisville.standard.short=EST
+America/Lower_Princes.daylight.short=ADT
+America/Lower_Princes.generic.short=AT
+America/Lower_Princes.standard.short=AST
+America/Maceio.daylight.short=BRST
+America/Maceio.generic.short=BRT
+America/Maceio.standard.short=BRT
+America/Managua.daylight.short=CDT
+America/Managua.generic.short=CT
+America/Managua.standard.short=CST
+America/Manaus.daylight.short=AMST
+America/Manaus.generic.short=AMT
+America/Manaus.standard.short=AMT
+America/Marigot.daylight.short=ADT
+America/Marigot.generic.short=AT
+America/Marigot.standard.short=AST
+America/Martinique.daylight.short=ADT
+America/Martinique.generic.short=AT
+America/Martinique.standard.short=AST
+America/Matamoros.daylight.short=CDT
+America/Matamoros.generic.short=CT
+America/Matamoros.standard.short=CST
+America/Mazatlan.daylight.short=MDT
+America/Mazatlan.generic.short=MT
+America/Mazatlan.standard.short=MST
+America/Mendoza.daylight.short=ARST
+America/Mendoza.generic.short=ART
+America/Mendoza.standard.short=ART
+America/Menominee.daylight.short=CDT
+America/Menominee.generic.short=CT
+America/Menominee.standard.short=CST
+America/Merida.daylight.short=CDT
+America/Merida.generic.short=CT
+America/Merida.standard.short=CST
+America/Metlakatla.daylight.short=MeDT
+America/Metlakatla.generic.short=MeT
+America/Metlakatla.standard.short=MeST
+America/Mexico_City.daylight.short=CDT
+America/Mexico_City.generic.short=CT
+America/Mexico_City.standard.short=CST
+America/Miquelon.daylight.short=PMDT
+America/Miquelon.generic.short=PMT
+America/Miquelon.standard.short=PMST
+America/Moncton.daylight.short=ADT
+America/Moncton.generic.short=AT
+America/Moncton.standard.short=AST
+America/Monterrey.daylight.short=CDT
+America/Monterrey.generic.short=CT
+America/Monterrey.standard.short=CST
+America/Montevideo.daylight.short=UYST
+America/Montevideo.generic.short=UYT
+America/Montevideo.standard.short=UYT
+America/Montreal.daylight.short=EDT
+America/Montreal.generic.short=ET
+America/Montreal.standard.short=EST
+America/Montserrat.daylight.short=ADT
+America/Montserrat.generic.short=AT
+America/Montserrat.standard.short=AST
+America/Nassau.daylight.short=EDT
+America/Nassau.generic.short=ET
+America/Nassau.standard.short=EST
+America/New_York.daylight.short=EDT
+America/New_York.generic.short=ET
+America/New_York.standard.short=EST
+America/Nipigon.daylight.short=EDT
+America/Nipigon.generic.short=ET
+America/Nipigon.standard.short=EST
+America/Nome.daylight.short=AKDT
+America/Nome.generic.short=AKT
+America/Nome.standard.short=AKST
+America/Noronha.daylight.short=FNST
+America/Noronha.generic.short=FNT
+America/Noronha.standard.short=FNT
+America/North_Dakota/Beulah.daylight.short=CDT
+America/North_Dakota/Beulah.generic.short=CT
+America/North_Dakota/Beulah.standard.short=CST
+America/North_Dakota/Center.daylight.short=CDT
+America/North_Dakota/Center.generic.short=CT
+America/North_Dakota/Center.standard.short=CST
+America/North_Dakota/New_Salem.daylight.short=CDT
+America/North_Dakota/New_Salem.generic.short=CT
+America/North_Dakota/New_Salem.standard.short=CST
+America/Ojinaga.daylight.short=MDT
+America/Ojinaga.generic.short=MT
+America/Ojinaga.standard.short=MST
+America/Panama.daylight.short=EDT
+America/Panama.generic.short=ET
+America/Panama.standard.short=EST
+America/Pangnirtung.daylight.short=EDT
+America/Pangnirtung.generic.short=ET
+America/Pangnirtung.standard.short=EST
+America/Paramaribo.daylight.short=SRST
+America/Paramaribo.generic.short=SRT
+America/Paramaribo.standard.short=SRT
+America/Phoenix.daylight.short=MDT
+America/Phoenix.generic.short=MT
+America/Phoenix.standard.short=MST
+America/Port-au-Prince.daylight.short=EDT
+America/Port-au-Prince.generic.short=ET
+America/Port-au-Prince.standard.short=EST
+America/Porto_Acre.daylight.short=ACST
+America/Porto_Acre.generic.short=ACT
+America/Porto_Acre.standard.short=ACT
+America/Port_of_Spain.daylight.short=ADT
+America/Port_of_Spain.generic.short=AT
+America/Port_of_Spain.standard.short=AST
+America/Porto_Velho.daylight.short=AMST
+America/Porto_Velho.generic.short=AMT
+America/Porto_Velho.standard.short=AMT
+America/Puerto_Rico.daylight.short=ADT
+America/Puerto_Rico.generic.short=AT
+America/Puerto_Rico.standard.short=AST
+America/Rainy_River.daylight.short=CDT
+America/Rainy_River.generic.short=CT
+America/Rainy_River.standard.short=CST
+America/Rankin_Inlet.daylight.short=CDT
+America/Rankin_Inlet.generic.short=CT
+America/Rankin_Inlet.standard.short=CST
+America/Recife.daylight.short=BRST
+America/Recife.generic.short=BRT
+America/Recife.standard.short=BRT
+America/Regina.daylight.short=CDT
+America/Regina.generic.short=CT
+America/Regina.standard.short=CST
+America/Resolute.daylight.short=CDT
+America/Resolute.generic.short=CT
+America/Resolute.standard.short=CST
+America/Rio_Branco.daylight.short=ACST
+America/Rio_Branco.generic.short=ACT
+America/Rio_Branco.standard.short=ACT
+America/Rosario.daylight.short=ARST
+America/Rosario.generic.short=ART
+America/Rosario.standard.short=ART
+America/Santa_Isabel.daylight.short=PDT
+America/Santa_Isabel.generic.short=PT
+America/Santa_Isabel.standard.short=PST
+America/Santarem.daylight.short=BRST
+America/Santarem.generic.short=BRT
+America/Santarem.standard.short=BRT
+America/Santiago.daylight.short=CLST
+America/Santiago.generic.short=CLT
+America/Santiago.standard.short=CLT
+America/Santo_Domingo.daylight.short=ADT
+America/Santo_Domingo.generic.short=AT
+America/Santo_Domingo.standard.short=AST
+America/Sao_Paulo.daylight.short=BRST
+America/Sao_Paulo.generic.short=BRT
+America/Sao_Paulo.standard.short=BRT
+America/Scoresbysund.daylight.short=EGST
+America/Scoresbysund.generic.short=EGT
+America/Scoresbysund.standard.short=EGT
+America/Shiprock.daylight.short=MDT
+America/Shiprock.generic.short=MT
+America/Shiprock.standard.short=MST
+America/Sitka.daylight.short=AKDT
+America/Sitka.generic.short=AKT
+America/Sitka.standard.short=AKST
+America/St_Barthelemy.daylight.short=ADT
+America/St_Barthelemy.generic.short=AT
+America/St_Barthelemy.standard.short=AST
+America/St_Johns.daylight.short=NDT
+America/St_Johns.generic.short=NT
+America/St_Johns.standard.short=NST
+America/St_Kitts.daylight.short=ADT
+America/St_Kitts.generic.short=AT
+America/St_Kitts.standard.short=AST
+America/St_Lucia.daylight.short=ADT
+America/St_Lucia.generic.short=AT
+America/St_Lucia.standard.short=AST
+America/St_Thomas.daylight.short=ADT
+America/St_Thomas.generic.short=AT
+America/St_Thomas.standard.short=AST
+America/St_Vincent.daylight.short=ADT
+America/St_Vincent.generic.short=AT
+America/St_Vincent.standard.short=AST
+America/Swift_Current.daylight.short=CDT
+America/Swift_Current.generic.short=CT
+America/Swift_Current.standard.short=CST
+America/Tegucigalpa.daylight.short=CDT
+America/Tegucigalpa.generic.short=CT
+America/Tegucigalpa.standard.short=CST
+America/Thule.daylight.short=ADT
+America/Thule.generic.short=AT
+America/Thule.standard.short=AST
+America/Thunder_Bay.daylight.short=EDT
+America/Thunder_Bay.generic.short=ET
+America/Thunder_Bay.standard.short=EST
+America/Tijuana.daylight.short=PDT
+America/Tijuana.generic.short=PT
+America/Tijuana.standard.short=PST
+America/Toronto.daylight.short=EDT
+America/Toronto.generic.short=ET
+America/Toronto.standard.short=EST
+America/Tortola.daylight.short=ADT
+America/Tortola.generic.short=AT
+America/Tortola.standard.short=AST
+America/Vancouver.daylight.short=PDT
+America/Vancouver.generic.short=PT
+America/Vancouver.standard.short=PST
+America/Virgin.daylight.short=ADT
+America/Virgin.generic.short=AT
+America/Virgin.standard.short=AST
+America/Whitehorse.daylight.short=PDT
+America/Whitehorse.generic.short=PT
+America/Whitehorse.standard.short=PST
+America/Winnipeg.daylight.short=CDT
+America/Winnipeg.generic.short=CT
+America/Winnipeg.standard.short=CST
+America/Yakutat.daylight.short=AKDT
+America/Yakutat.generic.short=AKT
+America/Yakutat.standard.short=AKST
+America/Yellowknife.daylight.short=MDT
+America/Yellowknife.generic.short=MT
+America/Yellowknife.standard.short=MST
+Antarctica/Casey.daylight.short=WST
+Antarctica/Casey.generic.short=WT
+Antarctica/Casey.standard.short=WST
+Antarctica/Davis.daylight.short=DAVST
+Antarctica/Davis.generic.short=DAVT
+Antarctica/Davis.standard.short=DAVT
+Antarctica/DumontDUrville.daylight.short=DDUST
+Antarctica/DumontDUrville.generic.short=DDUT
+Antarctica/DumontDUrville.standard.short=DDUT
+Antarctica/Macquarie.daylight.short=MIST
+Antarctica/Macquarie.generic.short=MIST
+Antarctica/Macquarie.standard.short=MIST
+Antarctica/Mawson.daylight.short=MAWST
+Antarctica/Mawson.generic.short=MAWT
+Antarctica/Mawson.standard.short=MAWT
+Antarctica/McMurdo.daylight.short=NZDT
+Antarctica/McMurdo.generic.short=NZT
+Antarctica/McMurdo.standard.short=NZST
+Antarctica/Palmer.daylight.short=CLST
+Antarctica/Palmer.generic.short=CLT
+Antarctica/Palmer.standard.short=CLT
+Antarctica/Rothera.daylight.short=ROTST
+Antarctica/Rothera.generic.short=ROTT
+Antarctica/Rothera.standard.short=ROTT
+Antarctica/South_Pole.daylight.short=NZDT
+Antarctica/South_Pole.generic.short=NZT
+Antarctica/South_Pole.standard.short=NZST
+Antarctica/Syowa.daylight.short=SYOST
+Antarctica/Syowa.generic.short=SYOT
+Antarctica/Syowa.standard.short=SYOT
+Antarctica/Vostok.daylight.short=VOSST
+Antarctica/Vostok.generic.short=VOST
+Antarctica/Vostok.standard.short=VOST
+Arctic/Longyearbyen.daylight.short=CEST
+Arctic/Longyearbyen.generic.short=CET
+Arctic/Longyearbyen.standard.short=CET
+ART.daylight.short=EEST
+ART.generic.short=EET
+ART.standard.short=EET
+Asia/Aden.daylight.short=ADT
+Asia/Aden.generic.short=AT
+Asia/Aden.standard.short=AST
+Asia/Almaty.daylight.short=ALMST
+Asia/Almaty.generic.short=ALMT
+Asia/Almaty.standard.short=ALMT
+Asia/Amman.daylight.short=ADT
+Asia/Amman.generic.short=AT
+Asia/Amman.standard.short=AST
+Asia/Anadyr.daylight.short=ANAST
+Asia/Anadyr.generic.short=ANAT
+Asia/Anadyr.standard.short=ANAT
+Asia/Aqtau.daylight.short=AQTST
+Asia/Aqtau.generic.short=AQTT
+Asia/Aqtau.standard.short=AQTT
+Asia/Aqtobe.daylight.short=AQTST
+Asia/Aqtobe.generic.short=AQTT
+Asia/Aqtobe.standard.short=AQTT
+Asia/Ashgabat.daylight.short=TMST
+Asia/Ashgabat.generic.short=TMT
+Asia/Ashgabat.standard.short=TMT
+Asia/Ashkhabad.daylight.short=TMST
+Asia/Ashkhabad.generic.short=TMT
+Asia/Ashkhabad.standard.short=TMT
+Asia/Baghdad.daylight.short=ADT
+Asia/Baghdad.generic.short=AT
+Asia/Baghdad.standard.short=AST
+Asia/Bahrain.daylight.short=ADT
+Asia/Bahrain.generic.short=AT
+Asia/Bahrain.standard.short=AST
+Asia/Baku.daylight.short=AZST
+Asia/Baku.generic.short=AZT
+Asia/Baku.standard.short=AZT
+Asia/Bangkok.daylight.short=ICST
+Asia/Bangkok.generic.short=ICT
+Asia/Bangkok.standard.short=ICT
+Asia/Beirut.daylight.short=EEST
+Asia/Beirut.generic.short=EET
+Asia/Beirut.standard.short=EET
+Asia/Bishkek.daylight.short=KGST
+Asia/Bishkek.generic.short=KGT
+Asia/Bishkek.standard.short=KGT
+Asia/Brunei.daylight.short=BNST
+Asia/Brunei.generic.short=BNT
+Asia/Brunei.standard.short=BNT
+Asia/Calcutta.daylight.short=IDT
+Asia/Calcutta.generic.short=IT
+Asia/Calcutta.standard.short=IST
+Asia/Choibalsan.daylight.short=CHOST
+Asia/Choibalsan.generic.short=CHOT
+Asia/Choibalsan.standard.short=CHOT
+Asia/Chongqing.daylight.short=CDT
+Asia/Chongqing.generic.short=CT
+Asia/Chongqing.standard.short=CST
+Asia/Chungking.daylight.short=CDT
+Asia/Chungking.generic.short=CT
+Asia/Chungking.standard.short=CST
+Asia/Colombo.daylight.short=IDT
+Asia/Colombo.generic.short=IT
+Asia/Colombo.standard.short=IST
+Asia/Dacca.daylight.short=BDST
+Asia/Dacca.generic.short=BDT
+Asia/Dacca.standard.short=BDT
+Asia/Damascus.daylight.short=EEST
+Asia/Damascus.generic.short=EET
+Asia/Damascus.standard.short=EET
+Asia/Dhaka.daylight.short=BDST
+Asia/Dhaka.generic.short=BDT
+Asia/Dhaka.standard.short=BDT
+Asia/Dili.daylight.short=TLST
+Asia/Dili.generic.short=TLT
+Asia/Dili.standard.short=TLT
+Asia/Dubai.daylight.short=GDT
+Asia/Dubai.generic.short=GT
+Asia/Dubai.standard.short=GST
+Asia/Dushanbe.daylight.short=TJST
+Asia/Dushanbe.generic.short=TJT
+Asia/Dushanbe.standard.short=TJT
+Asia/Gaza.daylight.short=EEST
+Asia/Gaza.generic.short=EET
+Asia/Gaza.standard.short=EET
+Asia/Harbin.daylight.short=CDT
+Asia/Harbin.generic.short=CT
+Asia/Harbin.standard.short=CST
+Asia/Hebron.daylight.short=EEST
+Asia/Hebron.generic.short=EET
+Asia/Hebron.standard.short=EET
+Asia/Ho_Chi_Minh.daylight.short=ICST
+Asia/Ho_Chi_Minh.generic.short=ICT
+Asia/Ho_Chi_Minh.standard.short=ICT
+Asia/Hong_Kong.daylight.short=HKST
+Asia/Hong_Kong.generic.short=HKT
+Asia/Hong_Kong.standard.short=HKT
+Asia/Hovd.daylight.short=HOVST
+Asia/Hovd.generic.short=HOVT
+Asia/Hovd.standard.short=HOVT
+Asia/Irkutsk.daylight.short=IRKST
+Asia/Irkutsk.generic.short=IRKT
+Asia/Irkutsk.standard.short=IRKT
+Asia/Istanbul.daylight.short=EEST
+Asia/Istanbul.generic.short=EET
+Asia/Istanbul.standard.short=EET
+Asia/Jakarta.daylight.short=WIST
+Asia/Jakarta.generic.short=WIB
+Asia/Jakarta.standard.short=WIB
+Asia/Jayapura.daylight.short=EIST
+Asia/Jayapura.generic.short=WIT
+Asia/Jayapura.standard.short=WIT
+Asia/Jerusalem.daylight.short=IDT
+Asia/Jerusalem.generic.short=IT
+Asia/Jerusalem.standard.short=IST
+Asia/Kabul.daylight.short=AFST
+Asia/Kabul.generic.short=AFT
+Asia/Kabul.standard.short=AFT
+Asia/Kamchatka.daylight.short=PETST
+Asia/Kamchatka.generic.short=PETT
+Asia/Kamchatka.standard.short=PETT
+Asia/Karachi.daylight.short=PKST
+Asia/Karachi.generic.short=PKT
+Asia/Karachi.standard.short=PKT
+Asia/Kashgar.daylight.short=CDT
+Asia/Kashgar.generic.short=CT
+Asia/Kashgar.standard.short=CST
+Asia/Kathmandu.daylight.short=NPST
+Asia/Kathmandu.generic.short=NPT
+Asia/Kathmandu.standard.short=NPT
+Asia/Katmandu.daylight.short=NPST
+Asia/Katmandu.generic.short=NPT
+Asia/Katmandu.standard.short=NPT
+Asia/Khandyga.daylight.short=YAKST
+Asia/Khandyga.generic.short=YAKT
+Asia/Khandyga.standard.short=YAKT
+Asia/Kolkata.daylight.short=IDT
+Asia/Kolkata.generic.short=IT
+Asia/Kolkata.standard.short=IST
+Asia/Krasnoyarsk.daylight.short=KRAST
+Asia/Krasnoyarsk.generic.short=KRAT
+Asia/Krasnoyarsk.standard.short=KRAT
+Asia/Kuala_Lumpur.daylight.short=MYST
+Asia/Kuala_Lumpur.generic.short=MYT
+Asia/Kuala_Lumpur.standard.short=MYT
+Asia/Kuching.daylight.short=MYST
+Asia/Kuching.generic.short=MYT
+Asia/Kuching.standard.short=MYT
+Asia/Kuwait.daylight.short=ADT
+Asia/Kuwait.generic.short=AT
+Asia/Kuwait.standard.short=AST
+Asia/Macao.daylight.short=CDT
+Asia/Macao.generic.short=CT
+Asia/Macao.standard.short=CST
+Asia/Macau.daylight.short=CDT
+Asia/Macau.generic.short=CT
+Asia/Macau.standard.short=CST
+Asia/Magadan.daylight.short=MAGST
+Asia/Magadan.generic.short=MAGT
+Asia/Magadan.standard.short=MAGT
+Asia/Makassar.daylight.short=CIST
+Asia/Makassar.generic.short=WITA
+Asia/Makassar.standard.short=WITA
+Asia/Manila.daylight.short=PHST
+Asia/Manila.generic.short=PHT
+Asia/Manila.standard.short=PHT
+Asia/Muscat.daylight.short=GDT
+Asia/Muscat.generic.short=GT
+Asia/Muscat.standard.short=GST
+Asia/Nicosia.daylight.short=EEST
+Asia/Nicosia.generic.short=EET
+Asia/Nicosia.standard.short=EET
+Asia/Novokuznetsk.daylight.short=NOVST
+Asia/Novokuznetsk.generic.short=NOVT
+Asia/Novokuznetsk.standard.short=NOVT
+Asia/Novosibirsk.daylight.short=NOVST
+Asia/Novosibirsk.generic.short=NOVT
+Asia/Novosibirsk.standard.short=NOVT
+Asia/Omsk.daylight.short=OMSST
+Asia/Omsk.generic.short=OMST
+Asia/Omsk.standard.short=OMST
+Asia/Oral.daylight.short=ORAST
+Asia/Oral.generic.short=ORAT
+Asia/Oral.standard.short=ORAT
+Asia/Phnom_Penh.daylight.short=ICST
+Asia/Phnom_Penh.generic.short=ICT
+Asia/Phnom_Penh.standard.short=ICT
+Asia/Pontianak.daylight.short=WIST
+Asia/Pontianak.generic.short=WIB
+Asia/Pontianak.standard.short=WIB
+Asia/Pyongyang.daylight.short=KDT
+Asia/Pyongyang.generic.short=KT
+Asia/Pyongyang.standard.short=KST
+Asia/Qatar.daylight.short=ADT
+Asia/Qatar.generic.short=AT
+Asia/Qatar.standard.short=AST
+Asia/Qyzylorda.daylight.short=QYZST
+Asia/Qyzylorda.generic.short=QYZT
+Asia/Qyzylorda.standard.short=QYZT
+Asia/Rangoon.daylight.short=MMST
+Asia/Rangoon.generic.short=MMT
+Asia/Rangoon.standard.short=MMT
+Asia/Saigon.daylight.short=ICST
+Asia/Saigon.generic.short=ICT
+Asia/Saigon.standard.short=ICT
+Asia/Sakhalin.daylight.short=SAKST
+Asia/Sakhalin.generic.short=SAKT
+Asia/Sakhalin.standard.short=SAKT
+Asia/Samarkand.daylight.short=UZST
+Asia/Samarkand.generic.short=UZT
+Asia/Samarkand.standard.short=UZT
+Asia/Seoul.daylight.short=KDT
+Asia/Seoul.generic.short=KT
+Asia/Seoul.standard.short=KST
+Asia/Shanghai.daylight.short=CDT
+Asia/Shanghai.generic.short=CT
+Asia/Shanghai.standard.short=CST
+Asia/Singapore.daylight.short=SGST
+Asia/Singapore.generic.short=SGT
+Asia/Singapore.standard.short=SGT
+Asia/Taipei.daylight.short=CDT
+Asia/Taipei.generic.short=CT
+Asia/Taipei.standard.short=CST
+Asia/Tashkent.daylight.short=UZST
+Asia/Tashkent.generic.short=UZT
+Asia/Tashkent.standard.short=UZT
+Asia/Tbilisi.daylight.short=GEST
+Asia/Tbilisi.generic.short=GET
+Asia/Tbilisi.standard.short=GET
+Asia/Tehran.daylight.short=IRDT
+Asia/Tehran.generic.short=IRT
+Asia/Tehran.standard.short=IRST
+Asia/Tel_Aviv.daylight.short=IDT
+Asia/Tel_Aviv.generic.short=IT
+Asia/Tel_Aviv.standard.short=IST
+Asia/Thimbu.daylight.short=BTST
+Asia/Thimbu.generic.short=BTT
+Asia/Thimbu.standard.short=BTT
+Asia/Thimphu.daylight.short=BTST
+Asia/Thimphu.generic.short=BTT
+Asia/Thimphu.standard.short=BTT
+Asia/Tokyo.daylight.short=JDT
+Asia/Tokyo.generic.short=JT
+Asia/Tokyo.standard.short=JST
+Asia/Ujung_Pandang.daylight.short=CIST
+Asia/Ujung_Pandang.generic.short=WITA
+Asia/Ujung_Pandang.standard.short=WITA
+Asia/Ulaanbaatar.daylight.short=ULAST
+Asia/Ulaanbaatar.generic.short=ULAT
+Asia/Ulaanbaatar.standard.short=ULAT
+Asia/Ulan_Bator.daylight.short=ULAST
+Asia/Ulan_Bator.generic.short=ULAT
+Asia/Ulan_Bator.standard.short=ULAT
+Asia/Urumqi.daylight.short=CDT
+Asia/Urumqi.generic.short=CT
+Asia/Urumqi.standard.short=CST
+Asia/Ust-Nera.daylight.short=VLAST
+Asia/Ust-Nera.generic.short=VLAT
+Asia/Ust-Nera.standard.short=VLAT
+Asia/Vientiane.daylight.short=ICST
+Asia/Vientiane.generic.short=ICT
+Asia/Vientiane.standard.short=ICT
+Asia/Vladivostok.daylight.short=VLAST
+Asia/Vladivostok.generic.short=VLAT
+Asia/Vladivostok.standard.short=VLAT
+Asia/Yakutsk.daylight.short=YAKST
+Asia/Yakutsk.generic.short=YAKT
+Asia/Yakutsk.standard.short=YAKT
+Asia/Yekaterinburg.daylight.short=YEKST
+Asia/Yekaterinburg.generic.short=YEKT
+Asia/Yekaterinburg.standard.short=YEKT
+Asia/Yerevan.daylight.short=AMST
+Asia/Yerevan.generic.short=AMT
+Asia/Yerevan.standard.short=AMT
+AST.daylight.short=AKDT
+AST.generic.short=AKT
+AST.standard.short=AKST
+Atlantic/Azores.daylight.short=AZOST
+Atlantic/Azores.generic.short=AZOT
+Atlantic/Azores.standard.short=AZOT
+Atlantic/Bermuda.daylight.short=ADT
+Atlantic/Bermuda.generic.short=AT
+Atlantic/Bermuda.standard.short=AST
+Atlantic/Canary.daylight.short=WEST
+Atlantic/Canary.generic.short=WET
+Atlantic/Canary.standard.short=WET
+Atlantic/Cape_Verde.daylight.short=CVST
+Atlantic/Cape_Verde.generic.short=CVT
+Atlantic/Cape_Verde.standard.short=CVT
+Atlantic/Faeroe.daylight.short=WEST
+Atlantic/Faeroe.generic.short=WET
+Atlantic/Faeroe.standard.short=WET
+Atlantic/Faroe.daylight.short=WEST
+Atlantic/Faroe.generic.short=WET
+Atlantic/Faroe.standard.short=WET
+Atlantic/Jan_Mayen.daylight.short=CEST
+Atlantic/Jan_Mayen.generic.short=CET
+Atlantic/Jan_Mayen.standard.short=CET
+Atlantic/Madeira.daylight.short=WEST
+Atlantic/Madeira.generic.short=WET
+Atlantic/Madeira.standard.short=WET
+Atlantic/Reykjavik.daylight.short=GMT
+Atlantic/Reykjavik.generic.short=GMT
+Atlantic/Reykjavik.standard.short=GMT
+Atlantic/South_Georgia.daylight.short=GDT
+Atlantic/South_Georgia.generic.short=GT
+Atlantic/South_Georgia.standard.short=GST
+Atlantic/Stanley.daylight.short=FKST
+Atlantic/Stanley.generic.short=FKT
+Atlantic/Stanley.standard.short=FKT
+Atlantic/St_Helena.daylight.short=GMT
+Atlantic/St_Helena.generic.short=GMT
+Atlantic/St_Helena.standard.short=GMT
+Australia/ACT.daylight.short=EST
+Australia/ACT.generic.short=ET
+Australia/ACT.standard.short=EST
+Australia/Adelaide.daylight.short=CST
+Australia/Adelaide.generic.short=CT
+Australia/Adelaide.standard.short=CST
+Australia/Brisbane.daylight.short=EST
+Australia/Brisbane.generic.short=ET
+Australia/Brisbane.standard.short=EST
+Australia/Broken_Hill.daylight.short=CST
+Australia/Broken_Hill.generic.short=CT
+Australia/Broken_Hill.standard.short=CST
+Australia/Canberra.daylight.short=EST
+Australia/Canberra.generic.short=ET
+Australia/Canberra.standard.short=EST
+Australia/Currie.daylight.short=EST
+Australia/Currie.generic.short=ET
+Australia/Currie.standard.short=EST
+Australia/Darwin.daylight.short=CST
+Australia/Darwin.generic.short=CT
+Australia/Darwin.standard.short=CST
+Australia/Eucla.daylight.short=CWST
+Australia/Eucla.generic.short=CWT
+Australia/Eucla.standard.short=CWST
+Australia/Hobart.daylight.short=EST
+Australia/Hobart.generic.short=ET
+Australia/Hobart.standard.short=EST
+Australia/LHI.daylight.short=LHST
+Australia/LHI.generic.short=LHT
+Australia/LHI.standard.short=LHST
+Australia/Lindeman.daylight.short=EST
+Australia/Lindeman.generic.short=ET
+Australia/Lindeman.standard.short=EST
+Australia/Lord_Howe.daylight.short=LHST
+Australia/Lord_Howe.generic.short=LHT
+Australia/Lord_Howe.standard.short=LHST
+Australia/Melbourne.daylight.short=EST
+Australia/Melbourne.generic.short=ET
+Australia/Melbourne.standard.short=EST
+Australia/North.daylight.short=CST
+Australia/North.generic.short=CT
+Australia/North.standard.short=CST
+Australia/NSW.daylight.short=EST
+Australia/NSW.generic.short=ET
+Australia/NSW.standard.short=EST
+Australia/Perth.daylight.short=WST
+Australia/Perth.generic.short=WT
+Australia/Perth.standard.short=WST
+Australia/Queensland.daylight.short=EST
+Australia/Queensland.generic.short=ET
+Australia/Queensland.standard.short=EST
+Australia/South.daylight.short=CST
+Australia/South.generic.short=CT
+Australia/South.standard.short=CST
+Australia/Sydney.daylight.short=EST
+Australia/Sydney.generic.short=ET
+Australia/Sydney.standard.short=EST
+Australia/Tasmania.daylight.short=EST
+Australia/Tasmania.generic.short=ET
+Australia/Tasmania.standard.short=EST
+Australia/Victoria.daylight.short=EST
+Australia/Victoria.generic.short=ET
+Australia/Victoria.standard.short=EST
+Australia/West.daylight.short=WST
+Australia/West.generic.short=WT
+Australia/West.standard.short=WST
+Australia/Yancowinna.daylight.short=CST
+Australia/Yancowinna.generic.short=CT
+Australia/Yancowinna.standard.short=CST
+BET.daylight.short=BRST
+BET.generic.short=BRT
+BET.standard.short=BRT
+Brazil/Acre.daylight.short=ACST
+Brazil/Acre.generic.short=ACT
+Brazil/Acre.standard.short=ACT
+Brazil/DeNoronha.daylight.short=FNST
+Brazil/DeNoronha.generic.short=FNT
+Brazil/DeNoronha.standard.short=FNT
+Brazil/East.daylight.short=BRST
+Brazil/East.generic.short=BRT
+Brazil/East.standard.short=BRT
+Brazil/West.daylight.short=AMST
+Brazil/West.generic.short=AMT
+Brazil/West.standard.short=AMT
+BST.daylight.short=BDST
+BST.generic.short=BDT
+BST.standard.short=BDT
+Canada/Atlantic.daylight.short=ADT
+Canada/Atlantic.generic.short=AT
+Canada/Atlantic.standard.short=AST
+Canada/Central.daylight.short=CDT
+Canada/Central.generic.short=CT
+Canada/Central.standard.short=CST
+Canada/Eastern.daylight.short=EDT
+Canada/Eastern.generic.short=ET
+Canada/Eastern.standard.short=EST
+Canada/East-Saskatchewan.daylight.short=CDT
+Canada/East-Saskatchewan.generic.short=CT
+Canada/East-Saskatchewan.standard.short=CST
+Canada/Mountain.daylight.short=MDT
+Canada/Mountain.generic.short=MT
+Canada/Mountain.standard.short=MST
+Canada/Newfoundland.daylight.short=NDT
+Canada/Newfoundland.generic.short=NT
+Canada/Newfoundland.standard.short=NST
+Canada/Pacific.daylight.short=PDT
+Canada/Pacific.generic.short=PT
+Canada/Pacific.standard.short=PST
+Canada/Saskatchewan.daylight.short=CDT
+Canada/Saskatchewan.generic.short=CT
+Canada/Saskatchewan.standard.short=CST
+Canada/Yukon.daylight.short=PDT
+Canada/Yukon.generic.short=PT
+Canada/Yukon.standard.short=PST
+CAT.daylight.short=CAST
+CAT.generic.short=CAT
+CAT.standard.short=CAT
+CET.daylight.short=CEST
+CET.generic.short=CET
+CET.standard.short=CET
+Chile/Continental.daylight.short=CLST
+Chile/Continental.generic.short=CLT
+Chile/Continental.standard.short=CLT
+Chile/EasterIsland.daylight.short=EASST
+Chile/EasterIsland.generic.short=EAST
+Chile/EasterIsland.standard.short=EAST
+CNT.daylight.short=NDT
+CNT.generic.short=NT
+CNT.standard.short=NST
+CST6CDT.daylight.short=CDT
+CST6CDT.generic.short=CT
+CST6CDT.standard.short=CST
+CST.daylight.short=CDT
+CST.generic.short=CT
+CST.standard.short=CST
+CTT.daylight.short=CDT
+CTT.generic.short=CT
+CTT.standard.short=CST
+Cuba.daylight.short=CDT
+Cuba.generic.short=CT
+Cuba.standard.short=CST
+EAT.daylight.short=EAST
+EAT.generic.short=EAT
+EAT.standard.short=EAT
+ECT.daylight.short=CEST
+ECT.generic.short=CET
+ECT.standard.short=CET
+EET.daylight.short=EEST
+EET.generic.short=EET
+EET.standard.short=EET
+Egypt.daylight.short=EEST
+Egypt.generic.short=EET
+Egypt.standard.short=EET
+Eire.daylight.short=IST
+Eire.generic.short=IT
+Eire.standard.short=GMT
+EST5EDT.daylight.short=EDT
+EST5EDT.generic.short=ET
+EST5EDT.standard.short=EST
+EST.daylight.short=EDT
+EST.generic.short=ET
+EST.standard.short=EST
+Etc/Greenwich.daylight.short=GMT
+Etc/Greenwich.generic.short=GMT
+Etc/Greenwich.standard.short=GMT
+Etc/UCT.daylight.short=UTC
+Etc/UCT.generic.short=UTC
+Etc/UCT.standard.short=UTC
+Etc/Universal.daylight.short=UTC
+Etc/Universal.generic.short=UTC
+Etc/Universal.standard.short=UTC
+Etc/UTC.daylight.short=UTC
+Etc/UTC.generic.short=UTC
+Etc/UTC.standard.short=UTC
+Etc/Zulu.daylight.short=UTC
+Etc/Zulu.generic.short=UTC
+Etc/Zulu.standard.short=UTC
+Europe/Amsterdam.daylight.short=CEST
+Europe/Amsterdam.generic.short=CET
+Europe/Amsterdam.standard.short=CET
+Europe/Andorra.daylight.short=CEST
+Europe/Andorra.generic.short=CET
+Europe/Andorra.standard.short=CET
+Europe/Athens.daylight.short=EEST
+Europe/Athens.generic.short=EET
+Europe/Athens.standard.short=EET
+Europe/Belfast.daylight.short=BST
+Europe/Belfast.generic.short=BT
+Europe/Belfast.standard.short=GMT
+Europe/Belgrade.daylight.short=CEST
+Europe/Belgrade.generic.short=CET
+Europe/Belgrade.standard.short=CET
+Europe/Berlin.daylight.short=CEST
+Europe/Berlin.generic.short=CET
+Europe/Berlin.standard.short=CET
+Europe/Bratislava.daylight.short=CEST
+Europe/Bratislava.generic.short=CET
+Europe/Bratislava.standard.short=CET
+Europe/Brussels.daylight.short=CEST
+Europe/Brussels.generic.short=CET
+Europe/Brussels.standard.short=CET
+Europe/Bucharest.daylight.short=EEST
+Europe/Bucharest.generic.short=EET
+Europe/Bucharest.standard.short=EET
+Europe/Budapest.daylight.short=CEST
+Europe/Budapest.generic.short=CET
+Europe/Budapest.standard.short=CET
+Europe/Busingen.daylight.short=CEST
+Europe/Busingen.generic.short=CET
+Europe/Busingen.standard.short=CET
+Europe/Chisinau.daylight.short=EEST
+Europe/Chisinau.generic.short=EET
+Europe/Chisinau.standard.short=EET
+Europe/Copenhagen.daylight.short=CEST
+Europe/Copenhagen.generic.short=CET
+Europe/Copenhagen.standard.short=CET
+Europe/Dublin.daylight.short=IST
+Europe/Dublin.generic.short=IT
+Europe/Dublin.standard.short=GMT
+Europe/Gibraltar.daylight.short=CEST
+Europe/Gibraltar.generic.short=CET
+Europe/Gibraltar.standard.short=CET
+Europe/Guernsey.daylight.short=BST
+Europe/Guernsey.generic.short=BT
+Europe/Guernsey.standard.short=GMT
+Europe/Helsinki.daylight.short=EEST
+Europe/Helsinki.generic.short=EET
+Europe/Helsinki.standard.short=EET
+Europe/Isle_of_Man.daylight.short=BST
+Europe/Isle_of_Man.generic.short=BT
+Europe/Isle_of_Man.standard.short=GMT
+Europe/Istanbul.daylight.short=EEST
+Europe/Istanbul.generic.short=EET
+Europe/Istanbul.standard.short=EET
+Europe/Jersey.daylight.short=BST
+Europe/Jersey.generic.short=BT
+Europe/Jersey.standard.short=GMT
+Europe/Kaliningrad.daylight.short=FEST
+Europe/Kaliningrad.generic.short=FET
+Europe/Kaliningrad.standard.short=FET
+Europe/Kiev.daylight.short=EEST
+Europe/Kiev.generic.short=EET
+Europe/Kiev.standard.short=EET
+Europe/Lisbon.daylight.short=WEST
+Europe/Lisbon.generic.short=WET
+Europe/Lisbon.standard.short=WET
+Europe/Ljubljana.daylight.short=CEST
+Europe/Ljubljana.generic.short=CET
+Europe/Ljubljana.standard.short=CET
+Europe/London.daylight.short=BST
+Europe/London.generic.short=BT
+Europe/London.standard.short=GMT
+Europe/Luxembourg.daylight.short=CEST
+Europe/Luxembourg.generic.short=CET
+Europe/Luxembourg.standard.short=CET
+Europe/Madrid.daylight.short=CEST
+Europe/Madrid.generic.short=CET
+Europe/Madrid.standard.short=CET
+Europe/Malta.daylight.short=CEST
+Europe/Malta.generic.short=CET
+Europe/Malta.standard.short=CET
+Europe/Mariehamn.daylight.short=EEST
+Europe/Mariehamn.generic.short=EET
+Europe/Mariehamn.standard.short=EET
+Europe/Minsk.daylight.short=FEST
+Europe/Minsk.generic.short=FET
+Europe/Minsk.standard.short=FET
+Europe/Monaco.daylight.short=CEST
+Europe/Monaco.generic.short=CET
+Europe/Monaco.standard.short=CET
+Europe/Moscow.daylight.short=MSD
+Europe/Moscow.generic.short=MT
+Europe/Moscow.standard.short=MSK
+Europe/Nicosia.daylight.short=EEST
+Europe/Nicosia.generic.short=EET
+Europe/Nicosia.standard.short=EET
+Europe/Oslo.daylight.short=CEST
+Europe/Oslo.generic.short=CET
+Europe/Oslo.standard.short=CET
+Europe/Paris.daylight.short=CEST
+Europe/Paris.generic.short=CET
+Europe/Paris.standard.short=CET
+Europe/Podgorica.daylight.short=CEST
+Europe/Podgorica.generic.short=CET
+Europe/Podgorica.standard.short=CET
+Europe/Prague.daylight.short=CEST
+Europe/Prague.generic.short=CET
+Europe/Prague.standard.short=CET
+Europe/Riga.daylight.short=EEST
+Europe/Riga.generic.short=EET
+Europe/Riga.standard.short=EET
+Europe/Rome.daylight.short=CEST
+Europe/Rome.generic.short=CET
+Europe/Rome.standard.short=CET
+Europe/Samara.daylight.short=SAMST
+Europe/Samara.generic.short=SAMT
+Europe/Samara.standard.short=SAMT
+Europe/San_Marino.daylight.short=CEST
+Europe/San_Marino.generic.short=CET
+Europe/San_Marino.standard.short=CET
+Europe/Sarajevo.daylight.short=CEST
+Europe/Sarajevo.generic.short=CET
+Europe/Sarajevo.standard.short=CET
+Europe/Simferopol.daylight.short=EEST
+Europe/Simferopol.generic.short=EET
+Europe/Simferopol.standard.short=EET
+Europe/Skopje.daylight.short=CEST
+Europe/Skopje.generic.short=CET
+Europe/Skopje.standard.short=CET
+Europe/Sofia.daylight.short=EEST
+Europe/Sofia.generic.short=EET
+Europe/Sofia.standard.short=EET
+Europe/Stockholm.daylight.short=CEST
+Europe/Stockholm.generic.short=CET
+Europe/Stockholm.standard.short=CET
+Europe/Tallinn.daylight.short=EEST
+Europe/Tallinn.generic.short=EET
+Europe/Tallinn.standard.short=EET
+Europe/Tirane.daylight.short=CEST
+Europe/Tirane.generic.short=CET
+Europe/Tirane.standard.short=CET
+Europe/Tiraspol.daylight.short=EEST
+Europe/Tiraspol.generic.short=EET
+Europe/Tiraspol.standard.short=EET
+Europe/Uzhgorod.daylight.short=EEST
+Europe/Uzhgorod.generic.short=EET
+Europe/Uzhgorod.standard.short=EET
+Europe/Vaduz.daylight.short=CEST
+Europe/Vaduz.generic.short=CET
+Europe/Vaduz.standard.short=CET
+Europe/Vatican.daylight.short=CEST
+Europe/Vatican.generic.short=CET
+Europe/Vatican.standard.short=CET
+Europe/Vienna.daylight.short=CEST
+Europe/Vienna.generic.short=CET
+Europe/Vienna.standard.short=CET
+Europe/Vilnius.daylight.short=EEST
+Europe/Vilnius.generic.short=EET
+Europe/Vilnius.standard.short=EET
+Europe/Volgograd.daylight.short=VOLST
+Europe/Volgograd.generic.short=VOLT
+Europe/Volgograd.standard.short=VOLT
+Europe/Warsaw.daylight.short=CEST
+Europe/Warsaw.generic.short=CET
+Europe/Warsaw.standard.short=CET
+Europe/Zagreb.daylight.short=CEST
+Europe/Zagreb.generic.short=CET
+Europe/Zagreb.standard.short=CET
+Europe/Zaporozhye.daylight.short=EEST
+Europe/Zaporozhye.generic.short=EET
+Europe/Zaporozhye.standard.short=EET
+Europe/Zurich.daylight.short=CEST
+Europe/Zurich.generic.short=CET
+Europe/Zurich.standard.short=CET
+GB.daylight.short=BST
+GB-Eire.daylight.short=BST
+GB-Eire.generic.short=BT
+GB-Eire.standard.short=GMT
+GB.generic.short=BT
+GB.standard.short=GMT
+GMT.daylight.short=GMT
+GMT.generic.short=GMT
+GMT.standard.short=GMT
+Greenwich.daylight.short=GMT
+Greenwich.generic.short=GMT
+Greenwich.standard.short=GMT
+Hongkong.daylight.short=HKST
+Hongkong.generic.short=HKT
+Hongkong.standard.short=HKT
+HST.daylight.short=HDT
+HST.generic.short=HT
+HST.standard.short=HST
+Iceland.daylight.short=GMT
+Iceland.generic.short=GMT
+Iceland.standard.short=GMT
+IET.daylight.short=EDT
+IET.generic.short=ET
+IET.standard.short=EST
+Indian/Antananarivo.daylight.short=EAST
+Indian/Antananarivo.generic.short=EAT
+Indian/Antananarivo.standard.short=EAT
+Indian/Chagos.daylight.short=IOST
+Indian/Chagos.generic.short=IOT
+Indian/Chagos.standard.short=IOT
+Indian/Christmas.daylight.short=CXST
+Indian/Christmas.generic.short=CIT
+Indian/Christmas.standard.short=CXT
+Indian/Cocos.daylight.short=CCST
+Indian/Cocos.generic.short=CCT
+Indian/Cocos.standard.short=CCT
+Indian/Comoro.daylight.short=EAST
+Indian/Comoro.generic.short=EAT
+Indian/Comoro.standard.short=EAT
+Indian/Kerguelen.daylight.short=TFST
+Indian/Kerguelen.generic.short=TFT
+Indian/Kerguelen.standard.short=TFT
+Indian/Mahe.daylight.short=SCST
+Indian/Mahe.generic.short=SCT
+Indian/Mahe.standard.short=SCT
+Indian/Maldives.daylight.short=MVST
+Indian/Maldives.generic.short=MVT
+Indian/Maldives.standard.short=MVT
+Indian/Mauritius.daylight.short=MUST
+Indian/Mauritius.generic.short=MUT
+Indian/Mauritius.standard.short=MUT
+Indian/Mayotte.daylight.short=EAST
+Indian/Mayotte.generic.short=EAT
+Indian/Mayotte.standard.short=EAT
+Indian/Reunion.daylight.short=REST
+Indian/Reunion.generic.short=RET
+Indian/Reunion.standard.short=RET
+Iran.daylight.short=IRDT
+Iran.generic.short=IRT
+Iran.standard.short=IRST
+Israel.daylight.short=IDT
+Israel.generic.short=IT
+Israel.standard.short=IST
+IST.daylight.short=IDT
+IST.generic.short=IT
+IST.standard.short=IST
+Jamaica.daylight.short=EDT
+Jamaica.generic.short=ET
+Jamaica.standard.short=EST
+Japan.daylight.short=JDT
+Japan.generic.short=JT
+Japan.standard.short=JST
+JST.daylight.short=JDT
+JST.generic.short=JT
+JST.standard.short=JST
+Kwajalein.daylight.short=MHST
+Kwajalein.generic.short=MHT
+Kwajalein.standard.short=MHT
+Libya.daylight.short=EEST
+Libya.generic.short=EET
+Libya.standard.short=EET
+MET.daylight.short=MEST
+MET.generic.short=MET
+MET.standard.short=MET
+Mexico/BajaNorte.daylight.short=PDT
+Mexico/BajaNorte.generic.short=PT
+Mexico/BajaNorte.standard.short=PST
+Mexico/BajaSur.daylight.short=MDT
+Mexico/BajaSur.generic.short=MT
+Mexico/BajaSur.standard.short=MST
+Mexico/General.daylight.short=CDT
+Mexico/General.generic.short=CT
+Mexico/General.standard.short=CST
+MIT.daylight.short=WSDT
+MIT.generic.short=WST
+MIT.standard.short=WST
+MST7MDT.daylight.short=MDT
+MST7MDT.generic.short=MT
+MST7MDT.standard.short=MST
+MST.daylight.short=MDT
+MST.generic.short=MT
+MST.standard.short=MST
+Navajo.daylight.short=MDT
+Navajo.generic.short=MT
+Navajo.standard.short=MST
+NET.daylight.short=AMST
+NET.generic.short=AMT
+NET.standard.short=AMT
+NST.daylight.short=NZDT
+NST.generic.short=NZT
+NST.standard.short=NZST
+NZ-CHAT.daylight.short=CHADT
+NZ-CHAT.generic.short=CHAT
+NZ-CHAT.standard.short=CHAST
+NZ.daylight.short=NZDT
+NZ.generic.short=NZT
+NZ.standard.short=NZST
+Pacific/Apia.daylight.short=WSDT
+Pacific/Apia.generic.short=WST
+Pacific/Apia.standard.short=WST
+Pacific/Auckland.daylight.short=NZDT
+Pacific/Auckland.generic.short=NZT
+Pacific/Auckland.standard.short=NZST
+Pacific/Chatham.daylight.short=CHADT
+Pacific/Chatham.generic.short=CHAT
+Pacific/Chatham.standard.short=CHAST
+Pacific/Chuuk.daylight.short=CHUST
+Pacific/Chuuk.generic.short=CHUT
+Pacific/Chuuk.standard.short=CHUT
+Pacific/Easter.daylight.short=EASST
+Pacific/Easter.generic.short=EAST
+Pacific/Easter.standard.short=EAST
+Pacific/Efate.daylight.short=VUST
+Pacific/Efate.generic.short=VUT
+Pacific/Efate.standard.short=VUT
+Pacific/Enderbury.daylight.short=PHOST
+Pacific/Enderbury.generic.short=PHOT
+Pacific/Enderbury.standard.short=PHOT
+Pacific/Fakaofo.daylight.short=TKST
+Pacific/Fakaofo.generic.short=TKT
+Pacific/Fakaofo.standard.short=TKT
+Pacific/Fiji.daylight.short=FJST
+Pacific/Fiji.generic.short=FJT
+Pacific/Fiji.standard.short=FJT
+Pacific/Funafuti.daylight.short=TVST
+Pacific/Funafuti.generic.short=TVT
+Pacific/Funafuti.standard.short=TVT
+Pacific/Galapagos.daylight.short=GALST
+Pacific/Galapagos.generic.short=GALT
+Pacific/Galapagos.standard.short=GALT
+Pacific/Gambier.daylight.short=GAMST
+Pacific/Gambier.generic.short=GAMT
+Pacific/Gambier.standard.short=GAMT
+Pacific/Guadalcanal.daylight.short=SBST
+Pacific/Guadalcanal.generic.short=SBT
+Pacific/Guadalcanal.standard.short=SBT
+Pacific/Guam.daylight.short=ChDT
+Pacific/Guam.generic.short=ChT
+Pacific/Guam.standard.short=ChST
+Pacific/Honolulu.daylight.short=HDT
+Pacific/Honolulu.generic.short=HT
+Pacific/Honolulu.standard.short=HST
+Pacific/Johnston.daylight.short=HDT
+Pacific/Johnston.generic.short=HT
+Pacific/Johnston.standard.short=HST
+Pacific/Kiritimati.daylight.short=LINST
+Pacific/Kiritimati.generic.short=LINT
+Pacific/Kiritimati.standard.short=LINT
+Pacific/Kosrae.daylight.short=KOSST
+Pacific/Kosrae.generic.short=KOST
+Pacific/Kosrae.standard.short=KOST
+Pacific/Kwajalein.daylight.short=MHST
+Pacific/Kwajalein.generic.short=MHT
+Pacific/Kwajalein.standard.short=MHT
+Pacific/Majuro.daylight.short=MHST
+Pacific/Majuro.generic.short=MHT
+Pacific/Majuro.standard.short=MHT
+Pacific/Marquesas.daylight.short=MARST
+Pacific/Marquesas.generic.short=MART
+Pacific/Marquesas.standard.short=MART
+Pacific/Midway.daylight.short=SDT
+Pacific/Midway.generic.short=ST
+Pacific/Midway.standard.short=SST
+Pacific/Nauru.daylight.short=NRST
+Pacific/Nauru.generic.short=NRT
+Pacific/Nauru.standard.short=NRT
+Pacific/Niue.daylight.short=NUST
+Pacific/Niue.generic.short=NUT
+Pacific/Niue.standard.short=NUT
+Pacific/Norfolk.daylight.short=NFST
+Pacific/Norfolk.generic.short=NFT
+Pacific/Norfolk.standard.short=NFT
+Pacific/Noumea.daylight.short=NCST
+Pacific/Noumea.generic.short=NCT
+Pacific/Noumea.standard.short=NCT
+Pacific/Pago_Pago.daylight.short=SDT
+Pacific/Pago_Pago.generic.short=ST
+Pacific/Pago_Pago.standard.short=SST
+Pacific/Palau.daylight.short=PWST
+Pacific/Palau.generic.short=PWT
+Pacific/Palau.standard.short=PWT
+Pacific/Pitcairn.daylight.short=PDT
+Pacific/Pitcairn.generic.short=PT
+Pacific/Pitcairn.standard.short=PST
+Pacific/Pohnpei.daylight.short=PONST
+Pacific/Pohnpei.generic.short=PONT
+Pacific/Pohnpei.standard.short=PONT
+Pacific/Ponape.daylight.short=PONST
+Pacific/Ponape.generic.short=PONT
+Pacific/Ponape.standard.short=PONT
+Pacific/Port_Moresby.daylight.short=PGST
+Pacific/Port_Moresby.generic.short=PGT
+Pacific/Port_Moresby.standard.short=PGT
+Pacific/Rarotonga.daylight.short=CKHST
+Pacific/Rarotonga.generic.short=CKT
+Pacific/Rarotonga.standard.short=CKT
+Pacific/Saipan.daylight.short=ChDT
+Pacific/Saipan.generic.short=ChT
+Pacific/Saipan.standard.short=ChST
+Pacific/Samoa.daylight.short=SDT
+Pacific/Samoa.generic.short=ST
+Pacific/Samoa.standard.short=SST
+Pacific/Tahiti.daylight.short=TAHST
+Pacific/Tahiti.generic.short=TAHT
+Pacific/Tahiti.standard.short=TAHT
+Pacific/Tarawa.daylight.short=GILST
+Pacific/Tarawa.generic.short=GILT
+Pacific/Tarawa.standard.short=GILT
+Pacific/Tongatapu.daylight.short=TOST
+Pacific/Tongatapu.generic.short=TOT
+Pacific/Tongatapu.standard.short=TOT
+Pacific/Truk.daylight.short=CHUST
+Pacific/Truk.generic.short=CHUT
+Pacific/Truk.standard.short=CHUT
+Pacific/Wake.daylight.short=WAKST
+Pacific/Wake.generic.short=WAKT
+Pacific/Wake.standard.short=WAKT
+Pacific/Wallis.daylight.short=WFST
+Pacific/Wallis.generic.short=WFT
+Pacific/Wallis.standard.short=WFT
+Pacific/Yap.daylight.short=CHUST
+Pacific/Yap.generic.short=CHUT
+Pacific/Yap.standard.short=CHUT
+PLT.daylight.short=PKST
+PLT.generic.short=PKT
+PLT.standard.short=PKT
+PNT.daylight.short=MDT
+PNT.generic.short=MT
+PNT.standard.short=MST
+Poland.daylight.short=CEST
+Poland.generic.short=CET
+Poland.standard.short=CET
+Portugal.daylight.short=WEST
+Portugal.generic.short=WET
+Portugal.standard.short=WET
+PRC.daylight.short=CDT
+PRC.generic.short=CT
+PRC.standard.short=CST
+PRT.daylight.short=ADT
+PRT.generic.short=AT
+PRT.standard.short=AST
+PST8PDT.daylight.short=PDT
+PST8PDT.generic.short=PT
+PST8PDT.standard.short=PST
+PST.daylight.short=PDT
+PST.generic.short=PT
+PST.standard.short=PST
+ROK.daylight.short=KDT
+ROK.generic.short=KT
+ROK.standard.short=KST
+Singapore.daylight.short=SGST
+Singapore.generic.short=SGT
+Singapore.standard.short=SGT
+SST.daylight.short=SBST
+SST.generic.short=SBT
+SST.standard.short=SBT
+SystemV/AST4ADT.daylight.short=ADT
+SystemV/AST4ADT.generic.short=AT
+SystemV/AST4ADT.standard.short=AST
+SystemV/AST4.daylight.short=ADT
+SystemV/AST4.generic.short=AT
+SystemV/AST4.standard.short=AST
+SystemV/CST6CDT.daylight.short=CDT
+SystemV/CST6CDT.generic.short=CT
+SystemV/CST6CDT.standard.short=CST
+SystemV/CST6.daylight.short=CDT
+SystemV/CST6.generic.short=CT
+SystemV/CST6.standard.short=CST
+SystemV/EST5.daylight.short=EDT
+SystemV/EST5EDT.daylight.short=EDT
+SystemV/EST5EDT.generic.short=ET
+SystemV/EST5EDT.standard.short=EST
+SystemV/EST5.generic.short=ET
+SystemV/EST5.standard.short=EST
+SystemV/HST10.daylight.short=HDT
+SystemV/HST10.generic.short=HT
+SystemV/HST10.standard.short=HST
+SystemV/MST7.daylight.short=MDT
+SystemV/MST7.generic.short=MT
+SystemV/MST7MDT.daylight.short=MDT
+SystemV/MST7MDT.generic.short=MT
+SystemV/MST7MDT.standard.short=MST
+SystemV/MST7.standard.short=MST
+SystemV/PST8.daylight.short=PDT
+SystemV/PST8.generic.short=PT
+SystemV/PST8PDT.daylight.short=PDT
+SystemV/PST8PDT.generic.short=PT
+SystemV/PST8PDT.standard.short=PST
+SystemV/PST8.standard.short=PST
+SystemV/YST9.daylight.short=AKDT
+SystemV/YST9.generic.short=AKT
+SystemV/YST9.standard.short=AKST
+SystemV/YST9YDT.daylight.short=AKDT
+SystemV/YST9YDT.generic.short=AKT
+SystemV/YST9YDT.standard.short=AKST
+Turkey.daylight.short=EEST
+Turkey.generic.short=EET
+Turkey.standard.short=EET
+UCT.daylight.short=UTC
+UCT.generic.short=UTC
+UCT.standard.short=UTC
+Universal.daylight.short=UTC
+Universal.generic.short=UTC
+Universal.standard.short=UTC
+US/Alaska.daylight.short=AKDT
+US/Alaska.generic.short=AKT
+US/Alaska.standard.short=AKST
+US/Aleutian.daylight.short=HADT
+US/Aleutian.generic.short=HAT
+US/Aleutian.standard.short=HAST
+US/Arizona.daylight.short=MDT
+US/Arizona.generic.short=MT
+US/Arizona.standard.short=MST
+US/Central.daylight.short=CDT
+US/Central.generic.short=CT
+US/Central.standard.short=CST
+US/Eastern.daylight.short=EDT
+US/Eastern.generic.short=ET
+US/Eastern.standard.short=EST
+US/East-Indiana.daylight.short=EDT
+US/East-Indiana.generic.short=ET
+US/East-Indiana.standard.short=EST
+US/Hawaii.daylight.short=HDT
+US/Hawaii.generic.short=HT
+US/Hawaii.standard.short=HST
+US/Indiana-Starke.daylight.short=CDT
+US/Indiana-Starke.generic.short=CT
+US/Indiana-Starke.standard.short=CST
+US/Michigan.daylight.short=EDT
+US/Michigan.generic.short=ET
+US/Michigan.standard.short=EST
+US/Mountain.daylight.short=MDT
+US/Mountain.generic.short=MT
+US/Mountain.standard.short=MST
+US/Pacific.daylight.short=PDT
+US/Pacific.generic.short=PT
+US/Pacific-New.daylight.short=PDT
+US/Pacific-New.generic.short=PT
+US/Pacific-New.standard.short=PST
+US/Pacific.standard.short=PST
+US/Samoa.daylight.short=SDT
+US/Samoa.generic.short=ST
+US/Samoa.standard.short=SST
+UTC.daylight.short=UTC
+UTC.generic.short=UTC
+UTC.standard.short=UTC
+VST.daylight.short=ICST
+VST.generic.short=ICT
+VST.standard.short=ICT
+WET.daylight.short=WEST
+WET.generic.short=WET
+WET.standard.short=WET
+W-SU.daylight.short=MSD
+W-SU.generic.short=MT
+W-SU.standard.short=MSK
+Zulu.daylight.short=UTC
+Zulu.generic.short=UTC
+Zulu.standard.short=UTC
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_it.properties Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,651 @@
+ACT.daylight.long=Ora estiva centrale (Territori del Nord)
+ACT.generic.long=Ora fuso centrale (Territori del Nord)
+ACT.standard.long=Ora standard centrale (Territori del Nord)
+AET.daylight.long=Ora estiva dell'Australia orientale (Nuovo Galles del Sud)
+AET.generic.long=Ora fuso orientale (Nuovo Galles del Sud)
+AET.standard.long=Ora standard dell'Australia orientale (Nuovo Galles del Sud)
+AGT.generic.long=Ora dell'Argentina
+ART.generic.long=Ora dell'Europa orientale
+AST.generic.long=Ora Alaska
+Africa/Abidjan.generic.long=Ora media di Greenwich
+Africa/Accra.generic.long=Ora media del Ghana
+Africa/Addis_Ababa.generic.long=Ora dell'Africa orientale
+Africa/Algiers.generic.long=Ora dell'Europa centrale
+Africa/Asmara.generic.long=Ora dell'Africa orientale
+Africa/Asmera.generic.long=Ora dell'Africa orientale
+Africa/Bamako.generic.long=Ora media di Greenwich
+Africa/Bangui.generic.long=Ora dell'Africa occidentale
+Africa/Banjul.generic.long=Ora media di Greenwich
+Africa/Bissau.generic.long=Ora media di Greenwich
+Africa/Blantyre.generic.long=Ora dell'Africa centrale
+Africa/Brazzaville.generic.long=Ora dell'Africa occidentale
+Africa/Bujumbura.generic.long=Ora dell'Africa centrale
+Africa/Cairo.generic.long=Ora dell'Europa orientale
+Africa/Casablanca.generic.long=Ora dell'Europa occidentale
+Africa/Ceuta.generic.long=Ora dell'Europa centrale
+Africa/Conakry.generic.long=Ora media di Greenwich
+Africa/Dakar.generic.long=Ora media di Greenwich
+Africa/Dar_es_Salaam.generic.long=Ora dell'Africa orientale
+Africa/Djibouti.generic.long=Ora dell'Africa orientale
+Africa/Douala.generic.long=Ora dell'Africa occidentale
+Africa/El_Aaiun.generic.long=Ora dell'Europa occidentale
+Africa/Freetown.generic.long=Ora della Sierra Leone
+Africa/Gaborone.generic.long=Ora dell'Africa centrale
+Africa/Harare.generic.long=Ora dell'Africa centrale
+Africa/Johannesburg.generic.long=Ora Sudafrica
+Africa/Juba.generic.long=Ora dell'Africa orientale
+Africa/Kampala.generic.long=Ora dell'Africa orientale
+Africa/Khartoum.generic.long=Ora dell'Africa orientale
+Africa/Kigali.generic.long=Ora dell'Africa centrale
+Africa/Kinshasa.generic.long=Ora dell'Africa occidentale
+Africa/Lagos.generic.long=Ora dell'Africa occidentale
+Africa/Libreville.generic.long=Ora dell'Africa occidentale
+Africa/Lome.generic.long=Ora media di Greenwich
+Africa/Luanda.generic.long=Ora dell'Africa occidentale
+Africa/Lubumbashi.generic.long=Ora dell'Africa centrale
+Africa/Lusaka.generic.long=Ora dell'Africa centrale
+Africa/Malabo.generic.long=Ora dell'Africa occidentale
+Africa/Maputo.generic.long=Ora dell'Africa centrale
+Africa/Maseru.generic.long=Ora Sudafrica
+Africa/Mbabane.generic.long=Ora Sudafrica
+Africa/Mogadishu.generic.long=Ora dell'Africa orientale
+Africa/Monrovia.generic.long=Ora media di Greenwich
+Africa/Nairobi.generic.long=Ora dell'Africa orientale
+Africa/Ndjamena.generic.long=Ora dell'Africa occidentale
+Africa/Niamey.generic.long=Ora dell'Africa occidentale
+Africa/Nouakchott.generic.long=Ora media di Greenwich
+Africa/Ouagadougou.generic.long=Ora media di Greenwich
+Africa/Porto-Novo.generic.long=Ora dell'Africa occidentale
+Africa/Sao_Tome.generic.long=Ora media di Greenwich
+Africa/Timbuktu.generic.long=Ora media di Greenwich
+Africa/Tripoli.generic.long=Ora dell'Europa orientale
+Africa/Tunis.generic.long=Ora dell'Europa centrale
+Africa/Windhoek.generic.long=Ora dell'Africa occidentale
+America/Adak.generic.long=Ora Hawaii-Aleutine
+America/Anchorage.generic.long=Ora Alaska
+America/Anguilla.generic.long=Fuso dell'Atlantico
+America/Antigua.generic.long=Fuso dell'Atlantico
+America/Araguaina.generic.long=Ora di Brasilia
+America/Argentina/Buenos_Aires.generic.long=Ora dell'Argentina
+America/Argentina/Catamarca.generic.long=Ora dell'Argentina
+America/Argentina/ComodRivadavia.generic.long=Ora dell'Argentina
+America/Argentina/Cordoba.generic.long=Ora dell'Argentina
+America/Argentina/Jujuy.generic.long=Ora dell'Argentina
+America/Argentina/La_Rioja.generic.long=Ora dell'Argentina
+America/Argentina/Mendoza.generic.long=Ora dell'Argentina
+America/Argentina/Rio_Gallegos.generic.long=Ora dell'Argentina
+America/Argentina/Salta.generic.long=Ora dell'Argentina
+America/Argentina/San_Juan.generic.long=Ora dell'Argentina
+America/Argentina/San_Luis.generic.long=Ora dell'Argentina
+America/Argentina/Tucuman.generic.long=Ora dell'Argentina
+America/Argentina/Ushuaia.generic.long=Ora dell'Argentina
+America/Aruba.generic.long=Fuso dell'Atlantico
+America/Asuncion.generic.long=Ora del Paraguay
+America/Atikokan.generic.long=Fuso orientale
+America/Atka.generic.long=Ora Hawaii-Aleutine
+America/Bahia.generic.long=Ora di Brasilia
+America/Bahia_Banderas.generic.long=Ora fuso centrale
+America/Barbados.generic.long=Fuso dell'Atlantico
+America/Belem.generic.long=Ora di Brasilia
+America/Belize.generic.long=Ora fuso centrale
+America/Blanc-Sablon.generic.long=Fuso dell'Atlantico
+America/Boa_Vista.generic.long=Ora dell'Amazzonia
+America/Bogota.generic.long=Ora della Colombia
+America/Boise.generic.long=Ora fuso occidentale
+America/Buenos_Aires.generic.long=Ora dell'Argentina
+America/Cambridge_Bay.generic.long=Ora fuso occidentale
+America/Campo_Grande.generic.long=Ora dell'Amazzonia
+America/Cancun.generic.long=Ora fuso centrale
+America/Caracas.generic.long=Ora del Venezuela
+America/Catamarca.generic.long=Ora dell'Argentina
+America/Cayenne.generic.long=Ora della Guyana Francese
+America/Cayman.generic.long=Fuso orientale
+America/Chicago.generic.long=Ora fuso centrale
+America/Chihuahua.generic.long=Ora fuso occidentale
+America/Coral_Harbour.generic.long=Fuso orientale
+America/Cordoba.generic.long=Ora dell'Argentina
+America/Costa_Rica.generic.long=Ora fuso centrale
+America/Creston.generic.long=Ora fuso occidentale
+America/Cuiaba.generic.long=Ora dell'Amazzonia
+America/Curacao.generic.long=Fuso dell'Atlantico
+America/Danmarkshavn.generic.long=Ora media di Greenwich
+America/Dawson.generic.long=Fuso del Pacifico
+America/Dawson_Creek.generic.long=Ora fuso occidentale
+America/Denver.generic.long=Ora fuso occidentale
+America/Detroit.generic.long=Fuso orientale
+America/Dominica.generic.long=Fuso dell'Atlantico
+America/Edmonton.generic.long=Ora fuso occidentale
+America/Eirunepe.generic.long=Ora di Acre
+America/El_Salvador.generic.long=Ora fuso centrale
+America/Ensenada.generic.long=Fuso del Pacifico
+America/Fort_Wayne.generic.long=Fuso orientale
+America/Fortaleza.generic.long=Ora di Brasilia
+America/Glace_Bay.generic.long=Fuso dell'Atlantico
+America/Godthab.generic.long=Ora della Groenlandia occidentale
+America/Goose_Bay.generic.long=Fuso dell'Atlantico
+America/Grand_Turk.generic.long=Fuso orientale
+America/Grenada.generic.long=Fuso dell'Atlantico
+America/Guadeloupe.generic.long=Fuso dell'Atlantico
+America/Guatemala.generic.long=Ora fuso centrale
+America/Guayaquil.generic.long=Ora dell'Ecuador
+America/Guyana.generic.long=Ora della Guyana
+America/Halifax.generic.long=Fuso dell'Atlantico
+America/Havana.generic.long=Ora di Cuba
+America/Hermosillo.generic.long=Ora fuso occidentale
+America/Indiana/Indianapolis.generic.long=Fuso orientale
+America/Indiana/Knox.generic.long=Ora fuso centrale
+America/Indiana/Marengo.generic.long=Fuso orientale
+America/Indiana/Petersburg.generic.long=Fuso orientale
+America/Indiana/Tell_City.generic.long=Ora fuso centrale
+America/Indiana/Vevay.generic.long=Fuso orientale
+America/Indiana/Vincennes.generic.long=Fuso orientale
+America/Indiana/Winamac.generic.long=Fuso orientale
+America/Indianapolis.generic.long=Fuso orientale
+America/Inuvik.generic.long=Ora fuso occidentale
+America/Iqaluit.generic.long=Fuso orientale
+America/Jamaica.generic.long=Fuso orientale
+America/Jujuy.generic.long=Ora dell'Argentina
+America/Juneau.generic.long=Ora Alaska
+America/Kentucky/Louisville.generic.long=Fuso orientale
+America/Kentucky/Monticello.generic.long=Fuso orientale
+America/Knox_IN.generic.long=Ora fuso centrale
+America/Kralendijk.generic.long=Fuso dell'Atlantico
+America/La_Paz.generic.long=Ora della Bolivia
+America/Lima.generic.long=Ora del Per\u00F9
+America/Los_Angeles.generic.long=Fuso del Pacifico
+America/Louisville.generic.long=Fuso orientale
+America/Lower_Princes.generic.long=Fuso dell'Atlantico
+America/Maceio.generic.long=Ora di Brasilia
+America/Managua.generic.long=Ora fuso centrale
+America/Manaus.generic.long=Ora dell'Amazzonia
+America/Marigot.generic.long=Fuso dell'Atlantico
+America/Martinique.generic.long=Fuso dell'Atlantico
+America/Matamoros.generic.long=Ora fuso centrale
+America/Mazatlan.generic.long=Ora fuso occidentale
+America/Mendoza.generic.long=Ora dell'Argentina
+America/Menominee.generic.long=Ora fuso centrale
+America/Merida.generic.long=Ora fuso centrale
+America/Metlakatla.daylight.long=Ora legale di Metlakatla
+America/Metlakatla.generic.long=Ora di Metlakatla
+America/Metlakatla.standard.long=Ora standard di Metlakatla
+America/Mexico_City.generic.long=Ora fuso centrale
+America/Miquelon.generic.long=Ora Saint-Pierre e Miquelon
+America/Moncton.generic.long=Fuso dell'Atlantico
+America/Monterrey.generic.long=Ora fuso centrale
+America/Montevideo.generic.long=Ora dell'Uruguay
+America/Montreal.generic.long=Fuso orientale
+America/Montserrat.generic.long=Fuso dell'Atlantico
+America/Nassau.generic.long=Fuso orientale
+America/New_York.generic.long=Fuso orientale
+America/Nipigon.generic.long=Fuso orientale
+America/Nome.generic.long=Ora Alaska
+America/Noronha.generic.long=Ora di Fernando de Noronha
+America/North_Dakota/Beulah.generic.long=Ora fuso centrale
+America/North_Dakota/Center.generic.long=Ora fuso centrale
+America/North_Dakota/New_Salem.generic.long=Ora fuso centrale
+America/Ojinaga.generic.long=Ora fuso occidentale
+America/Panama.generic.long=Fuso orientale
+America/Pangnirtung.generic.long=Fuso orientale
+America/Paramaribo.generic.long=Ora di Suriname
+America/Phoenix.generic.long=Ora fuso occidentale
+America/Port-au-Prince.generic.long=Fuso orientale
+America/Port_of_Spain.generic.long=Fuso dell'Atlantico
+America/Porto_Acre.generic.long=Ora di Acre
+America/Porto_Velho.generic.long=Ora dell'Amazzonia
+America/Puerto_Rico.generic.long=Fuso dell'Atlantico
+America/Rainy_River.generic.long=Ora fuso centrale
+America/Rankin_Inlet.generic.long=Ora fuso centrale
+America/Recife.generic.long=Ora di Brasilia
+America/Regina.generic.long=Ora fuso centrale
+America/Resolute.generic.long=Ora fuso centrale
+America/Rio_Branco.generic.long=Ora di Acre
+America/Rosario.generic.long=Ora dell'Argentina
+America/Santa_Isabel.generic.long=Fuso del Pacifico
+America/Santarem.generic.long=Ora di Brasilia
+America/Santiago.generic.long=Ora del Cile
+America/Santo_Domingo.generic.long=Fuso dell'Atlantico
+America/Sao_Paulo.generic.long=Ora di Brasilia
+America/Scoresbysund.generic.long=Ora della Groenlandia orientale
+America/Shiprock.generic.long=Ora fuso occidentale
+America/Sitka.generic.long=Ora Alaska
+America/St_Barthelemy.generic.long=Fuso dell'Atlantico
+America/St_Johns.generic.long=Ora Terranova
+America/St_Kitts.generic.long=Fuso dell'Atlantico
+America/St_Lucia.generic.long=Fuso dell'Atlantico
+America/St_Thomas.generic.long=Fuso dell'Atlantico
+America/St_Vincent.generic.long=Fuso dell'Atlantico
+America/Swift_Current.generic.long=Ora fuso centrale
+America/Tegucigalpa.generic.long=Ora fuso centrale
+America/Thule.generic.long=Fuso dell'Atlantico
+America/Thunder_Bay.generic.long=Fuso orientale
+America/Tijuana.generic.long=Fuso del Pacifico
+America/Toronto.generic.long=Fuso orientale
+America/Tortola.generic.long=Fuso dell'Atlantico
+America/Vancouver.generic.long=Fuso del Pacifico
+America/Virgin.generic.long=Fuso dell'Atlantico
+America/Whitehorse.generic.long=Fuso del Pacifico
+America/Winnipeg.generic.long=Ora fuso centrale
+America/Yakutat.generic.long=Ora Alaska
+America/Yellowknife.generic.long=Ora fuso occidentale
+Antarctica/Casey.daylight.long=Ora estiva dell'Australia occidentale
+Antarctica/Casey.generic.long=Ora Australia occidentale
+Antarctica/Casey.standard.long=Ora standard dell'Australia occidentale
+Antarctica/Davis.generic.long=Ora di Davis
+Antarctica/DumontDUrville.generic.long=Ora di Dumont-d'Urville
+Antarctica/Macquarie.daylight.long=Ora estiva dell'Isola Macquarie
+Antarctica/Macquarie.generic.long=Ora dell'Isola Macquarie
+Antarctica/Macquarie.standard.long=Ora dell'Isola Macquarie
+Antarctica/Mawson.generic.long=Ora di Mawson
+Antarctica/McMurdo.generic.long=Ora Nuova Zelanda
+Antarctica/Palmer.generic.long=Ora del Cile
+Antarctica/Rothera.generic.long=Ora di Rothera
+Antarctica/South_Pole.generic.long=Ora Nuova Zelanda
+Antarctica/Syowa.generic.long=Ora di Syowa
+Antarctica/Vostok.generic.long=Ora di Vostok
+Arctic/Longyearbyen.generic.long=Ora dell'Europa centrale
+Asia/Aden.generic.long=Ora Arabia Saudita
+Asia/Almaty.generic.long=Ora di Alma-Ata
+Asia/Amman.generic.long=Ora Arabia Saudita
+Asia/Anadyr.generic.long=Ora di Anadyr
+Asia/Aqtau.generic.long=Ora di Aqtau
+Asia/Aqtobe.generic.long=Ora di Aqtobe
+Asia/Ashgabat.generic.long=Ora del Turkmenistan
+Asia/Ashkhabad.generic.long=Ora del Turkmenistan
+Asia/Baghdad.generic.long=Ora Arabia Saudita
+Asia/Bahrain.generic.long=Ora Arabia Saudita
+Asia/Baku.generic.long=Ora dell'Azerbaigian
+Asia/Bangkok.generic.long=Ora dell'Indocina
+Asia/Beirut.generic.long=Ora dell'Europa orientale
+Asia/Bishkek.generic.long=Ora del Kirghizistan
+Asia/Brunei.generic.long=Ora del Brunei
+Asia/Calcutta.generic.long=Ora India
+Asia/Choibalsan.generic.long=Ora di Choibalsan
+Asia/Chongqing.generic.long=Ora Cina
+Asia/Chungking.generic.long=Ora Cina
+Asia/Colombo.generic.long=Ora India
+Asia/Dacca.generic.long=Ora del Bangladesh
+Asia/Damascus.generic.long=Ora dell'Europa orientale
+Asia/Dhaka.generic.long=Ora del Bangladesh
+Asia/Dili.generic.long=Ora di Timor Est
+Asia/Dubai.generic.long=Ora del golfo
+Asia/Dushanbe.generic.long=Ora del Tagikistan
+Asia/Gaza.generic.long=Ora dell'Europa orientale
+Asia/Harbin.generic.long=Ora Cina
+Asia/Hebron.generic.long=Ora dell'Europa orientale
+Asia/Ho_Chi_Minh.generic.long=Ora dell'Indocina
+Asia/Hong_Kong.generic.long=Ora di Hong Kong
+Asia/Hovd.generic.long=Ora di Hovd
+Asia/Irkutsk.generic.long=Ora di Irkutsk
+Asia/Istanbul.generic.long=Ora dell'Europa orientale
+Asia/Jakarta.generic.long=Ora dell'Indonesia occidentale
+Asia/Jayapura.generic.long=Ora dell'Indonesia orientale
+Asia/Jerusalem.generic.long=Ora Israele
+Asia/Kabul.generic.long=Ora dell'Afghanistan
+Asia/Kamchatka.generic.long=Ora di Petropavlovsk-Kamchatski
+Asia/Karachi.generic.long=Ora del Pakistan
+Asia/Kashgar.generic.long=Ora Cina
+Asia/Kathmandu.generic.long=Ora del Nepal
+Asia/Katmandu.generic.long=Ora del Nepal
+Asia/Khandyga.daylight.long=Ora estiva di Khandyga
+Asia/Khandyga.generic.long=Ora di Khandyga
+Asia/Khandyga.standard.long=Ora di Khandyga
+Asia/Kolkata.generic.long=Ora India
+Asia/Krasnoyarsk.generic.long=Ora di Krasnojarsk
+Asia/Kuala_Lumpur.generic.long=Ora della Malaysia
+Asia/Kuching.generic.long=Ora della Malaysia
+Asia/Kuwait.generic.long=Ora Arabia Saudita
+Asia/Macao.generic.long=Ora Cina
+Asia/Macau.generic.long=Ora Cina
+Asia/Magadan.generic.long=Ora di Magadan
+Asia/Makassar.generic.long=Ora dell'Indonesia centrale
+Asia/Manila.generic.long=Ora delle Filippine
+Asia/Muscat.generic.long=Ora del golfo
+Asia/Nicosia.generic.long=Ora dell'Europa orientale
+Asia/Novokuznetsk.generic.long=Ora di Novosibirsk
+Asia/Novosibirsk.generic.long=Ora di Novosibirsk
+Asia/Omsk.generic.long=Ora di Omsk
+Asia/Oral.generic.long=Ora di Oral
+Asia/Phnom_Penh.generic.long=Ora dell'Indocina
+Asia/Pontianak.generic.long=Ora dell'Indonesia occidentale
+Asia/Pyongyang.generic.long=Ora Corea
+Asia/Qatar.generic.long=Ora Arabia Saudita
+Asia/Qyzylorda.generic.long=Ora di Qyzylorda
+Asia/Rangoon.generic.long=Ora della Birmania/Myanmar
+Asia/Saigon.generic.long=Ora dell'Indocina
+Asia/Sakhalin.generic.long=Ora di Sakhalin
+Asia/Samarkand.generic.long=Ora dell'Uzbekistan
+Asia/Seoul.generic.long=Ora Corea
+Asia/Shanghai.generic.long=Ora Cina
+Asia/Singapore.generic.long=Ora di Singapore
+Asia/Taipei.generic.long=Ora Cina
+Asia/Tashkent.generic.long=Ora dell'Uzbekistan
+Asia/Tbilisi.generic.long=Ora della Georgia
+Asia/Tehran.generic.long=Ora Iran
+Asia/Tel_Aviv.generic.long=Ora Israele
+Asia/Thimbu.generic.long=Ora del Bhutan
+Asia/Thimphu.generic.long=Ora del Bhutan
+Asia/Tokyo.generic.long=Ora Giappone
+Asia/Ujung_Pandang.generic.long=Ora dell'Indonesia centrale
+Asia/Ulaanbaatar.generic.long=Ora di Ulaanbaatar
+Asia/Ulan_Bator.generic.long=Ora di Ulaanbaatar
+Asia/Urumqi.generic.long=Ora Cina
+Asia/Ust-Nera.daylight.long=Ora estiva di Ust-Nera
+Asia/Ust-Nera.generic.long=Ora di Ust-Nera
+Asia/Ust-Nera.standard.long=Ora di Ust-Nera
+Asia/Vientiane.generic.long=Ora dell'Indocina
+Asia/Vladivostok.generic.long=Ora di Vladivostok
+Asia/Yakutsk.generic.long=Ora di Yakutsk
+Asia/Yekaterinburg.generic.long=Ora di Ekaterinburg
+Asia/Yerevan.generic.long=Ora dell'Armenia
+Atlantic/Azores.generic.long=Ora delle Azzorre
+Atlantic/Bermuda.generic.long=Fuso dell'Atlantico
+Atlantic/Canary.generic.long=Ora dell'Europa occidentale
+Atlantic/Cape_Verde.generic.long=Ora di Capo Verde
+Atlantic/Faeroe.generic.long=Ora dell'Europa occidentale
+Atlantic/Faroe.generic.long=Ora dell'Europa occidentale
+Atlantic/Jan_Mayen.generic.long=Ora dell'Europa centrale
+Atlantic/Madeira.generic.long=Ora dell'Europa occidentale
+Atlantic/Reykjavik.generic.long=Ora media di Greenwich
+Atlantic/South_Georgia.generic.long=Ora Georgia del Sud
+Atlantic/St_Helena.generic.long=Ora media di Greenwich
+Atlantic/Stanley.generic.long=Ora delle Falkland
+Australia/ACT.daylight.long=Ora estiva dell'Australia orientale (Nuovo Galles del Sud)
+Australia/ACT.generic.long=Ora fuso orientale (Nuovo Galles del Sud)
+Australia/ACT.standard.long=Ora standard dell'Australia orientale (Nuovo Galles del Sud)
+Australia/Adelaide.daylight.long=Ora estiva centrale (Australia del Sud)
+Australia/Adelaide.generic.long=Ora fuso centrale (Australia del Sud)
+Australia/Adelaide.standard.long=Ora standard centrale (Australia del Sud)
+Australia/Brisbane.daylight.long=Ora estiva orientale (Queensland)
+Australia/Brisbane.generic.long=Ora fuso orientale (Queensland)
+Australia/Brisbane.standard.long=Ora standard orientale (Queensland)
+Australia/Broken_Hill.daylight.long=Ora estiva centrale (Australia del Sud/Nuovo Galles del Sud)
+Australia/Broken_Hill.generic.long=Ora fuso centrale (Australia del Sud/Nuovo Galles del Sud)
+Australia/Broken_Hill.standard.long=Ora standard centrale (Australia del Sud/Nuovo Galles del Sud)
+Australia/Canberra.daylight.long=Ora estiva dell'Australia orientale (Nuovo Galles del Sud)
+Australia/Canberra.generic.long=Ora fuso orientale (Nuovo Galles del Sud)
+Australia/Canberra.standard.long=Ora standard dell'Australia orientale (Nuovo Galles del Sud)
+Australia/Currie.daylight.long=Ora estiva dell'Australia orientale (Nuovo Galles del Sud)
+Australia/Currie.generic.long=Ora fuso orientale (Nuovo Galles del Sud)
+Australia/Currie.standard.long=Ora standard dell'Australia orientale (Nuovo Galles del Sud)
+Australia/Darwin.daylight.long=Ora estiva centrale (Territori del Nord)
+Australia/Darwin.generic.long=Ora fuso centrale (Territori del Nord)
+Australia/Darwin.standard.long=Ora standard centrale (Territori del Nord)
+Australia/Eucla.daylight.long=Ora estiva Australia centro-occidentale
+Australia/Eucla.generic.long=Ora Australia centro-occidentale
+Australia/Eucla.standard.long=Ora standard Australia centro-occidentale
+Australia/Hobart.daylight.long=Ora estiva orientale (Tasmania)
+Australia/Hobart.generic.long=Ora fuso orientale (Tasmania)
+Australia/Hobart.standard.long=Ora standard orientale (Tasmania)
+Australia/LHI.generic.long=Ora di Lord Howe
+Australia/Lindeman.daylight.long=Ora estiva orientale (Queensland)
+Australia/Lindeman.generic.long=Ora fuso orientale (Queensland)
+Australia/Lindeman.standard.long=Ora standard orientale (Queensland)
+Australia/Lord_Howe.generic.long=Ora di Lord Howe
+Australia/Melbourne.daylight.long=Ora estiva orientale (Victoria)
+Australia/Melbourne.generic.long=Ora fuso orientale (Victoria)
+Australia/Melbourne.standard.long=Ora standard orientale (Victoria)
+Australia/NSW.daylight.long=Ora estiva dell'Australia orientale (Nuovo Galles del Sud)
+Australia/NSW.generic.long=Ora fuso orientale (Nuovo Galles del Sud)
+Australia/NSW.standard.long=Ora standard dell'Australia orientale (Nuovo Galles del Sud)
+Australia/North.daylight.long=Ora estiva centrale (Territori del Nord)
+Australia/North.generic.long=Ora fuso centrale (Territori del Nord)
+Australia/North.standard.long=Ora standard centrale (Territori del Nord)
+Australia/Perth.daylight.long=Ora estiva dell'Australia occidentale
+Australia/Perth.generic.long=Ora Australia occidentale
+Australia/Perth.standard.long=Ora standard dell'Australia occidentale
+Australia/Queensland.daylight.long=Ora estiva orientale (Queensland)
+Australia/Queensland.generic.long=Ora fuso orientale (Queensland)
+Australia/Queensland.standard.long=Ora standard orientale (Queensland)
+Australia/South.daylight.long=Ora estiva centrale (Australia del Sud)
+Australia/South.generic.long=Ora fuso centrale (Australia del Sud)
+Australia/South.standard.long=Ora standard centrale (Australia del Sud)
+Australia/Sydney.daylight.long=Ora estiva dell'Australia orientale (Nuovo Galles del Sud)
+Australia/Sydney.generic.long=Ora fuso orientale (Nuovo Galles del Sud)
+Australia/Sydney.standard.long=Ora standard dell'Australia orientale (Nuovo Galles del Sud)
+Australia/Tasmania.daylight.long=Ora estiva orientale (Tasmania)
+Australia/Tasmania.generic.long=Ora fuso orientale (Tasmania)
+Australia/Tasmania.standard.long=Ora standard orientale (Tasmania)
+Australia/Victoria.daylight.long=Ora estiva orientale (Victoria)
+Australia/Victoria.generic.long=Ora fuso orientale (Victoria)
+Australia/Victoria.standard.long=Ora standard orientale (Victoria)
+Australia/West.daylight.long=Ora estiva dell'Australia occidentale
+Australia/West.generic.long=Ora Australia occidentale
+Australia/West.standard.long=Ora standard dell'Australia occidentale
+Australia/Yancowinna.daylight.long=Ora estiva centrale (Australia del Sud/Nuovo Galles del Sud)
+Australia/Yancowinna.generic.long=Ora fuso centrale (Australia del Sud/Nuovo Galles del Sud)
+Australia/Yancowinna.standard.long=Ora standard centrale (Australia del Sud/Nuovo Galles del Sud)
+BET.generic.long=Ora di Brasilia
+BST.generic.long=Ora del Bangladesh
+Brazil/Acre.generic.long=Ora di Acre
+Brazil/DeNoronha.generic.long=Ora di Fernando de Noronha
+Brazil/East.generic.long=Ora di Brasilia
+Brazil/West.generic.long=Ora dell'Amazzonia
+CAT.generic.long=Ora dell'Africa centrale
+CET.generic.long=Ora dell'Europa centrale
+CNT.generic.long=Ora Terranova
+CST.generic.long=Ora fuso centrale
+CST6CDT.generic.long=Ora fuso centrale
+CTT.generic.long=Ora Cina
+Canada/Atlantic.generic.long=Fuso dell'Atlantico
+Canada/Central.generic.long=Ora fuso centrale
+Canada/East-Saskatchewan.generic.long=Ora fuso centrale
+Canada/Eastern.generic.long=Fuso orientale
+Canada/Mountain.generic.long=Ora fuso occidentale
+Canada/Newfoundland.generic.long=Ora Terranova
+Canada/Pacific.generic.long=Fuso del Pacifico
+Canada/Saskatchewan.generic.long=Ora fuso centrale
+Canada/Yukon.generic.long=Fuso del Pacifico
+Chile/Continental.generic.long=Ora del Cile
+Chile/EasterIsland.generic.long=Ora dell'Isola di Pasqua
+Cuba.generic.long=Ora di Cuba
+EAT.generic.long=Ora dell'Africa orientale
+ECT.generic.long=Ora dell'Europa centrale
+EET.generic.long=Ora dell'Europa orientale
+EST.generic.long=Fuso orientale
+EST5EDT.generic.long=Fuso orientale
+Egypt.generic.long=Ora dell'Europa orientale
+Eire.generic.long=Ora irlandese
+Etc/Greenwich.generic.long=Ora media di Greenwich
+Etc/UCT.generic.long=Tempo universale coordinato
+Etc/UTC.generic.long=Tempo universale coordinato
+Etc/Universal.generic.long=Tempo universale coordinato
+Etc/Zulu.generic.long=Tempo universale coordinato
+Europe/Amsterdam.generic.long=Ora dell'Europa centrale
+Europe/Andorra.generic.long=Ora dell'Europa centrale
+Europe/Athens.generic.long=Ora dell'Europa orientale
+Europe/Belfast.generic.long=Ora britannica
+Europe/Belgrade.generic.long=Ora dell'Europa centrale
+Europe/Berlin.generic.long=Ora dell'Europa centrale
+Europe/Bratislava.generic.long=Ora dell'Europa centrale
+Europe/Brussels.generic.long=Ora dell'Europa centrale
+Europe/Bucharest.generic.long=Ora dell'Europa orientale
+Europe/Budapest.generic.long=Ora dell'Europa centrale
+Europe/Busingen.generic.long=Ora dell'Europa centrale
+Europe/Chisinau.generic.long=Ora dell'Europa orientale
+Europe/Copenhagen.generic.long=Ora dell'Europa centrale
+Europe/Dublin.generic.long=Ora irlandese
+Europe/Gibraltar.generic.long=Ora dell'Europa centrale
+Europe/Guernsey.generic.long=Ora britannica
+Europe/Helsinki.generic.long=Ora dell'Europa orientale
+Europe/Isle_of_Man.generic.long=Ora britannica
+Europe/Istanbul.generic.long=Ora dell'Europa orientale
+Europe/Jersey.generic.long=Ora britannica
+Europe/Kaliningrad.daylight.long=Ora estiva dei paesi europei pi\u00F9 orientali
+Europe/Kaliningrad.generic.long=Ora dei paesi europei pi\u00F9 orientali
+Europe/Kaliningrad.standard.long=Ora dei paesi europei pi\u00F9 orientali
+Europe/Kiev.generic.long=Ora dell'Europa orientale
+Europe/Lisbon.generic.long=Ora dell'Europa occidentale
+Europe/Ljubljana.generic.long=Ora dell'Europa centrale
+Europe/London.generic.long=Ora britannica
+Europe/Luxembourg.generic.long=Ora dell'Europa centrale
+Europe/Madrid.generic.long=Ora dell'Europa centrale
+Europe/Malta.generic.long=Ora dell'Europa centrale
+Europe/Mariehamn.generic.long=Ora dell'Europa orientale
+Europe/Minsk.daylight.long=Ora estiva dei paesi europei pi\u00F9 orientali
+Europe/Minsk.generic.long=Ora dei paesi europei pi\u00F9 orientali
+Europe/Minsk.standard.long=Ora dei paesi europei pi\u00F9 orientali
+Europe/Monaco.generic.long=Ora dell'Europa centrale
+Europe/Moscow.generic.long=Ora Mosca
+Europe/Nicosia.generic.long=Ora dell'Europa orientale
+Europe/Oslo.generic.long=Ora dell'Europa centrale
+Europe/Paris.generic.long=Ora dell'Europa centrale
+Europe/Podgorica.generic.long=Ora dell'Europa centrale
+Europe/Prague.generic.long=Ora dell'Europa centrale
+Europe/Riga.generic.long=Ora dell'Europa orientale
+Europe/Rome.generic.long=Ora dell'Europa centrale
+Europe/Samara.generic.long=Ora di Samara
+Europe/San_Marino.generic.long=Ora dell'Europa centrale
+Europe/Sarajevo.generic.long=Ora dell'Europa centrale
+Europe/Simferopol.generic.long=Ora dell'Europa orientale
+Europe/Skopje.generic.long=Ora dell'Europa centrale
+Europe/Sofia.generic.long=Ora dell'Europa orientale
+Europe/Stockholm.generic.long=Ora dell'Europa centrale
+Europe/Tallinn.generic.long=Ora dell'Europa orientale
+Europe/Tirane.generic.long=Ora dell'Europa centrale
+Europe/Tiraspol.generic.long=Ora dell'Europa orientale
+Europe/Uzhgorod.generic.long=Ora dell'Europa orientale
+Europe/Vaduz.generic.long=Ora dell'Europa centrale
+Europe/Vatican.generic.long=Ora dell'Europa centrale
+Europe/Vienna.generic.long=Ora dell'Europa centrale
+Europe/Vilnius.generic.long=Ora dell'Europa orientale
+Europe/Volgograd.generic.long=Ora di Volgograd
+Europe/Warsaw.generic.long=Ora dell'Europa centrale
+Europe/Zagreb.generic.long=Ora dell'Europa centrale
+Europe/Zaporozhye.generic.long=Ora dell'Europa orientale
+Europe/Zurich.generic.long=Ora dell'Europa centrale
+GB-Eire.generic.long=Ora britannica
+GB.generic.long=Ora britannica
+GMT.generic.long=Ora media di Greenwich
+Greenwich.generic.long=Ora media di Greenwich
+HST.generic.long=Ora Hawaii
+Hongkong.generic.long=Ora di Hong Kong
+IET.generic.long=Fuso orientale
+IST.generic.long=Ora India
+Iceland.generic.long=Ora media di Greenwich
+Indian/Antananarivo.generic.long=Ora dell'Africa orientale
+Indian/Chagos.generic.long=Ora del Territorio Britannico dell'Oceano Indiano
+Indian/Christmas.generic.long=Ora dell'Isola Christmas
+Indian/Cocos.generic.long=Ora delle Isole Cocos
+Indian/Comoro.generic.long=Ora dell'Africa orientale
+Indian/Kerguelen.generic.long=Ora delle Terre Australi e Antartiche Francesi
+Indian/Mahe.generic.long=Ora delle Seychelles
+Indian/Maldives.generic.long=Ora delle Maldive
+Indian/Mauritius.generic.long=Ora di Mauritius
+Indian/Mayotte.generic.long=Ora dell'Africa orientale
+Indian/Reunion.generic.long=Ora di Reunion
+Iran.generic.long=Ora Iran
+Israel.generic.long=Ora Israele
+JST.generic.long=Ora Giappone
+Jamaica.generic.long=Fuso orientale
+Japan.generic.long=Ora Giappone
+Kwajalein.generic.long=Ora delle Isole Marshall
+Libya.generic.long=Ora dell'Europa orientale
+MET.generic.long=MET
+MIT.generic.long=Ora di Samoa occidentale
+MST.generic.long=Ora fuso occidentale
+MST7MDT.generic.long=Ora fuso occidentale
+Mexico/BajaNorte.generic.long=Fuso del Pacifico
+Mexico/BajaSur.generic.long=Ora fuso occidentale
+Mexico/General.generic.long=Ora fuso centrale
+NET.generic.long=Ora dell'Armenia
+NST.generic.long=Ora Nuova Zelanda
+NZ-CHAT.generic.long=Ora Chatham
+NZ.generic.long=Ora Nuova Zelanda
+Navajo.generic.long=Ora fuso occidentale
+PLT.generic.long=Ora del Pakistan
+PNT.generic.long=Ora fuso occidentale
+PRC.generic.long=Ora Cina
+PRT.generic.long=Fuso dell'Atlantico
+PST.generic.long=Fuso del Pacifico
+PST8PDT.generic.long=Fuso del Pacifico
+Pacific/Apia.generic.long=Ora di Samoa occidentale
+Pacific/Auckland.generic.long=Ora Nuova Zelanda
+Pacific/Chatham.generic.long=Ora Chatham
+Pacific/Chuuk.daylight.long=Ora estiva di Chuuk
+Pacific/Chuuk.generic.long=Ora di Chuuk
+Pacific/Chuuk.standard.long=Ora di Chuuk
+Pacific/Easter.generic.long=Ora dell'Isola di Pasqua
+Pacific/Efate.generic.long=Ora di Vanuatu
+Pacific/Enderbury.generic.long=Ora delle Isole Phoenix
+Pacific/Fakaofo.generic.long=Ora di Tokelau
+Pacific/Fiji.generic.long=Ora di Figi
+Pacific/Funafuti.generic.long=Ora di Tuvalu
+Pacific/Galapagos.generic.long=Ora delle Galapagos
+Pacific/Gambier.generic.long=Ora di Gambier
+Pacific/Guadalcanal.generic.long=Ora delle Isole Salomone
+Pacific/Guam.generic.long=Ora Chamorro
+Pacific/Honolulu.generic.long=Ora Hawaii
+Pacific/Johnston.generic.long=Ora Hawaii
+Pacific/Kiritimati.generic.long=Ora delle Line Islands
+Pacific/Kosrae.generic.long=Ora di Kosrae
+Pacific/Kwajalein.generic.long=Ora delle Isole Marshall
+Pacific/Majuro.generic.long=Ora delle Isole Marshall
+Pacific/Marquesas.generic.long=Ora delle Isole Marchesi
+Pacific/Midway.generic.long=Ora Samoa
+Pacific/Nauru.generic.long=Ora di Nauru
+Pacific/Niue.generic.long=Ora di Niue
+Pacific/Norfolk.generic.long=Ora di Norfolk
+Pacific/Noumea.generic.long=Ora della Nuova Caledonia
+Pacific/Pago_Pago.generic.long=Ora Samoa
+Pacific/Palau.generic.long=Ora di Palau
+Pacific/Pitcairn.generic.long=Ora Pitcairn
+Pacific/Pohnpei.daylight.long=Ora estiva di Pohnpei
+Pacific/Pohnpei.generic.long=Ora Ponape
+Pacific/Pohnpei.standard.long=Ora di Pohnpei
+Pacific/Ponape.daylight.long=Ora estiva di Pohnpei
+Pacific/Ponape.generic.long=Ora Ponape
+Pacific/Ponape.standard.long=Ora di Pohnpei
+Pacific/Port_Moresby.generic.long=Ora di Papua Nuova Guinea
+Pacific/Rarotonga.generic.long=Ora delle Isole Cook
+Pacific/Saipan.generic.long=Ora Chamorro
+Pacific/Samoa.generic.long=Ora Samoa
+Pacific/Tahiti.generic.long=Ora di Tahiti
+Pacific/Tarawa.generic.long=Ora delle Isole Gilbert
+Pacific/Tongatapu.generic.long=Ora di Tonga
+Pacific/Truk.daylight.long=Ora estiva di Chuuk
+Pacific/Truk.generic.long=Ora di Chuuk
+Pacific/Truk.standard.long=Ora di Chuuk
+Pacific/Wake.generic.long=Ora di Wake
+Pacific/Wallis.generic.long=Ora di Wallis e Futuna
+Pacific/Yap.daylight.long=Ora estiva di Chuuk
+Pacific/Yap.generic.long=Ora di Chuuk
+Pacific/Yap.standard.long=Ora di Chuuk
+Poland.generic.long=Ora dell'Europa centrale
+Portugal.generic.long=Ora dell'Europa occidentale
+ROK.generic.long=Ora Corea
+SST.generic.long=Ora delle Isole Salomone
+Singapore.generic.long=Ora di Singapore
+SystemV/AST4.generic.long=Fuso dell'Atlantico
+SystemV/AST4ADT.generic.long=Fuso dell'Atlantico
+SystemV/CST6.generic.long=Ora fuso centrale
+SystemV/CST6CDT.generic.long=Ora fuso centrale
+SystemV/EST5.generic.long=Fuso orientale
+SystemV/EST5EDT.generic.long=Fuso orientale
+SystemV/HST10.generic.long=Ora Hawaii
+SystemV/MST7.generic.long=Ora fuso occidentale
+SystemV/MST7MDT.generic.long=Ora fuso occidentale
+SystemV/PST8.generic.long=Fuso del Pacifico
+SystemV/PST8PDT.generic.long=Fuso del Pacifico
+SystemV/YST9.generic.long=Ora Alaska
+SystemV/YST9YDT.generic.long=Ora Alaska
+Turkey.generic.long=Ora dell'Europa orientale
+UCT.generic.long=Tempo universale coordinato
+US/Alaska.generic.long=Ora Alaska
+US/Aleutian.generic.long=Ora Hawaii-Aleutine
+US/Arizona.generic.long=Ora fuso occidentale
+US/Central.generic.long=Ora fuso centrale
+US/East-Indiana.generic.long=Fuso orientale
+US/Eastern.generic.long=Fuso orientale
+US/Hawaii.generic.long=Ora Hawaii
+US/Indiana-Starke.generic.long=Ora fuso centrale
+US/Michigan.generic.long=Fuso orientale
+US/Mountain.generic.long=Ora fuso occidentale
+US/Pacific-New.generic.long=Fuso del Pacifico
+US/Pacific.generic.long=Fuso del Pacifico
+US/Samoa.generic.long=Ora Samoa
+UTC.generic.long=Tempo universale coordinato
+Universal.generic.long=Tempo universale coordinato
+VST.generic.long=Ora dell'Indocina
+W-SU.generic.long=Ora Mosca
+WET.generic.long=Ora dell'Europa occidentale
+Zulu.generic.long=Tempo universale coordinato
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_it_short.properties Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,1743 @@
+ACT.daylight.short=CST
+ACT.generic.short=CT
+ACT.standard.short=CST
+AET.daylight.short=EST
+AET.generic.short=ET
+AET.standard.short=EST
+Africa/Abidjan.daylight.short=GMT
+Africa/Abidjan.generic.short=GMT
+Africa/Abidjan.standard.short=GMT
+Africa/Accra.daylight.short=GHST
+Africa/Accra.generic.short=GMT
+Africa/Accra.standard.short=GMT
+Africa/Addis_Ababa.daylight.short=EAST
+Africa/Addis_Ababa.generic.short=EAT
+Africa/Addis_Ababa.standard.short=EAT
+Africa/Algiers.daylight.short=CEST
+Africa/Algiers.generic.short=CET
+Africa/Algiers.standard.short=CET
+Africa/Asmara.daylight.short=EAST
+Africa/Asmara.generic.short=EAT
+Africa/Asmara.standard.short=EAT
+Africa/Asmera.daylight.short=EAST
+Africa/Asmera.generic.short=EAT
+Africa/Asmera.standard.short=EAT
+Africa/Bamako.daylight.short=GMT
+Africa/Bamako.generic.short=GMT
+Africa/Bamako.standard.short=GMT
+Africa/Bangui.daylight.short=WAST
+Africa/Bangui.generic.short=WAT
+Africa/Bangui.standard.short=WAT
+Africa/Banjul.daylight.short=GMT
+Africa/Banjul.generic.short=GMT
+Africa/Banjul.standard.short=GMT
+Africa/Bissau.daylight.short=GMT
+Africa/Bissau.generic.short=GMT
+Africa/Bissau.standard.short=GMT
+Africa/Blantyre.daylight.short=CAST
+Africa/Blantyre.generic.short=CAT
+Africa/Blantyre.standard.short=CAT
+Africa/Brazzaville.daylight.short=WAST
+Africa/Brazzaville.generic.short=WAT
+Africa/Brazzaville.standard.short=WAT
+Africa/Bujumbura.daylight.short=CAST
+Africa/Bujumbura.generic.short=CAT
+Africa/Bujumbura.standard.short=CAT
+Africa/Cairo.daylight.short=EEST
+Africa/Cairo.generic.short=EET
+Africa/Cairo.standard.short=EET
+Africa/Casablanca.daylight.short=WEST
+Africa/Casablanca.generic.short=WET
+Africa/Casablanca.standard.short=WET
+Africa/Ceuta.daylight.short=CEST
+Africa/Ceuta.generic.short=CET
+Africa/Ceuta.standard.short=CET
+Africa/Conakry.daylight.short=GMT
+Africa/Conakry.generic.short=GMT
+Africa/Conakry.standard.short=GMT
+Africa/Dakar.daylight.short=GMT
+Africa/Dakar.generic.short=GMT
+Africa/Dakar.standard.short=GMT
+Africa/Dar_es_Salaam.daylight.short=EAST
+Africa/Dar_es_Salaam.generic.short=EAT
+Africa/Dar_es_Salaam.standard.short=EAT
+Africa/Djibouti.daylight.short=EAST
+Africa/Djibouti.generic.short=EAT
+Africa/Djibouti.standard.short=EAT
+Africa/Douala.daylight.short=WAST
+Africa/Douala.generic.short=WAT
+Africa/Douala.standard.short=WAT
+Africa/El_Aaiun.daylight.short=WEST
+Africa/El_Aaiun.generic.short=WET
+Africa/El_Aaiun.standard.short=WET
+Africa/Freetown.daylight.short=SLST
+Africa/Freetown.generic.short=SLT
+Africa/Freetown.standard.short=GMT
+Africa/Gaborone.daylight.short=CAST
+Africa/Gaborone.generic.short=CAT
+Africa/Gaborone.standard.short=CAT
+Africa/Harare.daylight.short=CAST
+Africa/Harare.generic.short=CAT
+Africa/Harare.standard.short=CAT
+Africa/Johannesburg.daylight.short=SAST
+Africa/Johannesburg.generic.short=SAT
+Africa/Johannesburg.standard.short=SAST
+Africa/Juba.daylight.short=EAST
+Africa/Juba.generic.short=EAT
+Africa/Juba.standard.short=EAT
+Africa/Kampala.daylight.short=EAST
+Africa/Kampala.generic.short=EAT
+Africa/Kampala.standard.short=EAT
+Africa/Khartoum.daylight.short=EAST
+Africa/Khartoum.generic.short=EAT
+Africa/Khartoum.standard.short=EAT
+Africa/Kigali.daylight.short=CAST
+Africa/Kigali.generic.short=CAT
+Africa/Kigali.standard.short=CAT
+Africa/Kinshasa.daylight.short=WAST
+Africa/Kinshasa.generic.short=WAT
+Africa/Kinshasa.standard.short=WAT
+Africa/Lagos.daylight.short=WAST
+Africa/Lagos.generic.short=WAT
+Africa/Lagos.standard.short=WAT
+Africa/Libreville.daylight.short=WAST
+Africa/Libreville.generic.short=WAT
+Africa/Libreville.standard.short=WAT
+Africa/Lome.daylight.short=GMT
+Africa/Lome.generic.short=GMT
+Africa/Lome.standard.short=GMT
+Africa/Luanda.daylight.short=WAST
+Africa/Luanda.generic.short=WAT
+Africa/Luanda.standard.short=WAT
+Africa/Lubumbashi.daylight.short=CAST
+Africa/Lubumbashi.generic.short=CAT
+Africa/Lubumbashi.standard.short=CAT
+Africa/Lusaka.daylight.short=CAST
+Africa/Lusaka.generic.short=CAT
+Africa/Lusaka.standard.short=CAT
+Africa/Malabo.daylight.short=WAST
+Africa/Malabo.generic.short=WAT
+Africa/Malabo.standard.short=WAT
+Africa/Maputo.daylight.short=CAST
+Africa/Maputo.generic.short=CAT
+Africa/Maputo.standard.short=CAT
+Africa/Maseru.daylight.short=SAST
+Africa/Maseru.generic.short=SAT
+Africa/Maseru.standard.short=SAST
+Africa/Mbabane.daylight.short=SAST
+Africa/Mbabane.generic.short=SAT
+Africa/Mbabane.standard.short=SAST
+Africa/Mogadishu.daylight.short=EAST
+Africa/Mogadishu.generic.short=EAT
+Africa/Mogadishu.standard.short=EAT
+Africa/Monrovia.daylight.short=GMT
+Africa/Monrovia.generic.short=GMT
+Africa/Monrovia.standard.short=GMT
+Africa/Nairobi.daylight.short=EAST
+Africa/Nairobi.generic.short=EAT
+Africa/Nairobi.standard.short=EAT
+Africa/Ndjamena.daylight.short=WAST
+Africa/Ndjamena.generic.short=WAT
+Africa/Ndjamena.standard.short=WAT
+Africa/Niamey.daylight.short=WAST
+Africa/Niamey.generic.short=WAT
+Africa/Niamey.standard.short=WAT
+Africa/Nouakchott.daylight.short=GMT
+Africa/Nouakchott.generic.short=GMT
+Africa/Nouakchott.standard.short=GMT
+Africa/Ouagadougou.daylight.short=GMT
+Africa/Ouagadougou.generic.short=GMT
+Africa/Ouagadougou.standard.short=GMT
+Africa/Porto-Novo.daylight.short=WAST
+Africa/Porto-Novo.generic.short=WAT
+Africa/Porto-Novo.standard.short=WAT
+Africa/Sao_Tome.daylight.short=GMT
+Africa/Sao_Tome.generic.short=GMT
+Africa/Sao_Tome.standard.short=GMT
+Africa/Timbuktu.daylight.short=GMT
+Africa/Timbuktu.generic.short=GMT
+Africa/Timbuktu.standard.short=GMT
+Africa/Tripoli.daylight.short=EEST
+Africa/Tripoli.generic.short=EET
+Africa/Tripoli.standard.short=EET
+Africa/Tunis.daylight.short=CEST
+Africa/Tunis.generic.short=CET
+Africa/Tunis.standard.short=CET
+Africa/Windhoek.daylight.short=WAST
+Africa/Windhoek.generic.short=WAT
+Africa/Windhoek.standard.short=WAT
+AGT.daylight.short=ARST
+AGT.generic.short=ART
+AGT.standard.short=ART
+America/Adak.daylight.short=HADT
+America/Adak.generic.short=HAT
+America/Adak.standard.short=HAST
+America/Anchorage.daylight.short=AKDT
+America/Anchorage.generic.short=AKT
+America/Anchorage.standard.short=AKST
+America/Anguilla.daylight.short=ADT
+America/Anguilla.generic.short=AT
+America/Anguilla.standard.short=AST
+America/Antigua.daylight.short=ADT
+America/Antigua.generic.short=AT
+America/Antigua.standard.short=AST
+America/Araguaina.daylight.short=BRST
+America/Araguaina.generic.short=BRT
+America/Araguaina.standard.short=BRT
+America/Argentina/Buenos_Aires.daylight.short=ARST
+America/Argentina/Buenos_Aires.generic.short=ART
+America/Argentina/Buenos_Aires.standard.short=ART
+America/Argentina/Catamarca.daylight.short=ARST
+America/Argentina/Catamarca.generic.short=ART
+America/Argentina/Catamarca.standard.short=ART
+America/Argentina/ComodRivadavia.daylight.short=ARST
+America/Argentina/ComodRivadavia.generic.short=ART
+America/Argentina/ComodRivadavia.standard.short=ART
+America/Argentina/Cordoba.daylight.short=ARST
+America/Argentina/Cordoba.generic.short=ART
+America/Argentina/Cordoba.standard.short=ART
+America/Argentina/Jujuy.daylight.short=ARST
+America/Argentina/Jujuy.generic.short=ART
+America/Argentina/Jujuy.standard.short=ART
+America/Argentina/La_Rioja.daylight.short=ARST
+America/Argentina/La_Rioja.generic.short=ART
+America/Argentina/La_Rioja.standard.short=ART
+America/Argentina/Mendoza.daylight.short=ARST
+America/Argentina/Mendoza.generic.short=ART
+America/Argentina/Mendoza.standard.short=ART
+America/Argentina/Rio_Gallegos.daylight.short=ARST
+America/Argentina/Rio_Gallegos.generic.short=ART
+America/Argentina/Rio_Gallegos.standard.short=ART
+America/Argentina/Salta.daylight.short=ARST
+America/Argentina/Salta.generic.short=ART
+America/Argentina/Salta.standard.short=ART
+America/Argentina/San_Juan.daylight.short=ARST
+America/Argentina/San_Juan.generic.short=ART
+America/Argentina/San_Juan.standard.short=ART
+America/Argentina/San_Luis.daylight.short=ARST
+America/Argentina/San_Luis.generic.short=ART
+America/Argentina/San_Luis.standard.short=ART
+America/Argentina/Tucuman.daylight.short=ARST
+America/Argentina/Tucuman.generic.short=ART
+America/Argentina/Tucuman.standard.short=ART
+America/Argentina/Ushuaia.daylight.short=ARST
+America/Argentina/Ushuaia.generic.short=ART
+America/Argentina/Ushuaia.standard.short=ART
+America/Aruba.daylight.short=ADT
+America/Aruba.generic.short=AT
+America/Aruba.standard.short=AST
+America/Asuncion.daylight.short=PYST
+America/Asuncion.generic.short=PYT
+America/Asuncion.standard.short=PYT
+America/Atikokan.daylight.short=EDT
+America/Atikokan.generic.short=ET
+America/Atikokan.standard.short=EST
+America/Atka.daylight.short=HADT
+America/Atka.generic.short=HAT
+America/Atka.standard.short=HAST
+America/Bahia_Banderas.daylight.short=CDT
+America/Bahia_Banderas.generic.short=CT
+America/Bahia_Banderas.standard.short=CST
+America/Bahia.daylight.short=BRST
+America/Bahia.generic.short=BRT
+America/Bahia.standard.short=BRT
+America/Barbados.daylight.short=ADT
+America/Barbados.generic.short=AT
+America/Barbados.standard.short=AST
+America/Belem.daylight.short=BRST
+America/Belem.generic.short=BRT
+America/Belem.standard.short=BRT
+America/Belize.daylight.short=CDT
+America/Belize.generic.short=CT
+America/Belize.standard.short=CST
+America/Blanc-Sablon.daylight.short=ADT
+America/Blanc-Sablon.generic.short=AT
+America/Blanc-Sablon.standard.short=AST
+America/Boa_Vista.daylight.short=AMST
+America/Boa_Vista.generic.short=AMT
+America/Boa_Vista.standard.short=AMT
+America/Bogota.daylight.short=COST
+America/Bogota.generic.short=COT
+America/Bogota.standard.short=COT
+America/Boise.daylight.short=MDT
+America/Boise.generic.short=MT
+America/Boise.standard.short=MST
+America/Buenos_Aires.daylight.short=ARST
+America/Buenos_Aires.generic.short=ART
+America/Buenos_Aires.standard.short=ART
+America/Cambridge_Bay.daylight.short=MDT
+America/Cambridge_Bay.generic.short=MT
+America/Cambridge_Bay.standard.short=MST
+America/Campo_Grande.daylight.short=AMST
+America/Campo_Grande.generic.short=AMT
+America/Campo_Grande.standard.short=AMT
+America/Cancun.daylight.short=CDT
+America/Cancun.generic.short=CT
+America/Cancun.standard.short=CST
+America/Caracas.daylight.short=VEST
+America/Caracas.generic.short=VET
+America/Caracas.standard.short=VET
+America/Catamarca.daylight.short=ARST
+America/Catamarca.generic.short=ART
+America/Catamarca.standard.short=ART
+America/Cayenne.daylight.short=GFST
+America/Cayenne.generic.short=GFT
+America/Cayenne.standard.short=GFT
+America/Cayman.daylight.short=EDT
+America/Cayman.generic.short=ET
+America/Cayman.standard.short=EST
+America/Chicago.daylight.short=CDT
+America/Chicago.generic.short=CT
+America/Chicago.standard.short=CST
+America/Chihuahua.daylight.short=MDT
+America/Chihuahua.generic.short=MT
+America/Chihuahua.standard.short=MST
+America/Coral_Harbour.daylight.short=EDT
+America/Coral_Harbour.generic.short=ET
+America/Coral_Harbour.standard.short=EST
+America/Cordoba.daylight.short=ARST
+America/Cordoba.generic.short=ART
+America/Cordoba.standard.short=ART
+America/Costa_Rica.daylight.short=CDT
+America/Costa_Rica.generic.short=CT
+America/Costa_Rica.standard.short=CST
+America/Creston.daylight.short=MDT
+America/Creston.generic.short=MT
+America/Creston.standard.short=MST
+America/Cuiaba.daylight.short=AMST
+America/Cuiaba.generic.short=AMT
+America/Cuiaba.standard.short=AMT
+America/Curacao.daylight.short=ADT
+America/Curacao.generic.short=AT
+America/Curacao.standard.short=AST
+America/Danmarkshavn.daylight.short=GMT
+America/Danmarkshavn.generic.short=GMT
+America/Danmarkshavn.standard.short=GMT
+America/Dawson_Creek.daylight.short=MDT
+America/Dawson_Creek.generic.short=MT
+America/Dawson_Creek.standard.short=MST
+America/Dawson.daylight.short=PDT
+America/Dawson.generic.short=PT
+America/Dawson.standard.short=PST
+America/Denver.daylight.short=MDT
+America/Denver.generic.short=MT
+America/Denver.standard.short=MST
+America/Detroit.daylight.short=EDT
+America/Detroit.generic.short=ET
+America/Detroit.standard.short=EST
+America/Dominica.daylight.short=ADT
+America/Dominica.generic.short=AT
+America/Dominica.standard.short=AST
+America/Edmonton.daylight.short=MDT
+America/Edmonton.generic.short=MT
+America/Edmonton.standard.short=MST
+America/Eirunepe.daylight.short=ACST
+America/Eirunepe.generic.short=ACT
+America/Eirunepe.standard.short=ACT
+America/El_Salvador.daylight.short=CDT
+America/El_Salvador.generic.short=CT
+America/El_Salvador.standard.short=CST
+America/Ensenada.daylight.short=PDT
+America/Ensenada.generic.short=PT
+America/Ensenada.standard.short=PST
+America/Fortaleza.daylight.short=BRST
+America/Fortaleza.generic.short=BRT
+America/Fortaleza.standard.short=BRT
+America/Fort_Wayne.daylight.short=EDT
+America/Fort_Wayne.generic.short=ET
+America/Fort_Wayne.standard.short=EST
+America/Glace_Bay.daylight.short=ADT
+America/Glace_Bay.generic.short=AT
+America/Glace_Bay.standard.short=AST
+America/Godthab.daylight.short=WGST
+America/Godthab.generic.short=WGT
+America/Godthab.standard.short=WGT
+America/Goose_Bay.daylight.short=ADT
+America/Goose_Bay.generic.short=AT
+America/Goose_Bay.standard.short=AST
+America/Grand_Turk.daylight.short=EDT
+America/Grand_Turk.generic.short=ET
+America/Grand_Turk.standard.short=EST
+America/Grenada.daylight.short=ADT
+America/Grenada.generic.short=AT
+America/Grenada.standard.short=AST
+America/Guadeloupe.daylight.short=ADT
+America/Guadeloupe.generic.short=AT
+America/Guadeloupe.standard.short=AST
+America/Guatemala.daylight.short=CDT
+America/Guatemala.generic.short=CT
+America/Guatemala.standard.short=CST
+America/Guayaquil.daylight.short=ECST
+America/Guayaquil.generic.short=ECT
+America/Guayaquil.standard.short=ECT
+America/Guyana.daylight.short=GYST
+America/Guyana.generic.short=GYT
+America/Guyana.standard.short=GYT
+America/Halifax.daylight.short=ADT
+America/Halifax.generic.short=AT
+America/Halifax.standard.short=AST
+America/Havana.daylight.short=CDT
+America/Havana.generic.short=CT
+America/Havana.standard.short=CST
+America/Hermosillo.daylight.short=MDT
+America/Hermosillo.generic.short=MT
+America/Hermosillo.standard.short=MST
+America/Indiana/Indianapolis.daylight.short=EDT
+America/Indiana/Indianapolis.generic.short=ET
+America/Indiana/Indianapolis.standard.short=EST
+America/Indiana/Knox.daylight.short=CDT
+America/Indiana/Knox.generic.short=CT
+America/Indiana/Knox.standard.short=CST
+America/Indiana/Marengo.daylight.short=EDT
+America/Indiana/Marengo.generic.short=ET
+America/Indiana/Marengo.standard.short=EST
+America/Indiana/Petersburg.daylight.short=EDT
+America/Indiana/Petersburg.generic.short=ET
+America/Indiana/Petersburg.standard.short=EST
+America/Indianapolis.daylight.short=EDT
+America/Indianapolis.generic.short=ET
+America/Indianapolis.standard.short=EST
+America/Indiana/Tell_City.daylight.short=CDT
+America/Indiana/Tell_City.generic.short=CT
+America/Indiana/Tell_City.standard.short=CST
+America/Indiana/Vevay.daylight.short=EDT
+America/Indiana/Vevay.generic.short=ET
+America/Indiana/Vevay.standard.short=EST
+America/Indiana/Vincennes.daylight.short=EDT
+America/Indiana/Vincennes.generic.short=ET
+America/Indiana/Vincennes.standard.short=EST
+America/Indiana/Winamac.daylight.short=EDT
+America/Indiana/Winamac.generic.short=ET
+America/Indiana/Winamac.standard.short=EST
+America/Inuvik.daylight.short=MDT
+America/Inuvik.generic.short=MT
+America/Inuvik.standard.short=MST
+America/Iqaluit.daylight.short=EDT
+America/Iqaluit.generic.short=ET
+America/Iqaluit.standard.short=EST
+America/Jamaica.daylight.short=EDT
+America/Jamaica.generic.short=ET
+America/Jamaica.standard.short=EST
+America/Jujuy.daylight.short=ARST
+America/Jujuy.generic.short=ART
+America/Jujuy.standard.short=ART
+America/Juneau.daylight.short=AKDT
+America/Juneau.generic.short=AKT
+America/Juneau.standard.short=AKST
+America/Kentucky/Louisville.daylight.short=EDT
+America/Kentucky/Louisville.generic.short=ET
+America/Kentucky/Louisville.standard.short=EST
+America/Kentucky/Monticello.daylight.short=EDT
+America/Kentucky/Monticello.generic.short=ET
+America/Kentucky/Monticello.standard.short=EST
+America/Knox_IN.daylight.short=CDT
+America/Knox_IN.generic.short=CT
+America/Knox_IN.standard.short=CST
+America/Kralendijk.daylight.short=ADT
+America/Kralendijk.generic.short=AT
+America/Kralendijk.standard.short=AST
+America/La_Paz.daylight.short=BOST
+America/La_Paz.generic.short=BOT
+America/La_Paz.standard.short=BOT
+America/Lima.daylight.short=PEST
+America/Lima.generic.short=PET
+America/Lima.standard.short=PET
+America/Los_Angeles.daylight.short=PDT
+America/Los_Angeles.generic.short=PT
+America/Los_Angeles.standard.short=PST
+America/Louisville.daylight.short=EDT
+America/Louisville.generic.short=ET
+America/Louisville.standard.short=EST
+America/Lower_Princes.daylight.short=ADT
+America/Lower_Princes.generic.short=AT
+America/Lower_Princes.standard.short=AST
+America/Maceio.daylight.short=BRST
+America/Maceio.generic.short=BRT
+America/Maceio.standard.short=BRT
+America/Managua.daylight.short=CDT
+America/Managua.generic.short=CT
+America/Managua.standard.short=CST
+America/Manaus.daylight.short=AMST
+America/Manaus.generic.short=AMT
+America/Manaus.standard.short=AMT
+America/Marigot.daylight.short=ADT
+America/Marigot.generic.short=AT
+America/Marigot.standard.short=AST
+America/Martinique.daylight.short=ADT
+America/Martinique.generic.short=AT
+America/Martinique.standard.short=AST
+America/Matamoros.daylight.short=CDT
+America/Matamoros.generic.short=CT
+America/Matamoros.standard.short=CST
+America/Mazatlan.daylight.short=MDT
+America/Mazatlan.generic.short=MT
+America/Mazatlan.standard.short=MST
+America/Mendoza.daylight.short=ARST
+America/Mendoza.generic.short=ART
+America/Mendoza.standard.short=ART
+America/Menominee.daylight.short=CDT
+America/Menominee.generic.short=CT
+America/Menominee.standard.short=CST
+America/Merida.daylight.short=CDT
+America/Merida.generic.short=CT
+America/Merida.standard.short=CST
+America/Metlakatla.daylight.short=MeDT
+America/Metlakatla.generic.short=MeT
+America/Metlakatla.standard.short=MeST
+America/Mexico_City.daylight.short=CDT
+America/Mexico_City.generic.short=CT
+America/Mexico_City.standard.short=CST
+America/Miquelon.daylight.short=PMDT
+America/Miquelon.generic.short=PMT
+America/Miquelon.standard.short=PMST
+America/Moncton.daylight.short=ADT
+America/Moncton.generic.short=AT
+America/Moncton.standard.short=AST
+America/Monterrey.daylight.short=CDT
+America/Monterrey.generic.short=CT
+America/Monterrey.standard.short=CST
+America/Montevideo.daylight.short=UYST
+America/Montevideo.generic.short=UYT
+America/Montevideo.standard.short=UYT
+America/Montreal.daylight.short=EDT
+America/Montreal.generic.short=ET
+America/Montreal.standard.short=EST
+America/Montserrat.daylight.short=ADT
+America/Montserrat.generic.short=AT
+America/Montserrat.standard.short=AST
+America/Nassau.daylight.short=EDT
+America/Nassau.generic.short=ET
+America/Nassau.standard.short=EST
+America/New_York.daylight.short=EDT
+America/New_York.generic.short=ET
+America/New_York.standard.short=EST
+America/Nipigon.daylight.short=EDT
+America/Nipigon.generic.short=ET
+America/Nipigon.standard.short=EST
+America/Nome.daylight.short=AKDT
+America/Nome.generic.short=AKT
+America/Nome.standard.short=AKST
+America/Noronha.daylight.short=FNST
+America/Noronha.generic.short=FNT
+America/Noronha.standard.short=FNT
+America/North_Dakota/Beulah.daylight.short=CDT
+America/North_Dakota/Beulah.generic.short=CT
+America/North_Dakota/Beulah.standard.short=CST
+America/North_Dakota/Center.daylight.short=CDT
+America/North_Dakota/Center.generic.short=CT
+America/North_Dakota/Center.standard.short=CST
+America/North_Dakota/New_Salem.daylight.short=CDT
+America/North_Dakota/New_Salem.generic.short=CT
+America/North_Dakota/New_Salem.standard.short=CST
+America/Ojinaga.daylight.short=MDT
+America/Ojinaga.generic.short=MT
+America/Ojinaga.standard.short=MST
+America/Panama.daylight.short=EDT
+America/Panama.generic.short=ET
+America/Panama.standard.short=EST
+America/Pangnirtung.daylight.short=EDT
+America/Pangnirtung.generic.short=ET
+America/Pangnirtung.standard.short=EST
+America/Paramaribo.daylight.short=SRST
+America/Paramaribo.generic.short=SRT
+America/Paramaribo.standard.short=SRT
+America/Phoenix.daylight.short=MDT
+America/Phoenix.generic.short=MT
+America/Phoenix.standard.short=MST
+America/Port-au-Prince.daylight.short=EDT
+America/Port-au-Prince.generic.short=ET
+America/Port-au-Prince.standard.short=EST
+America/Porto_Acre.daylight.short=ACST
+America/Porto_Acre.generic.short=ACT
+America/Porto_Acre.standard.short=ACT
+America/Port_of_Spain.daylight.short=ADT
+America/Port_of_Spain.generic.short=AT
+America/Port_of_Spain.standard.short=AST
+America/Porto_Velho.daylight.short=AMST
+America/Porto_Velho.generic.short=AMT
+America/Porto_Velho.standard.short=AMT
+America/Puerto_Rico.daylight.short=ADT
+America/Puerto_Rico.generic.short=AT
+America/Puerto_Rico.standard.short=AST
+America/Rainy_River.daylight.short=CDT
+America/Rainy_River.generic.short=CT
+America/Rainy_River.standard.short=CST
+America/Rankin_Inlet.daylight.short=CDT
+America/Rankin_Inlet.generic.short=CT
+America/Rankin_Inlet.standard.short=CST
+America/Recife.daylight.short=BRST
+America/Recife.generic.short=BRT
+America/Recife.standard.short=BRT
+America/Regina.daylight.short=CDT
+America/Regina.generic.short=CT
+America/Regina.standard.short=CST
+America/Resolute.daylight.short=CDT
+America/Resolute.generic.short=CT
+America/Resolute.standard.short=CST
+America/Rio_Branco.daylight.short=ACST
+America/Rio_Branco.generic.short=ACT
+America/Rio_Branco.standard.short=ACT
+America/Rosario.daylight.short=ARST
+America/Rosario.generic.short=ART
+America/Rosario.standard.short=ART
+America/Santa_Isabel.daylight.short=PDT
+America/Santa_Isabel.generic.short=PT
+America/Santa_Isabel.standard.short=PST
+America/Santarem.daylight.short=BRST
+America/Santarem.generic.short=BRT
+America/Santarem.standard.short=BRT
+America/Santiago.daylight.short=CLST
+America/Santiago.generic.short=CLT
+America/Santiago.standard.short=CLT
+America/Santo_Domingo.daylight.short=ADT
+America/Santo_Domingo.generic.short=AT
+America/Santo_Domingo.standard.short=AST
+America/Sao_Paulo.daylight.short=BRST
+America/Sao_Paulo.generic.short=BRT
+America/Sao_Paulo.standard.short=BRT
+America/Scoresbysund.daylight.short=EGST
+America/Scoresbysund.generic.short=EGT
+America/Scoresbysund.standard.short=EGT
+America/Shiprock.daylight.short=MDT
+America/Shiprock.generic.short=MT
+America/Shiprock.standard.short=MST
+America/Sitka.daylight.short=AKDT
+America/Sitka.generic.short=AKT
+America/Sitka.standard.short=AKST
+America/St_Barthelemy.daylight.short=ADT
+America/St_Barthelemy.generic.short=AT
+America/St_Barthelemy.standard.short=AST
+America/St_Johns.daylight.short=NDT
+America/St_Johns.generic.short=NT
+America/St_Johns.standard.short=NST
+America/St_Kitts.daylight.short=ADT
+America/St_Kitts.generic.short=AT
+America/St_Kitts.standard.short=AST
+America/St_Lucia.daylight.short=ADT
+America/St_Lucia.generic.short=AT
+America/St_Lucia.standard.short=AST
+America/St_Thomas.daylight.short=ADT
+America/St_Thomas.generic.short=AT
+America/St_Thomas.standard.short=AST
+America/St_Vincent.daylight.short=ADT
+America/St_Vincent.generic.short=AT
+America/St_Vincent.standard.short=AST
+America/Swift_Current.daylight.short=CDT
+America/Swift_Current.generic.short=CT
+America/Swift_Current.standard.short=CST
+America/Tegucigalpa.daylight.short=CDT
+America/Tegucigalpa.generic.short=CT
+America/Tegucigalpa.standard.short=CST
+America/Thule.daylight.short=ADT
+America/Thule.generic.short=AT
+America/Thule.standard.short=AST
+America/Thunder_Bay.daylight.short=EDT
+America/Thunder_Bay.generic.short=ET
+America/Thunder_Bay.standard.short=EST
+America/Tijuana.daylight.short=PDT
+America/Tijuana.generic.short=PT
+America/Tijuana.standard.short=PST
+America/Toronto.daylight.short=EDT
+America/Toronto.generic.short=ET
+America/Toronto.standard.short=EST
+America/Tortola.daylight.short=ADT
+America/Tortola.generic.short=AT
+America/Tortola.standard.short=AST
+America/Vancouver.daylight.short=PDT
+America/Vancouver.generic.short=PT
+America/Vancouver.standard.short=PST
+America/Virgin.daylight.short=ADT
+America/Virgin.generic.short=AT
+America/Virgin.standard.short=AST
+America/Whitehorse.daylight.short=PDT
+America/Whitehorse.generic.short=PT
+America/Whitehorse.standard.short=PST
+America/Winnipeg.daylight.short=CDT
+America/Winnipeg.generic.short=CT
+America/Winnipeg.standard.short=CST
+America/Yakutat.daylight.short=AKDT
+America/Yakutat.generic.short=AKT
+America/Yakutat.standard.short=AKST
+America/Yellowknife.daylight.short=MDT
+America/Yellowknife.generic.short=MT
+America/Yellowknife.standard.short=MST
+Antarctica/Casey.daylight.short=WST
+Antarctica/Casey.generic.short=WT
+Antarctica/Casey.standard.short=WST
+Antarctica/Davis.daylight.short=DAVST
+Antarctica/Davis.generic.short=DAVT
+Antarctica/Davis.standard.short=DAVT
+Antarctica/DumontDUrville.daylight.short=DDUST
+Antarctica/DumontDUrville.generic.short=DDUT
+Antarctica/DumontDUrville.standard.short=DDUT
+Antarctica/Macquarie.daylight.short=MIST
+Antarctica/Macquarie.generic.short=MIST
+Antarctica/Macquarie.standard.short=MIST
+Antarctica/Mawson.daylight.short=MAWST
+Antarctica/Mawson.generic.short=MAWT
+Antarctica/Mawson.standard.short=MAWT
+Antarctica/McMurdo.daylight.short=NZDT
+Antarctica/McMurdo.generic.short=NZT
+Antarctica/McMurdo.standard.short=NZST
+Antarctica/Palmer.daylight.short=CLST
+Antarctica/Palmer.generic.short=CLT
+Antarctica/Palmer.standard.short=CLT
+Antarctica/Rothera.daylight.short=ROTST
+Antarctica/Rothera.generic.short=ROTT
+Antarctica/Rothera.standard.short=ROTT
+Antarctica/South_Pole.daylight.short=NZDT
+Antarctica/South_Pole.generic.short=NZT
+Antarctica/South_Pole.standard.short=NZST
+Antarctica/Syowa.daylight.short=SYOST
+Antarctica/Syowa.generic.short=SYOT
+Antarctica/Syowa.standard.short=SYOT
+Antarctica/Vostok.daylight.short=VOSST
+Antarctica/Vostok.generic.short=VOST
+Antarctica/Vostok.standard.short=VOST
+Arctic/Longyearbyen.daylight.short=CEST
+Arctic/Longyearbyen.generic.short=CET
+Arctic/Longyearbyen.standard.short=CET
+ART.daylight.short=EEST
+ART.generic.short=EET
+ART.standard.short=EET
+Asia/Aden.daylight.short=ADT
+Asia/Aden.generic.short=AT
+Asia/Aden.standard.short=AST
+Asia/Almaty.daylight.short=ALMST
+Asia/Almaty.generic.short=ALMT
+Asia/Almaty.standard.short=ALMT
+Asia/Amman.daylight.short=ADT
+Asia/Amman.generic.short=AT
+Asia/Amman.standard.short=AST
+Asia/Anadyr.daylight.short=ANAST
+Asia/Anadyr.generic.short=ANAT
+Asia/Anadyr.standard.short=ANAT
+Asia/Aqtau.daylight.short=AQTST
+Asia/Aqtau.generic.short=AQTT
+Asia/Aqtau.standard.short=AQTT
+Asia/Aqtobe.daylight.short=AQTST
+Asia/Aqtobe.generic.short=AQTT
+Asia/Aqtobe.standard.short=AQTT
+Asia/Ashgabat.daylight.short=TMST
+Asia/Ashgabat.generic.short=TMT
+Asia/Ashgabat.standard.short=TMT
+Asia/Ashkhabad.daylight.short=TMST
+Asia/Ashkhabad.generic.short=TMT
+Asia/Ashkhabad.standard.short=TMT
+Asia/Baghdad.daylight.short=ADT
+Asia/Baghdad.generic.short=AT
+Asia/Baghdad.standard.short=AST
+Asia/Bahrain.daylight.short=ADT
+Asia/Bahrain.generic.short=AT
+Asia/Bahrain.standard.short=AST
+Asia/Baku.daylight.short=AZST
+Asia/Baku.generic.short=AZT
+Asia/Baku.standard.short=AZT
+Asia/Bangkok.daylight.short=ICST
+Asia/Bangkok.generic.short=ICT
+Asia/Bangkok.standard.short=ICT
+Asia/Beirut.daylight.short=EEST
+Asia/Beirut.generic.short=EET
+Asia/Beirut.standard.short=EET
+Asia/Bishkek.daylight.short=KGST
+Asia/Bishkek.generic.short=KGT
+Asia/Bishkek.standard.short=KGT
+Asia/Brunei.daylight.short=BNST
+Asia/Brunei.generic.short=BNT
+Asia/Brunei.standard.short=BNT
+Asia/Calcutta.daylight.short=IDT
+Asia/Calcutta.generic.short=IT
+Asia/Calcutta.standard.short=IST
+Asia/Choibalsan.daylight.short=CHOST
+Asia/Choibalsan.generic.short=CHOT
+Asia/Choibalsan.standard.short=CHOT
+Asia/Chongqing.daylight.short=CDT
+Asia/Chongqing.generic.short=CT
+Asia/Chongqing.standard.short=CST
+Asia/Chungking.daylight.short=CDT
+Asia/Chungking.generic.short=CT
+Asia/Chungking.standard.short=CST
+Asia/Colombo.daylight.short=IDT
+Asia/Colombo.generic.short=IT
+Asia/Colombo.standard.short=IST
+Asia/Dacca.daylight.short=BDST
+Asia/Dacca.generic.short=BDT
+Asia/Dacca.standard.short=BDT
+Asia/Damascus.daylight.short=EEST
+Asia/Damascus.generic.short=EET
+Asia/Damascus.standard.short=EET
+Asia/Dhaka.daylight.short=BDST
+Asia/Dhaka.generic.short=BDT
+Asia/Dhaka.standard.short=BDT
+Asia/Dili.daylight.short=TLST
+Asia/Dili.generic.short=TLT
+Asia/Dili.standard.short=TLT
+Asia/Dubai.daylight.short=GDT
+Asia/Dubai.generic.short=GT
+Asia/Dubai.standard.short=GST
+Asia/Dushanbe.daylight.short=TJST
+Asia/Dushanbe.generic.short=TJT
+Asia/Dushanbe.standard.short=TJT
+Asia/Gaza.daylight.short=EEST
+Asia/Gaza.generic.short=EET
+Asia/Gaza.standard.short=EET
+Asia/Harbin.daylight.short=CDT
+Asia/Harbin.generic.short=CT
+Asia/Harbin.standard.short=CST
+Asia/Hebron.daylight.short=EEST
+Asia/Hebron.generic.short=EET
+Asia/Hebron.standard.short=EET
+Asia/Ho_Chi_Minh.daylight.short=ICST
+Asia/Ho_Chi_Minh.generic.short=ICT
+Asia/Ho_Chi_Minh.standard.short=ICT
+Asia/Hong_Kong.daylight.short=HKST
+Asia/Hong_Kong.generic.short=HKT
+Asia/Hong_Kong.standard.short=HKT
+Asia/Hovd.daylight.short=HOVST
+Asia/Hovd.generic.short=HOVT
+Asia/Hovd.standard.short=HOVT
+Asia/Irkutsk.daylight.short=IRKST
+Asia/Irkutsk.generic.short=IRKT
+Asia/Irkutsk.standard.short=IRKT
+Asia/Istanbul.daylight.short=EEST
+Asia/Istanbul.generic.short=EET
+Asia/Istanbul.standard.short=EET
+Asia/Jakarta.daylight.short=WIST
+Asia/Jakarta.generic.short=WIB
+Asia/Jakarta.standard.short=WIB
+Asia/Jayapura.daylight.short=EIST
+Asia/Jayapura.generic.short=WIT
+Asia/Jayapura.standard.short=WIT
+Asia/Jerusalem.daylight.short=IDT
+Asia/Jerusalem.generic.short=IT
+Asia/Jerusalem.standard.short=IST
+Asia/Kabul.daylight.short=AFST
+Asia/Kabul.generic.short=AFT
+Asia/Kabul.standard.short=AFT
+Asia/Kamchatka.daylight.short=PETST
+Asia/Kamchatka.generic.short=PETT
+Asia/Kamchatka.standard.short=PETT
+Asia/Karachi.daylight.short=PKST
+Asia/Karachi.generic.short=PKT
+Asia/Karachi.standard.short=PKT
+Asia/Kashgar.daylight.short=CDT
+Asia/Kashgar.generic.short=CT
+Asia/Kashgar.standard.short=CST
+Asia/Kathmandu.daylight.short=NPST
+Asia/Kathmandu.generic.short=NPT
+Asia/Kathmandu.standard.short=NPT
+Asia/Katmandu.daylight.short=NPST
+Asia/Katmandu.generic.short=NPT
+Asia/Katmandu.standard.short=NPT
+Asia/Khandyga.daylight.short=YAKST
+Asia/Khandyga.generic.short=YAKT
+Asia/Khandyga.standard.short=YAKT
+Asia/Kolkata.daylight.short=IDT
+Asia/Kolkata.generic.short=IT
+Asia/Kolkata.standard.short=IST
+Asia/Krasnoyarsk.daylight.short=KRAST
+Asia/Krasnoyarsk.generic.short=KRAT
+Asia/Krasnoyarsk.standard.short=KRAT
+Asia/Kuala_Lumpur.daylight.short=MYST
+Asia/Kuala_Lumpur.generic.short=MYT
+Asia/Kuala_Lumpur.standard.short=MYT
+Asia/Kuching.daylight.short=MYST
+Asia/Kuching.generic.short=MYT
+Asia/Kuching.standard.short=MYT
+Asia/Kuwait.daylight.short=ADT
+Asia/Kuwait.generic.short=AT
+Asia/Kuwait.standard.short=AST
+Asia/Macao.daylight.short=CDT
+Asia/Macao.generic.short=CT
+Asia/Macao.standard.short=CST
+Asia/Macau.daylight.short=CDT
+Asia/Macau.generic.short=CT
+Asia/Macau.standard.short=CST
+Asia/Magadan.daylight.short=MAGST
+Asia/Magadan.generic.short=MAGT
+Asia/Magadan.standard.short=MAGT
+Asia/Makassar.daylight.short=CIST
+Asia/Makassar.generic.short=WITA
+Asia/Makassar.standard.short=WITA
+Asia/Manila.daylight.short=PHST
+Asia/Manila.generic.short=PHT
+Asia/Manila.standard.short=PHT
+Asia/Muscat.daylight.short=GDT
+Asia/Muscat.generic.short=GT
+Asia/Muscat.standard.short=GST
+Asia/Nicosia.daylight.short=EEST
+Asia/Nicosia.generic.short=EET
+Asia/Nicosia.standard.short=EET
+Asia/Novokuznetsk.daylight.short=NOVST
+Asia/Novokuznetsk.generic.short=NOVT
+Asia/Novokuznetsk.standard.short=NOVT
+Asia/Novosibirsk.daylight.short=NOVST
+Asia/Novosibirsk.generic.short=NOVT
+Asia/Novosibirsk.standard.short=NOVT
+Asia/Omsk.daylight.short=OMSST
+Asia/Omsk.generic.short=OMST
+Asia/Omsk.standard.short=OMST
+Asia/Oral.daylight.short=ORAST
+Asia/Oral.generic.short=ORAT
+Asia/Oral.standard.short=ORAT
+Asia/Phnom_Penh.daylight.short=ICST
+Asia/Phnom_Penh.generic.short=ICT
+Asia/Phnom_Penh.standard.short=ICT
+Asia/Pontianak.daylight.short=WIST
+Asia/Pontianak.generic.short=WIB
+Asia/Pontianak.standard.short=WIB
+Asia/Pyongyang.daylight.short=KDT
+Asia/Pyongyang.generic.short=KT
+Asia/Pyongyang.standard.short=KST
+Asia/Qatar.daylight.short=ADT
+Asia/Qatar.generic.short=AT
+Asia/Qatar.standard.short=AST
+Asia/Qyzylorda.daylight.short=QYZST
+Asia/Qyzylorda.generic.short=QYZT
+Asia/Qyzylorda.standard.short=QYZT
+Asia/Rangoon.daylight.short=MMST
+Asia/Rangoon.generic.short=MMT
+Asia/Rangoon.standard.short=MMT
+Asia/Saigon.daylight.short=ICST
+Asia/Saigon.generic.short=ICT
+Asia/Saigon.standard.short=ICT
+Asia/Sakhalin.daylight.short=SAKST
+Asia/Sakhalin.generic.short=SAKT
+Asia/Sakhalin.standard.short=SAKT
+Asia/Samarkand.daylight.short=UZST
+Asia/Samarkand.generic.short=UZT
+Asia/Samarkand.standard.short=UZT
+Asia/Seoul.daylight.short=KDT
+Asia/Seoul.generic.short=KT
+Asia/Seoul.standard.short=KST
+Asia/Shanghai.daylight.short=CDT
+Asia/Shanghai.generic.short=CT
+Asia/Shanghai.standard.short=CST
+Asia/Singapore.daylight.short=SGST
+Asia/Singapore.generic.short=SGT
+Asia/Singapore.standard.short=SGT
+Asia/Taipei.daylight.short=CDT
+Asia/Taipei.generic.short=CT
+Asia/Taipei.standard.short=CST
+Asia/Tashkent.daylight.short=UZST
+Asia/Tashkent.generic.short=UZT
+Asia/Tashkent.standard.short=UZT
+Asia/Tbilisi.daylight.short=GEST
+Asia/Tbilisi.generic.short=GET
+Asia/Tbilisi.standard.short=GET
+Asia/Tehran.daylight.short=IRDT
+Asia/Tehran.generic.short=IRT
+Asia/Tehran.standard.short=IRST
+Asia/Tel_Aviv.daylight.short=IDT
+Asia/Tel_Aviv.generic.short=IT
+Asia/Tel_Aviv.standard.short=IST
+Asia/Thimbu.daylight.short=BTST
+Asia/Thimbu.generic.short=BTT
+Asia/Thimbu.standard.short=BTT
+Asia/Thimphu.daylight.short=BTST
+Asia/Thimphu.generic.short=BTT
+Asia/Thimphu.standard.short=BTT
+Asia/Tokyo.daylight.short=JDT
+Asia/Tokyo.generic.short=JT
+Asia/Tokyo.standard.short=JST
+Asia/Ujung_Pandang.daylight.short=CIST
+Asia/Ujung_Pandang.generic.short=WITA
+Asia/Ujung_Pandang.standard.short=WITA
+Asia/Ulaanbaatar.daylight.short=ULAST
+Asia/Ulaanbaatar.generic.short=ULAT
+Asia/Ulaanbaatar.standard.short=ULAT
+Asia/Ulan_Bator.daylight.short=ULAST
+Asia/Ulan_Bator.generic.short=ULAT
+Asia/Ulan_Bator.standard.short=ULAT
+Asia/Urumqi.daylight.short=CDT
+Asia/Urumqi.generic.short=CT
+Asia/Urumqi.standard.short=CST
+Asia/Ust-Nera.daylight.short=VLAST
+Asia/Ust-Nera.generic.short=VLAT
+Asia/Ust-Nera.standard.short=VLAT
+Asia/Vientiane.daylight.short=ICST
+Asia/Vientiane.generic.short=ICT
+Asia/Vientiane.standard.short=ICT
+Asia/Vladivostok.daylight.short=VLAST
+Asia/Vladivostok.generic.short=VLAT
+Asia/Vladivostok.standard.short=VLAT
+Asia/Yakutsk.daylight.short=YAKST
+Asia/Yakutsk.generic.short=YAKT
+Asia/Yakutsk.standard.short=YAKT
+Asia/Yekaterinburg.daylight.short=YEKST
+Asia/Yekaterinburg.generic.short=YEKT
+Asia/Yekaterinburg.standard.short=YEKT
+Asia/Yerevan.daylight.short=AMST
+Asia/Yerevan.generic.short=AMT
+Asia/Yerevan.standard.short=AMT
+AST.daylight.short=AKDT
+AST.generic.short=AKT
+AST.standard.short=AKST
+Atlantic/Azores.daylight.short=AZOST
+Atlantic/Azores.generic.short=AZOT
+Atlantic/Azores.standard.short=AZOT
+Atlantic/Bermuda.daylight.short=ADT
+Atlantic/Bermuda.generic.short=AT
+Atlantic/Bermuda.standard.short=AST
+Atlantic/Canary.daylight.short=WEST
+Atlantic/Canary.generic.short=WET
+Atlantic/Canary.standard.short=WET
+Atlantic/Cape_Verde.daylight.short=CVST
+Atlantic/Cape_Verde.generic.short=CVT
+Atlantic/Cape_Verde.standard.short=CVT
+Atlantic/Faeroe.daylight.short=WEST
+Atlantic/Faeroe.generic.short=WET
+Atlantic/Faeroe.standard.short=WET
+Atlantic/Faroe.daylight.short=WEST
+Atlantic/Faroe.generic.short=WET
+Atlantic/Faroe.standard.short=WET
+Atlantic/Jan_Mayen.daylight.short=CEST
+Atlantic/Jan_Mayen.generic.short=CET
+Atlantic/Jan_Mayen.standard.short=CET
+Atlantic/Madeira.daylight.short=WEST
+Atlantic/Madeira.generic.short=WET
+Atlantic/Madeira.standard.short=WET
+Atlantic/Reykjavik.daylight.short=GMT
+Atlantic/Reykjavik.generic.short=GMT
+Atlantic/Reykjavik.standard.short=GMT
+Atlantic/South_Georgia.daylight.short=GDT
+Atlantic/South_Georgia.generic.short=GT
+Atlantic/South_Georgia.standard.short=GST
+Atlantic/Stanley.daylight.short=FKST
+Atlantic/Stanley.generic.short=FKT
+Atlantic/Stanley.standard.short=FKT
+Atlantic/St_Helena.daylight.short=GMT
+Atlantic/St_Helena.generic.short=GMT
+Atlantic/St_Helena.standard.short=GMT
+Australia/ACT.daylight.short=EST
+Australia/ACT.generic.short=ET
+Australia/ACT.standard.short=EST
+Australia/Adelaide.daylight.short=CST
+Australia/Adelaide.generic.short=CT
+Australia/Adelaide.standard.short=CST
+Australia/Brisbane.daylight.short=EST
+Australia/Brisbane.generic.short=ET
+Australia/Brisbane.standard.short=EST
+Australia/Broken_Hill.daylight.short=CST
+Australia/Broken_Hill.generic.short=CT
+Australia/Broken_Hill.standard.short=CST
+Australia/Canberra.daylight.short=EST
+Australia/Canberra.generic.short=ET
+Australia/Canberra.standard.short=EST
+Australia/Currie.daylight.short=EST
+Australia/Currie.generic.short=ET
+Australia/Currie.standard.short=EST
+Australia/Darwin.daylight.short=CST
+Australia/Darwin.generic.short=CT
+Australia/Darwin.standard.short=CST
+Australia/Eucla.daylight.short=CWST
+Australia/Eucla.generic.short=CWT
+Australia/Eucla.standard.short=CWST
+Australia/Hobart.daylight.short=EST
+Australia/Hobart.generic.short=ET
+Australia/Hobart.standard.short=EST
+Australia/LHI.daylight.short=LHST
+Australia/LHI.generic.short=LHT
+Australia/LHI.standard.short=LHST
+Australia/Lindeman.daylight.short=EST
+Australia/Lindeman.generic.short=ET
+Australia/Lindeman.standard.short=EST
+Australia/Lord_Howe.daylight.short=LHST
+Australia/Lord_Howe.generic.short=LHT
+Australia/Lord_Howe.standard.short=LHST
+Australia/Melbourne.daylight.short=EST
+Australia/Melbourne.generic.short=ET
+Australia/Melbourne.standard.short=EST
+Australia/North.daylight.short=CST
+Australia/North.generic.short=CT
+Australia/North.standard.short=CST
+Australia/NSW.daylight.short=EST
+Australia/NSW.generic.short=ET
+Australia/NSW.standard.short=EST
+Australia/Perth.daylight.short=WST
+Australia/Perth.generic.short=WT
+Australia/Perth.standard.short=WST
+Australia/Queensland.daylight.short=EST
+Australia/Queensland.generic.short=ET
+Australia/Queensland.standard.short=EST
+Australia/South.daylight.short=CST
+Australia/South.generic.short=CT
+Australia/South.standard.short=CST
+Australia/Sydney.daylight.short=EST
+Australia/Sydney.generic.short=ET
+Australia/Sydney.standard.short=EST
+Australia/Tasmania.daylight.short=EST
+Australia/Tasmania.generic.short=ET
+Australia/Tasmania.standard.short=EST
+Australia/Victoria.daylight.short=EST
+Australia/Victoria.generic.short=ET
+Australia/Victoria.standard.short=EST
+Australia/West.daylight.short=WST
+Australia/West.generic.short=WT
+Australia/West.standard.short=WST
+Australia/Yancowinna.daylight.short=CST
+Australia/Yancowinna.generic.short=CT
+Australia/Yancowinna.standard.short=CST
+BET.daylight.short=BRST
+BET.generic.short=BRT
+BET.standard.short=BRT
+Brazil/Acre.daylight.short=ACST
+Brazil/Acre.generic.short=ACT
+Brazil/Acre.standard.short=ACT
+Brazil/DeNoronha.daylight.short=FNST
+Brazil/DeNoronha.generic.short=FNT
+Brazil/DeNoronha.standard.short=FNT
+Brazil/East.daylight.short=BRST
+Brazil/East.generic.short=BRT
+Brazil/East.standard.short=BRT
+Brazil/West.daylight.short=AMST
+Brazil/West.generic.short=AMT
+Brazil/West.standard.short=AMT
+BST.daylight.short=BDST
+BST.generic.short=BDT
+BST.standard.short=BDT
+Canada/Atlantic.daylight.short=ADT
+Canada/Atlantic.generic.short=AT
+Canada/Atlantic.standard.short=AST
+Canada/Central.daylight.short=CDT
+Canada/Central.generic.short=CT
+Canada/Central.standard.short=CST
+Canada/Eastern.daylight.short=EDT
+Canada/Eastern.generic.short=ET
+Canada/Eastern.standard.short=EST
+Canada/East-Saskatchewan.daylight.short=CDT
+Canada/East-Saskatchewan.generic.short=CT
+Canada/East-Saskatchewan.standard.short=CST
+Canada/Mountain.daylight.short=MDT
+Canada/Mountain.generic.short=MT
+Canada/Mountain.standard.short=MST
+Canada/Newfoundland.daylight.short=NDT
+Canada/Newfoundland.generic.short=NT
+Canada/Newfoundland.standard.short=NST
+Canada/Pacific.daylight.short=PDT
+Canada/Pacific.generic.short=PT
+Canada/Pacific.standard.short=PST
+Canada/Saskatchewan.daylight.short=CDT
+Canada/Saskatchewan.generic.short=CT
+Canada/Saskatchewan.standard.short=CST
+Canada/Yukon.daylight.short=PDT
+Canada/Yukon.generic.short=PT
+Canada/Yukon.standard.short=PST
+CAT.daylight.short=CAST
+CAT.generic.short=CAT
+CAT.standard.short=CAT
+CET.daylight.short=CEST
+CET.generic.short=CET
+CET.standard.short=CET
+Chile/Continental.daylight.short=CLST
+Chile/Continental.generic.short=CLT
+Chile/Continental.standard.short=CLT
+Chile/EasterIsland.daylight.short=EASST
+Chile/EasterIsland.generic.short=EAST
+Chile/EasterIsland.standard.short=EAST
+CNT.daylight.short=NDT
+CNT.generic.short=NT
+CNT.standard.short=NST
+CST6CDT.daylight.short=CDT
+CST6CDT.generic.short=CT
+CST6CDT.standard.short=CST
+CST.daylight.short=CDT
+CST.generic.short=CT
+CST.standard.short=CST
+CTT.daylight.short=CDT
+CTT.generic.short=CT
+CTT.standard.short=CST
+Cuba.daylight.short=CDT
+Cuba.generic.short=CT
+Cuba.standard.short=CST
+EAT.daylight.short=EAST
+EAT.generic.short=EAT
+EAT.standard.short=EAT
+ECT.daylight.short=CEST
+ECT.generic.short=CET
+ECT.standard.short=CET
+EET.daylight.short=EEST
+EET.generic.short=EET
+EET.standard.short=EET
+Egypt.daylight.short=EEST
+Egypt.generic.short=EET
+Egypt.standard.short=EET
+Eire.daylight.short=IST
+Eire.generic.short=IT
+Eire.standard.short=GMT
+EST5EDT.daylight.short=EDT
+EST5EDT.generic.short=ET
+EST5EDT.standard.short=EST
+EST.daylight.short=EDT
+EST.generic.short=ET
+EST.standard.short=EST
+Etc/Greenwich.daylight.short=GMT
+Etc/Greenwich.generic.short=GMT
+Etc/Greenwich.standard.short=GMT
+Etc/UCT.daylight.short=UTC
+Etc/UCT.generic.short=UTC
+Etc/UCT.standard.short=UTC
+Etc/Universal.daylight.short=UTC
+Etc/Universal.generic.short=UTC
+Etc/Universal.standard.short=UTC
+Etc/UTC.daylight.short=UTC
+Etc/UTC.generic.short=UTC
+Etc/UTC.standard.short=UTC
+Etc/Zulu.daylight.short=UTC
+Etc/Zulu.generic.short=UTC
+Etc/Zulu.standard.short=UTC
+Europe/Amsterdam.daylight.short=CEST
+Europe/Amsterdam.generic.short=CET
+Europe/Amsterdam.standard.short=CET
+Europe/Andorra.daylight.short=CEST
+Europe/Andorra.generic.short=CET
+Europe/Andorra.standard.short=CET
+Europe/Athens.daylight.short=EEST
+Europe/Athens.generic.short=EET
+Europe/Athens.standard.short=EET
+Europe/Belfast.daylight.short=BST
+Europe/Belfast.generic.short=BT
+Europe/Belfast.standard.short=GMT
+Europe/Belgrade.daylight.short=CEST
+Europe/Belgrade.generic.short=CET
+Europe/Belgrade.standard.short=CET
+Europe/Berlin.daylight.short=CEST
+Europe/Berlin.generic.short=CET
+Europe/Berlin.standard.short=CET
+Europe/Bratislava.daylight.short=CEST
+Europe/Bratislava.generic.short=CET
+Europe/Bratislava.standard.short=CET
+Europe/Brussels.daylight.short=CEST
+Europe/Brussels.generic.short=CET
+Europe/Brussels.standard.short=CET
+Europe/Bucharest.daylight.short=EEST
+Europe/Bucharest.generic.short=EET
+Europe/Bucharest.standard.short=EET
+Europe/Budapest.daylight.short=CEST
+Europe/Budapest.generic.short=CET
+Europe/Budapest.standard.short=CET
+Europe/Busingen.daylight.short=CEST
+Europe/Busingen.generic.short=CET
+Europe/Busingen.standard.short=CET
+Europe/Chisinau.daylight.short=EEST
+Europe/Chisinau.generic.short=EET
+Europe/Chisinau.standard.short=EET
+Europe/Copenhagen.daylight.short=CEST
+Europe/Copenhagen.generic.short=CET
+Europe/Copenhagen.standard.short=CET
+Europe/Dublin.daylight.short=IST
+Europe/Dublin.generic.short=IT
+Europe/Dublin.standard.short=GMT
+Europe/Gibraltar.daylight.short=CEST
+Europe/Gibraltar.generic.short=CET
+Europe/Gibraltar.standard.short=CET
+Europe/Guernsey.daylight.short=BST
+Europe/Guernsey.generic.short=BT
+Europe/Guernsey.standard.short=GMT
+Europe/Helsinki.daylight.short=EEST
+Europe/Helsinki.generic.short=EET
+Europe/Helsinki.standard.short=EET
+Europe/Isle_of_Man.daylight.short=BST
+Europe/Isle_of_Man.generic.short=BT
+Europe/Isle_of_Man.standard.short=GMT
+Europe/Istanbul.daylight.short=EEST
+Europe/Istanbul.generic.short=EET
+Europe/Istanbul.standard.short=EET
+Europe/Jersey.daylight.short=BST
+Europe/Jersey.generic.short=BT
+Europe/Jersey.standard.short=GMT
+Europe/Kaliningrad.daylight.short=FEST
+Europe/Kaliningrad.generic.short=FET
+Europe/Kaliningrad.standard.short=FET
+Europe/Kiev.daylight.short=EEST
+Europe/Kiev.generic.short=EET
+Europe/Kiev.standard.short=EET
+Europe/Lisbon.daylight.short=WEST
+Europe/Lisbon.generic.short=WET
+Europe/Lisbon.standard.short=WET
+Europe/Ljubljana.daylight.short=CEST
+Europe/Ljubljana.generic.short=CET
+Europe/Ljubljana.standard.short=CET
+Europe/London.daylight.short=BST
+Europe/London.generic.short=BT
+Europe/London.standard.short=GMT
+Europe/Luxembourg.daylight.short=CEST
+Europe/Luxembourg.generic.short=CET
+Europe/Luxembourg.standard.short=CET
+Europe/Madrid.daylight.short=CEST
+Europe/Madrid.generic.short=CET
+Europe/Madrid.standard.short=CET
+Europe/Malta.daylight.short=CEST
+Europe/Malta.generic.short=CET
+Europe/Malta.standard.short=CET
+Europe/Mariehamn.daylight.short=EEST
+Europe/Mariehamn.generic.short=EET
+Europe/Mariehamn.standard.short=EET
+Europe/Minsk.daylight.short=FEST
+Europe/Minsk.generic.short=FET
+Europe/Minsk.standard.short=FET
+Europe/Monaco.daylight.short=CEST
+Europe/Monaco.generic.short=CET
+Europe/Monaco.standard.short=CET
+Europe/Moscow.daylight.short=MSD
+Europe/Moscow.generic.short=MT
+Europe/Moscow.standard.short=MSK
+Europe/Nicosia.daylight.short=EEST
+Europe/Nicosia.generic.short=EET
+Europe/Nicosia.standard.short=EET
+Europe/Oslo.daylight.short=CEST
+Europe/Oslo.generic.short=CET
+Europe/Oslo.standard.short=CET
+Europe/Paris.daylight.short=CEST
+Europe/Paris.generic.short=CET
+Europe/Paris.standard.short=CET
+Europe/Podgorica.daylight.short=CEST
+Europe/Podgorica.generic.short=CET
+Europe/Podgorica.standard.short=CET
+Europe/Prague.daylight.short=CEST
+Europe/Prague.generic.short=CET
+Europe/Prague.standard.short=CET
+Europe/Riga.daylight.short=EEST
+Europe/Riga.generic.short=EET
+Europe/Riga.standard.short=EET
+Europe/Rome.daylight.short=CEST
+Europe/Rome.generic.short=CET
+Europe/Rome.standard.short=CET
+Europe/Samara.daylight.short=SAMST
+Europe/Samara.generic.short=SAMT
+Europe/Samara.standard.short=SAMT
+Europe/San_Marino.daylight.short=CEST
+Europe/San_Marino.generic.short=CET
+Europe/San_Marino.standard.short=CET
+Europe/Sarajevo.daylight.short=CEST
+Europe/Sarajevo.generic.short=CET
+Europe/Sarajevo.standard.short=CET
+Europe/Simferopol.daylight.short=EEST
+Europe/Simferopol.generic.short=EET
+Europe/Simferopol.standard.short=EET
+Europe/Skopje.daylight.short=CEST
+Europe/Skopje.generic.short=CET
+Europe/Skopje.standard.short=CET
+Europe/Sofia.daylight.short=EEST
+Europe/Sofia.generic.short=EET
+Europe/Sofia.standard.short=EET
+Europe/Stockholm.daylight.short=CEST
+Europe/Stockholm.generic.short=CET
+Europe/Stockholm.standard.short=CET
+Europe/Tallinn.daylight.short=EEST
+Europe/Tallinn.generic.short=EET
+Europe/Tallinn.standard.short=EET
+Europe/Tirane.daylight.short=CEST
+Europe/Tirane.generic.short=CET
+Europe/Tirane.standard.short=CET
+Europe/Tiraspol.daylight.short=EEST
+Europe/Tiraspol.generic.short=EET
+Europe/Tiraspol.standard.short=EET
+Europe/Uzhgorod.daylight.short=EEST
+Europe/Uzhgorod.generic.short=EET
+Europe/Uzhgorod.standard.short=EET
+Europe/Vaduz.daylight.short=CEST
+Europe/Vaduz.generic.short=CET
+Europe/Vaduz.standard.short=CET
+Europe/Vatican.daylight.short=CEST
+Europe/Vatican.generic.short=CET
+Europe/Vatican.standard.short=CET
+Europe/Vienna.daylight.short=CEST
+Europe/Vienna.generic.short=CET
+Europe/Vienna.standard.short=CET
+Europe/Vilnius.daylight.short=EEST
+Europe/Vilnius.generic.short=EET
+Europe/Vilnius.standard.short=EET
+Europe/Volgograd.daylight.short=VOLST
+Europe/Volgograd.generic.short=VOLT
+Europe/Volgograd.standard.short=VOLT
+Europe/Warsaw.daylight.short=CEST
+Europe/Warsaw.generic.short=CET
+Europe/Warsaw.standard.short=CET
+Europe/Zagreb.daylight.short=CEST
+Europe/Zagreb.generic.short=CET
+Europe/Zagreb.standard.short=CET
+Europe/Zaporozhye.daylight.short=EEST
+Europe/Zaporozhye.generic.short=EET
+Europe/Zaporozhye.standard.short=EET
+Europe/Zurich.daylight.short=CEST
+Europe/Zurich.generic.short=CET
+Europe/Zurich.standard.short=CET
+GB.daylight.short=BST
+GB-Eire.daylight.short=BST
+GB-Eire.generic.short=BT
+GB-Eire.standard.short=GMT
+GB.generic.short=BT
+GB.standard.short=GMT
+GMT.daylight.short=GMT
+GMT.generic.short=GMT
+GMT.standard.short=GMT
+Greenwich.daylight.short=GMT
+Greenwich.generic.short=GMT
+Greenwich.standard.short=GMT
+Hongkong.daylight.short=HKST
+Hongkong.generic.short=HKT
+Hongkong.standard.short=HKT
+HST.daylight.short=HDT
+HST.generic.short=HT
+HST.standard.short=HST
+Iceland.daylight.short=GMT
+Iceland.generic.short=GMT
+Iceland.standard.short=GMT
+IET.daylight.short=EDT
+IET.generic.short=ET
+IET.standard.short=EST
+Indian/Antananarivo.daylight.short=EAST
+Indian/Antananarivo.generic.short=EAT
+Indian/Antananarivo.standard.short=EAT
+Indian/Chagos.daylight.short=IOST
+Indian/Chagos.generic.short=IOT
+Indian/Chagos.standard.short=IOT
+Indian/Christmas.daylight.short=CXST
+Indian/Christmas.generic.short=CIT
+Indian/Christmas.standard.short=CXT
+Indian/Cocos.daylight.short=CCST
+Indian/Cocos.generic.short=CCT
+Indian/Cocos.standard.short=CCT
+Indian/Comoro.daylight.short=EAST
+Indian/Comoro.generic.short=EAT
+Indian/Comoro.standard.short=EAT
+Indian/Kerguelen.daylight.short=TFST
+Indian/Kerguelen.generic.short=TFT
+Indian/Kerguelen.standard.short=TFT
+Indian/Mahe.daylight.short=SCST
+Indian/Mahe.generic.short=SCT
+Indian/Mahe.standard.short=SCT
+Indian/Maldives.daylight.short=MVST
+Indian/Maldives.generic.short=MVT
+Indian/Maldives.standard.short=MVT
+Indian/Mauritius.daylight.short=MUST
+Indian/Mauritius.generic.short=MUT
+Indian/Mauritius.standard.short=MUT
+Indian/Mayotte.daylight.short=EAST
+Indian/Mayotte.generic.short=EAT
+Indian/Mayotte.standard.short=EAT
+Indian/Reunion.daylight.short=REST
+Indian/Reunion.generic.short=RET
+Indian/Reunion.standard.short=RET
+Iran.daylight.short=IRDT
+Iran.generic.short=IRT
+Iran.standard.short=IRST
+Israel.daylight.short=IDT
+Israel.generic.short=IT
+Israel.standard.short=IST
+IST.daylight.short=IDT
+IST.generic.short=IT
+IST.standard.short=IST
+Jamaica.daylight.short=EDT
+Jamaica.generic.short=ET
+Jamaica.standard.short=EST
+Japan.daylight.short=JDT
+Japan.generic.short=JT
+Japan.standard.short=JST
+JST.daylight.short=JDT
+JST.generic.short=JT
+JST.standard.short=JST
+Kwajalein.daylight.short=MHST
+Kwajalein.generic.short=MHT
+Kwajalein.standard.short=MHT
+Libya.daylight.short=EEST
+Libya.generic.short=EET
+Libya.standard.short=EET
+MET.daylight.short=MEST
+MET.generic.short=MET
+MET.standard.short=MET
+Mexico/BajaNorte.daylight.short=PDT
+Mexico/BajaNorte.generic.short=PT
+Mexico/BajaNorte.standard.short=PST
+Mexico/BajaSur.daylight.short=MDT
+Mexico/BajaSur.generic.short=MT
+Mexico/BajaSur.standard.short=MST
+Mexico/General.daylight.short=CDT
+Mexico/General.generic.short=CT
+Mexico/General.standard.short=CST
+MIT.daylight.short=WSDT
+MIT.generic.short=WST
+MIT.standard.short=WST
+MST7MDT.daylight.short=MDT
+MST7MDT.generic.short=MT
+MST7MDT.standard.short=MST
+MST.daylight.short=MDT
+MST.generic.short=MT
+MST.standard.short=MST
+Navajo.daylight.short=MDT
+Navajo.generic.short=MT
+Navajo.standard.short=MST
+NET.daylight.short=AMST
+NET.generic.short=AMT
+NET.standard.short=AMT
+NST.daylight.short=NZDT
+NST.generic.short=NZT
+NST.standard.short=NZST
+NZ-CHAT.daylight.short=CHADT
+NZ-CHAT.generic.short=CHAT
+NZ-CHAT.standard.short=CHAST
+NZ.daylight.short=NZDT
+NZ.generic.short=NZT
+NZ.standard.short=NZST
+Pacific/Apia.daylight.short=WSDT
+Pacific/Apia.generic.short=WST
+Pacific/Apia.standard.short=WST
+Pacific/Auckland.daylight.short=NZDT
+Pacific/Auckland.generic.short=NZT
+Pacific/Auckland.standard.short=NZST
+Pacific/Chatham.daylight.short=CHADT
+Pacific/Chatham.generic.short=CHAT
+Pacific/Chatham.standard.short=CHAST
+Pacific/Chuuk.daylight.short=CHUST
+Pacific/Chuuk.generic.short=CHUT
+Pacific/Chuuk.standard.short=CHUT
+Pacific/Easter.daylight.short=EASST
+Pacific/Easter.generic.short=EAST
+Pacific/Easter.standard.short=EAST
+Pacific/Efate.daylight.short=VUST
+Pacific/Efate.generic.short=VUT
+Pacific/Efate.standard.short=VUT
+Pacific/Enderbury.daylight.short=PHOST
+Pacific/Enderbury.generic.short=PHOT
+Pacific/Enderbury.standard.short=PHOT
+Pacific/Fakaofo.daylight.short=TKST
+Pacific/Fakaofo.generic.short=TKT
+Pacific/Fakaofo.standard.short=TKT
+Pacific/Fiji.daylight.short=FJST
+Pacific/Fiji.generic.short=FJT
+Pacific/Fiji.standard.short=FJT
+Pacific/Funafuti.daylight.short=TVST
+Pacific/Funafuti.generic.short=TVT
+Pacific/Funafuti.standard.short=TVT
+Pacific/Galapagos.daylight.short=GALST
+Pacific/Galapagos.generic.short=GALT
+Pacific/Galapagos.standard.short=GALT
+Pacific/Gambier.daylight.short=GAMST
+Pacific/Gambier.generic.short=GAMT
+Pacific/Gambier.standard.short=GAMT
+Pacific/Guadalcanal.daylight.short=SBST
+Pacific/Guadalcanal.generic.short=SBT
+Pacific/Guadalcanal.standard.short=SBT
+Pacific/Guam.daylight.short=ChDT
+Pacific/Guam.generic.short=ChT
+Pacific/Guam.standard.short=ChST
+Pacific/Honolulu.daylight.short=HDT
+Pacific/Honolulu.generic.short=HT
+Pacific/Honolulu.standard.short=HST
+Pacific/Johnston.daylight.short=HDT
+Pacific/Johnston.generic.short=HT
+Pacific/Johnston.standard.short=HST
+Pacific/Kiritimati.daylight.short=LINST
+Pacific/Kiritimati.generic.short=LINT
+Pacific/Kiritimati.standard.short=LINT
+Pacific/Kosrae.daylight.short=KOSST
+Pacific/Kosrae.generic.short=KOST
+Pacific/Kosrae.standard.short=KOST
+Pacific/Kwajalein.daylight.short=MHST
+Pacific/Kwajalein.generic.short=MHT
+Pacific/Kwajalein.standard.short=MHT
+Pacific/Majuro.daylight.short=MHST
+Pacific/Majuro.generic.short=MHT
+Pacific/Majuro.standard.short=MHT
+Pacific/Marquesas.daylight.short=MARST
+Pacific/Marquesas.generic.short=MART
+Pacific/Marquesas.standard.short=MART
+Pacific/Midway.daylight.short=SDT
+Pacific/Midway.generic.short=ST
+Pacific/Midway.standard.short=SST
+Pacific/Nauru.daylight.short=NRST
+Pacific/Nauru.generic.short=NRT
+Pacific/Nauru.standard.short=NRT
+Pacific/Niue.daylight.short=NUST
+Pacific/Niue.generic.short=NUT
+Pacific/Niue.standard.short=NUT
+Pacific/Norfolk.daylight.short=NFST
+Pacific/Norfolk.generic.short=NFT
+Pacific/Norfolk.standard.short=NFT
+Pacific/Noumea.daylight.short=NCST
+Pacific/Noumea.generic.short=NCT
+Pacific/Noumea.standard.short=NCT
+Pacific/Pago_Pago.daylight.short=SDT
+Pacific/Pago_Pago.generic.short=ST
+Pacific/Pago_Pago.standard.short=SST
+Pacific/Palau.daylight.short=PWST
+Pacific/Palau.generic.short=PWT
+Pacific/Palau.standard.short=PWT
+Pacific/Pitcairn.daylight.short=PDT
+Pacific/Pitcairn.generic.short=PT
+Pacific/Pitcairn.standard.short=PST
+Pacific/Pohnpei.daylight.short=PONST
+Pacific/Pohnpei.generic.short=PONT
+Pacific/Pohnpei.standard.short=PONT
+Pacific/Ponape.daylight.short=PONST
+Pacific/Ponape.generic.short=PONT
+Pacific/Ponape.standard.short=PONT
+Pacific/Port_Moresby.daylight.short=PGST
+Pacific/Port_Moresby.generic.short=PGT
+Pacific/Port_Moresby.standard.short=PGT
+Pacific/Rarotonga.daylight.short=CKHST
+Pacific/Rarotonga.generic.short=CKT
+Pacific/Rarotonga.standard.short=CKT
+Pacific/Saipan.daylight.short=ChDT
+Pacific/Saipan.generic.short=ChT
+Pacific/Saipan.standard.short=ChST
+Pacific/Samoa.daylight.short=SDT
+Pacific/Samoa.generic.short=ST
+Pacific/Samoa.standard.short=SST
+Pacific/Tahiti.daylight.short=TAHST
+Pacific/Tahiti.generic.short=TAHT
+Pacific/Tahiti.standard.short=TAHT
+Pacific/Tarawa.daylight.short=GILST
+Pacific/Tarawa.generic.short=GILT
+Pacific/Tarawa.standard.short=GILT
+Pacific/Tongatapu.daylight.short=TOST
+Pacific/Tongatapu.generic.short=TOT
+Pacific/Tongatapu.standard.short=TOT
+Pacific/Truk.daylight.short=CHUST
+Pacific/Truk.generic.short=CHUT
+Pacific/Truk.standard.short=CHUT
+Pacific/Wake.daylight.short=WAKST
+Pacific/Wake.generic.short=WAKT
+Pacific/Wake.standard.short=WAKT
+Pacific/Wallis.daylight.short=WFST
+Pacific/Wallis.generic.short=WFT
+Pacific/Wallis.standard.short=WFT
+Pacific/Yap.daylight.short=CHUST
+Pacific/Yap.generic.short=CHUT
+Pacific/Yap.standard.short=CHUT
+PLT.daylight.short=PKST
+PLT.generic.short=PKT
+PLT.standard.short=PKT
+PNT.daylight.short=MDT
+PNT.generic.short=MT
+PNT.standard.short=MST
+Poland.daylight.short=CEST
+Poland.generic.short=CET
+Poland.standard.short=CET
+Portugal.daylight.short=WEST
+Portugal.generic.short=WET
+Portugal.standard.short=WET
+PRC.daylight.short=CDT
+PRC.generic.short=CT
+PRC.standard.short=CST
+PRT.daylight.short=ADT
+PRT.generic.short=AT
+PRT.standard.short=AST
+PST8PDT.daylight.short=PDT
+PST8PDT.generic.short=PT
+PST8PDT.standard.short=PST
+PST.daylight.short=PDT
+PST.generic.short=PT
+PST.standard.short=PST
+ROK.daylight.short=KDT
+ROK.generic.short=KT
+ROK.standard.short=KST
+Singapore.daylight.short=SGST
+Singapore.generic.short=SGT
+Singapore.standard.short=SGT
+SST.daylight.short=SBST
+SST.generic.short=SBT
+SST.standard.short=SBT
+SystemV/AST4ADT.daylight.short=ADT
+SystemV/AST4ADT.generic.short=AT
+SystemV/AST4ADT.standard.short=AST
+SystemV/AST4.daylight.short=ADT
+SystemV/AST4.generic.short=AT
+SystemV/AST4.standard.short=AST
+SystemV/CST6CDT.daylight.short=CDT
+SystemV/CST6CDT.generic.short=CT
+SystemV/CST6CDT.standard.short=CST
+SystemV/CST6.daylight.short=CDT
+SystemV/CST6.generic.short=CT
+SystemV/CST6.standard.short=CST
+SystemV/EST5.daylight.short=EDT
+SystemV/EST5EDT.daylight.short=EDT
+SystemV/EST5EDT.generic.short=ET
+SystemV/EST5EDT.standard.short=EST
+SystemV/EST5.generic.short=ET
+SystemV/EST5.standard.short=EST
+SystemV/HST10.daylight.short=HDT
+SystemV/HST10.generic.short=HT
+SystemV/HST10.standard.short=HST
+SystemV/MST7.daylight.short=MDT
+SystemV/MST7.generic.short=MT
+SystemV/MST7MDT.daylight.short=MDT
+SystemV/MST7MDT.generic.short=MT
+SystemV/MST7MDT.standard.short=MST
+SystemV/MST7.standard.short=MST
+SystemV/PST8.daylight.short=PDT
+SystemV/PST8.generic.short=PT
+SystemV/PST8PDT.daylight.short=PDT
+SystemV/PST8PDT.generic.short=PT
+SystemV/PST8PDT.standard.short=PST
+SystemV/PST8.standard.short=PST
+SystemV/YST9.daylight.short=AKDT
+SystemV/YST9.generic.short=AKT
+SystemV/YST9.standard.short=AKST
+SystemV/YST9YDT.daylight.short=AKDT
+SystemV/YST9YDT.generic.short=AKT
+SystemV/YST9YDT.standard.short=AKST
+Turkey.daylight.short=EEST
+Turkey.generic.short=EET
+Turkey.standard.short=EET
+UCT.daylight.short=UTC
+UCT.generic.short=UTC
+UCT.standard.short=UTC
+Universal.daylight.short=UTC
+Universal.generic.short=UTC
+Universal.standard.short=UTC
+US/Alaska.daylight.short=AKDT
+US/Alaska.generic.short=AKT
+US/Alaska.standard.short=AKST
+US/Aleutian.daylight.short=HADT
+US/Aleutian.generic.short=HAT
+US/Aleutian.standard.short=HAST
+US/Arizona.daylight.short=MDT
+US/Arizona.generic.short=MT
+US/Arizona.standard.short=MST
+US/Central.daylight.short=CDT
+US/Central.generic.short=CT
+US/Central.standard.short=CST
+US/Eastern.daylight.short=EDT
+US/Eastern.generic.short=ET
+US/Eastern.standard.short=EST
+US/East-Indiana.daylight.short=EDT
+US/East-Indiana.generic.short=ET
+US/East-Indiana.standard.short=EST
+US/Hawaii.daylight.short=HDT
+US/Hawaii.generic.short=HT
+US/Hawaii.standard.short=HST
+US/Indiana-Starke.daylight.short=CDT
+US/Indiana-Starke.generic.short=CT
+US/Indiana-Starke.standard.short=CST
+US/Michigan.daylight.short=EDT
+US/Michigan.generic.short=ET
+US/Michigan.standard.short=EST
+US/Mountain.daylight.short=MDT
+US/Mountain.generic.short=MT
+US/Mountain.standard.short=MST
+US/Pacific.daylight.short=PDT
+US/Pacific.generic.short=PT
+US/Pacific-New.daylight.short=PDT
+US/Pacific-New.generic.short=PT
+US/Pacific-New.standard.short=PST
+US/Pacific.standard.short=PST
+US/Samoa.daylight.short=SDT
+US/Samoa.generic.short=ST
+US/Samoa.standard.short=SST
+UTC.daylight.short=UTC
+UTC.generic.short=UTC
+UTC.standard.short=UTC
+VST.daylight.short=ICST
+VST.generic.short=ICT
+VST.standard.short=ICT
+WET.daylight.short=WEST
+WET.generic.short=WET
+WET.standard.short=WET
+W-SU.daylight.short=MSD
+W-SU.generic.short=MT
+W-SU.standard.short=MSK
+Zulu.daylight.short=UTC
+Zulu.generic.short=UTC
+Zulu.standard.short=UTC
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_ja.properties Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,651 @@
+ACT.daylight.long=\u4E2D\u90E8\u590F\u6642\u9593(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)
+ACT.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)
+ACT.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)
+AET.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+AET.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+AET.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+AGT.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+ART.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+AST.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593
+Africa/Abidjan.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Africa/Accra.generic.long=\u30AC\u30FC\u30CA\u6A19\u6E96\u6642
+Africa/Addis_Ababa.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Algiers.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Africa/Asmara.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Asmera.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Bamako.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Africa/Bangui.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Banjul.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Africa/Bissau.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Africa/Blantyre.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Brazzaville.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Bujumbura.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Cairo.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Africa/Casablanca.generic.long=\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Africa/Ceuta.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Africa/Conakry.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Africa/Dakar.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Africa/Dar_es_Salaam.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Djibouti.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Douala.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/El_Aaiun.generic.long=\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Africa/Freetown.generic.long=\u30B7\u30A8\u30E9\u30EC\u30AA\u30CD\u6642\u9593
+Africa/Gaborone.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Harare.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Johannesburg.generic.long=\u5357\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Juba.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Kampala.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Khartoum.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Kigali.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Kinshasa.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Lagos.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Libreville.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Lome.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Africa/Luanda.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Lubumbashi.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Lusaka.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Malabo.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Maputo.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Maseru.generic.long=\u5357\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Mbabane.generic.long=\u5357\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Mogadishu.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Monrovia.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Africa/Nairobi.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Ndjamena.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Niamey.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Nouakchott.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Africa/Ouagadougou.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Africa/Porto-Novo.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Africa/Sao_Tome.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Africa/Timbuktu.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Africa/Tripoli.generic.long=\u6771\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593
+Africa/Tunis.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Africa/Windhoek.generic.long=\u897F\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+America/Adak.generic.long=\u30CF\u30EF\u30A4\u30FB\u30A2\u30EA\u30E5\u30FC\u30B7\u30E3\u30F3\u6642\u9593
+America/Anchorage.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593
+America/Anguilla.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Antigua.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Araguaina.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593
+America/Argentina/Buenos_Aires.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Argentina/Catamarca.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Argentina/ComodRivadavia.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Argentina/Cordoba.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Argentina/Jujuy.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Argentina/La_Rioja.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Argentina/Mendoza.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Argentina/Rio_Gallegos.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Argentina/Salta.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Argentina/San_Juan.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Argentina/San_Luis.generic.long=\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3\u6642\u9593
+America/Argentina/Tucuman.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Argentina/Ushuaia.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Aruba.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Asuncion.generic.long=\u30D1\u30E9\u30B0\u30A2\u30A4\u6642\u9593
+America/Atikokan.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Atka.generic.long=\u30CF\u30EF\u30A4\u30FB\u30A2\u30EA\u30E5\u30FC\u30B7\u30E3\u30F3\u6642\u9593
+America/Bahia.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593
+America/Bahia_Banderas.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Barbados.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Belem.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593
+America/Belize.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Blanc-Sablon.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Boa_Vista.generic.long=\u30A2\u30DE\u30BE\u30F3\u6642\u9593
+America/Bogota.generic.long=\u30B3\u30ED\u30F3\u30D3\u30A2\u6642\u9593
+America/Boise.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Buenos_Aires.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Cambridge_Bay.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Campo_Grande.generic.long=\u30A2\u30DE\u30BE\u30F3\u6642\u9593
+America/Cancun.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Caracas.generic.long=\u30D9\u30CD\u30BA\u30A8\u30E9\u6642\u9593
+America/Catamarca.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Cayenne.generic.long=\u30D5\u30E9\u30F3\u30B9\u9818\u30AE\u30A2\u30CA\u6642\u9593
+America/Cayman.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Chicago.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Chihuahua.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Coral_Harbour.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Cordoba.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Costa_Rica.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Creston.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Cuiaba.generic.long=\u30A2\u30DE\u30BE\u30F3\u6642\u9593
+America/Curacao.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Danmarkshavn.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+America/Dawson.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+America/Dawson_Creek.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Denver.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Detroit.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Dominica.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Edmonton.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Eirunepe.generic.long=\u30a2\u30af\u30ec\u6642\u9593
+America/El_Salvador.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Ensenada.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+America/Fort_Wayne.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Fortaleza.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593
+America/Glace_Bay.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Godthab.generic.long=\u897F\u90E8\u30B0\u30EA\u30FC\u30F3\u30E9\u30F3\u30C9\u6642\u9593
+America/Goose_Bay.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Grand_Turk.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Grenada.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Guadeloupe.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Guatemala.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Guayaquil.generic.long=\u30A8\u30AF\u30A2\u30C9\u30EB\u6642\u9593
+America/Guyana.generic.long=\u30AC\u30A4\u30A2\u30CA\u6642\u9593
+America/Halifax.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Havana.generic.long=\u30AD\u30E5\u30FC\u30D0\u6642\u9593
+America/Hermosillo.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Indiana/Indianapolis.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Indiana/Knox.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Indiana/Marengo.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Indiana/Petersburg.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Indiana/Tell_City.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Indiana/Vevay.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Indiana/Vincennes.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Indiana/Winamac.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Indianapolis.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Inuvik.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Iqaluit.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Jamaica.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Jujuy.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Juneau.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593
+America/Kentucky/Louisville.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Kentucky/Monticello.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Knox_IN.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Kralendijk.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/La_Paz.generic.long=\u30DC\u30EA\u30D3\u30A2\u6642\u9593
+America/Lima.generic.long=\u30DA\u30EB\u30FC\u6642\u9593
+America/Los_Angeles.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+America/Louisville.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Lower_Princes.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Maceio.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593
+America/Managua.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Manaus.generic.long=\u30A2\u30DE\u30BE\u30F3\u6642\u9593
+America/Marigot.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Martinique.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Matamoros.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Mazatlan.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Mendoza.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Menominee.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Merida.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Metlakatla.daylight.long=\u30E1\u30C8\u30E9\u30AB\u30C8\u30E9\u590F\u6642\u9593
+America/Metlakatla.generic.long=\u30E1\u30C8\u30E9\u30AB\u30C8\u30E9\u6642\u9593
+America/Metlakatla.standard.long=\u30E1\u30C8\u30E9\u30AB\u30C8\u30E9\u6A19\u6E96\u6642\u9593
+America/Mexico_City.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Miquelon.generic.long=\u30D4\u30A8\u30FC\u30EB\u30FB\u30DF\u30AF\u30ED\u30F3\u6642\u9593
+America/Moncton.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Monterrey.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Montevideo.generic.long=\u30A6\u30EB\u30B0\u30A2\u30A4\u6642\u9593
+America/Montreal.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Montserrat.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Nassau.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/New_York.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Nipigon.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Nome.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593
+America/Noronha.generic.long=\u30D5\u30A7\u30EB\u30CA\u30F3\u30C9\u30FB\u30C7\u30FB\u30CE\u30ED\u30FC\u30CB\u30E3\u6642\u9593
+America/North_Dakota/Beulah.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/North_Dakota/Center.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/North_Dakota/New_Salem.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Ojinaga.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Panama.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Pangnirtung.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Paramaribo.generic.long=\u30B9\u30EA\u30CA\u30E0\u6642\u9593
+America/Phoenix.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Port-au-Prince.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Port_of_Spain.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Porto_Acre.generic.long=\u30a2\u30af\u30ec\u6642\u9593
+America/Porto_Velho.generic.long=\u30A2\u30DE\u30BE\u30F3\u6642\u9593
+America/Puerto_Rico.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Rainy_River.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Rankin_Inlet.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Recife.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593
+America/Regina.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Resolute.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Rio_Branco.generic.long=\u30a2\u30af\u30ec\u6642\u9593
+America/Rosario.generic.long=\u30A2\u30EB\u30BC\u30F3\u30C1\u30F3\u6642\u9593
+America/Santa_Isabel.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+America/Santarem.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593
+America/Santiago.generic.long=\u30C1\u30EA\u6642\u9593
+America/Santo_Domingo.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Sao_Paulo.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593
+America/Scoresbysund.generic.long=\u6771\u90E8\u30B0\u30EA\u30FC\u30F3\u30E9\u30F3\u30C9\u6642\u9593
+America/Shiprock.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+America/Sitka.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593
+America/St_Barthelemy.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/St_Johns.generic.long=\u30CB\u30E5\u30FC\u30D5\u30A1\u30F3\u30C9\u30E9\u30F3\u30C9\u6642\u9593
+America/St_Kitts.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/St_Lucia.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/St_Thomas.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/St_Vincent.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Swift_Current.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Tegucigalpa.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Thule.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Thunder_Bay.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Tijuana.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+America/Toronto.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+America/Tortola.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Vancouver.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+America/Virgin.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+America/Whitehorse.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+America/Winnipeg.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+America/Yakutat.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593
+America/Yellowknife.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+Antarctica/Casey.daylight.long=\u897F\u90E8\u590F\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Antarctica/Casey.generic.long=\u897F\u90E8\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Antarctica/Casey.standard.long=\u897F\u90E8\u6A19\u6E96\u6642(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Antarctica/Davis.generic.long=\u30C7\u30FC\u30D3\u30B9\u6642\u9593
+Antarctica/DumontDUrville.generic.long=\u30C7\u30E5\u30E2\u30F3\u30FB\u30C7\u30E5\u30EB\u30D3\u30EB\u6642\u9593
+Antarctica/Macquarie.daylight.long=\u30DE\u30C3\u30B3\u30FC\u30EA\u30FC\u5CF6\u590F\u6642\u9593
+Antarctica/Macquarie.generic.long=\u30DE\u30C3\u30B3\u30FC\u30EA\u30FC\u5CF6\u6642\u9593
+Antarctica/Macquarie.standard.long=\u30DE\u30C3\u30B3\u30FC\u30EA\u30FC\u5CF6\u6642\u9593
+Antarctica/Mawson.generic.long=\u30E2\u30FC\u30BD\u30F3\u6642\u9593
+Antarctica/McMurdo.generic.long=\u30CB\u30E5\u30FC\u30B8\u30FC\u30E9\u30F3\u30C9\u6642\u9593
+Antarctica/Palmer.generic.long=\u30C1\u30EA\u6642\u9593
+Antarctica/Rothera.generic.long=\u30ED\u30BC\u30E9\u6642\u9593
+Antarctica/South_Pole.generic.long=\u30CB\u30E5\u30FC\u30B8\u30FC\u30E9\u30F3\u30C9\u6642\u9593
+Antarctica/Syowa.generic.long=\u662D\u548C\u57FA\u5730\u6642\u9593
+Antarctica/Vostok.generic.long=\u30DC\u30B9\u30C8\u30FC\u30AF\u6642\u9593
+Arctic/Longyearbyen.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Asia/Aden.generic.long=\u30A2\u30E9\u30D3\u30A2\u6642\u9593
+Asia/Almaty.generic.long=\u30A2\u30EB\u30DE\u30A2\u30BF\u6642\u9593
+Asia/Amman.generic.long=\u30a2\u30e9\u30d3\u30a2\u6642\u9593
+Asia/Anadyr.generic.long=\u30A2\u30CA\u30C7\u30A3\u30EA\u6642\u9593
+Asia/Aqtau.generic.long=\u30A2\u30AF\u30BF\u30A6\u6642\u9593
+Asia/Aqtobe.generic.long=\u30A2\u30AF\u30C8\u30D9\u6642\u9593
+Asia/Ashgabat.generic.long=\u30C8\u30EB\u30AF\u30E1\u30CB\u30B9\u30BF\u30F3\u6642\u9593
+Asia/Ashkhabad.generic.long=\u30C8\u30EB\u30AF\u30E1\u30CB\u30B9\u30BF\u30F3\u6642\u9593
+Asia/Baghdad.generic.long=\u30A2\u30E9\u30D3\u30A2\u6642\u9593
+Asia/Bahrain.generic.long=\u30A2\u30E9\u30D3\u30A2\u6642\u9593
+Asia/Baku.generic.long=\u30A2\u30BC\u30EB\u30D0\u30A4\u30B8\u30E3\u30F3\u6642\u9593
+Asia/Bangkok.generic.long=\u30A4\u30F3\u30C9\u30B7\u30CA\u6642\u9593
+Asia/Beirut.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Asia/Bishkek.generic.long=\u30AD\u30EB\u30AE\u30B9\u6642\u9593
+Asia/Brunei.generic.long=\u30D6\u30EB\u30CD\u30A4\u6642\u9593
+Asia/Calcutta.generic.long=\u30A4\u30F3\u30C9\u6642\u9593
+Asia/Choibalsan.generic.long=\u30C1\u30E7\u30A4\u30D0\u30EB\u30B5\u30F3\u6642\u9593
+Asia/Chongqing.generic.long=\u4E2D\u56FD\u6642\u9593
+Asia/Chungking.generic.long=\u4E2D\u56FD\u6642\u9593
+Asia/Colombo.generic.long=\u30A4\u30F3\u30C9\u6642\u9593
+Asia/Dacca.generic.long=\u30D0\u30F3\u30B0\u30E9\u30C7\u30B7\u30E5\u6642\u9593
+Asia/Damascus.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Asia/Dhaka.generic.long=\u30D0\u30F3\u30B0\u30E9\u30C7\u30B7\u30E5\u6642\u9593
+Asia/Dili.generic.long=\u6771\u30C6\u30A3\u30E2\u30FC\u30EB\u6642\u9593
+Asia/Dubai.generic.long=\u6E7E\u5CB8\u6642\u9593
+Asia/Dushanbe.generic.long=\u30BF\u30B8\u30AD\u30B9\u30BF\u30F3\u6642\u9593
+Asia/Gaza.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Asia/Harbin.generic.long=\u4E2D\u56FD\u6642\u9593
+Asia/Hebron.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Asia/Ho_Chi_Minh.generic.long=\u30A4\u30F3\u30C9\u30B7\u30CA\u6642\u9593
+Asia/Hong_Kong.generic.long=\u9999\u6E2F\u6642\u9593
+Asia/Hovd.generic.long=\u30DB\u30D6\u30C9\u6642\u9593
+Asia/Irkutsk.generic.long=\u30A4\u30EB\u30AF\u30FC\u30C4\u30AF\u6642\u9593
+Asia/Istanbul.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Asia/Jakarta.generic.long=\u897F\u90E8\u30A4\u30F3\u30C9\u30CD\u30B7\u30A2\u6642\u9593
+Asia/Jayapura.generic.long=\u6771\u90E8\u30A4\u30F3\u30C9\u30CD\u30B7\u30A2\u6642\u9593
+Asia/Jerusalem.generic.long=\u30A4\u30B9\u30E9\u30A8\u30EB\u6642\u9593
+Asia/Kabul.generic.long=\u30A2\u30D5\u30AC\u30CB\u30B9\u30BF\u30F3\u6642\u9593
+Asia/Kamchatka.generic.long=\u30DA\u30C8\u30ED\u30D1\u30D6\u30ED\u30D5\u30B9\u30AF\u30FB\u30AB\u30E0\u30C1\u30E3\u30C4\u30AD\u30FC\u6642\u9593
+Asia/Karachi.generic.long=\u30D1\u30AD\u30B9\u30BF\u30F3\u6642\u9593
+Asia/Kashgar.generic.long=\u4E2D\u56FD\u6642\u9593
+Asia/Kathmandu.generic.long=\u30CD\u30D1\u30FC\u30EB\u6642\u9593
+Asia/Katmandu.generic.long=\u30CD\u30D1\u30FC\u30EB\u6642\u9593
+Asia/Khandyga.daylight.long=\u30CF\u30F3\u30C9\u30A5\u30A4\u30AC\u590F\u6642\u9593
+Asia/Khandyga.generic.long=\u30CF\u30F3\u30C9\u30A5\u30A4\u30AC\u6642\u9593
+Asia/Khandyga.standard.long=\u30CF\u30F3\u30C9\u30A5\u30A4\u30AC\u6642\u9593
+Asia/Kolkata.generic.long=\u30A4\u30F3\u30C9\u6642\u9593
+Asia/Krasnoyarsk.generic.long=\u30AF\u30E9\u30B9\u30CE\u30E4\u30EB\u30B9\u30AF\u6642\u9593
+Asia/Kuala_Lumpur.generic.long=\u30DE\u30EC\u30FC\u30B7\u30A2\u6642\u9593
+Asia/Kuching.generic.long=\u30DE\u30EC\u30FC\u30B7\u30A2\u6642\u9593
+Asia/Kuwait.generic.long=\u30A2\u30E9\u30D3\u30A2\u6642\u9593
+Asia/Macao.generic.long=\u4E2D\u56FD\u6642\u9593
+Asia/Macau.generic.long=\u4E2D\u56FD\u6642\u9593
+Asia/Magadan.generic.long=\u30DE\u30AC\u30C0\u30F3\u6642\u9593
+Asia/Makassar.generic.long=\u4E2D\u90E8\u30A4\u30F3\u30C9\u30CD\u30B7\u30A2\u6642\u9593
+Asia/Manila.generic.long=\u30D5\u30A3\u30EA\u30D4\u30F3\u6642\u9593
+Asia/Muscat.generic.long=\u6E7E\u5CB8\u6642\u9593
+Asia/Nicosia.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Asia/Novokuznetsk.generic.long=\u30CE\u30F4\u30A9\u30B7\u30D3\u30EB\u30B9\u30AF\u6642\u9593
+Asia/Novosibirsk.generic.long=\u30CE\u30F4\u30A9\u30B7\u30D3\u30EB\u30B9\u30AF\u6642\u9593
+Asia/Omsk.generic.long=\u30AA\u30E0\u30B9\u30AF\u6642\u9593
+Asia/Oral.generic.long=\u30AA\u30E9\u30EB\u6642\u9593
+Asia/Phnom_Penh.generic.long=\u30A4\u30F3\u30C9\u30B7\u30CA\u6642\u9593
+Asia/Pontianak.generic.long=\u897F\u90E8\u30A4\u30F3\u30C9\u30CD\u30B7\u30A2\u6642\u9593
+Asia/Pyongyang.generic.long=\u97D3\u56FD\u6642\u9593
+Asia/Qatar.generic.long=\u30A2\u30E9\u30D3\u30A2\u6642\u9593
+Asia/Qyzylorda.generic.long=\u30AF\u30BA\u30ED\u30EB\u30C0\u6642\u9593
+Asia/Rangoon.generic.long=\u30DF\u30E3\u30F3\u30DE\u30FC\u6642\u9593
+Asia/Saigon.generic.long=\u30A4\u30F3\u30C9\u30B7\u30CA\u6642\u9593
+Asia/Sakhalin.generic.long=\u30B5\u30CF\u30EA\u30F3\u6642\u9593
+Asia/Samarkand.generic.long=\u30A6\u30BA\u30D9\u30AD\u30B9\u30BF\u30F3\u6642\u9593
+Asia/Seoul.generic.long=\u97D3\u56FD\u6642\u9593
+Asia/Shanghai.generic.long=\u4E2D\u56FD\u6642\u9593
+Asia/Singapore.generic.long=\u30B7\u30F3\u30AC\u30DD\u30FC\u30EB\u6642\u9593
+Asia/Taipei.generic.long=\u4E2D\u56FD\u6642\u9593
+Asia/Tashkent.generic.long=\u30A6\u30BA\u30D9\u30AD\u30B9\u30BF\u30F3\u6642\u9593
+Asia/Tbilisi.generic.long=\u30B0\u30EB\u30B8\u30A2\u6642\u9593
+Asia/Tehran.generic.long=\u30A4\u30E9\u30F3\u6642\u9593
+Asia/Tel_Aviv.generic.long=\u30A4\u30B9\u30E9\u30A8\u30EB\u6642\u9593
+Asia/Thimbu.generic.long=\u30D6\u30FC\u30BF\u30F3\u6642\u9593
+Asia/Thimphu.generic.long=\u30D6\u30FC\u30BF\u30F3\u6642\u9593
+Asia/Tokyo.generic.long=\u65E5\u672C\u6642\u9593
+Asia/Ujung_Pandang.generic.long=\u4E2D\u90E8\u30A4\u30F3\u30C9\u30CD\u30B7\u30A2\u6642\u9593
+Asia/Ulaanbaatar.generic.long=\u30A6\u30E9\u30F3\u30D0\u30FC\u30C8\u30EB\u6642\u9593
+Asia/Ulan_Bator.generic.long=\u30A6\u30E9\u30F3\u30D0\u30FC\u30C8\u30EB\u6642\u9593
+Asia/Urumqi.generic.long=\u4E2D\u56FD\u6642\u9593
+Asia/Ust-Nera.daylight.long=\u30A6\u30B9\u30C1\u30CD\u30E9\u590F\u6642\u9593
+Asia/Ust-Nera.generic.long=\u30A6\u30B9\u30C1\u30CD\u30E9\u6642\u9593
+Asia/Ust-Nera.standard.long=\u30A6\u30B9\u30C1\u30CD\u30E9\u6642\u9593
+Asia/Vientiane.generic.long=\u30A4\u30F3\u30C9\u30B7\u30CA\u6642\u9593
+Asia/Vladivostok.generic.long=\u30A6\u30E9\u30B8\u30AA\u30B9\u30C8\u30AF\u6642\u9593
+Asia/Yakutsk.generic.long=\u30E4\u30AF\u30FC\u30C4\u30AF\u6642\u9593
+Asia/Yekaterinburg.generic.long=\u30A8\u30AB\u30C6\u30EA\u30F3\u30D6\u30EB\u30AF\u6642\u9593
+Asia/Yerevan.generic.long=\u30A2\u30EB\u30E1\u30CB\u30A2\u6642\u9593
+Atlantic/Azores.generic.long=\u30A2\u30BE\u30EC\u30B9\u6642\u9593
+Atlantic/Bermuda.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+Atlantic/Canary.generic.long=\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Atlantic/Cape_Verde.generic.long=\u30AB\u30FC\u30DC\u30D9\u30EB\u30C7\u6642\u9593
+Atlantic/Faeroe.generic.long=\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Atlantic/Faroe.generic.long=\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Atlantic/Jan_Mayen.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Atlantic/Madeira.generic.long=\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Atlantic/Reykjavik.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Atlantic/South_Georgia.generic.long=\u5357\u30B8\u30E7\u30FC\u30B8\u30A2\u6642\u9593
+Atlantic/St_Helena.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Atlantic/Stanley.generic.long=\u30D5\u30A9\u30FC\u30AF\u30E9\u30F3\u30C9\u8AF8\u5CF6\u6642\u9593
+Australia/ACT.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/ACT.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/ACT.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Adelaide.daylight.long=\u4E2D\u90E8\u590F\u6642\u9593(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/Adelaide.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/Adelaide.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/Brisbane.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)
+Australia/Brisbane.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)
+Australia/Brisbane.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)
+Australia/Broken_Hill.daylight.long=\u4E2D\u90E8\u590F\u6642\u9593(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Broken_Hill.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Broken_Hill.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Canberra.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Canberra.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Canberra.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Currie.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Currie.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Currie.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Darwin.daylight.long=\u4E2D\u90E8\u590F\u6642\u9593(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)
+Australia/Darwin.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)
+Australia/Darwin.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)
+Australia/Eucla.daylight.long=\u4E2D\u897F\u90E8\u590F\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/Eucla.generic.long=\u4E2D\u897F\u90E8\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/Eucla.standard.long=\u4E2D\u897F\u90E8\u6A19\u6E96\u6642(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/Hobart.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30BF\u30B9\u30DE\u30CB\u30A2)
+Australia/Hobart.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30BF\u30B9\u30DE\u30CB\u30A2)
+Australia/Hobart.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30BF\u30B9\u30DE\u30CB\u30A2)
+Australia/LHI.generic.long=\u30ED\u30FC\u30C9\u30CF\u30A6\u6642\u9593
+Australia/Lindeman.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)
+Australia/Lindeman.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)
+Australia/Lindeman.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)
+Australia/Lord_Howe.generic.long=\u30ED\u30FC\u30C9\u30CF\u30A6\u6642\u9593
+Australia/Melbourne.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30D3\u30AF\u30C8\u30EA\u30A2)
+Australia/Melbourne.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30D3\u30AF\u30C8\u30EA\u30A2)
+Australia/Melbourne.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30D3\u30AF\u30C8\u30EA\u30A2)
+Australia/NSW.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/NSW.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/NSW.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/North.daylight.long=\u4E2D\u90E8\u590F\u6642\u9593(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)
+Australia/North.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)
+Australia/North.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u30CE\u30FC\u30B6\u30F3\u30C6\u30EA\u30C8\u30EA\u30FC)
+Australia/Perth.daylight.long=\u897F\u90E8\u590F\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/Perth.generic.long=\u897F\u90E8\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/Perth.standard.long=\u897F\u90E8\u6A19\u6E96\u6642(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/Queensland.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)
+Australia/Queensland.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)
+Australia/Queensland.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30AF\u30A4\u30FC\u30F3\u30BA\u30E9\u30F3\u30C9)
+Australia/South.daylight.long=\u4E2D\u90E8\u590F\u6642\u9593(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/South.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/South.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/Sydney.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Sydney.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Sydney.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Tasmania.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30BF\u30B9\u30DE\u30CB\u30A2)
+Australia/Tasmania.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30BF\u30B9\u30DE\u30CB\u30A2)
+Australia/Tasmania.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30BF\u30B9\u30DE\u30CB\u30A2)
+Australia/Victoria.daylight.long=\u6771\u90E8\u590F\u6642\u9593(\u30D3\u30AF\u30C8\u30EA\u30A2)
+Australia/Victoria.generic.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30D3\u30AF\u30C8\u30EA\u30A2)
+Australia/Victoria.standard.long=\u6771\u90E8\u6A19\u6E96\u6642(\u30D3\u30AF\u30C8\u30EA\u30A2)
+Australia/West.daylight.long=\u897F\u90E8\u590F\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/West.generic.long=\u897F\u90E8\u6642\u9593(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/West.standard.long=\u897F\u90E8\u6A19\u6E96\u6642(\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2)
+Australia/Yancowinna.daylight.long=\u4E2D\u90E8\u590F\u6642\u9593(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Yancowinna.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+Australia/Yancowinna.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642(\u5357\u30AA\u30FC\u30B9\u30C8\u30E9\u30EA\u30A2/\u30CB\u30E5\u30FC\u30B5\u30A6\u30B9\u30A6\u30A7\u30FC\u30EB\u30BA)
+BET.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593
+BST.generic.long=\u30D0\u30F3\u30B0\u30E9\u30C7\u30B7\u30E5\u6642\u9593
+Brazil/Acre.generic.long=\u30a2\u30af\u30ec\u6642\u9593
+Brazil/DeNoronha.generic.long=\u30D5\u30A7\u30EB\u30CA\u30F3\u30C9\u30FB\u30C7\u30FB\u30CE\u30ED\u30FC\u30CB\u30E3\u6642\u9593
+Brazil/East.generic.long=\u30D6\u30E9\u30B8\u30EA\u30A2\u6642\u9593
+Brazil/West.generic.long=\u30A2\u30DE\u30BE\u30F3\u6642\u9593
+CAT.generic.long=\u4E2D\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+CET.generic.long=\u4e2d\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593
+CNT.generic.long=\u30CB\u30E5\u30FC\u30D5\u30A1\u30F3\u30C9\u30E9\u30F3\u30C9\u6642\u9593
+CST.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+CST6CDT.generic.long=\u4e2d\u90e8\u6a19\u6e96\u6642
+CTT.generic.long=\u4E2D\u56FD\u6642\u9593
+Canada/Atlantic.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+Canada/Central.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+Canada/East-Saskatchewan.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+Canada/Eastern.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+Canada/Mountain.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+Canada/Newfoundland.generic.long=\u30CB\u30E5\u30FC\u30D5\u30A1\u30F3\u30C9\u30E9\u30F3\u30C9\u6642\u9593
+Canada/Pacific.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+Canada/Saskatchewan.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+Canada/Yukon.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+Chile/Continental.generic.long=\u30C1\u30EA\u6642\u9593
+Chile/EasterIsland.generic.long=\u30A4\u30FC\u30B9\u30BF\u30FC\u5CF6\u6642\u9593
+Cuba.generic.long=\u30AD\u30E5\u30FC\u30D0\u6642\u9593
+EAT.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+ECT.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+EET.generic.long=\u6771\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593
+EST.generic.long=\u6771\u90e8\u6a19\u6e96\u6642
+EST5EDT.generic.long=\u6771\u90e8\u6a19\u6e96\u6642
+Egypt.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Eire.generic.long=\u30A2\u30A4\u30EB\u30E9\u30F3\u30C9\u6642\u9593
+Etc/Greenwich.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Etc/UCT.generic.long=\u5354\u5B9A\u4E16\u754C\u6642
+Etc/UTC.generic.long=\u5354\u5B9A\u4E16\u754C\u6642
+Etc/Universal.generic.long=\u5354\u5B9A\u4E16\u754C\u6642
+Etc/Zulu.generic.long=\u5354\u5B9A\u4E16\u754C\u6642
+Europe/Amsterdam.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Andorra.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Athens.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Belfast.generic.long=\u30A4\u30AE\u30EA\u30B9\u6642\u9593
+Europe/Belgrade.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Berlin.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Bratislava.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Brussels.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Bucharest.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Budapest.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Busingen.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Chisinau.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Copenhagen.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Dublin.generic.long=\u30A2\u30A4\u30EB\u30E9\u30F3\u30C9\u6642\u9593
+Europe/Gibraltar.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Guernsey.generic.long=\u30A4\u30AE\u30EA\u30B9\u6642\u9593
+Europe/Helsinki.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Isle_of_Man.generic.long=\u30A4\u30AE\u30EA\u30B9\u6642\u9593
+Europe/Istanbul.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Jersey.generic.long=\u30A4\u30AE\u30EA\u30B9\u6642\u9593
+Europe/Kaliningrad.daylight.long=\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u590F\u6642\u9593
+Europe/Kaliningrad.generic.long=\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Kaliningrad.standard.long=\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Kiev.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Lisbon.generic.long=\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Ljubljana.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/London.generic.long=\u30A4\u30AE\u30EA\u30B9\u6642\u9593
+Europe/Luxembourg.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Madrid.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Malta.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Mariehamn.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Minsk.daylight.long=\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u590F\u6642\u9593
+Europe/Minsk.generic.long=\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Minsk.standard.long=\u6975\u6771\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Monaco.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Moscow.generic.long=\u30E2\u30B9\u30AF\u30EF\u6642\u9593
+Europe/Nicosia.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Oslo.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Paris.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Podgorica.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Prague.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Riga.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Rome.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Samara.generic.long=\u30B5\u30DE\u30E9\u6642\u9593
+Europe/San_Marino.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Sarajevo.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Simferopol.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Skopje.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Sofia.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Stockholm.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Tallinn.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Tirane.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Tiraspol.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Uzhgorod.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Vaduz.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Vatican.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Vienna.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Vilnius.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Volgograd.generic.long=\u30DC\u30EB\u30B4\u30B0\u30E9\u30FC\u30C9\u6642\u9593
+Europe/Warsaw.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Zagreb.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Zaporozhye.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Europe/Zurich.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+GB-Eire.generic.long=\u30A4\u30AE\u30EA\u30B9\u6642\u9593
+GB.generic.long=\u30A4\u30AE\u30EA\u30B9\u6642\u9593
+GMT.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Greenwich.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+HST.generic.long=\u30cf\u30ef\u30a4\u6642\u9593
+Hongkong.generic.long=\u9999\u6E2F\u6642\u9593
+IET.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+IST.generic.long=\u30A4\u30F3\u30C9\u6642\u9593
+Iceland.generic.long=\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642
+Indian/Antananarivo.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Indian/Chagos.generic.long=\u30A4\u30F3\u30C9\u6D0B\u5730\u57DF\u6642\u9593
+Indian/Christmas.generic.long=\u30AF\u30EA\u30B9\u30DE\u30B9\u5CF6\u6642\u9593
+Indian/Cocos.generic.long=\u30B3\u30B3\u30B9\u8AF8\u5CF6\u6642\u9593
+Indian/Comoro.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Indian/Kerguelen.generic.long=\u30D5\u30E9\u30F3\u30B9\u9818\u5357\u65B9\u304A\u3088\u3073\u5357\u6975\u5927\u9678\u6642\u9593
+Indian/Mahe.generic.long=\u30BB\u30FC\u30B7\u30A7\u30EB\u6642\u9593
+Indian/Maldives.generic.long=\u30E2\u30EB\u30B8\u30D6\u6642\u9593
+Indian/Mauritius.generic.long=\u30E2\u30FC\u30EA\u30B7\u30E3\u30B9\u6642\u9593
+Indian/Mayotte.generic.long=\u6771\u90E8\u30A2\u30D5\u30EA\u30AB\u6642\u9593
+Indian/Reunion.generic.long=\u30EC\u30E6\u30CB\u30AA\u30F3\u6642\u9593
+Iran.generic.long=\u30A4\u30E9\u30F3\u6642\u9593
+Israel.generic.long=\u30A4\u30B9\u30E9\u30A8\u30EB\u6642\u9593
+JST.generic.long=\u65E5\u672C\u6642\u9593
+Jamaica.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+Japan.generic.long=\u65E5\u672C\u6642\u9593
+Kwajalein.generic.long=\u30DE\u30FC\u30B7\u30E3\u30EB\u8AF8\u5CF6\u6642\u9593
+Libya.generic.long=\u6771\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593
+MET.generic.long=MET
+MIT.generic.long=\u897F\u30B5\u30E2\u30A2\u6642\u9593
+MST.generic.long=\u5c71\u5730\u6a19\u6e96\u6642
+MST7MDT.generic.long=\u5c71\u5730\u6a19\u6e96\u6642
+Mexico/BajaNorte.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+Mexico/BajaSur.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+Mexico/General.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+NET.generic.long=\u30A2\u30EB\u30E1\u30CB\u30A2\u6642\u9593
+NST.generic.long=\u30CB\u30E5\u30FC\u30B8\u30FC\u30E9\u30F3\u30C9\u6642\u9593
+NZ-CHAT.generic.long=\u30C1\u30E3\u30BF\u30E0\u6642\u9593
+NZ.generic.long=\u30CB\u30E5\u30FC\u30B8\u30FC\u30E9\u30F3\u30C9\u6642\u9593
+Navajo.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+PLT.generic.long=\u30D1\u30AD\u30B9\u30BF\u30F3\u6642\u9593
+PNT.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+PRC.generic.long=\u4E2D\u56FD\u6642\u9593
+PRT.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+PST.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+PST8PDT.generic.long=\u592a\u5e73\u6d0b\u6a19\u6e96\u6642
+Pacific/Apia.generic.long=\u897F\u30B5\u30E2\u30A2\u6642\u9593
+Pacific/Auckland.generic.long=\u30CB\u30E5\u30FC\u30B8\u30FC\u30E9\u30F3\u30C9\u6642\u9593
+Pacific/Chatham.generic.long=\u30C1\u30E3\u30BF\u30E0\u6642\u9593
+Pacific/Chuuk.daylight.long=Chuuk Time
+Pacific/Chuuk.generic.long=\u30C1\u30E5\u30FC\u30AF\u6642\u9593
+Pacific/Chuuk.standard.long=\u30C1\u30E5\u30FC\u30AF\u6642\u9593
+Pacific/Easter.generic.long=\u30A4\u30FC\u30B9\u30BF\u30FC\u5CF6\u6642\u9593
+Pacific/Efate.generic.long=\u30D0\u30CC\u30A2\u30C4\u6642\u9593
+Pacific/Enderbury.generic.long=\u30D5\u30A7\u30CB\u30C3\u30AF\u30B9\u8AF8\u5CF6\u6642\u9593
+Pacific/Fakaofo.generic.long=\u30C8\u30B1\u30E9\u30A6\u6642\u9593
+Pacific/Fiji.generic.long=\u30D5\u30A3\u30B8\u30FC\u6642\u9593
+Pacific/Funafuti.generic.long=\u30C4\u30D0\u30EB\u6642\u9593
+Pacific/Galapagos.generic.long=\u30AC\u30E9\u30D1\u30B4\u30B9\u6642\u9593
+Pacific/Gambier.generic.long=\u30AC\u30F3\u30D3\u30A8\u6642\u9593
+Pacific/Guadalcanal.generic.long=\u30BD\u30ED\u30E2\u30F3\u8AF8\u5CF6\u6642\u9593
+Pacific/Guam.generic.long=\u30C1\u30E3\u30E2\u30ED\u6642\u9593
+Pacific/Honolulu.generic.long=\u30CF\u30EF\u30A4\u6642\u9593
+Pacific/Johnston.generic.long=\u30CF\u30EF\u30A4\u6642\u9593
+Pacific/Kiritimati.generic.long=\u30E9\u30A4\u30F3\u8AF8\u5CF6\u6642\u9593
+Pacific/Kosrae.generic.long=\u30B3\u30B9\u30E9\u30A8\u6642\u9593
+Pacific/Kwajalein.generic.long=\u30DE\u30FC\u30B7\u30E3\u30EB\u8AF8\u5CF6\u6642\u9593
+Pacific/Majuro.generic.long=\u30DE\u30FC\u30B7\u30E3\u30EB\u8AF8\u5CF6\u6642\u9593
+Pacific/Marquesas.generic.long=\u30DE\u30EB\u30AD\u30FC\u30BA\u6642\u9593
+Pacific/Midway.generic.long=\u30B5\u30E2\u30A2\u6642\u9593
+Pacific/Nauru.generic.long=\u30CA\u30A6\u30EB\u6642\u9593
+Pacific/Niue.generic.long=\u30CB\u30A6\u30A8\u6642\u9593
+Pacific/Norfolk.generic.long=\u30CE\u30FC\u30D5\u30A9\u30FC\u30AF\u6642\u9593
+Pacific/Noumea.generic.long=\u30CB\u30E5\u30FC\u30AB\u30EC\u30C9\u30CB\u30A2\u6642\u9593
+Pacific/Pago_Pago.generic.long=\u30B5\u30E2\u30A2\u6642\u9593
+Pacific/Palau.generic.long=\u30D1\u30E9\u30AA\u6642\u9593
+Pacific/Pitcairn.generic.long=\u30D4\u30C8\u30B1\u30A2\u30F3\u6642\u9593
+Pacific/Pohnpei.daylight.long=\u30DD\u30F3\u30DA\u30A4\u590F\u6642\u9593
+Pacific/Pohnpei.generic.long=\u30DD\u30CA\u30DA\u6642\u9593
+Pacific/Pohnpei.standard.long=\u30DD\u30F3\u30DA\u30A4\u6642\u9593
+Pacific/Ponape.daylight.long=\u30DD\u30F3\u30DA\u30A4\u590F\u6642\u9593
+Pacific/Ponape.generic.long=\u30DD\u30CA\u30DA\u6642\u9593
+Pacific/Ponape.standard.long=\u30DD\u30F3\u30DA\u30A4\u6642\u9593
+Pacific/Port_Moresby.generic.long=\u30D1\u30D7\u30A2\u30CB\u30E5\u30FC\u30AE\u30CB\u30A2\u6642\u9593
+Pacific/Rarotonga.generic.long=\u30AF\u30C3\u30AF\u8AF8\u5CF6\u6642\u9593
+Pacific/Saipan.generic.long=\u30C1\u30E3\u30E2\u30ED\u6642\u9593
+Pacific/Samoa.generic.long=\u30B5\u30E2\u30A2\u6642\u9593
+Pacific/Tahiti.generic.long=\u30BF\u30D2\u30C1\u6642\u9593
+Pacific/Tarawa.generic.long=\u30AE\u30EB\u30D0\u30FC\u30C8\u8AF8\u5CF6\u6642\u9593
+Pacific/Tongatapu.generic.long=\u30C8\u30F3\u30AC\u6642\u9593
+Pacific/Truk.daylight.long=Chuuk Time
+Pacific/Truk.generic.long=\u30C1\u30E5\u30FC\u30AF\u6642\u9593
+Pacific/Truk.standard.long=\u30C1\u30E5\u30FC\u30AF\u6642\u9593
+Pacific/Wake.generic.long=\u30A6\u30A7\u30FC\u30AF\u6642\u9593
+Pacific/Wallis.generic.long=\u30A6\u30A9\u30EA\u30B9\u30FB\u30D5\u30C4\u30CA\u6642\u9593
+Pacific/Yap.daylight.long=Chuuk Time
+Pacific/Yap.generic.long=\u30C1\u30E5\u30FC\u30AF\u6642\u9593
+Pacific/Yap.standard.long=\u30C1\u30E5\u30FC\u30AF\u6642\u9593
+Poland.generic.long=\u4E2D\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+Portugal.generic.long=\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+ROK.generic.long=\u97D3\u56FD\u6642\u9593
+SST.generic.long=\u30BD\u30ED\u30E2\u30F3\u8AF8\u5CF6\u6642\u9593
+Singapore.generic.long=\u30B7\u30F3\u30AC\u30DD\u30FC\u30EB\u6642\u9593
+SystemV/AST4.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+SystemV/AST4ADT.generic.long=\u5927\u897F\u6D0B\u6A19\u6E96\u6642
+SystemV/CST6.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+SystemV/CST6CDT.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+SystemV/EST5.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+SystemV/EST5EDT.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+SystemV/HST10.generic.long=\u30CF\u30EF\u30A4\u6642\u9593
+SystemV/MST7.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+SystemV/MST7MDT.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+SystemV/PST8.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+SystemV/PST8PDT.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+SystemV/YST9.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593
+SystemV/YST9YDT.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593
+Turkey.generic.long=\u6771\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593
+UCT.generic.long=\u5354\u5B9A\u4E16\u754C\u6642
+US/Alaska.generic.long=\u30A2\u30E9\u30B9\u30AB\u6642\u9593
+US/Aleutian.generic.long=\u30CF\u30EF\u30A4\u30FB\u30A2\u30EA\u30E5\u30FC\u30B7\u30E3\u30F3\u6642\u9593
+US/Arizona.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+US/Central.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+US/East-Indiana.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+US/Eastern.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+US/Hawaii.generic.long=\u30CF\u30EF\u30A4\u6642\u9593
+US/Indiana-Starke.generic.long=\u4E2D\u90E8\u6A19\u6E96\u6642
+US/Michigan.generic.long=\u6771\u90E8\u6A19\u6E96\u6642
+US/Mountain.generic.long=\u5C71\u5730\u6A19\u6E96\u6642
+US/Pacific-New.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+US/Pacific.generic.long=\u592A\u5E73\u6D0B\u6A19\u6E96\u6642
+US/Samoa.generic.long=\u30B5\u30E2\u30A2\u6642\u9593
+UTC.generic.long=\u5354\u5B9A\u4E16\u754C\u6642
+Universal.generic.long=\u5354\u5B9A\u4E16\u754C\u6642
+VST.generic.long=\u30A4\u30F3\u30C9\u30B7\u30CA\u6642\u9593
+W-SU.generic.long=\u30E2\u30B9\u30AF\u30EF\u6642\u9593
+WET.generic.long=\u897f\u90e8\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593
+Zulu.generic.long=\u5354\u5B9A\u4E16\u754C\u6642
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_ja_short.properties Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,1743 @@
+ACT.daylight.short=CST
+ACT.generic.short=CT
+ACT.standard.short=CST
+AET.daylight.short=EST
+AET.generic.short=ET
+AET.standard.short=EST
+Africa/Abidjan.daylight.short=GMT
+Africa/Abidjan.generic.short=GMT
+Africa/Abidjan.standard.short=GMT
+Africa/Accra.daylight.short=GHST
+Africa/Accra.generic.short=GMT
+Africa/Accra.standard.short=GMT
+Africa/Addis_Ababa.daylight.short=EAST
+Africa/Addis_Ababa.generic.short=EAT
+Africa/Addis_Ababa.standard.short=EAT
+Africa/Algiers.daylight.short=CEST
+Africa/Algiers.generic.short=CET
+Africa/Algiers.standard.short=CET
+Africa/Asmara.daylight.short=EAST
+Africa/Asmara.generic.short=EAT
+Africa/Asmara.standard.short=EAT
+Africa/Asmera.daylight.short=EAST
+Africa/Asmera.generic.short=EAT
+Africa/Asmera.standard.short=EAT
+Africa/Bamako.daylight.short=GMT
+Africa/Bamako.generic.short=GMT
+Africa/Bamako.standard.short=GMT
+Africa/Bangui.daylight.short=WAST
+Africa/Bangui.generic.short=WAT
+Africa/Bangui.standard.short=WAT
+Africa/Banjul.daylight.short=GMT
+Africa/Banjul.generic.short=GMT
+Africa/Banjul.standard.short=GMT
+Africa/Bissau.daylight.short=GMT
+Africa/Bissau.generic.short=GMT
+Africa/Bissau.standard.short=GMT
+Africa/Blantyre.daylight.short=CAST
+Africa/Blantyre.generic.short=CAT
+Africa/Blantyre.standard.short=CAT
+Africa/Brazzaville.daylight.short=WAST
+Africa/Brazzaville.generic.short=WAT
+Africa/Brazzaville.standard.short=WAT
+Africa/Bujumbura.daylight.short=CAST
+Africa/Bujumbura.generic.short=CAT
+Africa/Bujumbura.standard.short=CAT
+Africa/Cairo.daylight.short=EEST
+Africa/Cairo.generic.short=EET
+Africa/Cairo.standard.short=EET
+Africa/Casablanca.daylight.short=WEST
+Africa/Casablanca.generic.short=WET
+Africa/Casablanca.standard.short=WET
+Africa/Ceuta.daylight.short=CEST
+Africa/Ceuta.generic.short=CET
+Africa/Ceuta.standard.short=CET
+Africa/Conakry.daylight.short=GMT
+Africa/Conakry.generic.short=GMT
+Africa/Conakry.standard.short=GMT
+Africa/Dakar.daylight.short=GMT
+Africa/Dakar.generic.short=GMT
+Africa/Dakar.standard.short=GMT
+Africa/Dar_es_Salaam.daylight.short=EAST
+Africa/Dar_es_Salaam.generic.short=EAT
+Africa/Dar_es_Salaam.standard.short=EAT
+Africa/Djibouti.daylight.short=EAST
+Africa/Djibouti.generic.short=EAT
+Africa/Djibouti.standard.short=EAT
+Africa/Douala.daylight.short=WAST
+Africa/Douala.generic.short=WAT
+Africa/Douala.standard.short=WAT
+Africa/El_Aaiun.daylight.short=WEST
+Africa/El_Aaiun.generic.short=WET
+Africa/El_Aaiun.standard.short=WET
+Africa/Freetown.daylight.short=SLST
+Africa/Freetown.generic.short=SLT
+Africa/Freetown.standard.short=GMT
+Africa/Gaborone.daylight.short=CAST
+Africa/Gaborone.generic.short=CAT
+Africa/Gaborone.standard.short=CAT
+Africa/Harare.daylight.short=CAST
+Africa/Harare.generic.short=CAT
+Africa/Harare.standard.short=CAT
+Africa/Johannesburg.daylight.short=SAST
+Africa/Johannesburg.generic.short=SAT
+Africa/Johannesburg.standard.short=SAST
+Africa/Juba.daylight.short=EAST
+Africa/Juba.generic.short=EAT
+Africa/Juba.standard.short=EAT
+Africa/Kampala.daylight.short=EAST
+Africa/Kampala.generic.short=EAT
+Africa/Kampala.standard.short=EAT
+Africa/Khartoum.daylight.short=EAST
+Africa/Khartoum.generic.short=EAT
+Africa/Khartoum.standard.short=EAT
+Africa/Kigali.daylight.short=CAST
+Africa/Kigali.generic.short=CAT
+Africa/Kigali.standard.short=CAT
+Africa/Kinshasa.daylight.short=WAST
+Africa/Kinshasa.generic.short=WAT
+Africa/Kinshasa.standard.short=WAT
+Africa/Lagos.daylight.short=WAST
+Africa/Lagos.generic.short=WAT
+Africa/Lagos.standard.short=WAT
+Africa/Libreville.daylight.short=WAST
+Africa/Libreville.generic.short=WAT
+Africa/Libreville.standard.short=WAT
+Africa/Lome.daylight.short=GMT
+Africa/Lome.generic.short=GMT
+Africa/Lome.standard.short=GMT
+Africa/Luanda.daylight.short=WAST
+Africa/Luanda.generic.short=WAT
+Africa/Luanda.standard.short=WAT
+Africa/Lubumbashi.daylight.short=CAST
+Africa/Lubumbashi.generic.short=CAT
+Africa/Lubumbashi.standard.short=CAT
+Africa/Lusaka.daylight.short=CAST
+Africa/Lusaka.generic.short=CAT
+Africa/Lusaka.standard.short=CAT
+Africa/Malabo.daylight.short=WAST
+Africa/Malabo.generic.short=WAT
+Africa/Malabo.standard.short=WAT
+Africa/Maputo.daylight.short=CAST
+Africa/Maputo.generic.short=CAT
+Africa/Maputo.standard.short=CAT
+Africa/Maseru.daylight.short=SAST
+Africa/Maseru.generic.short=SAT
+Africa/Maseru.standard.short=SAST
+Africa/Mbabane.daylight.short=SAST
+Africa/Mbabane.generic.short=SAT
+Africa/Mbabane.standard.short=SAST
+Africa/Mogadishu.daylight.short=EAST
+Africa/Mogadishu.generic.short=EAT
+Africa/Mogadishu.standard.short=EAT
+Africa/Monrovia.daylight.short=GMT
+Africa/Monrovia.generic.short=GMT
+Africa/Monrovia.standard.short=GMT
+Africa/Nairobi.daylight.short=EAST
+Africa/Nairobi.generic.short=EAT
+Africa/Nairobi.standard.short=EAT
+Africa/Ndjamena.daylight.short=WAST
+Africa/Ndjamena.generic.short=WAT
+Africa/Ndjamena.standard.short=WAT
+Africa/Niamey.daylight.short=WAST
+Africa/Niamey.generic.short=WAT
+Africa/Niamey.standard.short=WAT
+Africa/Nouakchott.daylight.short=GMT
+Africa/Nouakchott.generic.short=GMT
+Africa/Nouakchott.standard.short=GMT
+Africa/Ouagadougou.daylight.short=GMT
+Africa/Ouagadougou.generic.short=GMT
+Africa/Ouagadougou.standard.short=GMT
+Africa/Porto-Novo.daylight.short=WAST
+Africa/Porto-Novo.generic.short=WAT
+Africa/Porto-Novo.standard.short=WAT
+Africa/Sao_Tome.daylight.short=GMT
+Africa/Sao_Tome.generic.short=GMT
+Africa/Sao_Tome.standard.short=GMT
+Africa/Timbuktu.daylight.short=GMT
+Africa/Timbuktu.generic.short=GMT
+Africa/Timbuktu.standard.short=GMT
+Africa/Tripoli.daylight.short=EEST
+Africa/Tripoli.generic.short=EET
+Africa/Tripoli.standard.short=EET
+Africa/Tunis.daylight.short=CEST
+Africa/Tunis.generic.short=CET
+Africa/Tunis.standard.short=CET
+Africa/Windhoek.daylight.short=WAST
+Africa/Windhoek.generic.short=WAT
+Africa/Windhoek.standard.short=WAT
+AGT.daylight.short=ARST
+AGT.generic.short=ART
+AGT.standard.short=ART
+America/Adak.daylight.short=HADT
+America/Adak.generic.short=HAT
+America/Adak.standard.short=HAST
+America/Anchorage.daylight.short=AKDT
+America/Anchorage.generic.short=AKT
+America/Anchorage.standard.short=AKST
+America/Anguilla.daylight.short=ADT
+America/Anguilla.generic.short=AT
+America/Anguilla.standard.short=AST
+America/Antigua.daylight.short=ADT
+America/Antigua.generic.short=AT
+America/Antigua.standard.short=AST
+America/Araguaina.daylight.short=BRST
+America/Araguaina.generic.short=BRT
+America/Araguaina.standard.short=BRT
+America/Argentina/Buenos_Aires.daylight.short=ARST
+America/Argentina/Buenos_Aires.generic.short=ART
+America/Argentina/Buenos_Aires.standard.short=ART
+America/Argentina/Catamarca.daylight.short=ARST
+America/Argentina/Catamarca.generic.short=ART
+America/Argentina/Catamarca.standard.short=ART
+America/Argentina/ComodRivadavia.daylight.short=ARST
+America/Argentina/ComodRivadavia.generic.short=ART
+America/Argentina/ComodRivadavia.standard.short=ART
+America/Argentina/Cordoba.daylight.short=ARST
+America/Argentina/Cordoba.generic.short=ART
+America/Argentina/Cordoba.standard.short=ART
+America/Argentina/Jujuy.daylight.short=ARST
+America/Argentina/Jujuy.generic.short=ART
+America/Argentina/Jujuy.standard.short=ART
+America/Argentina/La_Rioja.daylight.short=ARST
+America/Argentina/La_Rioja.generic.short=ART
+America/Argentina/La_Rioja.standard.short=ART
+America/Argentina/Mendoza.daylight.short=ARST
+America/Argentina/Mendoza.generic.short=ART
+America/Argentina/Mendoza.standard.short=ART
+America/Argentina/Rio_Gallegos.daylight.short=ARST
+America/Argentina/Rio_Gallegos.generic.short=ART
+America/Argentina/Rio_Gallegos.standard.short=ART
+America/Argentina/Salta.daylight.short=ARST
+America/Argentina/Salta.generic.short=ART
+America/Argentina/Salta.standard.short=ART
+America/Argentina/San_Juan.daylight.short=ARST
+America/Argentina/San_Juan.generic.short=ART
+America/Argentina/San_Juan.standard.short=ART
+America/Argentina/San_Luis.daylight.short=ARST
+America/Argentina/San_Luis.generic.short=ART
+America/Argentina/San_Luis.standard.short=ART
+America/Argentina/Tucuman.daylight.short=ARST
+America/Argentina/Tucuman.generic.short=ART
+America/Argentina/Tucuman.standard.short=ART
+America/Argentina/Ushuaia.daylight.short=ARST
+America/Argentina/Ushuaia.generic.short=ART
+America/Argentina/Ushuaia.standard.short=ART
+America/Aruba.daylight.short=ADT
+America/Aruba.generic.short=AT
+America/Aruba.standard.short=AST
+America/Asuncion.daylight.short=PYST
+America/Asuncion.generic.short=PYT
+America/Asuncion.standard.short=PYT
+America/Atikokan.daylight.short=EDT
+America/Atikokan.generic.short=ET
+America/Atikokan.standard.short=EST
+America/Atka.daylight.short=HADT
+America/Atka.generic.short=HAT
+America/Atka.standard.short=HAST
+America/Bahia_Banderas.daylight.short=CDT
+America/Bahia_Banderas.generic.short=CT
+America/Bahia_Banderas.standard.short=CST
+America/Bahia.daylight.short=BRST
+America/Bahia.generic.short=BRT
+America/Bahia.standard.short=BRT
+America/Barbados.daylight.short=ADT
+America/Barbados.generic.short=AT
+America/Barbados.standard.short=AST
+America/Belem.daylight.short=BRST
+America/Belem.generic.short=BRT
+America/Belem.standard.short=BRT
+America/Belize.daylight.short=CDT
+America/Belize.generic.short=CT
+America/Belize.standard.short=CST
+America/Blanc-Sablon.daylight.short=ADT
+America/Blanc-Sablon.generic.short=AT
+America/Blanc-Sablon.standard.short=AST
+America/Boa_Vista.daylight.short=AMST
+America/Boa_Vista.generic.short=AMT
+America/Boa_Vista.standard.short=AMT
+America/Bogota.daylight.short=COST
+America/Bogota.generic.short=COT
+America/Bogota.standard.short=COT
+America/Boise.daylight.short=MDT
+America/Boise.generic.short=MT
+America/Boise.standard.short=MST
+America/Buenos_Aires.daylight.short=ARST
+America/Buenos_Aires.generic.short=ART
+America/Buenos_Aires.standard.short=ART
+America/Cambridge_Bay.daylight.short=MDT
+America/Cambridge_Bay.generic.short=MT
+America/Cambridge_Bay.standard.short=MST
+America/Campo_Grande.daylight.short=AMST
+America/Campo_Grande.generic.short=AMT
+America/Campo_Grande.standard.short=AMT
+America/Cancun.daylight.short=CDT
+America/Cancun.generic.short=CT
+America/Cancun.standard.short=CST
+America/Caracas.daylight.short=VEST
+America/Caracas.generic.short=VET
+America/Caracas.standard.short=VET
+America/Catamarca.daylight.short=ARST
+America/Catamarca.generic.short=ART
+America/Catamarca.standard.short=ART
+America/Cayenne.daylight.short=GFST
+America/Cayenne.generic.short=GFT
+America/Cayenne.standard.short=GFT
+America/Cayman.daylight.short=EDT
+America/Cayman.generic.short=ET
+America/Cayman.standard.short=EST
+America/Chicago.daylight.short=CDT
+America/Chicago.generic.short=CT
+America/Chicago.standard.short=CST
+America/Chihuahua.daylight.short=MDT
+America/Chihuahua.generic.short=MT
+America/Chihuahua.standard.short=MST
+America/Coral_Harbour.daylight.short=EDT
+America/Coral_Harbour.generic.short=ET
+America/Coral_Harbour.standard.short=EST
+America/Cordoba.daylight.short=ARST
+America/Cordoba.generic.short=ART
+America/Cordoba.standard.short=ART
+America/Costa_Rica.daylight.short=CDT
+America/Costa_Rica.generic.short=CT
+America/Costa_Rica.standard.short=CST
+America/Creston.daylight.short=MDT
+America/Creston.generic.short=MT
+America/Creston.standard.short=MST
+America/Cuiaba.daylight.short=AMST
+America/Cuiaba.generic.short=AMT
+America/Cuiaba.standard.short=AMT
+America/Curacao.daylight.short=ADT
+America/Curacao.generic.short=AT
+America/Curacao.standard.short=AST
+America/Danmarkshavn.daylight.short=GMT
+America/Danmarkshavn.generic.short=GMT
+America/Danmarkshavn.standard.short=GMT
+America/Dawson_Creek.daylight.short=MDT
+America/Dawson_Creek.generic.short=MT
+America/Dawson_Creek.standard.short=MST
+America/Dawson.daylight.short=PDT
+America/Dawson.generic.short=PT
+America/Dawson.standard.short=PST
+America/Denver.daylight.short=MDT
+America/Denver.generic.short=MT
+America/Denver.standard.short=MST
+America/Detroit.daylight.short=EDT
+America/Detroit.generic.short=ET
+America/Detroit.standard.short=EST
+America/Dominica.daylight.short=ADT
+America/Dominica.generic.short=AT
+America/Dominica.standard.short=AST
+America/Edmonton.daylight.short=MDT
+America/Edmonton.generic.short=MT
+America/Edmonton.standard.short=MST
+America/Eirunepe.daylight.short=ACST
+America/Eirunepe.generic.short=ACT
+America/Eirunepe.standard.short=ACT
+America/El_Salvador.daylight.short=CDT
+America/El_Salvador.generic.short=CT
+America/El_Salvador.standard.short=CST
+America/Ensenada.daylight.short=PDT
+America/Ensenada.generic.short=PT
+America/Ensenada.standard.short=PST
+America/Fortaleza.daylight.short=BRST
+America/Fortaleza.generic.short=BRT
+America/Fortaleza.standard.short=BRT
+America/Fort_Wayne.daylight.short=EDT
+America/Fort_Wayne.generic.short=ET
+America/Fort_Wayne.standard.short=EST
+America/Glace_Bay.daylight.short=ADT
+America/Glace_Bay.generic.short=AT
+America/Glace_Bay.standard.short=AST
+America/Godthab.daylight.short=WGST
+America/Godthab.generic.short=WGT
+America/Godthab.standard.short=WGT
+America/Goose_Bay.daylight.short=ADT
+America/Goose_Bay.generic.short=AT
+America/Goose_Bay.standard.short=AST
+America/Grand_Turk.daylight.short=EDT
+America/Grand_Turk.generic.short=ET
+America/Grand_Turk.standard.short=EST
+America/Grenada.daylight.short=ADT
+America/Grenada.generic.short=AT
+America/Grenada.standard.short=AST
+America/Guadeloupe.daylight.short=ADT
+America/Guadeloupe.generic.short=AT
+America/Guadeloupe.standard.short=AST
+America/Guatemala.daylight.short=CDT
+America/Guatemala.generic.short=CT
+America/Guatemala.standard.short=CST
+America/Guayaquil.daylight.short=ECST
+America/Guayaquil.generic.short=ECT
+America/Guayaquil.standard.short=ECT
+America/Guyana.daylight.short=GYST
+America/Guyana.generic.short=GYT
+America/Guyana.standard.short=GYT
+America/Halifax.daylight.short=ADT
+America/Halifax.generic.short=AT
+America/Halifax.standard.short=AST
+America/Havana.daylight.short=CDT
+America/Havana.generic.short=CT
+America/Havana.standard.short=CST
+America/Hermosillo.daylight.short=MDT
+America/Hermosillo.generic.short=MT
+America/Hermosillo.standard.short=MST
+America/Indiana/Indianapolis.daylight.short=EDT
+America/Indiana/Indianapolis.generic.short=ET
+America/Indiana/Indianapolis.standard.short=EST
+America/Indiana/Knox.daylight.short=CDT
+America/Indiana/Knox.generic.short=CT
+America/Indiana/Knox.standard.short=CST
+America/Indiana/Marengo.daylight.short=EDT
+America/Indiana/Marengo.generic.short=ET
+America/Indiana/Marengo.standard.short=EST
+America/Indiana/Petersburg.daylight.short=EDT
+America/Indiana/Petersburg.generic.short=ET
+America/Indiana/Petersburg.standard.short=EST
+America/Indianapolis.daylight.short=EDT
+America/Indianapolis.generic.short=ET
+America/Indianapolis.standard.short=EST
+America/Indiana/Tell_City.daylight.short=CDT
+America/Indiana/Tell_City.generic.short=CT
+America/Indiana/Tell_City.standard.short=CST
+America/Indiana/Vevay.daylight.short=EDT
+America/Indiana/Vevay.generic.short=ET
+America/Indiana/Vevay.standard.short=EST
+America/Indiana/Vincennes.daylight.short=EDT
+America/Indiana/Vincennes.generic.short=ET
+America/Indiana/Vincennes.standard.short=EST
+America/Indiana/Winamac.daylight.short=EDT
+America/Indiana/Winamac.generic.short=ET
+America/Indiana/Winamac.standard.short=EST
+America/Inuvik.daylight.short=MDT
+America/Inuvik.generic.short=MT
+America/Inuvik.standard.short=MST
+America/Iqaluit.daylight.short=EDT
+America/Iqaluit.generic.short=ET
+America/Iqaluit.standard.short=EST
+America/Jamaica.daylight.short=EDT
+America/Jamaica.generic.short=ET
+America/Jamaica.standard.short=EST
+America/Jujuy.daylight.short=ARST
+America/Jujuy.generic.short=ART
+America/Jujuy.standard.short=ART
+America/Juneau.daylight.short=AKDT
+America/Juneau.generic.short=AKT
+America/Juneau.standard.short=AKST
+America/Kentucky/Louisville.daylight.short=EDT
+America/Kentucky/Louisville.generic.short=ET
+America/Kentucky/Louisville.standard.short=EST
+America/Kentucky/Monticello.daylight.short=EDT
+America/Kentucky/Monticello.generic.short=ET
+America/Kentucky/Monticello.standard.short=EST
+America/Knox_IN.daylight.short=CDT
+America/Knox_IN.generic.short=CT
+America/Knox_IN.standard.short=CST
+America/Kralendijk.daylight.short=ADT
+America/Kralendijk.generic.short=AT
+America/Kralendijk.standard.short=AST
+America/La_Paz.daylight.short=BOST
+America/La_Paz.generic.short=BOT
+America/La_Paz.standard.short=BOT
+America/Lima.daylight.short=PEST
+America/Lima.generic.short=PET
+America/Lima.standard.short=PET
+America/Los_Angeles.daylight.short=PDT
+America/Los_Angeles.generic.short=PT
+America/Los_Angeles.standard.short=PST
+America/Louisville.daylight.short=EDT
+America/Louisville.generic.short=ET
+America/Louisville.standard.short=EST
+America/Lower_Princes.daylight.short=ADT
+America/Lower_Princes.generic.short=AT
+America/Lower_Princes.standard.short=AST
+America/Maceio.daylight.short=BRST
+America/Maceio.generic.short=BRT
+America/Maceio.standard.short=BRT
+America/Managua.daylight.short=CDT
+America/Managua.generic.short=CT
+America/Managua.standard.short=CST
+America/Manaus.daylight.short=AMST
+America/Manaus.generic.short=AMT
+America/Manaus.standard.short=AMT
+America/Marigot.daylight.short=ADT
+America/Marigot.generic.short=AT
+America/Marigot.standard.short=AST
+America/Martinique.daylight.short=ADT
+America/Martinique.generic.short=AT
+America/Martinique.standard.short=AST
+America/Matamoros.daylight.short=CDT
+America/Matamoros.generic.short=CT
+America/Matamoros.standard.short=CST
+America/Mazatlan.daylight.short=MDT
+America/Mazatlan.generic.short=MT
+America/Mazatlan.standard.short=MST
+America/Mendoza.daylight.short=ARST
+America/Mendoza.generic.short=ART
+America/Mendoza.standard.short=ART
+America/Menominee.daylight.short=CDT
+America/Menominee.generic.short=CT
+America/Menominee.standard.short=CST
+America/Merida.daylight.short=CDT
+America/Merida.generic.short=CT
+America/Merida.standard.short=CST
+America/Metlakatla.daylight.short=MeDT
+America/Metlakatla.generic.short=MeT
+America/Metlakatla.standard.short=MeST
+America/Mexico_City.daylight.short=CDT
+America/Mexico_City.generic.short=CT
+America/Mexico_City.standard.short=CST
+America/Miquelon.daylight.short=PMDT
+America/Miquelon.generic.short=PMT
+America/Miquelon.standard.short=PMST
+America/Moncton.daylight.short=ADT
+America/Moncton.generic.short=AT
+America/Moncton.standard.short=AST
+America/Monterrey.daylight.short=CDT
+America/Monterrey.generic.short=CT
+America/Monterrey.standard.short=CST
+America/Montevideo.daylight.short=UYST
+America/Montevideo.generic.short=UYT
+America/Montevideo.standard.short=UYT
+America/Montreal.daylight.short=EDT
+America/Montreal.generic.short=ET
+America/Montreal.standard.short=EST
+America/Montserrat.daylight.short=ADT
+America/Montserrat.generic.short=AT
+America/Montserrat.standard.short=AST
+America/Nassau.daylight.short=EDT
+America/Nassau.generic.short=ET
+America/Nassau.standard.short=EST
+America/New_York.daylight.short=EDT
+America/New_York.generic.short=ET
+America/New_York.standard.short=EST
+America/Nipigon.daylight.short=EDT
+America/Nipigon.generic.short=ET
+America/Nipigon.standard.short=EST
+America/Nome.daylight.short=AKDT
+America/Nome.generic.short=AKT
+America/Nome.standard.short=AKST
+America/Noronha.daylight.short=FNST
+America/Noronha.generic.short=FNT
+America/Noronha.standard.short=FNT
+America/North_Dakota/Beulah.daylight.short=CDT
+America/North_Dakota/Beulah.generic.short=CT
+America/North_Dakota/Beulah.standard.short=CST
+America/North_Dakota/Center.daylight.short=CDT
+America/North_Dakota/Center.generic.short=CT
+America/North_Dakota/Center.standard.short=CST
+America/North_Dakota/New_Salem.daylight.short=CDT
+America/North_Dakota/New_Salem.generic.short=CT
+America/North_Dakota/New_Salem.standard.short=CST
+America/Ojinaga.daylight.short=MDT
+America/Ojinaga.generic.short=MT
+America/Ojinaga.standard.short=MST
+America/Panama.daylight.short=EDT
+America/Panama.generic.short=ET
+America/Panama.standard.short=EST
+America/Pangnirtung.daylight.short=EDT
+America/Pangnirtung.generic.short=ET
+America/Pangnirtung.standard.short=EST
+America/Paramaribo.daylight.short=SRST
+America/Paramaribo.generic.short=SRT
+America/Paramaribo.standard.short=SRT
+America/Phoenix.daylight.short=MDT
+America/Phoenix.generic.short=MT
+America/Phoenix.standard.short=MST
+America/Port-au-Prince.daylight.short=EDT
+America/Port-au-Prince.generic.short=ET
+America/Port-au-Prince.standard.short=EST
+America/Porto_Acre.daylight.short=ACST
+America/Porto_Acre.generic.short=ACT
+America/Porto_Acre.standard.short=ACT
+America/Port_of_Spain.daylight.short=ADT
+America/Port_of_Spain.generic.short=AT
+America/Port_of_Spain.standard.short=AST
+America/Porto_Velho.daylight.short=AMST
+America/Porto_Velho.generic.short=AMT
+America/Porto_Velho.standard.short=AMT
+America/Puerto_Rico.daylight.short=ADT
+America/Puerto_Rico.generic.short=AT
+America/Puerto_Rico.standard.short=AST
+America/Rainy_River.daylight.short=CDT
+America/Rainy_River.generic.short=CT
+America/Rainy_River.standard.short=CST
+America/Rankin_Inlet.daylight.short=CDT
+America/Rankin_Inlet.generic.short=CT
+America/Rankin_Inlet.standard.short=CST
+America/Recife.daylight.short=BRST
+America/Recife.generic.short=BRT
+America/Recife.standard.short=BRT
+America/Regina.daylight.short=CDT
+America/Regina.generic.short=CT
+America/Regina.standard.short=CST
+America/Resolute.daylight.short=CDT
+America/Resolute.generic.short=CT
+America/Resolute.standard.short=CST
+America/Rio_Branco.daylight.short=ACST
+America/Rio_Branco.generic.short=ACT
+America/Rio_Branco.standard.short=ACT
+America/Rosario.daylight.short=ARST
+America/Rosario.generic.short=ART
+America/Rosario.standard.short=ART
+America/Santa_Isabel.daylight.short=PDT
+America/Santa_Isabel.generic.short=PT
+America/Santa_Isabel.standard.short=PST
+America/Santarem.daylight.short=BRST
+America/Santarem.generic.short=BRT
+America/Santarem.standard.short=BRT
+America/Santiago.daylight.short=CLST
+America/Santiago.generic.short=CLT
+America/Santiago.standard.short=CLT
+America/Santo_Domingo.daylight.short=ADT
+America/Santo_Domingo.generic.short=AT
+America/Santo_Domingo.standard.short=AST
+America/Sao_Paulo.daylight.short=BRST
+America/Sao_Paulo.generic.short=BRT
+America/Sao_Paulo.standard.short=BRT
+America/Scoresbysund.daylight.short=EGST
+America/Scoresbysund.generic.short=EGT
+America/Scoresbysund.standard.short=EGT
+America/Shiprock.daylight.short=MDT
+America/Shiprock.generic.short=MT
+America/Shiprock.standard.short=MST
+America/Sitka.daylight.short=AKDT
+America/Sitka.generic.short=AKT
+America/Sitka.standard.short=AKST
+America/St_Barthelemy.daylight.short=ADT
+America/St_Barthelemy.generic.short=AT
+America/St_Barthelemy.standard.short=AST
+America/St_Johns.daylight.short=NDT
+America/St_Johns.generic.short=NT
+America/St_Johns.standard.short=NST
+America/St_Kitts.daylight.short=ADT
+America/St_Kitts.generic.short=AT
+America/St_Kitts.standard.short=AST
+America/St_Lucia.daylight.short=ADT
+America/St_Lucia.generic.short=AT
+America/St_Lucia.standard.short=AST
+America/St_Thomas.daylight.short=ADT
+America/St_Thomas.generic.short=AT
+America/St_Thomas.standard.short=AST
+America/St_Vincent.daylight.short=ADT
+America/St_Vincent.generic.short=AT
+America/St_Vincent.standard.short=AST
+America/Swift_Current.daylight.short=CDT
+America/Swift_Current.generic.short=CT
+America/Swift_Current.standard.short=CST
+America/Tegucigalpa.daylight.short=CDT
+America/Tegucigalpa.generic.short=CT
+America/Tegucigalpa.standard.short=CST
+America/Thule.daylight.short=ADT
+America/Thule.generic.short=AT
+America/Thule.standard.short=AST
+America/Thunder_Bay.daylight.short=EDT
+America/Thunder_Bay.generic.short=ET
+America/Thunder_Bay.standard.short=EST
+America/Tijuana.daylight.short=PDT
+America/Tijuana.generic.short=PT
+America/Tijuana.standard.short=PST
+America/Toronto.daylight.short=EDT
+America/Toronto.generic.short=ET
+America/Toronto.standard.short=EST
+America/Tortola.daylight.short=ADT
+America/Tortola.generic.short=AT
+America/Tortola.standard.short=AST
+America/Vancouver.daylight.short=PDT
+America/Vancouver.generic.short=PT
+America/Vancouver.standard.short=PST
+America/Virgin.daylight.short=ADT
+America/Virgin.generic.short=AT
+America/Virgin.standard.short=AST
+America/Whitehorse.daylight.short=PDT
+America/Whitehorse.generic.short=PT
+America/Whitehorse.standard.short=PST
+America/Winnipeg.daylight.short=CDT
+America/Winnipeg.generic.short=CT
+America/Winnipeg.standard.short=CST
+America/Yakutat.daylight.short=AKDT
+America/Yakutat.generic.short=AKT
+America/Yakutat.standard.short=AKST
+America/Yellowknife.daylight.short=MDT
+America/Yellowknife.generic.short=MT
+America/Yellowknife.standard.short=MST
+Antarctica/Casey.daylight.short=WST
+Antarctica/Casey.generic.short=WT
+Antarctica/Casey.standard.short=WST
+Antarctica/Davis.daylight.short=DAVST
+Antarctica/Davis.generic.short=DAVT
+Antarctica/Davis.standard.short=DAVT
+Antarctica/DumontDUrville.daylight.short=DDUST
+Antarctica/DumontDUrville.generic.short=DDUT
+Antarctica/DumontDUrville.standard.short=DDUT
+Antarctica/Macquarie.daylight.short=MIST
+Antarctica/Macquarie.generic.short=MIST
+Antarctica/Macquarie.standard.short=MIST
+Antarctica/Mawson.daylight.short=MAWST
+Antarctica/Mawson.generic.short=MAWT
+Antarctica/Mawson.standard.short=MAWT
+Antarctica/McMurdo.daylight.short=NZDT
+Antarctica/McMurdo.generic.short=NZT
+Antarctica/McMurdo.standard.short=NZST
+Antarctica/Palmer.daylight.short=CLST
+Antarctica/Palmer.generic.short=CLT
+Antarctica/Palmer.standard.short=CLT
+Antarctica/Rothera.daylight.short=ROTST
+Antarctica/Rothera.generic.short=ROTT
+Antarctica/Rothera.standard.short=ROTT
+Antarctica/South_Pole.daylight.short=NZDT
+Antarctica/South_Pole.generic.short=NZT
+Antarctica/South_Pole.standard.short=NZST
+Antarctica/Syowa.daylight.short=SYOST
+Antarctica/Syowa.generic.short=SYOT
+Antarctica/Syowa.standard.short=SYOT
+Antarctica/Vostok.daylight.short=VOSST
+Antarctica/Vostok.generic.short=VOST
+Antarctica/Vostok.standard.short=VOST
+Arctic/Longyearbyen.daylight.short=CEST
+Arctic/Longyearbyen.generic.short=CET
+Arctic/Longyearbyen.standard.short=CET
+ART.daylight.short=EEST
+ART.generic.short=EET
+ART.standard.short=EET
+Asia/Aden.daylight.short=ADT
+Asia/Aden.generic.short=AT
+Asia/Aden.standard.short=AST
+Asia/Almaty.daylight.short=ALMST
+Asia/Almaty.generic.short=ALMT
+Asia/Almaty.standard.short=ALMT
+Asia/Amman.daylight.short=ADT
+Asia/Amman.generic.short=AT
+Asia/Amman.standard.short=AST
+Asia/Anadyr.daylight.short=ANAST
+Asia/Anadyr.generic.short=ANAT
+Asia/Anadyr.standard.short=ANAT
+Asia/Aqtau.daylight.short=AQTST
+Asia/Aqtau.generic.short=AQTT
+Asia/Aqtau.standard.short=AQTT
+Asia/Aqtobe.daylight.short=AQTST
+Asia/Aqtobe.generic.short=AQTT
+Asia/Aqtobe.standard.short=AQTT
+Asia/Ashgabat.daylight.short=TMST
+Asia/Ashgabat.generic.short=TMT
+Asia/Ashgabat.standard.short=TMT
+Asia/Ashkhabad.daylight.short=TMST
+Asia/Ashkhabad.generic.short=TMT
+Asia/Ashkhabad.standard.short=TMT
+Asia/Baghdad.daylight.short=ADT
+Asia/Baghdad.generic.short=AT
+Asia/Baghdad.standard.short=AST
+Asia/Bahrain.daylight.short=ADT
+Asia/Bahrain.generic.short=AT
+Asia/Bahrain.standard.short=AST
+Asia/Baku.daylight.short=AZST
+Asia/Baku.generic.short=AZT
+Asia/Baku.standard.short=AZT
+Asia/Bangkok.daylight.short=ICST
+Asia/Bangkok.generic.short=ICT
+Asia/Bangkok.standard.short=ICT
+Asia/Beirut.daylight.short=EEST
+Asia/Beirut.generic.short=EET
+Asia/Beirut.standard.short=EET
+Asia/Bishkek.daylight.short=KGST
+Asia/Bishkek.generic.short=KGT
+Asia/Bishkek.standard.short=KGT
+Asia/Brunei.daylight.short=BNST
+Asia/Brunei.generic.short=BNT
+Asia/Brunei.standard.short=BNT
+Asia/Calcutta.daylight.short=IDT
+Asia/Calcutta.generic.short=IT
+Asia/Calcutta.standard.short=IST
+Asia/Choibalsan.daylight.short=CHOST
+Asia/Choibalsan.generic.short=CHOT
+Asia/Choibalsan.standard.short=CHOT
+Asia/Chongqing.daylight.short=CDT
+Asia/Chongqing.generic.short=CT
+Asia/Chongqing.standard.short=CST
+Asia/Chungking.daylight.short=CDT
+Asia/Chungking.generic.short=CT
+Asia/Chungking.standard.short=CST
+Asia/Colombo.daylight.short=IDT
+Asia/Colombo.generic.short=IT
+Asia/Colombo.standard.short=IST
+Asia/Dacca.daylight.short=BDST
+Asia/Dacca.generic.short=BDT
+Asia/Dacca.standard.short=BDT
+Asia/Damascus.daylight.short=EEST
+Asia/Damascus.generic.short=EET
+Asia/Damascus.standard.short=EET
+Asia/Dhaka.daylight.short=BDST
+Asia/Dhaka.generic.short=BDT
+Asia/Dhaka.standard.short=BDT
+Asia/Dili.daylight.short=TLST
+Asia/Dili.generic.short=TLT
+Asia/Dili.standard.short=TLT
+Asia/Dubai.daylight.short=GDT
+Asia/Dubai.generic.short=GT
+Asia/Dubai.standard.short=GST
+Asia/Dushanbe.daylight.short=TJST
+Asia/Dushanbe.generic.short=TJT
+Asia/Dushanbe.standard.short=TJT
+Asia/Gaza.daylight.short=EEST
+Asia/Gaza.generic.short=EET
+Asia/Gaza.standard.short=EET
+Asia/Harbin.daylight.short=CDT
+Asia/Harbin.generic.short=CT
+Asia/Harbin.standard.short=CST
+Asia/Hebron.daylight.short=EEST
+Asia/Hebron.generic.short=EET
+Asia/Hebron.standard.short=EET
+Asia/Ho_Chi_Minh.daylight.short=ICST
+Asia/Ho_Chi_Minh.generic.short=ICT
+Asia/Ho_Chi_Minh.standard.short=ICT
+Asia/Hong_Kong.daylight.short=HKST
+Asia/Hong_Kong.generic.short=HKT
+Asia/Hong_Kong.standard.short=HKT
+Asia/Hovd.daylight.short=HOVST
+Asia/Hovd.generic.short=HOVT
+Asia/Hovd.standard.short=HOVT
+Asia/Irkutsk.daylight.short=IRKST
+Asia/Irkutsk.generic.short=IRKT
+Asia/Irkutsk.standard.short=IRKT
+Asia/Istanbul.daylight.short=EEST
+Asia/Istanbul.generic.short=EET
+Asia/Istanbul.standard.short=EET
+Asia/Jakarta.daylight.short=WIST
+Asia/Jakarta.generic.short=WIB
+Asia/Jakarta.standard.short=WIB
+Asia/Jayapura.daylight.short=EIST
+Asia/Jayapura.generic.short=WIT
+Asia/Jayapura.standard.short=WIT
+Asia/Jerusalem.daylight.short=IDT
+Asia/Jerusalem.generic.short=IT
+Asia/Jerusalem.standard.short=IST
+Asia/Kabul.daylight.short=AFST
+Asia/Kabul.generic.short=AFT
+Asia/Kabul.standard.short=AFT
+Asia/Kamchatka.daylight.short=PETST
+Asia/Kamchatka.generic.short=PETT
+Asia/Kamchatka.standard.short=PETT
+Asia/Karachi.daylight.short=PKST
+Asia/Karachi.generic.short=PKT
+Asia/Karachi.standard.short=PKT
+Asia/Kashgar.daylight.short=CDT
+Asia/Kashgar.generic.short=CT
+Asia/Kashgar.standard.short=CST
+Asia/Kathmandu.daylight.short=NPST
+Asia/Kathmandu.generic.short=NPT
+Asia/Kathmandu.standard.short=NPT
+Asia/Katmandu.daylight.short=NPST
+Asia/Katmandu.generic.short=NPT
+Asia/Katmandu.standard.short=NPT
+Asia/Khandyga.daylight.short=YAKST
+Asia/Khandyga.generic.short=YAKT
+Asia/Khandyga.standard.short=YAKT
+Asia/Kolkata.daylight.short=IDT
+Asia/Kolkata.generic.short=IT
+Asia/Kolkata.standard.short=IST
+Asia/Krasnoyarsk.daylight.short=KRAST
+Asia/Krasnoyarsk.generic.short=KRAT
+Asia/Krasnoyarsk.standard.short=KRAT
+Asia/Kuala_Lumpur.daylight.short=MYST
+Asia/Kuala_Lumpur.generic.short=MYT
+Asia/Kuala_Lumpur.standard.short=MYT
+Asia/Kuching.daylight.short=MYST
+Asia/Kuching.generic.short=MYT
+Asia/Kuching.standard.short=MYT
+Asia/Kuwait.daylight.short=ADT
+Asia/Kuwait.generic.short=AT
+Asia/Kuwait.standard.short=AST
+Asia/Macao.daylight.short=CDT
+Asia/Macao.generic.short=CT
+Asia/Macao.standard.short=CST
+Asia/Macau.daylight.short=CDT
+Asia/Macau.generic.short=CT
+Asia/Macau.standard.short=CST
+Asia/Magadan.daylight.short=MAGST
+Asia/Magadan.generic.short=MAGT
+Asia/Magadan.standard.short=MAGT
+Asia/Makassar.daylight.short=CIST
+Asia/Makassar.generic.short=WITA
+Asia/Makassar.standard.short=WITA
+Asia/Manila.daylight.short=PHST
+Asia/Manila.generic.short=PHT
+Asia/Manila.standard.short=PHT
+Asia/Muscat.daylight.short=GDT
+Asia/Muscat.generic.short=GT
+Asia/Muscat.standard.short=GST
+Asia/Nicosia.daylight.short=EEST
+Asia/Nicosia.generic.short=EET
+Asia/Nicosia.standard.short=EET
+Asia/Novokuznetsk.daylight.short=NOVST
+Asia/Novokuznetsk.generic.short=NOVT
+Asia/Novokuznetsk.standard.short=NOVT
+Asia/Novosibirsk.daylight.short=NOVST
+Asia/Novosibirsk.generic.short=NOVT
+Asia/Novosibirsk.standard.short=NOVT
+Asia/Omsk.daylight.short=OMSST
+Asia/Omsk.generic.short=OMST
+Asia/Omsk.standard.short=OMST
+Asia/Oral.daylight.short=ORAST
+Asia/Oral.generic.short=ORAT
+Asia/Oral.standard.short=ORAT
+Asia/Phnom_Penh.daylight.short=ICST
+Asia/Phnom_Penh.generic.short=ICT
+Asia/Phnom_Penh.standard.short=ICT
+Asia/Pontianak.daylight.short=WIST
+Asia/Pontianak.generic.short=WIB
+Asia/Pontianak.standard.short=WIB
+Asia/Pyongyang.daylight.short=KDT
+Asia/Pyongyang.generic.short=KT
+Asia/Pyongyang.standard.short=KST
+Asia/Qatar.daylight.short=ADT
+Asia/Qatar.generic.short=AT
+Asia/Qatar.standard.short=AST
+Asia/Qyzylorda.daylight.short=QYZST
+Asia/Qyzylorda.generic.short=QYZT
+Asia/Qyzylorda.standard.short=QYZT
+Asia/Rangoon.daylight.short=MMST
+Asia/Rangoon.generic.short=MMT
+Asia/Rangoon.standard.short=MMT
+Asia/Saigon.daylight.short=ICST
+Asia/Saigon.generic.short=ICT
+Asia/Saigon.standard.short=ICT
+Asia/Sakhalin.daylight.short=SAKST
+Asia/Sakhalin.generic.short=SAKT
+Asia/Sakhalin.standard.short=SAKT
+Asia/Samarkand.daylight.short=UZST
+Asia/Samarkand.generic.short=UZT
+Asia/Samarkand.standard.short=UZT
+Asia/Seoul.daylight.short=KDT
+Asia/Seoul.generic.short=KT
+Asia/Seoul.standard.short=KST
+Asia/Shanghai.daylight.short=CDT
+Asia/Shanghai.generic.short=CT
+Asia/Shanghai.standard.short=CST
+Asia/Singapore.daylight.short=SGST
+Asia/Singapore.generic.short=SGT
+Asia/Singapore.standard.short=SGT
+Asia/Taipei.daylight.short=CDT
+Asia/Taipei.generic.short=CT
+Asia/Taipei.standard.short=CST
+Asia/Tashkent.daylight.short=UZST
+Asia/Tashkent.generic.short=UZT
+Asia/Tashkent.standard.short=UZT
+Asia/Tbilisi.daylight.short=GEST
+Asia/Tbilisi.generic.short=GET
+Asia/Tbilisi.standard.short=GET
+Asia/Tehran.daylight.short=IRDT
+Asia/Tehran.generic.short=IRT
+Asia/Tehran.standard.short=IRST
+Asia/Tel_Aviv.daylight.short=IDT
+Asia/Tel_Aviv.generic.short=IT
+Asia/Tel_Aviv.standard.short=IST
+Asia/Thimbu.daylight.short=BTST
+Asia/Thimbu.generic.short=BTT
+Asia/Thimbu.standard.short=BTT
+Asia/Thimphu.daylight.short=BTST
+Asia/Thimphu.generic.short=BTT
+Asia/Thimphu.standard.short=BTT
+Asia/Tokyo.daylight.short=JDT
+Asia/Tokyo.generic.short=JT
+Asia/Tokyo.standard.short=JST
+Asia/Ujung_Pandang.daylight.short=CIST
+Asia/Ujung_Pandang.generic.short=WITA
+Asia/Ujung_Pandang.standard.short=WITA
+Asia/Ulaanbaatar.daylight.short=ULAST
+Asia/Ulaanbaatar.generic.short=ULAT
+Asia/Ulaanbaatar.standard.short=ULAT
+Asia/Ulan_Bator.daylight.short=ULAST
+Asia/Ulan_Bator.generic.short=ULAT
+Asia/Ulan_Bator.standard.short=ULAT
+Asia/Urumqi.daylight.short=CDT
+Asia/Urumqi.generic.short=CT
+Asia/Urumqi.standard.short=CST
+Asia/Ust-Nera.daylight.short=VLAST
+Asia/Ust-Nera.generic.short=VLAT
+Asia/Ust-Nera.standard.short=VLAT
+Asia/Vientiane.daylight.short=ICST
+Asia/Vientiane.generic.short=ICT
+Asia/Vientiane.standard.short=ICT
+Asia/Vladivostok.daylight.short=VLAST
+Asia/Vladivostok.generic.short=VLAT
+Asia/Vladivostok.standard.short=VLAT
+Asia/Yakutsk.daylight.short=YAKST
+Asia/Yakutsk.generic.short=YAKT
+Asia/Yakutsk.standard.short=YAKT
+Asia/Yekaterinburg.daylight.short=YEKST
+Asia/Yekaterinburg.generic.short=YEKT
+Asia/Yekaterinburg.standard.short=YEKT
+Asia/Yerevan.daylight.short=AMST
+Asia/Yerevan.generic.short=AMT
+Asia/Yerevan.standard.short=AMT
+AST.daylight.short=AKDT
+AST.generic.short=AKT
+AST.standard.short=AKST
+Atlantic/Azores.daylight.short=AZOST
+Atlantic/Azores.generic.short=AZOT
+Atlantic/Azores.standard.short=AZOT
+Atlantic/Bermuda.daylight.short=ADT
+Atlantic/Bermuda.generic.short=AT
+Atlantic/Bermuda.standard.short=AST
+Atlantic/Canary.daylight.short=WEST
+Atlantic/Canary.generic.short=WET
+Atlantic/Canary.standard.short=WET
+Atlantic/Cape_Verde.daylight.short=CVST
+Atlantic/Cape_Verde.generic.short=CVT
+Atlantic/Cape_Verde.standard.short=CVT
+Atlantic/Faeroe.daylight.short=WEST
+Atlantic/Faeroe.generic.short=WET
+Atlantic/Faeroe.standard.short=WET
+Atlantic/Faroe.daylight.short=WEST
+Atlantic/Faroe.generic.short=WET
+Atlantic/Faroe.standard.short=WET
+Atlantic/Jan_Mayen.daylight.short=CEST
+Atlantic/Jan_Mayen.generic.short=CET
+Atlantic/Jan_Mayen.standard.short=CET
+Atlantic/Madeira.daylight.short=WEST
+Atlantic/Madeira.generic.short=WET
+Atlantic/Madeira.standard.short=WET
+Atlantic/Reykjavik.daylight.short=GMT
+Atlantic/Reykjavik.generic.short=GMT
+Atlantic/Reykjavik.standard.short=GMT
+Atlantic/South_Georgia.daylight.short=GDT
+Atlantic/South_Georgia.generic.short=GT
+Atlantic/South_Georgia.standard.short=GST
+Atlantic/Stanley.daylight.short=FKST
+Atlantic/Stanley.generic.short=FKT
+Atlantic/Stanley.standard.short=FKT
+Atlantic/St_Helena.daylight.short=GMT
+Atlantic/St_Helena.generic.short=GMT
+Atlantic/St_Helena.standard.short=GMT
+Australia/ACT.daylight.short=EST
+Australia/ACT.generic.short=ET
+Australia/ACT.standard.short=EST
+Australia/Adelaide.daylight.short=CST
+Australia/Adelaide.generic.short=CT
+Australia/Adelaide.standard.short=CST
+Australia/Brisbane.daylight.short=EST
+Australia/Brisbane.generic.short=ET
+Australia/Brisbane.standard.short=EST
+Australia/Broken_Hill.daylight.short=CST
+Australia/Broken_Hill.generic.short=CT
+Australia/Broken_Hill.standard.short=CST
+Australia/Canberra.daylight.short=EST
+Australia/Canberra.generic.short=ET
+Australia/Canberra.standard.short=EST
+Australia/Currie.daylight.short=EST
+Australia/Currie.generic.short=ET
+Australia/Currie.standard.short=EST
+Australia/Darwin.daylight.short=CST
+Australia/Darwin.generic.short=CT
+Australia/Darwin.standard.short=CST
+Australia/Eucla.daylight.short=CWST
+Australia/Eucla.generic.short=CWT
+Australia/Eucla.standard.short=CWST
+Australia/Hobart.daylight.short=EST
+Australia/Hobart.generic.short=ET
+Australia/Hobart.standard.short=EST
+Australia/LHI.daylight.short=LHST
+Australia/LHI.generic.short=LHT
+Australia/LHI.standard.short=LHST
+Australia/Lindeman.daylight.short=EST
+Australia/Lindeman.generic.short=ET
+Australia/Lindeman.standard.short=EST
+Australia/Lord_Howe.daylight.short=LHST
+Australia/Lord_Howe.generic.short=LHT
+Australia/Lord_Howe.standard.short=LHST
+Australia/Melbourne.daylight.short=EST
+Australia/Melbourne.generic.short=ET
+Australia/Melbourne.standard.short=EST
+Australia/North.daylight.short=CST
+Australia/North.generic.short=CT
+Australia/North.standard.short=CST
+Australia/NSW.daylight.short=EST
+Australia/NSW.generic.short=ET
+Australia/NSW.standard.short=EST
+Australia/Perth.daylight.short=WST
+Australia/Perth.generic.short=WT
+Australia/Perth.standard.short=WST
+Australia/Queensland.daylight.short=EST
+Australia/Queensland.generic.short=ET
+Australia/Queensland.standard.short=EST
+Australia/South.daylight.short=CST
+Australia/South.generic.short=CT
+Australia/South.standard.short=CST
+Australia/Sydney.daylight.short=EST
+Australia/Sydney.generic.short=ET
+Australia/Sydney.standard.short=EST
+Australia/Tasmania.daylight.short=EST
+Australia/Tasmania.generic.short=ET
+Australia/Tasmania.standard.short=EST
+Australia/Victoria.daylight.short=EST
+Australia/Victoria.generic.short=ET
+Australia/Victoria.standard.short=EST
+Australia/West.daylight.short=WST
+Australia/West.generic.short=WT
+Australia/West.standard.short=WST
+Australia/Yancowinna.daylight.short=CST
+Australia/Yancowinna.generic.short=CT
+Australia/Yancowinna.standard.short=CST
+BET.daylight.short=BRST
+BET.generic.short=BRT
+BET.standard.short=BRT
+Brazil/Acre.daylight.short=ACST
+Brazil/Acre.generic.short=ACT
+Brazil/Acre.standard.short=ACT
+Brazil/DeNoronha.daylight.short=FNST
+Brazil/DeNoronha.generic.short=FNT
+Brazil/DeNoronha.standard.short=FNT
+Brazil/East.daylight.short=BRST
+Brazil/East.generic.short=BRT
+Brazil/East.standard.short=BRT
+Brazil/West.daylight.short=AMST
+Brazil/West.generic.short=AMT
+Brazil/West.standard.short=AMT
+BST.daylight.short=BDST
+BST.generic.short=BDT
+BST.standard.short=BDT
+Canada/Atlantic.daylight.short=ADT
+Canada/Atlantic.generic.short=AT
+Canada/Atlantic.standard.short=AST
+Canada/Central.daylight.short=CDT
+Canada/Central.generic.short=CT
+Canada/Central.standard.short=CST
+Canada/Eastern.daylight.short=EDT
+Canada/Eastern.generic.short=ET
+Canada/Eastern.standard.short=EST
+Canada/East-Saskatchewan.daylight.short=CDT
+Canada/East-Saskatchewan.generic.short=CT
+Canada/East-Saskatchewan.standard.short=CST
+Canada/Mountain.daylight.short=MDT
+Canada/Mountain.generic.short=MT
+Canada/Mountain.standard.short=MST
+Canada/Newfoundland.daylight.short=NDT
+Canada/Newfoundland.generic.short=NT
+Canada/Newfoundland.standard.short=NST
+Canada/Pacific.daylight.short=PDT
+Canada/Pacific.generic.short=PT
+Canada/Pacific.standard.short=PST
+Canada/Saskatchewan.daylight.short=CDT
+Canada/Saskatchewan.generic.short=CT
+Canada/Saskatchewan.standard.short=CST
+Canada/Yukon.daylight.short=PDT
+Canada/Yukon.generic.short=PT
+Canada/Yukon.standard.short=PST
+CAT.daylight.short=CAST
+CAT.generic.short=CAT
+CAT.standard.short=CAT
+CET.daylight.short=CEST
+CET.generic.short=CET
+CET.standard.short=CET
+Chile/Continental.daylight.short=CLST
+Chile/Continental.generic.short=CLT
+Chile/Continental.standard.short=CLT
+Chile/EasterIsland.daylight.short=EASST
+Chile/EasterIsland.generic.short=EAST
+Chile/EasterIsland.standard.short=EAST
+CNT.daylight.short=NDT
+CNT.generic.short=NT
+CNT.standard.short=NST
+CST6CDT.daylight.short=CDT
+CST6CDT.generic.short=CT
+CST6CDT.standard.short=CST
+CST.daylight.short=CDT
+CST.generic.short=CT
+CST.standard.short=CST
+CTT.daylight.short=CDT
+CTT.generic.short=CT
+CTT.standard.short=CST
+Cuba.daylight.short=CDT
+Cuba.generic.short=CT
+Cuba.standard.short=CST
+EAT.daylight.short=EAST
+EAT.generic.short=EAT
+EAT.standard.short=EAT
+ECT.daylight.short=CEST
+ECT.generic.short=CET
+ECT.standard.short=CET
+EET.daylight.short=EEST
+EET.generic.short=EET
+EET.standard.short=EET
+Egypt.daylight.short=EEST
+Egypt.generic.short=EET
+Egypt.standard.short=EET
+Eire.daylight.short=IST
+Eire.generic.short=IT
+Eire.standard.short=GMT
+EST5EDT.daylight.short=EDT
+EST5EDT.generic.short=ET
+EST5EDT.standard.short=EST
+EST.daylight.short=EDT
+EST.generic.short=ET
+EST.standard.short=EST
+Etc/Greenwich.daylight.short=GMT
+Etc/Greenwich.generic.short=GMT
+Etc/Greenwich.standard.short=GMT
+Etc/UCT.daylight.short=UTC
+Etc/UCT.generic.short=UTC
+Etc/UCT.standard.short=UTC
+Etc/Universal.daylight.short=UTC
+Etc/Universal.generic.short=UTC
+Etc/Universal.standard.short=UTC
+Etc/UTC.daylight.short=UTC
+Etc/UTC.generic.short=UTC
+Etc/UTC.standard.short=UTC
+Etc/Zulu.daylight.short=UTC
+Etc/Zulu.generic.short=UTC
+Etc/Zulu.standard.short=UTC
+Europe/Amsterdam.daylight.short=CEST
+Europe/Amsterdam.generic.short=CET
+Europe/Amsterdam.standard.short=CET
+Europe/Andorra.daylight.short=CEST
+Europe/Andorra.generic.short=CET
+Europe/Andorra.standard.short=CET
+Europe/Athens.daylight.short=EEST
+Europe/Athens.generic.short=EET
+Europe/Athens.standard.short=EET
+Europe/Belfast.daylight.short=BST
+Europe/Belfast.generic.short=BT
+Europe/Belfast.standard.short=GMT
+Europe/Belgrade.daylight.short=CEST
+Europe/Belgrade.generic.short=CET
+Europe/Belgrade.standard.short=CET
+Europe/Berlin.daylight.short=CEST
+Europe/Berlin.generic.short=CET
+Europe/Berlin.standard.short=CET
+Europe/Bratislava.daylight.short=CEST
+Europe/Bratislava.generic.short=CET
+Europe/Bratislava.standard.short=CET
+Europe/Brussels.daylight.short=CEST
+Europe/Brussels.generic.short=CET
+Europe/Brussels.standard.short=CET
+Europe/Bucharest.daylight.short=EEST
+Europe/Bucharest.generic.short=EET
+Europe/Bucharest.standard.short=EET
+Europe/Budapest.daylight.short=CEST
+Europe/Budapest.generic.short=CET
+Europe/Budapest.standard.short=CET
+Europe/Busingen.daylight.short=CEST
+Europe/Busingen.generic.short=CET
+Europe/Busingen.standard.short=CET
+Europe/Chisinau.daylight.short=EEST
+Europe/Chisinau.generic.short=EET
+Europe/Chisinau.standard.short=EET
+Europe/Copenhagen.daylight.short=CEST
+Europe/Copenhagen.generic.short=CET
+Europe/Copenhagen.standard.short=CET
+Europe/Dublin.daylight.short=IST
+Europe/Dublin.generic.short=IT
+Europe/Dublin.standard.short=GMT
+Europe/Gibraltar.daylight.short=CEST
+Europe/Gibraltar.generic.short=CET
+Europe/Gibraltar.standard.short=CET
+Europe/Guernsey.daylight.short=BST
+Europe/Guernsey.generic.short=BT
+Europe/Guernsey.standard.short=GMT
+Europe/Helsinki.daylight.short=EEST
+Europe/Helsinki.generic.short=EET
+Europe/Helsinki.standard.short=EET
+Europe/Isle_of_Man.daylight.short=BST
+Europe/Isle_of_Man.generic.short=BT
+Europe/Isle_of_Man.standard.short=GMT
+Europe/Istanbul.daylight.short=EEST
+Europe/Istanbul.generic.short=EET
+Europe/Istanbul.standard.short=EET
+Europe/Jersey.daylight.short=BST
+Europe/Jersey.generic.short=BT
+Europe/Jersey.standard.short=GMT
+Europe/Kaliningrad.daylight.short=FEST
+Europe/Kaliningrad.generic.short=FET
+Europe/Kaliningrad.standard.short=FET
+Europe/Kiev.daylight.short=EEST
+Europe/Kiev.generic.short=EET
+Europe/Kiev.standard.short=EET
+Europe/Lisbon.daylight.short=WEST
+Europe/Lisbon.generic.short=WET
+Europe/Lisbon.standard.short=WET
+Europe/Ljubljana.daylight.short=CEST
+Europe/Ljubljana.generic.short=CET
+Europe/Ljubljana.standard.short=CET
+Europe/London.daylight.short=BST
+Europe/London.generic.short=BT
+Europe/London.standard.short=GMT
+Europe/Luxembourg.daylight.short=CEST
+Europe/Luxembourg.generic.short=CET
+Europe/Luxembourg.standard.short=CET
+Europe/Madrid.daylight.short=CEST
+Europe/Madrid.generic.short=CET
+Europe/Madrid.standard.short=CET
+Europe/Malta.daylight.short=CEST
+Europe/Malta.generic.short=CET
+Europe/Malta.standard.short=CET
+Europe/Mariehamn.daylight.short=EEST
+Europe/Mariehamn.generic.short=EET
+Europe/Mariehamn.standard.short=EET
+Europe/Minsk.daylight.short=FEST
+Europe/Minsk.generic.short=FET
+Europe/Minsk.standard.short=FET
+Europe/Monaco.daylight.short=CEST
+Europe/Monaco.generic.short=CET
+Europe/Monaco.standard.short=CET
+Europe/Moscow.daylight.short=MSD
+Europe/Moscow.generic.short=MT
+Europe/Moscow.standard.short=MSK
+Europe/Nicosia.daylight.short=EEST
+Europe/Nicosia.generic.short=EET
+Europe/Nicosia.standard.short=EET
+Europe/Oslo.daylight.short=CEST
+Europe/Oslo.generic.short=CET
+Europe/Oslo.standard.short=CET
+Europe/Paris.daylight.short=CEST
+Europe/Paris.generic.short=CET
+Europe/Paris.standard.short=CET
+Europe/Podgorica.daylight.short=CEST
+Europe/Podgorica.generic.short=CET
+Europe/Podgorica.standard.short=CET
+Europe/Prague.daylight.short=CEST
+Europe/Prague.generic.short=CET
+Europe/Prague.standard.short=CET
+Europe/Riga.daylight.short=EEST
+Europe/Riga.generic.short=EET
+Europe/Riga.standard.short=EET
+Europe/Rome.daylight.short=CEST
+Europe/Rome.generic.short=CET
+Europe/Rome.standard.short=CET
+Europe/Samara.daylight.short=SAMST
+Europe/Samara.generic.short=SAMT
+Europe/Samara.standard.short=SAMT
+Europe/San_Marino.daylight.short=CEST
+Europe/San_Marino.generic.short=CET
+Europe/San_Marino.standard.short=CET
+Europe/Sarajevo.daylight.short=CEST
+Europe/Sarajevo.generic.short=CET
+Europe/Sarajevo.standard.short=CET
+Europe/Simferopol.daylight.short=EEST
+Europe/Simferopol.generic.short=EET
+Europe/Simferopol.standard.short=EET
+Europe/Skopje.daylight.short=CEST
+Europe/Skopje.generic.short=CET
+Europe/Skopje.standard.short=CET
+Europe/Sofia.daylight.short=EEST
+Europe/Sofia.generic.short=EET
+Europe/Sofia.standard.short=EET
+Europe/Stockholm.daylight.short=CEST
+Europe/Stockholm.generic.short=CET
+Europe/Stockholm.standard.short=CET
+Europe/Tallinn.daylight.short=EEST
+Europe/Tallinn.generic.short=EET
+Europe/Tallinn.standard.short=EET
+Europe/Tirane.daylight.short=CEST
+Europe/Tirane.generic.short=CET
+Europe/Tirane.standard.short=CET
+Europe/Tiraspol.daylight.short=EEST
+Europe/Tiraspol.generic.short=EET
+Europe/Tiraspol.standard.short=EET
+Europe/Uzhgorod.daylight.short=EEST
+Europe/Uzhgorod.generic.short=EET
+Europe/Uzhgorod.standard.short=EET
+Europe/Vaduz.daylight.short=CEST
+Europe/Vaduz.generic.short=CET
+Europe/Vaduz.standard.short=CET
+Europe/Vatican.daylight.short=CEST
+Europe/Vatican.generic.short=CET
+Europe/Vatican.standard.short=CET
+Europe/Vienna.daylight.short=CEST
+Europe/Vienna.generic.short=CET
+Europe/Vienna.standard.short=CET
+Europe/Vilnius.daylight.short=EEST
+Europe/Vilnius.generic.short=EET
+Europe/Vilnius.standard.short=EET
+Europe/Volgograd.daylight.short=VOLST
+Europe/Volgograd.generic.short=VOLT
+Europe/Volgograd.standard.short=VOLT
+Europe/Warsaw.daylight.short=CEST
+Europe/Warsaw.generic.short=CET
+Europe/Warsaw.standard.short=CET
+Europe/Zagreb.daylight.short=CEST
+Europe/Zagreb.generic.short=CET
+Europe/Zagreb.standard.short=CET
+Europe/Zaporozhye.daylight.short=EEST
+Europe/Zaporozhye.generic.short=EET
+Europe/Zaporozhye.standard.short=EET
+Europe/Zurich.daylight.short=CEST
+Europe/Zurich.generic.short=CET
+Europe/Zurich.standard.short=CET
+GB.daylight.short=BST
+GB-Eire.daylight.short=BST
+GB-Eire.generic.short=BT
+GB-Eire.standard.short=GMT
+GB.generic.short=BT
+GB.standard.short=GMT
+GMT.daylight.short=GMT
+GMT.generic.short=GMT
+GMT.standard.short=GMT
+Greenwich.daylight.short=GMT
+Greenwich.generic.short=GMT
+Greenwich.standard.short=GMT
+Hongkong.daylight.short=HKST
+Hongkong.generic.short=HKT
+Hongkong.standard.short=HKT
+HST.daylight.short=HDT
+HST.generic.short=HT
+HST.standard.short=HST
+Iceland.daylight.short=GMT
+Iceland.generic.short=GMT
+Iceland.standard.short=GMT
+IET.daylight.short=EDT
+IET.generic.short=ET
+IET.standard.short=EST
+Indian/Antananarivo.daylight.short=EAST
+Indian/Antananarivo.generic.short=EAT
+Indian/Antananarivo.standard.short=EAT
+Indian/Chagos.daylight.short=IOST
+Indian/Chagos.generic.short=IOT
+Indian/Chagos.standard.short=IOT
+Indian/Christmas.daylight.short=CXST
+Indian/Christmas.generic.short=CIT
+Indian/Christmas.standard.short=CXT
+Indian/Cocos.daylight.short=CCST
+Indian/Cocos.generic.short=CCT
+Indian/Cocos.standard.short=CCT
+Indian/Comoro.daylight.short=EAST
+Indian/Comoro.generic.short=EAT
+Indian/Comoro.standard.short=EAT
+Indian/Kerguelen.daylight.short=TFST
+Indian/Kerguelen.generic.short=TFT
+Indian/Kerguelen.standard.short=TFT
+Indian/Mahe.daylight.short=SCST
+Indian/Mahe.generic.short=SCT
+Indian/Mahe.standard.short=SCT
+Indian/Maldives.daylight.short=MVST
+Indian/Maldives.generic.short=MVT
+Indian/Maldives.standard.short=MVT
+Indian/Mauritius.daylight.short=MUST
+Indian/Mauritius.generic.short=MUT
+Indian/Mauritius.standard.short=MUT
+Indian/Mayotte.daylight.short=EAST
+Indian/Mayotte.generic.short=EAT
+Indian/Mayotte.standard.short=EAT
+Indian/Reunion.daylight.short=REST
+Indian/Reunion.generic.short=RET
+Indian/Reunion.standard.short=RET
+Iran.daylight.short=IRDT
+Iran.generic.short=IRT
+Iran.standard.short=IRST
+Israel.daylight.short=IDT
+Israel.generic.short=IT
+Israel.standard.short=IST
+IST.daylight.short=IDT
+IST.generic.short=IT
+IST.standard.short=IST
+Jamaica.daylight.short=EDT
+Jamaica.generic.short=ET
+Jamaica.standard.short=EST
+Japan.daylight.short=JDT
+Japan.generic.short=JT
+Japan.standard.short=JST
+JST.daylight.short=JDT
+JST.generic.short=JT
+JST.standard.short=JST
+Kwajalein.daylight.short=MHST
+Kwajalein.generic.short=MHT
+Kwajalein.standard.short=MHT
+Libya.daylight.short=EEST
+Libya.generic.short=EET
+Libya.standard.short=EET
+MET.daylight.short=MEST
+MET.generic.short=MET
+MET.standard.short=MET
+Mexico/BajaNorte.daylight.short=PDT
+Mexico/BajaNorte.generic.short=PT
+Mexico/BajaNorte.standard.short=PST
+Mexico/BajaSur.daylight.short=MDT
+Mexico/BajaSur.generic.short=MT
+Mexico/BajaSur.standard.short=MST
+Mexico/General.daylight.short=CDT
+Mexico/General.generic.short=CT
+Mexico/General.standard.short=CST
+MIT.daylight.short=WSDT
+MIT.generic.short=WST
+MIT.standard.short=WST
+MST7MDT.daylight.short=MDT
+MST7MDT.generic.short=MT
+MST7MDT.standard.short=MST
+MST.daylight.short=MDT
+MST.generic.short=MT
+MST.standard.short=MST
+Navajo.daylight.short=MDT
+Navajo.generic.short=MT
+Navajo.standard.short=MST
+NET.daylight.short=AMST
+NET.generic.short=AMT
+NET.standard.short=AMT
+NST.daylight.short=NZDT
+NST.generic.short=NZT
+NST.standard.short=NZST
+NZ-CHAT.daylight.short=CHADT
+NZ-CHAT.generic.short=CHAT
+NZ-CHAT.standard.short=CHAST
+NZ.daylight.short=NZDT
+NZ.generic.short=NZT
+NZ.standard.short=NZST
+Pacific/Apia.daylight.short=WSDT
+Pacific/Apia.generic.short=WST
+Pacific/Apia.standard.short=WST
+Pacific/Auckland.daylight.short=NZDT
+Pacific/Auckland.generic.short=NZT
+Pacific/Auckland.standard.short=NZST
+Pacific/Chatham.daylight.short=CHADT
+Pacific/Chatham.generic.short=CHAT
+Pacific/Chatham.standard.short=CHAST
+Pacific/Chuuk.daylight.short=CHUST
+Pacific/Chuuk.generic.short=CHUT
+Pacific/Chuuk.standard.short=CHUT
+Pacific/Easter.daylight.short=EASST
+Pacific/Easter.generic.short=EAST
+Pacific/Easter.standard.short=EAST
+Pacific/Efate.daylight.short=VUST
+Pacific/Efate.generic.short=VUT
+Pacific/Efate.standard.short=VUT
+Pacific/Enderbury.daylight.short=PHOST
+Pacific/Enderbury.generic.short=PHOT
+Pacific/Enderbury.standard.short=PHOT
+Pacific/Fakaofo.daylight.short=TKST
+Pacific/Fakaofo.generic.short=TKT
+Pacific/Fakaofo.standard.short=TKT
+Pacific/Fiji.daylight.short=FJST
+Pacific/Fiji.generic.short=FJT
+Pacific/Fiji.standard.short=FJT
+Pacific/Funafuti.daylight.short=TVST
+Pacific/Funafuti.generic.short=TVT
+Pacific/Funafuti.standard.short=TVT
+Pacific/Galapagos.daylight.short=GALST
+Pacific/Galapagos.generic.short=GALT
+Pacific/Galapagos.standard.short=GALT
+Pacific/Gambier.daylight.short=GAMST
+Pacific/Gambier.generic.short=GAMT
+Pacific/Gambier.standard.short=GAMT
+Pacific/Guadalcanal.daylight.short=SBST
+Pacific/Guadalcanal.generic.short=SBT
+Pacific/Guadalcanal.standard.short=SBT
+Pacific/Guam.daylight.short=ChDT
+Pacific/Guam.generic.short=ChT
+Pacific/Guam.standard.short=ChST
+Pacific/Honolulu.daylight.short=HDT
+Pacific/Honolulu.generic.short=HT
+Pacific/Honolulu.standard.short=HST
+Pacific/Johnston.daylight.short=HDT
+Pacific/Johnston.generic.short=HT
+Pacific/Johnston.standard.short=HST
+Pacific/Kiritimati.daylight.short=LINST
+Pacific/Kiritimati.generic.short=LINT
+Pacific/Kiritimati.standard.short=LINT
+Pacific/Kosrae.daylight.short=KOSST
+Pacific/Kosrae.generic.short=KOST
+Pacific/Kosrae.standard.short=KOST
+Pacific/Kwajalein.daylight.short=MHST
+Pacific/Kwajalein.generic.short=MHT
+Pacific/Kwajalein.standard.short=MHT
+Pacific/Majuro.daylight.short=MHST
+Pacific/Majuro.generic.short=MHT
+Pacific/Majuro.standard.short=MHT
+Pacific/Marquesas.daylight.short=MARST
+Pacific/Marquesas.generic.short=MART
+Pacific/Marquesas.standard.short=MART
+Pacific/Midway.daylight.short=SDT
+Pacific/Midway.generic.short=ST
+Pacific/Midway.standard.short=SST
+Pacific/Nauru.daylight.short=NRST
+Pacific/Nauru.generic.short=NRT
+Pacific/Nauru.standard.short=NRT
+Pacific/Niue.daylight.short=NUST
+Pacific/Niue.generic.short=NUT
+Pacific/Niue.standard.short=NUT
+Pacific/Norfolk.daylight.short=NFST
+Pacific/Norfolk.generic.short=NFT
+Pacific/Norfolk.standard.short=NFT
+Pacific/Noumea.daylight.short=NCST
+Pacific/Noumea.generic.short=NCT
+Pacific/Noumea.standard.short=NCT
+Pacific/Pago_Pago.daylight.short=SDT
+Pacific/Pago_Pago.generic.short=ST
+Pacific/Pago_Pago.standard.short=SST
+Pacific/Palau.daylight.short=PWST
+Pacific/Palau.generic.short=PWT
+Pacific/Palau.standard.short=PWT
+Pacific/Pitcairn.daylight.short=PDT
+Pacific/Pitcairn.generic.short=PT
+Pacific/Pitcairn.standard.short=PST
+Pacific/Pohnpei.daylight.short=PONST
+Pacific/Pohnpei.generic.short=PONT
+Pacific/Pohnpei.standard.short=PONT
+Pacific/Ponape.daylight.short=PONST
+Pacific/Ponape.generic.short=PONT
+Pacific/Ponape.standard.short=PONT
+Pacific/Port_Moresby.daylight.short=PGST
+Pacific/Port_Moresby.generic.short=PGT
+Pacific/Port_Moresby.standard.short=PGT
+Pacific/Rarotonga.daylight.short=CKHST
+Pacific/Rarotonga.generic.short=CKT
+Pacific/Rarotonga.standard.short=CKT
+Pacific/Saipan.daylight.short=ChDT
+Pacific/Saipan.generic.short=ChT
+Pacific/Saipan.standard.short=ChST
+Pacific/Samoa.daylight.short=SDT
+Pacific/Samoa.generic.short=ST
+Pacific/Samoa.standard.short=SST
+Pacific/Tahiti.daylight.short=TAHST
+Pacific/Tahiti.generic.short=TAHT
+Pacific/Tahiti.standard.short=TAHT
+Pacific/Tarawa.daylight.short=GILST
+Pacific/Tarawa.generic.short=GILT
+Pacific/Tarawa.standard.short=GILT
+Pacific/Tongatapu.daylight.short=TOST
+Pacific/Tongatapu.generic.short=TOT
+Pacific/Tongatapu.standard.short=TOT
+Pacific/Truk.daylight.short=CHUST
+Pacific/Truk.generic.short=CHUT
+Pacific/Truk.standard.short=CHUT
+Pacific/Wake.daylight.short=WAKST
+Pacific/Wake.generic.short=WAKT
+Pacific/Wake.standard.short=WAKT
+Pacific/Wallis.daylight.short=WFST
+Pacific/Wallis.generic.short=WFT
+Pacific/Wallis.standard.short=WFT
+Pacific/Yap.daylight.short=CHUST
+Pacific/Yap.generic.short=CHUT
+Pacific/Yap.standard.short=CHUT
+PLT.daylight.short=PKST
+PLT.generic.short=PKT
+PLT.standard.short=PKT
+PNT.daylight.short=MDT
+PNT.generic.short=MT
+PNT.standard.short=MST
+Poland.daylight.short=CEST
+Poland.generic.short=CET
+Poland.standard.short=CET
+Portugal.daylight.short=WEST
+Portugal.generic.short=WET
+Portugal.standard.short=WET
+PRC.daylight.short=CDT
+PRC.generic.short=CT
+PRC.standard.short=CST
+PRT.daylight.short=ADT
+PRT.generic.short=AT
+PRT.standard.short=AST
+PST8PDT.daylight.short=PDT
+PST8PDT.generic.short=PT
+PST8PDT.standard.short=PST
+PST.daylight.short=PDT
+PST.generic.short=PT
+PST.standard.short=PST
+ROK.daylight.short=KDT
+ROK.generic.short=KT
+ROK.standard.short=KST
+Singapore.daylight.short=SGST
+Singapore.generic.short=SGT
+Singapore.standard.short=SGT
+SST.daylight.short=SBST
+SST.generic.short=SBT
+SST.standard.short=SBT
+SystemV/AST4ADT.daylight.short=ADT
+SystemV/AST4ADT.generic.short=AT
+SystemV/AST4ADT.standard.short=AST
+SystemV/AST4.daylight.short=ADT
+SystemV/AST4.generic.short=AT
+SystemV/AST4.standard.short=AST
+SystemV/CST6CDT.daylight.short=CDT
+SystemV/CST6CDT.generic.short=CT
+SystemV/CST6CDT.standard.short=CST
+SystemV/CST6.daylight.short=CDT
+SystemV/CST6.generic.short=CT
+SystemV/CST6.standard.short=CST
+SystemV/EST5.daylight.short=EDT
+SystemV/EST5EDT.daylight.short=EDT
+SystemV/EST5EDT.generic.short=ET
+SystemV/EST5EDT.standard.short=EST
+SystemV/EST5.generic.short=ET
+SystemV/EST5.standard.short=EST
+SystemV/HST10.daylight.short=HDT
+SystemV/HST10.generic.short=HT
+SystemV/HST10.standard.short=HST
+SystemV/MST7.daylight.short=MDT
+SystemV/MST7.generic.short=MT
+SystemV/MST7MDT.daylight.short=MDT
+SystemV/MST7MDT.generic.short=MT
+SystemV/MST7MDT.standard.short=MST
+SystemV/MST7.standard.short=MST
+SystemV/PST8.daylight.short=PDT
+SystemV/PST8.generic.short=PT
+SystemV/PST8PDT.daylight.short=PDT
+SystemV/PST8PDT.generic.short=PT
+SystemV/PST8PDT.standard.short=PST
+SystemV/PST8.standard.short=PST
+SystemV/YST9.daylight.short=AKDT
+SystemV/YST9.generic.short=AKT
+SystemV/YST9.standard.short=AKST
+SystemV/YST9YDT.daylight.short=AKDT
+SystemV/YST9YDT.generic.short=AKT
+SystemV/YST9YDT.standard.short=AKST
+Turkey.daylight.short=EEST
+Turkey.generic.short=EET
+Turkey.standard.short=EET
+UCT.daylight.short=UTC
+UCT.generic.short=UTC
+UCT.standard.short=UTC
+Universal.daylight.short=UTC
+Universal.generic.short=UTC
+Universal.standard.short=UTC
+US/Alaska.daylight.short=AKDT
+US/Alaska.generic.short=AKT
+US/Alaska.standard.short=AKST
+US/Aleutian.daylight.short=HADT
+US/Aleutian.generic.short=HAT
+US/Aleutian.standard.short=HAST
+US/Arizona.daylight.short=MDT
+US/Arizona.generic.short=MT
+US/Arizona.standard.short=MST
+US/Central.daylight.short=CDT
+US/Central.generic.short=CT
+US/Central.standard.short=CST
+US/Eastern.daylight.short=EDT
+US/Eastern.generic.short=ET
+US/Eastern.standard.short=EST
+US/East-Indiana.daylight.short=EDT
+US/East-Indiana.generic.short=ET
+US/East-Indiana.standard.short=EST
+US/Hawaii.daylight.short=HDT
+US/Hawaii.generic.short=HT
+US/Hawaii.standard.short=HST
+US/Indiana-Starke.daylight.short=CDT
+US/Indiana-Starke.generic.short=CT
+US/Indiana-Starke.standard.short=CST
+US/Michigan.daylight.short=EDT
+US/Michigan.generic.short=ET
+US/Michigan.standard.short=EST
+US/Mountain.daylight.short=MDT
+US/Mountain.generic.short=MT
+US/Mountain.standard.short=MST
+US/Pacific.daylight.short=PDT
+US/Pacific.generic.short=PT
+US/Pacific-New.daylight.short=PDT
+US/Pacific-New.generic.short=PT
+US/Pacific-New.standard.short=PST
+US/Pacific.standard.short=PST
+US/Samoa.daylight.short=SDT
+US/Samoa.generic.short=ST
+US/Samoa.standard.short=SST
+UTC.daylight.short=UTC
+UTC.generic.short=UTC
+UTC.standard.short=UTC
+VST.daylight.short=ICST
+VST.generic.short=ICT
+VST.standard.short=ICT
+WET.daylight.short=WEST
+WET.generic.short=WET
+WET.standard.short=WET
+W-SU.daylight.short=MSD
+W-SU.generic.short=MT
+W-SU.standard.short=MSK
+Zulu.daylight.short=UTC
+Zulu.generic.short=UTC
+Zulu.standard.short=UTC
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_ko.properties Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,651 @@
+ACT.daylight.long=\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uBD81\uBD80 \uC9C0\uC5ED)
+ACT.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uBD81\uBD80 \uC9C0\uC5ED)
+ACT.standard.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uBD81\uBD80 \uC9C0\uC5ED)
+AET.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+AET.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+AET.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+AGT.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+ART.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+AST.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC
+Africa/Abidjan.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Africa/Accra.generic.long=\uAC00\uB098 \uD45C\uC900\uC2DC
+Africa/Addis_Ababa.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Algiers.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Africa/Asmara.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Asmera.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Bamako.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Africa/Bangui.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Banjul.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Africa/Bissau.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Africa/Blantyre.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Brazzaville.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Bujumbura.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Cairo.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Africa/Casablanca.generic.long=\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Africa/Ceuta.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Africa/Conakry.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Africa/Dakar.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Africa/Dar_es_Salaam.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Djibouti.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Douala.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/El_Aaiun.generic.long=\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Africa/Freetown.generic.long=\uC2DC\uC5D0\uB77C\uB9AC\uC628 \uD45C\uC900\uC2DC
+Africa/Gaborone.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Harare.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Johannesburg.generic.long=\uB0A8\uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Juba.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Kampala.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Khartoum.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Kigali.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Kinshasa.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Lagos.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Libreville.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Lome.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Africa/Luanda.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Lubumbashi.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Lusaka.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Malabo.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Maputo.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Maseru.generic.long=\uB0A8\uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Mbabane.generic.long=\uB0A8\uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Mogadishu.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Monrovia.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Africa/Nairobi.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Ndjamena.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Niamey.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Nouakchott.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Africa/Ouagadougou.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Africa/Porto-Novo.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Africa/Sao_Tome.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Africa/Timbuktu.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Africa/Tripoli.generic.long=\ub3d9\ubd80 \uc720\ub7fd \ud45c\uc900\uc2dc
+Africa/Tunis.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Africa/Windhoek.generic.long=\uC11C\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+America/Adak.generic.long=\uD558\uC640\uC774-\uC54C\uB8E8\uC0E8 \uD45C\uC900\uC2DC
+America/Anchorage.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC
+America/Anguilla.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Antigua.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Araguaina.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC
+America/Argentina/Buenos_Aires.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Argentina/Catamarca.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Argentina/ComodRivadavia.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Argentina/Cordoba.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Argentina/Jujuy.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Argentina/La_Rioja.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Argentina/Mendoza.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Argentina/Rio_Gallegos.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Argentina/Salta.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Argentina/San_Juan.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Argentina/San_Luis.generic.long=\uc544\ub974\ud5e8\ud2f0\ub098 \ud45c\uc900\uc2dc
+America/Argentina/Tucuman.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Argentina/Ushuaia.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Aruba.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Asuncion.generic.long=\uD30C\uB77C\uACFC\uC774 \uD45C\uC900\uC2DC
+America/Atikokan.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Atka.generic.long=\uD558\uC640\uC774-\uC54C\uB8E8\uC0E8 \uD45C\uC900\uC2DC
+America/Bahia.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC
+America/Bahia_Banderas.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Barbados.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Belem.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC
+America/Belize.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Blanc-Sablon.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Boa_Vista.generic.long=\uC544\uB9C8\uC874 \uD45C\uC900\uC2DC
+America/Bogota.generic.long=\uCF5C\uB86C\uBE44\uC544 \uD45C\uC900\uC2DC
+America/Boise.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Buenos_Aires.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Cambridge_Bay.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Campo_Grande.generic.long=\uC544\uB9C8\uC874 \uD45C\uC900\uC2DC
+America/Cancun.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Caracas.generic.long=\uBCA0\uB124\uC218\uC5D8\uB77C \uD45C\uC900\uC2DC
+America/Catamarca.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Cayenne.generic.long=\uD504\uB791\uC2A4\uB839 \uAE30\uC544\uB098 \uD45C\uC900\uC2DC
+America/Cayman.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Chicago.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Chihuahua.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Coral_Harbour.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Cordoba.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Costa_Rica.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Creston.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Cuiaba.generic.long=\uC544\uB9C8\uC874 \uD45C\uC900\uC2DC
+America/Curacao.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Danmarkshavn.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+America/Dawson.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+America/Dawson_Creek.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Denver.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Detroit.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Dominica.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Edmonton.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Eirunepe.generic.long=\uc5d0\uc774\ucee4 \uc2dc\uac04
+America/El_Salvador.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Ensenada.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+America/Fort_Wayne.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Fortaleza.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC
+America/Glace_Bay.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Godthab.generic.long=\uC11C\uBD80 \uADF8\uB9B0\uB780\uB4DC \uD45C\uC900\uC2DC
+America/Goose_Bay.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Grand_Turk.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Grenada.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Guadeloupe.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Guatemala.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Guayaquil.generic.long=\uC5D0\uCF70\uB3C4\uB974 \uD45C\uC900\uC2DC
+America/Guyana.generic.long=\uAC00\uC774\uC544\uB098 \uD45C\uC900\uC2DC
+America/Halifax.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Havana.generic.long=\uCFE0\uBC14 \uD45C\uC900\uC2DC
+America/Hermosillo.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Indiana/Indianapolis.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Indiana/Knox.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Indiana/Marengo.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Indiana/Petersburg.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Indiana/Tell_City.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Indiana/Vevay.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Indiana/Vincennes.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Indiana/Winamac.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Indianapolis.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Inuvik.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Iqaluit.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Jamaica.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Jujuy.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Juneau.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC
+America/Kentucky/Louisville.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Kentucky/Monticello.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Knox_IN.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Kralendijk.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/La_Paz.generic.long=\uBCFC\uB9AC\uBE44\uC544 \uD45C\uC900\uC2DC
+America/Lima.generic.long=\uD398\uB8E8 \uD45C\uC900\uC2DC
+America/Los_Angeles.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+America/Louisville.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Lower_Princes.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Maceio.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC
+America/Managua.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Manaus.generic.long=\uC544\uB9C8\uC874 \uD45C\uC900\uC2DC
+America/Marigot.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Martinique.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Matamoros.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Mazatlan.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Mendoza.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Menominee.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Merida.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Metlakatla.daylight.long=\uBA54\uD2B8\uB77C\uCE74\uD2B8\uB77C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04
+America/Metlakatla.generic.long=\uBA54\uD2B8\uB77C\uCE74\uD2B8\uB77C \uD45C\uC900\uC2DC
+America/Metlakatla.standard.long=\uBA54\uD2B8\uB77C\uCE74\uD2B8\uB77C \uD45C\uC900\uC2DC
+America/Mexico_City.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Miquelon.generic.long=\uD53C\uC5D0\uB974 \uBBF8\uD074\uB871 \uD45C\uC900\uC2DC
+America/Moncton.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Monterrey.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Montevideo.generic.long=\uC6B0\uB8E8\uACFC\uC774 \uD45C\uC900\uC2DC
+America/Montreal.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Montserrat.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Nassau.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/New_York.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Nipigon.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Nome.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC
+America/Noronha.generic.long=\uD398\uB974\uB09C\uB3C4 \uB4DC \uB178\uB85C\uD558 \uD45C\uC900\uC2DC
+America/North_Dakota/Beulah.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/North_Dakota/Center.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/North_Dakota/New_Salem.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Ojinaga.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Panama.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Pangnirtung.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Paramaribo.generic.long=\uC218\uB9AC\uB0A8 \uD45C\uC900\uC2DC
+America/Phoenix.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Port-au-Prince.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Port_of_Spain.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Porto_Acre.generic.long=\uc5d0\uc774\ucee4 \uc2dc\uac04
+America/Porto_Velho.generic.long=\uC544\uB9C8\uC874 \uD45C\uC900\uC2DC
+America/Puerto_Rico.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Rainy_River.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Rankin_Inlet.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Recife.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC
+America/Regina.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Resolute.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Rio_Branco.generic.long=\uc5d0\uc774\ucee4 \uc2dc\uac04
+America/Rosario.generic.long=\uC544\uB974\uD5E8\uD2F0\uB098 \uD45C\uC900\uC2DC
+America/Santa_Isabel.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+America/Santarem.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC
+America/Santiago.generic.long=\uCE60\uB808 \uD45C\uC900\uC2DC
+America/Santo_Domingo.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Sao_Paulo.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC
+America/Scoresbysund.generic.long=\uB3D9\uBD80 \uADF8\uB9B0\uB780\uB4DC \uD45C\uC900\uC2DC
+America/Shiprock.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+America/Sitka.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC
+America/St_Barthelemy.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/St_Johns.generic.long=\uB274\uD380\uB4E4\uB79C\uB4DC \uD45C\uC900\uC2DC
+America/St_Kitts.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/St_Lucia.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/St_Thomas.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/St_Vincent.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Swift_Current.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Tegucigalpa.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Thule.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Thunder_Bay.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Tijuana.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+America/Toronto.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+America/Tortola.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Vancouver.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+America/Virgin.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+America/Whitehorse.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+America/Winnipeg.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+America/Yakutat.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC
+America/Yellowknife.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+Antarctica/Casey.daylight.long=\uC11C\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Antarctica/Casey.generic.long=\uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Antarctica/Casey.standard.long=\uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Antarctica/Davis.generic.long=\uB370\uC774\uBE44\uC2A4 \uD45C\uC900\uC2DC
+Antarctica/DumontDUrville.generic.long=\uB450\uBAAC\uD2B8\uC6B0\uB974\uBE4C \uD45C\uC900\uC2DC
+Antarctica/Macquarie.daylight.long=\uB9E4\uCF70\uB9AC \uC12C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04
+Antarctica/Macquarie.generic.long=\uB9E4\uCF70\uB9AC \uC12C \uD45C\uC900\uC2DC
+Antarctica/Macquarie.standard.long=\uB9E4\uCF70\uB9AC \uC12C \uD45C\uC900\uC2DC
+Antarctica/Mawson.generic.long=\uB9C8\uC2A8 \uD45C\uC900\uC2DC
+Antarctica/McMurdo.generic.long=\uB274\uC9C8\uB79C\uB4DC \uD45C\uC900\uC2DC
+Antarctica/Palmer.generic.long=\uCE60\uB808 \uD45C\uC900\uC2DC
+Antarctica/Rothera.generic.long=\uB85C\uB354\uB77C \uD45C\uC900\uC2DC
+Antarctica/South_Pole.generic.long=\uB274\uC9C8\uB79C\uB4DC \uD45C\uC900\uC2DC
+Antarctica/Syowa.generic.long=\uC1FC\uC640 \uD45C\uC900\uC2DC
+Antarctica/Vostok.generic.long=\uBCF4\uC2A4\uD1A1 \uD45C\uC900\uC2DC
+Arctic/Longyearbyen.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Asia/Aden.generic.long=\uC544\uB77C\uBE44\uC544 \uD45C\uC900\uC2DC
+Asia/Almaty.generic.long=\uC54C\uB9C8\uC544\uD0C0 \uD45C\uC900\uC2DC
+Asia/Amman.generic.long=\uc544\ub77c\ube44\uc544 \ud45c\uc900\uc2dc
+Asia/Anadyr.generic.long=\uC544\uB098\uB514\uB9AC \uD45C\uC900\uC2DC
+Asia/Aqtau.generic.long=\uC544\uD06C\uD0C0\uC6B0 \uD45C\uC900\uC2DC
+Asia/Aqtobe.generic.long=\uC544\uD06C\uD1A0\uBCA0 \uD45C\uC900\uC2DC
+Asia/Ashgabat.generic.long=\uD22C\uB974\uD06C\uBA54\uB2C8\uC2A4\uD0C4 \uD45C\uC900\uC2DC
+Asia/Ashkhabad.generic.long=\uD22C\uB974\uD06C\uBA54\uB2C8\uC2A4\uD0C4 \uD45C\uC900\uC2DC
+Asia/Baghdad.generic.long=\uC544\uB77C\uBE44\uC544 \uD45C\uC900\uC2DC
+Asia/Bahrain.generic.long=\uC544\uB77C\uBE44\uC544 \uD45C\uC900\uC2DC
+Asia/Baku.generic.long=\uC544\uC81C\uB974\uBC14\uC774\uC794 \uD45C\uC900\uC2DC
+Asia/Bangkok.generic.long=\uC778\uB3C4\uCC28\uC774\uB098 \uBC18\uB3C4 \uD45C\uC900\uC2DC
+Asia/Beirut.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Asia/Bishkek.generic.long=\uD0A4\uB974\uAE30\uC2A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC
+Asia/Brunei.generic.long=\uBE0C\uB8E8\uB098\uC774 \uD45C\uC900\uC2DC
+Asia/Calcutta.generic.long=\uC778\uB3C4 \uD45C\uC900\uC2DC
+Asia/Choibalsan.generic.long=\uCD08\uC774\uBC1C\uC0B0 \uD45C\uC900\uC2DC
+Asia/Chongqing.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC
+Asia/Chungking.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC
+Asia/Colombo.generic.long=\uC778\uB3C4 \uD45C\uC900\uC2DC
+Asia/Dacca.generic.long=\uBC29\uAE00\uB77C\uB370\uC2DC \uD45C\uC900\uC2DC
+Asia/Damascus.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Asia/Dhaka.generic.long=\uBC29\uAE00\uB77C\uB370\uC2DC \uD45C\uC900\uC2DC
+Asia/Dili.generic.long=\uB3D9\uD2F0\uBAA8\uB974 \uD45C\uC900\uC2DC
+Asia/Dubai.generic.long=\uAC78\uD504\uB9CC \uD45C\uC900\uC2DC
+Asia/Dushanbe.generic.long=\uD0C0\uC9C0\uD0A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC
+Asia/Gaza.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Asia/Harbin.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC
+Asia/Hebron.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Asia/Ho_Chi_Minh.generic.long=\uC778\uB3C4\uCC28\uC774\uB098 \uBC18\uB3C4 \uD45C\uC900\uC2DC
+Asia/Hong_Kong.generic.long=\uD64D\uCF69 \uD45C\uC900\uC2DC
+Asia/Hovd.generic.long=\uD638\uBE0C\uB4DC \uD45C\uC900\uC2DC
+Asia/Irkutsk.generic.long=\uC774\uB974\uCFE0\uCE20\uD06C \uD45C\uC900\uC2DC
+Asia/Istanbul.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Asia/Jakarta.generic.long=\uC11C\uBD80 \uC778\uB3C4\uB124\uC2DC\uC544 \uD45C\uC900\uC2DC
+Asia/Jayapura.generic.long=\uB3D9\uBD80 \uC778\uB3C4\uB124\uC2DC\uC544 \uD45C\uC900\uC2DC
+Asia/Jerusalem.generic.long=\uC544\uC2A4\uB77C\uC5D8 \uD45C\uC900\uC2DC
+Asia/Kabul.generic.long=\uC544\uD504\uAC00\uB2C8\uC2A4\uD0C4 \uD45C\uC900\uC2DC
+Asia/Kamchatka.generic.long=\uD398\uD2B8\uB85C\uD30C\uBE0C\uB85C\uD504\uC2A4\uD06C-\uCE84\uCC28\uCE20\uD0A4 \uD45C\uC900\uC2DC
+Asia/Karachi.generic.long=\uD30C\uD0A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC
+Asia/Kashgar.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC
+Asia/Kathmandu.generic.long=\uB124\uD314 \uD45C\uC900\uC2DC
+Asia/Katmandu.generic.long=\uB124\uD314 \uD45C\uC900\uC2DC
+Asia/Khandyga.daylight.long=\uD55C\uB514\uAC00 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04
+Asia/Khandyga.generic.long=\uD55C\uB514\uAC00 \uD45C\uC900\uC2DC
+Asia/Khandyga.standard.long=\uD55C\uB514\uAC00 \uD45C\uC900\uC2DC
+Asia/Kolkata.generic.long=\uC778\uB3C4 \uD45C\uC900\uC2DC
+Asia/Krasnoyarsk.generic.long=\uD06C\uB77C\uC2A4\uB178\uC57C\uB974\uC2A4\uD06C \uD45C\uC900\uC2DC
+Asia/Kuala_Lumpur.generic.long=\uB9D0\uB808\uC774\uC2DC\uC544 \uD45C\uC900\uC2DC
+Asia/Kuching.generic.long=\uB9D0\uB808\uC774\uC2DC\uC544 \uD45C\uC900\uC2DC
+Asia/Kuwait.generic.long=\uC544\uB77C\uBE44\uC544 \uD45C\uC900\uC2DC
+Asia/Macao.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC
+Asia/Macau.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC
+Asia/Magadan.generic.long=\uB9C8\uAC00\uB2E8 \uD45C\uC900\uC2DC
+Asia/Makassar.generic.long=\uC911\uBD80 \uC778\uB3C4\uB124\uC2DC\uC544 \uD45C\uC900\uC2DC
+Asia/Manila.generic.long=\uD544\uB9AC\uD540 \uD45C\uC900\uC2DC
+Asia/Muscat.generic.long=\uAC78\uD504\uB9CC \uD45C\uC900\uC2DC
+Asia/Nicosia.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Asia/Novokuznetsk.generic.long=\uB178\uBCF4\uC2DC\uBE44\uB974\uC2A4\uD06C \uD45C\uC900\uC2DC
+Asia/Novosibirsk.generic.long=\uB178\uBCF4\uC2DC\uBE44\uB974\uC2A4\uD06C \uD45C\uC900\uC2DC
+Asia/Omsk.generic.long=\uC634\uC2A4\uD06C \uD45C\uC900\uC2DC
+Asia/Oral.generic.long=\uC624\uB7F4 \uD45C\uC900\uC2DC
+Asia/Phnom_Penh.generic.long=\uC778\uB3C4\uCC28\uC774\uB098 \uBC18\uB3C4 \uD45C\uC900\uC2DC
+Asia/Pontianak.generic.long=\uC11C\uBD80 \uC778\uB3C4\uB124\uC2DC\uC544 \uD45C\uC900\uC2DC
+Asia/Pyongyang.generic.long=\uB300\uD55C\uBBFC\uAD6D \uD45C\uC900\uC2DC
+Asia/Qatar.generic.long=\uC544\uB77C\uBE44\uC544 \uD45C\uC900\uC2DC
+Asia/Qyzylorda.generic.long=\uD0A4\uC9C8\uB85C\uB974\uB2E4 \uD45C\uC900\uC2DC
+Asia/Rangoon.generic.long=\uBBF8\uC580\uB9C8 \uD45C\uC900\uC2DC
+Asia/Saigon.generic.long=\uC778\uB3C4\uCC28\uC774\uB098 \uBC18\uB3C4 \uD45C\uC900\uC2DC
+Asia/Sakhalin.generic.long=\uC0AC\uD560\uB9B0 \uD45C\uC900\uC2DC
+Asia/Samarkand.generic.long=\uC6B0\uC988\uBCA0\uD0A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC
+Asia/Seoul.generic.long=\uB300\uD55C\uBBFC\uAD6D \uD45C\uC900\uC2DC
+Asia/Shanghai.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC
+Asia/Singapore.generic.long=\uC2F1\uAC00\uD3EC\uB974 \uD45C\uC900\uC2DC
+Asia/Taipei.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC
+Asia/Tashkent.generic.long=\uC6B0\uC988\uBCA0\uD0A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC
+Asia/Tbilisi.generic.long=\uADF8\uB8E8\uC9C0\uC57C \uD45C\uC900\uC2DC
+Asia/Tehran.generic.long=\uC774\uB780 \uD45C\uC900\uC2DC
+Asia/Tel_Aviv.generic.long=\uC544\uC2A4\uB77C\uC5D8 \uD45C\uC900\uC2DC
+Asia/Thimbu.generic.long=\uBD80\uD0C4 \uD45C\uC900\uC2DC
+Asia/Thimphu.generic.long=\uBD80\uD0C4 \uD45C\uC900\uC2DC
+Asia/Tokyo.generic.long=\uC77C\uBCF8 \uD45C\uC900\uC2DC
+Asia/Ujung_Pandang.generic.long=\uC911\uBD80 \uC778\uB3C4\uB124\uC2DC\uC544 \uD45C\uC900\uC2DC
+Asia/Ulaanbaatar.generic.long=\uC6B8\uB780\uBC14\uD1A0\uB974 \uD45C\uC900\uC2DC
+Asia/Ulan_Bator.generic.long=\uC6B8\uB780\uBC14\uD1A0\uB974 \uD45C\uC900\uC2DC
+Asia/Urumqi.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC
+Asia/Ust-Nera.daylight.long=\uC6B0\uC2A4\uD2F0\uB124\uB77C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04
+Asia/Ust-Nera.generic.long=\uC6B0\uC2A4\uD2F0\uB124\uB77C \uD45C\uC900\uC2DC
+Asia/Ust-Nera.standard.long=\uC6B0\uC2A4\uD2F0\uB124\uB77C \uD45C\uC900\uC2DC
+Asia/Vientiane.generic.long=\uC778\uB3C4\uCC28\uC774\uB098 \uBC18\uB3C4 \uD45C\uC900\uC2DC
+Asia/Vladivostok.generic.long=\uBE14\uB77C\uB514\uBCF4\uC2A4\uD1A1 \uD45C\uC900\uC2DC
+Asia/Yakutsk.generic.long=\uC57C\uCFE0\uCE20\uD06C \uD45C\uC900\uC2DC
+Asia/Yekaterinburg.generic.long=\uC608\uCE74\uD14C\uB9B0\uBD80\uB974\uD06C \uD45C\uC900\uC2DC
+Asia/Yerevan.generic.long=\uC544\uB974\uBA54\uB2C8\uC544 \uD45C\uC900\uC2DC
+Atlantic/Azores.generic.long=\uC544\uC870\uB808\uC2A4 \uD45C\uC900\uC2DC
+Atlantic/Bermuda.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+Atlantic/Canary.generic.long=\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Atlantic/Cape_Verde.generic.long=\uCF00\uC774\uD504\uBCA0\uB974\uB370 \uD45C\uC900\uC2DC
+Atlantic/Faeroe.generic.long=\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Atlantic/Faroe.generic.long=\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Atlantic/Jan_Mayen.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Atlantic/Madeira.generic.long=\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Atlantic/Reykjavik.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Atlantic/South_Georgia.generic.long=\uC0AC\uC6B0\uC2A4\uC870\uC9C0\uC544 \uD45C\uC900\uC2DC
+Atlantic/St_Helena.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Atlantic/Stanley.generic.long=\uD3EC\uD074\uB79C\uB4DC \uC81C\uB3C4 \uD45C\uC900\uC2DC
+Australia/ACT.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/ACT.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/ACT.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Adelaide.daylight.long=\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/Adelaide.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/Adelaide.standard.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/Brisbane.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uD038\uC990\uB79C\uB4DC)
+Australia/Brisbane.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD038\uC990\uB79C\uB4DC)
+Australia/Brisbane.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD038\uC990\uB79C\uB4DC)
+Australia/Broken_Hill.daylight.long=\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Broken_Hill.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Broken_Hill.standard.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Canberra.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Canberra.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Canberra.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Currie.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Currie.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Currie.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Darwin.daylight.long=\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uBD81\uBD80 \uC9C0\uC5ED)
+Australia/Darwin.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uBD81\uBD80 \uC9C0\uC5ED)
+Australia/Darwin.standard.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uBD81\uBD80 \uC9C0\uC5ED)
+Australia/Eucla.daylight.long=\uC911\uC559 \uC11C\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/Eucla.generic.long=\uC911\uC559 \uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/Eucla.standard.long=\uC911\uC559 \uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/Hobart.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544)
+Australia/Hobart.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544)
+Australia/Hobart.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544)
+Australia/LHI.generic.long=\uB85C\uB4DC\uD558\uC6B0 \uD45C\uC900\uC2DC
+Australia/Lindeman.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uD038\uC990\uB79C\uB4DC)
+Australia/Lindeman.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD038\uC990\uB79C\uB4DC)
+Australia/Lindeman.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD038\uC990\uB79C\uB4DC)
+Australia/Lord_Howe.generic.long=\uB85C\uB4DC\uD558\uC6B0 \uD45C\uC900\uC2DC
+Australia/Melbourne.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uBE45\uD1A0\uB9AC\uC544)
+Australia/Melbourne.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uBE45\uD1A0\uB9AC\uC544)
+Australia/Melbourne.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uBE45\uD1A0\uB9AC\uC544)
+Australia/NSW.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/NSW.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/NSW.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/North.daylight.long=\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uBD81\uBD80 \uC9C0\uC5ED)
+Australia/North.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uBD81\uBD80 \uC9C0\uC5ED)
+Australia/North.standard.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uBD81\uBD80 \uC9C0\uC5ED)
+Australia/Perth.daylight.long=\uC11C\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/Perth.generic.long=\uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/Perth.standard.long=\uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/Queensland.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uD038\uC990\uB79C\uB4DC)
+Australia/Queensland.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD038\uC990\uB79C\uB4DC)
+Australia/Queensland.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD038\uC990\uB79C\uB4DC)
+Australia/South.daylight.long=\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/South.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/South.standard.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/Sydney.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Sydney.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Sydney.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Tasmania.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544)
+Australia/Tasmania.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544)
+Australia/Tasmania.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uD0DC\uC988\uBA54\uC774\uB2C8\uC544)
+Australia/Victoria.daylight.long=\uB3D9\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uBE45\uD1A0\uB9AC\uC544)
+Australia/Victoria.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uBE45\uD1A0\uB9AC\uC544)
+Australia/Victoria.standard.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC(\uBE45\uD1A0\uB9AC\uC544)
+Australia/West.daylight.long=\uC11C\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/West.generic.long=\uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/West.standard.long=\uC11C\uBD80 \uD45C\uC900\uC2DC(\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544)
+Australia/Yancowinna.daylight.long=\uC911\uBD80 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Yancowinna.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+Australia/Yancowinna.standard.long=\uC911\uBD80 \uD45C\uC900\uC2DC(\uB0A8\uBD80 \uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544/\uB274\uC0AC\uC6B0\uC2A4\uC6E8\uC77C\uC988)
+BET.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC
+BST.generic.long=\uBC29\uAE00\uB77C\uB370\uC2DC \uD45C\uC900\uC2DC
+Brazil/Acre.generic.long=\uc5d0\uc774\ucee4 \uc2dc\uac04
+Brazil/DeNoronha.generic.long=\uD398\uB974\uB09C\uB3C4 \uB4DC \uB178\uB85C\uD558 \uD45C\uC900\uC2DC
+Brazil/East.generic.long=\uBE0C\uB77C\uC9C8\uB9AC\uC544 \uD45C\uC900\uC2DC
+Brazil/West.generic.long=\uC544\uB9C8\uC874 \uD45C\uC900\uC2DC
+CAT.generic.long=\uC911\uC559 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+CET.generic.long=\uc911\uc559 \uc720\ub7fd \ud45c\uc900\uc2dc
+CNT.generic.long=\uB274\uD380\uB4E4\uB79C\uB4DC \uD45C\uC900\uC2DC
+CST.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+CST6CDT.generic.long=\uc911\ubd80 \ud45c\uc900\uc2dc
+CTT.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC
+Canada/Atlantic.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+Canada/Central.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+Canada/East-Saskatchewan.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+Canada/Eastern.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+Canada/Mountain.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+Canada/Newfoundland.generic.long=\uB274\uD380\uB4E4\uB79C\uB4DC \uD45C\uC900\uC2DC
+Canada/Pacific.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+Canada/Saskatchewan.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+Canada/Yukon.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+Chile/Continental.generic.long=\uCE60\uB808 \uD45C\uC900\uC2DC
+Chile/EasterIsland.generic.long=\uC774\uC2A4\uD130 \uC12C \uD45C\uC900\uC2DC
+Cuba.generic.long=\uCFE0\uBC14 \uD45C\uC900\uC2DC
+EAT.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+ECT.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+EET.generic.long=\ub3d9\ubd80 \uc720\ub7fd \ud45c\uc900\uc2dc
+EST.generic.long=\ub3d9\ubd80 \ud45c\uc900\uc2dc
+EST5EDT.generic.long=\ub3d9\ubd80 \ud45c\uc900\uc2dc
+Egypt.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Eire.generic.long=\uC544\uC77C\uB79C\uB4DC \uD45C\uC900\uC2DC
+Etc/Greenwich.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Etc/UCT.generic.long=\uC9C0\uC5ED \uD45C\uC900\uC2DC
+Etc/UTC.generic.long=\uC9C0\uC5ED \uD45C\uC900\uC2DC
+Etc/Universal.generic.long=\uC9C0\uC5ED \uD45C\uC900\uC2DC
+Etc/Zulu.generic.long=\uC9C0\uC5ED \uD45C\uC900\uC2DC
+Europe/Amsterdam.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Andorra.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Athens.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Belfast.generic.long=\uC601\uAD6D \uD45C\uC900\uC2DC
+Europe/Belgrade.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Berlin.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Bratislava.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Brussels.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Bucharest.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Budapest.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Busingen.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Chisinau.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Copenhagen.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Dublin.generic.long=\uC544\uC77C\uB79C\uB4DC \uD45C\uC900\uC2DC
+Europe/Gibraltar.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Guernsey.generic.long=\uC601\uAD6D \uD45C\uC900\uC2DC
+Europe/Helsinki.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Isle_of_Man.generic.long=\uC601\uAD6D \uD45C\uC900\uC2DC
+Europe/Istanbul.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Jersey.generic.long=\uC601\uAD6D \uD45C\uC900\uC2DC
+Europe/Kaliningrad.daylight.long=\uADF9\uB3D9 \uC720\uB7FD \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04
+Europe/Kaliningrad.generic.long=\uADF9\uB3D9 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Kaliningrad.standard.long=\uADF9\uB3D9 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Kiev.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Lisbon.generic.long=\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Ljubljana.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/London.generic.long=\uC601\uAD6D \uD45C\uC900\uC2DC
+Europe/Luxembourg.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Madrid.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Malta.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Mariehamn.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Minsk.daylight.long=\uADF9\uB3D9 \uC720\uB7FD \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04
+Europe/Minsk.generic.long=\uADF9\uB3D9 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Minsk.standard.long=\uADF9\uB3D9 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Monaco.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Moscow.generic.long=\uBAA8\uC2A4\uD06C\uBC14 \uD45C\uC900\uC2DC
+Europe/Nicosia.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Oslo.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Paris.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Podgorica.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Prague.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Riga.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Rome.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Samara.generic.long=\uC0AC\uB9C8\uB77C \uD45C\uC900\uC2DC
+Europe/San_Marino.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Sarajevo.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Simferopol.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Skopje.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Sofia.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Stockholm.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Tallinn.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Tirane.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Tiraspol.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Uzhgorod.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Vaduz.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Vatican.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Vienna.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Vilnius.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Volgograd.generic.long=\uBCFC\uACE0\uADF8\uB77C\uB4DC \uD45C\uC900\uC2DC
+Europe/Warsaw.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Zagreb.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Zaporozhye.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+Europe/Zurich.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+GB-Eire.generic.long=\uC601\uAD6D \uD45C\uC900\uC2DC
+GB.generic.long=\uC601\uAD6D \uD45C\uC900\uC2DC
+GMT.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Greenwich.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+HST.generic.long=\ud558\uc640\uc774 \ud45c\uc900\uc2dc
+Hongkong.generic.long=\uD64D\uCF69 \uD45C\uC900\uC2DC
+IET.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+IST.generic.long=\uC778\uB3C4 \uD45C\uC900\uC2DC
+Iceland.generic.long=\uADF8\uB9AC\uB2C8\uCE58 \uD45C\uC900\uC2DC
+Indian/Antananarivo.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Indian/Chagos.generic.long=\uC778\uB3C4\uC591 \uC2DD\uBBFC\uC9C0 \uD45C\uC900\uC2DC
+Indian/Christmas.generic.long=\uD06C\uB9AC\uC2A4\uB9C8\uC2A4 \uC12C \uD45C\uC900\uC2DC
+Indian/Cocos.generic.long=\uCF54\uCF54\uC2A4 \uC81C\uB3C4 \uD45C\uC900\uC2DC
+Indian/Comoro.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Indian/Kerguelen.generic.long=\uD504\uB791\uC2A4\uB839 \uB0A8\uBD80 \uBC0F \uB0A8\uADF9 \uB300\uB959 \uD45C\uC900\uC2DC
+Indian/Mahe.generic.long=\uC138\uC774\uC178 \uD45C\uC900\uC2DC
+Indian/Maldives.generic.long=\uBAB0\uB514\uBE0C \uD45C\uC900\uC2DC
+Indian/Mauritius.generic.long=\uBAA8\uB9AC\uC154\uC2A4 \uD45C\uC900\uC2DC
+Indian/Mayotte.generic.long=\uB3D9\uBD80 \uC544\uD504\uB9AC\uCE74 \uD45C\uC900\uC2DC
+Indian/Reunion.generic.long=\uB808\uC704\uB2C8\uC639 \uD45C\uC900\uC2DC
+Iran.generic.long=\uC774\uB780 \uD45C\uC900\uC2DC
+Israel.generic.long=\uC544\uC2A4\uB77C\uC5D8 \uD45C\uC900\uC2DC
+JST.generic.long=\uC77C\uBCF8 \uD45C\uC900\uC2DC
+Jamaica.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+Japan.generic.long=\uC77C\uBCF8 \uD45C\uC900\uC2DC
+Kwajalein.generic.long=\uB9C8\uC15C \uC81C\uB3C4 \uD45C\uC900\uC2DC
+Libya.generic.long=\ub3d9\ubd80 \uc720\ub7fd \ud45c\uc900\uc2dc
+MET.generic.long=MET
+MIT.generic.long=\uC11C\uC0AC\uBAA8\uC544 \uD45C\uC900\uC2DC
+MST.generic.long=\uc0b0\uc9c0 \ud45c\uc900\uc2dc
+MST7MDT.generic.long=\uc0b0\uc9c0 \ud45c\uc900\uc2dc
+Mexico/BajaNorte.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+Mexico/BajaSur.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+Mexico/General.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+NET.generic.long=\uC544\uB974\uBA54\uB2C8\uC544 \uD45C\uC900\uC2DC
+NST.generic.long=\uB274\uC9C8\uB79C\uB4DC \uD45C\uC900\uC2DC
+NZ-CHAT.generic.long=\uCC44\uD140 \uD45C\uC900\uC2DC
+NZ.generic.long=\uB274\uC9C8\uB79C\uB4DC \uD45C\uC900\uC2DC
+Navajo.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+PLT.generic.long=\uD30C\uD0A4\uC2A4\uD0C4 \uD45C\uC900\uC2DC
+PNT.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+PRC.generic.long=\uC911\uAD6D \uD45C\uC900\uC2DC
+PRT.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+PST.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+PST8PDT.generic.long=\ud0dc\ud3c9\uc591 \ud45c\uc900\uc2dc
+Pacific/Apia.generic.long=\uC11C\uC0AC\uBAA8\uC544 \uD45C\uC900\uC2DC
+Pacific/Auckland.generic.long=\uB274\uC9C8\uB79C\uB4DC \uD45C\uC900\uC2DC
+Pacific/Chatham.generic.long=\uCC44\uD140 \uD45C\uC900\uC2DC
+Pacific/Chuuk.daylight.long=\uCD94\uD06C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04
+Pacific/Chuuk.generic.long=\uCD94\uD06C \uD45C\uC900\uC2DC
+Pacific/Chuuk.standard.long=\uCD94\uD06C \uD45C\uC900\uC2DC
+Pacific/Easter.generic.long=\uC774\uC2A4\uD130 \uC12C \uD45C\uC900\uC2DC
+Pacific/Efate.generic.long=\uBC14\uB204\uC544\uD22C \uD45C\uC900\uC2DC
+Pacific/Enderbury.generic.long=\uD53C\uB2C9\uC2A4 \uC81C\uB3C4 \uD45C\uC900\uC2DC
+Pacific/Fakaofo.generic.long=\uD1A0\uCF08\uB77C\uC6B0 \uD45C\uC900\uC2DC
+Pacific/Fiji.generic.long=\uD53C\uC9C0 \uD45C\uC900\uC2DC
+Pacific/Funafuti.generic.long=\uD22C\uBC1C\uB8E8 \uD45C\uC900\uC2DC
+Pacific/Galapagos.generic.long=\uAC08\uB77C\uD30C\uACE0\uC2A4 \uD45C\uC900\uC2DC
+Pacific/Gambier.generic.long=\uC7A0\uBE44\uC544 \uD45C\uC900\uC2DC
+Pacific/Guadalcanal.generic.long=\uC194\uB85C\uBAAC \uC81C\uB3C4 \uD45C\uC900\uC2DC
+Pacific/Guam.generic.long=\uCC28\uBAA8\uB974 \uD45C\uC900\uC2DC
+Pacific/Honolulu.generic.long=\uD558\uC640\uC774 \uD45C\uC900\uC2DC
+Pacific/Johnston.generic.long=\uD558\uC640\uC774 \uD45C\uC900\uC2DC
+Pacific/Kiritimati.generic.long=\uB77C\uC778 \uC81C\uB3C4 \uD45C\uC900\uC2DC
+Pacific/Kosrae.generic.long=\uCF54\uC2A4\uB808 \uD45C\uC900\uC2DC
+Pacific/Kwajalein.generic.long=\uB9C8\uC15C \uC81C\uB3C4 \uD45C\uC900\uC2DC
+Pacific/Majuro.generic.long=\uB9C8\uC15C \uC81C\uB3C4 \uD45C\uC900\uC2DC
+Pacific/Marquesas.generic.long=\uB9C8\uD0A4\uC800\uC2A4 \uD45C\uC900\uC2DC
+Pacific/Midway.generic.long=\uC0AC\uBAA8\uC544 \uD45C\uC900\uC2DC
+Pacific/Nauru.generic.long=\uB098\uC6B0\uB8E8 \uD45C\uC900\uC2DC
+Pacific/Niue.generic.long=\uB2C8\uC6B0\uC5D0 \uD45C\uC900\uC2DC
+Pacific/Norfolk.generic.long=\uB178\uD37D \uD45C\uC900\uC2DC
+Pacific/Noumea.generic.long=\uB274 \uCE7C\uB808\uB3C4\uB2C8\uC544 \uD45C\uC900\uC2DC
+Pacific/Pago_Pago.generic.long=\uC0AC\uBAA8\uC544 \uD45C\uC900\uC2DC
+Pacific/Palau.generic.long=\uD314\uB77C\uC6B0 \uD45C\uC900\uC2DC
+Pacific/Pitcairn.generic.long=\uD54F\uCF00\uC5B8 \uD45C\uC900\uC2DC
+Pacific/Pohnpei.daylight.long=\uD3F0\uD398\uC774 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04
+Pacific/Pohnpei.generic.long=\uD3EC\uB098\uD398 \uD45C\uC900\uC2DC
+Pacific/Pohnpei.standard.long=\uD3F0\uD398\uC774 \uD45C\uC900\uC2DC
+Pacific/Ponape.daylight.long=\uD3F0\uD398\uC774 \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04
+Pacific/Ponape.generic.long=\uD3EC\uB098\uD398 \uD45C\uC900\uC2DC
+Pacific/Ponape.standard.long=\uD3F0\uD398\uC774 \uD45C\uC900\uC2DC
+Pacific/Port_Moresby.generic.long=\uD30C\uD478\uC544 \uB274\uAE30\uB2C8\uC544 \uD45C\uC900\uC2DC
+Pacific/Rarotonga.generic.long=\uCFE1 \uC81C\uB3C4 \uD45C\uC900\uC2DC
+Pacific/Saipan.generic.long=\uCC28\uBAA8\uB974 \uD45C\uC900\uC2DC
+Pacific/Samoa.generic.long=\uC0AC\uBAA8\uC544 \uD45C\uC900\uC2DC
+Pacific/Tahiti.generic.long=\uD0C0\uD788\uD2F0 \uD45C\uC900\uC2DC
+Pacific/Tarawa.generic.long=\uAE38\uBC84\uD2B8 \uC81C\uB3C4 \uD45C\uC900\uC2DC
+Pacific/Tongatapu.generic.long=\uD1B5\uAC00 \uD45C\uC900\uC2DC
+Pacific/Truk.daylight.long=\uCD94\uD06C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04
+Pacific/Truk.generic.long=\uCD94\uD06C \uD45C\uC900\uC2DC
+Pacific/Truk.standard.long=\uCD94\uD06C \uD45C\uC900\uC2DC
+Pacific/Wake.generic.long=\uC6E8\uC774\uD06C \uD45C\uC900\uC2DC
+Pacific/Wallis.generic.long=\uC6D4\uB9AC\uC2A4 \uD478\uD22C\uB098 \uD45C\uC900\uC2DC
+Pacific/Yap.daylight.long=\uCD94\uD06C \uC77C\uAD11 \uC808\uC57D \uC2DC\uAC04
+Pacific/Yap.generic.long=\uCD94\uD06C \uD45C\uC900\uC2DC
+Pacific/Yap.standard.long=\uCD94\uD06C \uD45C\uC900\uC2DC
+Poland.generic.long=\uC911\uC559 \uC720\uB7FD \uD45C\uC900\uC2DC
+Portugal.generic.long=\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+ROK.generic.long=\uB300\uD55C\uBBFC\uAD6D \uD45C\uC900\uC2DC
+SST.generic.long=\uC194\uB85C\uBAAC \uC81C\uB3C4 \uD45C\uC900\uC2DC
+Singapore.generic.long=\uC2F1\uAC00\uD3EC\uB974 \uD45C\uC900\uC2DC
+SystemV/AST4.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+SystemV/AST4ADT.generic.long=\uB300\uC11C\uC591 \uD45C\uC900\uC2DC
+SystemV/CST6.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+SystemV/CST6CDT.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+SystemV/EST5.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+SystemV/EST5EDT.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+SystemV/HST10.generic.long=\uD558\uC640\uC774 \uD45C\uC900\uC2DC
+SystemV/MST7.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+SystemV/MST7MDT.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+SystemV/PST8.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+SystemV/PST8PDT.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+SystemV/YST9.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC
+SystemV/YST9YDT.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC
+Turkey.generic.long=\uB3D9\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC
+UCT.generic.long=\uC9C0\uC5ED \uD45C\uC900\uC2DC
+US/Alaska.generic.long=\uC54C\uB798\uC2A4\uCE74 \uD45C\uC900\uC2DC
+US/Aleutian.generic.long=\uD558\uC640\uC774-\uC54C\uB8E8\uC0E8 \uD45C\uC900\uC2DC
+US/Arizona.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+US/Central.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+US/East-Indiana.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+US/Eastern.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+US/Hawaii.generic.long=\uD558\uC640\uC774 \uD45C\uC900\uC2DC
+US/Indiana-Starke.generic.long=\uC911\uBD80 \uD45C\uC900\uC2DC
+US/Michigan.generic.long=\uB3D9\uBD80 \uD45C\uC900\uC2DC
+US/Mountain.generic.long=\uC0B0\uC9C0 \uD45C\uC900\uC2DC
+US/Pacific-New.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+US/Pacific.generic.long=\uD0DC\uD3C9\uC591 \uD45C\uC900\uC2DC
+US/Samoa.generic.long=\uC0AC\uBAA8\uC544 \uD45C\uC900\uC2DC
+UTC.generic.long=\uC9C0\uC5ED \uD45C\uC900\uC2DC
+Universal.generic.long=\uC9C0\uC5ED \uD45C\uC900\uC2DC
+VST.generic.long=\uC778\uB3C4\uCC28\uC774\uB098 \uBC18\uB3C4 \uD45C\uC900\uC2DC
+W-SU.generic.long=\uBAA8\uC2A4\uD06C\uBC14 \uD45C\uC900\uC2DC
+WET.generic.long=\uc11c\ubd80 \uc720\ub7fd \ud45c\uc900\uc2dc
+Zulu.generic.long=\uC9C0\uC5ED \uD45C\uC900\uC2DC
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_ko_short.properties Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,1743 @@
+ACT.daylight.short=CST
+ACT.generic.short=CT
+ACT.standard.short=CST
+AET.daylight.short=EST
+AET.generic.short=ET
+AET.standard.short=EST
+Africa/Abidjan.daylight.short=GMT
+Africa/Abidjan.generic.short=GMT
+Africa/Abidjan.standard.short=GMT
+Africa/Accra.daylight.short=GHST
+Africa/Accra.generic.short=GMT
+Africa/Accra.standard.short=GMT
+Africa/Addis_Ababa.daylight.short=EAST
+Africa/Addis_Ababa.generic.short=EAT
+Africa/Addis_Ababa.standard.short=EAT
+Africa/Algiers.daylight.short=CEST
+Africa/Algiers.generic.short=CET
+Africa/Algiers.standard.short=CET
+Africa/Asmara.daylight.short=EAST
+Africa/Asmara.generic.short=EAT
+Africa/Asmara.standard.short=EAT
+Africa/Asmera.daylight.short=EAST
+Africa/Asmera.generic.short=EAT
+Africa/Asmera.standard.short=EAT
+Africa/Bamako.daylight.short=GMT
+Africa/Bamako.generic.short=GMT
+Africa/Bamako.standard.short=GMT
+Africa/Bangui.daylight.short=WAST
+Africa/Bangui.generic.short=WAT
+Africa/Bangui.standard.short=WAT
+Africa/Banjul.daylight.short=GMT
+Africa/Banjul.generic.short=GMT
+Africa/Banjul.standard.short=GMT
+Africa/Bissau.daylight.short=GMT
+Africa/Bissau.generic.short=GMT
+Africa/Bissau.standard.short=GMT
+Africa/Blantyre.daylight.short=CAST
+Africa/Blantyre.generic.short=CAT
+Africa/Blantyre.standard.short=CAT
+Africa/Brazzaville.daylight.short=WAST
+Africa/Brazzaville.generic.short=WAT
+Africa/Brazzaville.standard.short=WAT
+Africa/Bujumbura.daylight.short=CAST
+Africa/Bujumbura.generic.short=CAT
+Africa/Bujumbura.standard.short=CAT
+Africa/Cairo.daylight.short=EEST
+Africa/Cairo.generic.short=EET
+Africa/Cairo.standard.short=EET
+Africa/Casablanca.daylight.short=WEST
+Africa/Casablanca.generic.short=WET
+Africa/Casablanca.standard.short=WET
+Africa/Ceuta.daylight.short=CEST
+Africa/Ceuta.generic.short=CET
+Africa/Ceuta.standard.short=CET
+Africa/Conakry.daylight.short=GMT
+Africa/Conakry.generic.short=GMT
+Africa/Conakry.standard.short=GMT
+Africa/Dakar.daylight.short=GMT
+Africa/Dakar.generic.short=GMT
+Africa/Dakar.standard.short=GMT
+Africa/Dar_es_Salaam.daylight.short=EAST
+Africa/Dar_es_Salaam.generic.short=EAT
+Africa/Dar_es_Salaam.standard.short=EAT
+Africa/Djibouti.daylight.short=EAST
+Africa/Djibouti.generic.short=EAT
+Africa/Djibouti.standard.short=EAT
+Africa/Douala.daylight.short=WAST
+Africa/Douala.generic.short=WAT
+Africa/Douala.standard.short=WAT
+Africa/El_Aaiun.daylight.short=WEST
+Africa/El_Aaiun.generic.short=WET
+Africa/El_Aaiun.standard.short=WET
+Africa/Freetown.daylight.short=SLST
+Africa/Freetown.generic.short=SLT
+Africa/Freetown.standard.short=GMT
+Africa/Gaborone.daylight.short=CAST
+Africa/Gaborone.generic.short=CAT
+Africa/Gaborone.standard.short=CAT
+Africa/Harare.daylight.short=CAST
+Africa/Harare.generic.short=CAT
+Africa/Harare.standard.short=CAT
+Africa/Johannesburg.daylight.short=SAST
+Africa/Johannesburg.generic.short=SAT
+Africa/Johannesburg.standard.short=SAST
+Africa/Juba.daylight.short=EAST
+Africa/Juba.generic.short=EAT
+Africa/Juba.standard.short=EAT
+Africa/Kampala.daylight.short=EAST
+Africa/Kampala.generic.short=EAT
+Africa/Kampala.standard.short=EAT
+Africa/Khartoum.daylight.short=EAST
+Africa/Khartoum.generic.short=EAT
+Africa/Khartoum.standard.short=EAT
+Africa/Kigali.daylight.short=CAST
+Africa/Kigali.generic.short=CAT
+Africa/Kigali.standard.short=CAT
+Africa/Kinshasa.daylight.short=WAST
+Africa/Kinshasa.generic.short=WAT
+Africa/Kinshasa.standard.short=WAT
+Africa/Lagos.daylight.short=WAST
+Africa/Lagos.generic.short=WAT
+Africa/Lagos.standard.short=WAT
+Africa/Libreville.daylight.short=WAST
+Africa/Libreville.generic.short=WAT
+Africa/Libreville.standard.short=WAT
+Africa/Lome.daylight.short=GMT
+Africa/Lome.generic.short=GMT
+Africa/Lome.standard.short=GMT
+Africa/Luanda.daylight.short=WAST
+Africa/Luanda.generic.short=WAT
+Africa/Luanda.standard.short=WAT
+Africa/Lubumbashi.daylight.short=CAST
+Africa/Lubumbashi.generic.short=CAT
+Africa/Lubumbashi.standard.short=CAT
+Africa/Lusaka.daylight.short=CAST
+Africa/Lusaka.generic.short=CAT
+Africa/Lusaka.standard.short=CAT
+Africa/Malabo.daylight.short=WAST
+Africa/Malabo.generic.short=WAT
+Africa/Malabo.standard.short=WAT
+Africa/Maputo.daylight.short=CAST
+Africa/Maputo.generic.short=CAT
+Africa/Maputo.standard.short=CAT
+Africa/Maseru.daylight.short=SAST
+Africa/Maseru.generic.short=SAT
+Africa/Maseru.standard.short=SAST
+Africa/Mbabane.daylight.short=SAST
+Africa/Mbabane.generic.short=SAT
+Africa/Mbabane.standard.short=SAST
+Africa/Mogadishu.daylight.short=EAST
+Africa/Mogadishu.generic.short=EAT
+Africa/Mogadishu.standard.short=EAT
+Africa/Monrovia.daylight.short=GMT
+Africa/Monrovia.generic.short=GMT
+Africa/Monrovia.standard.short=GMT
+Africa/Nairobi.daylight.short=EAST
+Africa/Nairobi.generic.short=EAT
+Africa/Nairobi.standard.short=EAT
+Africa/Ndjamena.daylight.short=WAST
+Africa/Ndjamena.generic.short=WAT
+Africa/Ndjamena.standard.short=WAT
+Africa/Niamey.daylight.short=WAST
+Africa/Niamey.generic.short=WAT
+Africa/Niamey.standard.short=WAT
+Africa/Nouakchott.daylight.short=GMT
+Africa/Nouakchott.generic.short=GMT
+Africa/Nouakchott.standard.short=GMT
+Africa/Ouagadougou.daylight.short=GMT
+Africa/Ouagadougou.generic.short=GMT
+Africa/Ouagadougou.standard.short=GMT
+Africa/Porto-Novo.daylight.short=WAST
+Africa/Porto-Novo.generic.short=WAT
+Africa/Porto-Novo.standard.short=WAT
+Africa/Sao_Tome.daylight.short=GMT
+Africa/Sao_Tome.generic.short=GMT
+Africa/Sao_Tome.standard.short=GMT
+Africa/Timbuktu.daylight.short=GMT
+Africa/Timbuktu.generic.short=GMT
+Africa/Timbuktu.standard.short=GMT
+Africa/Tripoli.daylight.short=EEST
+Africa/Tripoli.generic.short=EET
+Africa/Tripoli.standard.short=EET
+Africa/Tunis.daylight.short=CEST
+Africa/Tunis.generic.short=CET
+Africa/Tunis.standard.short=CET
+Africa/Windhoek.daylight.short=WAST
+Africa/Windhoek.generic.short=WAT
+Africa/Windhoek.standard.short=WAT
+AGT.daylight.short=ARST
+AGT.generic.short=ART
+AGT.standard.short=ART
+America/Adak.daylight.short=HADT
+America/Adak.generic.short=HAT
+America/Adak.standard.short=HAST
+America/Anchorage.daylight.short=AKDT
+America/Anchorage.generic.short=AKT
+America/Anchorage.standard.short=AKST
+America/Anguilla.daylight.short=ADT
+America/Anguilla.generic.short=AT
+America/Anguilla.standard.short=AST
+America/Antigua.daylight.short=ADT
+America/Antigua.generic.short=AT
+America/Antigua.standard.short=AST
+America/Araguaina.daylight.short=BRST
+America/Araguaina.generic.short=BRT
+America/Araguaina.standard.short=BRT
+America/Argentina/Buenos_Aires.daylight.short=ARST
+America/Argentina/Buenos_Aires.generic.short=ART
+America/Argentina/Buenos_Aires.standard.short=ART
+America/Argentina/Catamarca.daylight.short=ARST
+America/Argentina/Catamarca.generic.short=ART
+America/Argentina/Catamarca.standard.short=ART
+America/Argentina/ComodRivadavia.daylight.short=ARST
+America/Argentina/ComodRivadavia.generic.short=ART
+America/Argentina/ComodRivadavia.standard.short=ART
+America/Argentina/Cordoba.daylight.short=ARST
+America/Argentina/Cordoba.generic.short=ART
+America/Argentina/Cordoba.standard.short=ART
+America/Argentina/Jujuy.daylight.short=ARST
+America/Argentina/Jujuy.generic.short=ART
+America/Argentina/Jujuy.standard.short=ART
+America/Argentina/La_Rioja.daylight.short=ARST
+America/Argentina/La_Rioja.generic.short=ART
+America/Argentina/La_Rioja.standard.short=ART
+America/Argentina/Mendoza.daylight.short=ARST
+America/Argentina/Mendoza.generic.short=ART
+America/Argentina/Mendoza.standard.short=ART
+America/Argentina/Rio_Gallegos.daylight.short=ARST
+America/Argentina/Rio_Gallegos.generic.short=ART
+America/Argentina/Rio_Gallegos.standard.short=ART
+America/Argentina/Salta.daylight.short=ARST
+America/Argentina/Salta.generic.short=ART
+America/Argentina/Salta.standard.short=ART
+America/Argentina/San_Juan.daylight.short=ARST
+America/Argentina/San_Juan.generic.short=ART
+America/Argentina/San_Juan.standard.short=ART
+America/Argentina/San_Luis.daylight.short=ARST
+America/Argentina/San_Luis.generic.short=ART
+America/Argentina/San_Luis.standard.short=ART
+America/Argentina/Tucuman.daylight.short=ARST
+America/Argentina/Tucuman.generic.short=ART
+America/Argentina/Tucuman.standard.short=ART
+America/Argentina/Ushuaia.daylight.short=ARST
+America/Argentina/Ushuaia.generic.short=ART
+America/Argentina/Ushuaia.standard.short=ART
+America/Aruba.daylight.short=ADT
+America/Aruba.generic.short=AT
+America/Aruba.standard.short=AST
+America/Asuncion.daylight.short=PYST
+America/Asuncion.generic.short=PYT
+America/Asuncion.standard.short=PYT
+America/Atikokan.daylight.short=EDT
+America/Atikokan.generic.short=ET
+America/Atikokan.standard.short=EST
+America/Atka.daylight.short=HADT
+America/Atka.generic.short=HAT
+America/Atka.standard.short=HAST
+America/Bahia_Banderas.daylight.short=CDT
+America/Bahia_Banderas.generic.short=CT
+America/Bahia_Banderas.standard.short=CST
+America/Bahia.daylight.short=BRST
+America/Bahia.generic.short=BRT
+America/Bahia.standard.short=BRT
+America/Barbados.daylight.short=ADT
+America/Barbados.generic.short=AT
+America/Barbados.standard.short=AST
+America/Belem.daylight.short=BRST
+America/Belem.generic.short=BRT
+America/Belem.standard.short=BRT
+America/Belize.daylight.short=CDT
+America/Belize.generic.short=CT
+America/Belize.standard.short=CST
+America/Blanc-Sablon.daylight.short=ADT
+America/Blanc-Sablon.generic.short=AT
+America/Blanc-Sablon.standard.short=AST
+America/Boa_Vista.daylight.short=AMST
+America/Boa_Vista.generic.short=AMT
+America/Boa_Vista.standard.short=AMT
+America/Bogota.daylight.short=COST
+America/Bogota.generic.short=COT
+America/Bogota.standard.short=COT
+America/Boise.daylight.short=MDT
+America/Boise.generic.short=MT
+America/Boise.standard.short=MST
+America/Buenos_Aires.daylight.short=ARST
+America/Buenos_Aires.generic.short=ART
+America/Buenos_Aires.standard.short=ART
+America/Cambridge_Bay.daylight.short=MDT
+America/Cambridge_Bay.generic.short=MT
+America/Cambridge_Bay.standard.short=MST
+America/Campo_Grande.daylight.short=AMST
+America/Campo_Grande.generic.short=AMT
+America/Campo_Grande.standard.short=AMT
+America/Cancun.daylight.short=CDT
+America/Cancun.generic.short=CT
+America/Cancun.standard.short=CST
+America/Caracas.daylight.short=VEST
+America/Caracas.generic.short=VET
+America/Caracas.standard.short=VET
+America/Catamarca.daylight.short=ARST
+America/Catamarca.generic.short=ART
+America/Catamarca.standard.short=ART
+America/Cayenne.daylight.short=GFST
+America/Cayenne.generic.short=GFT
+America/Cayenne.standard.short=GFT
+America/Cayman.daylight.short=EDT
+America/Cayman.generic.short=ET
+America/Cayman.standard.short=EST
+America/Chicago.daylight.short=CDT
+America/Chicago.generic.short=CT
+America/Chicago.standard.short=CST
+America/Chihuahua.daylight.short=MDT
+America/Chihuahua.generic.short=MT
+America/Chihuahua.standard.short=MST
+America/Coral_Harbour.daylight.short=EDT
+America/Coral_Harbour.generic.short=ET
+America/Coral_Harbour.standard.short=EST
+America/Cordoba.daylight.short=ARST
+America/Cordoba.generic.short=ART
+America/Cordoba.standard.short=ART
+America/Costa_Rica.daylight.short=CDT
+America/Costa_Rica.generic.short=CT
+America/Costa_Rica.standard.short=CST
+America/Creston.daylight.short=MDT
+America/Creston.generic.short=MT
+America/Creston.standard.short=MST
+America/Cuiaba.daylight.short=AMST
+America/Cuiaba.generic.short=AMT
+America/Cuiaba.standard.short=AMT
+America/Curacao.daylight.short=ADT
+America/Curacao.generic.short=AT
+America/Curacao.standard.short=AST
+America/Danmarkshavn.daylight.short=GMT
+America/Danmarkshavn.generic.short=GMT
+America/Danmarkshavn.standard.short=GMT
+America/Dawson_Creek.daylight.short=MDT
+America/Dawson_Creek.generic.short=MT
+America/Dawson_Creek.standard.short=MST
+America/Dawson.daylight.short=PDT
+America/Dawson.generic.short=PT
+America/Dawson.standard.short=PST
+America/Denver.daylight.short=MDT
+America/Denver.generic.short=MT
+America/Denver.standard.short=MST
+America/Detroit.daylight.short=EDT
+America/Detroit.generic.short=ET
+America/Detroit.standard.short=EST
+America/Dominica.daylight.short=ADT
+America/Dominica.generic.short=AT
+America/Dominica.standard.short=AST
+America/Edmonton.daylight.short=MDT
+America/Edmonton.generic.short=MT
+America/Edmonton.standard.short=MST
+America/Eirunepe.daylight.short=ACST
+America/Eirunepe.generic.short=ACT
+America/Eirunepe.standard.short=ACT
+America/El_Salvador.daylight.short=CDT
+America/El_Salvador.generic.short=CT
+America/El_Salvador.standard.short=CST
+America/Ensenada.daylight.short=PDT
+America/Ensenada.generic.short=PT
+America/Ensenada.standard.short=PST
+America/Fortaleza.daylight.short=BRST
+America/Fortaleza.generic.short=BRT
+America/Fortaleza.standard.short=BRT
+America/Fort_Wayne.daylight.short=EDT
+America/Fort_Wayne.generic.short=ET
+America/Fort_Wayne.standard.short=EST
+America/Glace_Bay.daylight.short=ADT
+America/Glace_Bay.generic.short=AT
+America/Glace_Bay.standard.short=AST
+America/Godthab.daylight.short=WGST
+America/Godthab.generic.short=WGT
+America/Godthab.standard.short=WGT
+America/Goose_Bay.daylight.short=ADT
+America/Goose_Bay.generic.short=AT
+America/Goose_Bay.standard.short=AST
+America/Grand_Turk.daylight.short=EDT
+America/Grand_Turk.generic.short=ET
+America/Grand_Turk.standard.short=EST
+America/Grenada.daylight.short=ADT
+America/Grenada.generic.short=AT
+America/Grenada.standard.short=AST
+America/Guadeloupe.daylight.short=ADT
+America/Guadeloupe.generic.short=AT
+America/Guadeloupe.standard.short=AST
+America/Guatemala.daylight.short=CDT
+America/Guatemala.generic.short=CT
+America/Guatemala.standard.short=CST
+America/Guayaquil.daylight.short=ECST
+America/Guayaquil.generic.short=ECT
+America/Guayaquil.standard.short=ECT
+America/Guyana.daylight.short=GYST
+America/Guyana.generic.short=GYT
+America/Guyana.standard.short=GYT
+America/Halifax.daylight.short=ADT
+America/Halifax.generic.short=AT
+America/Halifax.standard.short=AST
+America/Havana.daylight.short=CDT
+America/Havana.generic.short=CT
+America/Havana.standard.short=CST
+America/Hermosillo.daylight.short=MDT
+America/Hermosillo.generic.short=MT
+America/Hermosillo.standard.short=MST
+America/Indiana/Indianapolis.daylight.short=EDT
+America/Indiana/Indianapolis.generic.short=ET
+America/Indiana/Indianapolis.standard.short=EST
+America/Indiana/Knox.daylight.short=CDT
+America/Indiana/Knox.generic.short=CT
+America/Indiana/Knox.standard.short=CST
+America/Indiana/Marengo.daylight.short=EDT
+America/Indiana/Marengo.generic.short=ET
+America/Indiana/Marengo.standard.short=EST
+America/Indiana/Petersburg.daylight.short=EDT
+America/Indiana/Petersburg.generic.short=ET
+America/Indiana/Petersburg.standard.short=EST
+America/Indianapolis.daylight.short=EDT
+America/Indianapolis.generic.short=ET
+America/Indianapolis.standard.short=EST
+America/Indiana/Tell_City.daylight.short=CDT
+America/Indiana/Tell_City.generic.short=CT
+America/Indiana/Tell_City.standard.short=CST
+America/Indiana/Vevay.daylight.short=EDT
+America/Indiana/Vevay.generic.short=ET
+America/Indiana/Vevay.standard.short=EST
+America/Indiana/Vincennes.daylight.short=EDT
+America/Indiana/Vincennes.generic.short=ET
+America/Indiana/Vincennes.standard.short=EST
+America/Indiana/Winamac.daylight.short=EDT
+America/Indiana/Winamac.generic.short=ET
+America/Indiana/Winamac.standard.short=EST
+America/Inuvik.daylight.short=MDT
+America/Inuvik.generic.short=MT
+America/Inuvik.standard.short=MST
+America/Iqaluit.daylight.short=EDT
+America/Iqaluit.generic.short=ET
+America/Iqaluit.standard.short=EST
+America/Jamaica.daylight.short=EDT
+America/Jamaica.generic.short=ET
+America/Jamaica.standard.short=EST
+America/Jujuy.daylight.short=ARST
+America/Jujuy.generic.short=ART
+America/Jujuy.standard.short=ART
+America/Juneau.daylight.short=AKDT
+America/Juneau.generic.short=AKT
+America/Juneau.standard.short=AKST
+America/Kentucky/Louisville.daylight.short=EDT
+America/Kentucky/Louisville.generic.short=ET
+America/Kentucky/Louisville.standard.short=EST
+America/Kentucky/Monticello.daylight.short=EDT
+America/Kentucky/Monticello.generic.short=ET
+America/Kentucky/Monticello.standard.short=EST
+America/Knox_IN.daylight.short=CDT
+America/Knox_IN.generic.short=CT
+America/Knox_IN.standard.short=CST
+America/Kralendijk.daylight.short=ADT
+America/Kralendijk.generic.short=AT
+America/Kralendijk.standard.short=AST
+America/La_Paz.daylight.short=BOST
+America/La_Paz.generic.short=BOT
+America/La_Paz.standard.short=BOT
+America/Lima.daylight.short=PEST
+America/Lima.generic.short=PET
+America/Lima.standard.short=PET
+America/Los_Angeles.daylight.short=PDT
+America/Los_Angeles.generic.short=PT
+America/Los_Angeles.standard.short=PST
+America/Louisville.daylight.short=EDT
+America/Louisville.generic.short=ET
+America/Louisville.standard.short=EST
+America/Lower_Princes.daylight.short=ADT
+America/Lower_Princes.generic.short=AT
+America/Lower_Princes.standard.short=AST
+America/Maceio.daylight.short=BRST
+America/Maceio.generic.short=BRT
+America/Maceio.standard.short=BRT
+America/Managua.daylight.short=CDT
+America/Managua.generic.short=CT
+America/Managua.standard.short=CST
+America/Manaus.daylight.short=AMST
+America/Manaus.generic.short=AMT
+America/Manaus.standard.short=AMT
+America/Marigot.daylight.short=ADT
+America/Marigot.generic.short=AT
+America/Marigot.standard.short=AST
+America/Martinique.daylight.short=ADT
+America/Martinique.generic.short=AT
+America/Martinique.standard.short=AST
+America/Matamoros.daylight.short=CDT
+America/Matamoros.generic.short=CT
+America/Matamoros.standard.short=CST
+America/Mazatlan.daylight.short=MDT
+America/Mazatlan.generic.short=MT
+America/Mazatlan.standard.short=MST
+America/Mendoza.daylight.short=ARST
+America/Mendoza.generic.short=ART
+America/Mendoza.standard.short=ART
+America/Menominee.daylight.short=CDT
+America/Menominee.generic.short=CT
+America/Menominee.standard.short=CST
+America/Merida.daylight.short=CDT
+America/Merida.generic.short=CT
+America/Merida.standard.short=CST
+America/Metlakatla.daylight.short=MeDT
+America/Metlakatla.generic.short=MeT
+America/Metlakatla.standard.short=MeST
+America/Mexico_City.daylight.short=CDT
+America/Mexico_City.generic.short=CT
+America/Mexico_City.standard.short=CST
+America/Miquelon.daylight.short=PMDT
+America/Miquelon.generic.short=PMT
+America/Miquelon.standard.short=PMST
+America/Moncton.daylight.short=ADT
+America/Moncton.generic.short=AT
+America/Moncton.standard.short=AST
+America/Monterrey.daylight.short=CDT
+America/Monterrey.generic.short=CT
+America/Monterrey.standard.short=CST
+America/Montevideo.daylight.short=UYST
+America/Montevideo.generic.short=UYT
+America/Montevideo.standard.short=UYT
+America/Montreal.daylight.short=EDT
+America/Montreal.generic.short=ET
+America/Montreal.standard.short=EST
+America/Montserrat.daylight.short=ADT
+America/Montserrat.generic.short=AT
+America/Montserrat.standard.short=AST
+America/Nassau.daylight.short=EDT
+America/Nassau.generic.short=ET
+America/Nassau.standard.short=EST
+America/New_York.daylight.short=EDT
+America/New_York.generic.short=ET
+America/New_York.standard.short=EST
+America/Nipigon.daylight.short=EDT
+America/Nipigon.generic.short=ET
+America/Nipigon.standard.short=EST
+America/Nome.daylight.short=AKDT
+America/Nome.generic.short=AKT
+America/Nome.standard.short=AKST
+America/Noronha.daylight.short=FNST
+America/Noronha.generic.short=FNT
+America/Noronha.standard.short=FNT
+America/North_Dakota/Beulah.daylight.short=CDT
+America/North_Dakota/Beulah.generic.short=CT
+America/North_Dakota/Beulah.standard.short=CST
+America/North_Dakota/Center.daylight.short=CDT
+America/North_Dakota/Center.generic.short=CT
+America/North_Dakota/Center.standard.short=CST
+America/North_Dakota/New_Salem.daylight.short=CDT
+America/North_Dakota/New_Salem.generic.short=CT
+America/North_Dakota/New_Salem.standard.short=CST
+America/Ojinaga.daylight.short=MDT
+America/Ojinaga.generic.short=MT
+America/Ojinaga.standard.short=MST
+America/Panama.daylight.short=EDT
+America/Panama.generic.short=ET
+America/Panama.standard.short=EST
+America/Pangnirtung.daylight.short=EDT
+America/Pangnirtung.generic.short=ET
+America/Pangnirtung.standard.short=EST
+America/Paramaribo.daylight.short=SRST
+America/Paramaribo.generic.short=SRT
+America/Paramaribo.standard.short=SRT
+America/Phoenix.daylight.short=MDT
+America/Phoenix.generic.short=MT
+America/Phoenix.standard.short=MST
+America/Port-au-Prince.daylight.short=EDT
+America/Port-au-Prince.generic.short=ET
+America/Port-au-Prince.standard.short=EST
+America/Porto_Acre.daylight.short=ACST
+America/Porto_Acre.generic.short=ACT
+America/Porto_Acre.standard.short=ACT
+America/Port_of_Spain.daylight.short=ADT
+America/Port_of_Spain.generic.short=AT
+America/Port_of_Spain.standard.short=AST
+America/Porto_Velho.daylight.short=AMST
+America/Porto_Velho.generic.short=AMT
+America/Porto_Velho.standard.short=AMT
+America/Puerto_Rico.daylight.short=ADT
+America/Puerto_Rico.generic.short=AT
+America/Puerto_Rico.standard.short=AST
+America/Rainy_River.daylight.short=CDT
+America/Rainy_River.generic.short=CT
+America/Rainy_River.standard.short=CST
+America/Rankin_Inlet.daylight.short=CDT
+America/Rankin_Inlet.generic.short=CT
+America/Rankin_Inlet.standard.short=CST
+America/Recife.daylight.short=BRST
+America/Recife.generic.short=BRT
+America/Recife.standard.short=BRT
+America/Regina.daylight.short=CDT
+America/Regina.generic.short=CT
+America/Regina.standard.short=CST
+America/Resolute.daylight.short=CDT
+America/Resolute.generic.short=CT
+America/Resolute.standard.short=CST
+America/Rio_Branco.daylight.short=ACST
+America/Rio_Branco.generic.short=ACT
+America/Rio_Branco.standard.short=ACT
+America/Rosario.daylight.short=ARST
+America/Rosario.generic.short=ART
+America/Rosario.standard.short=ART
+America/Santa_Isabel.daylight.short=PDT
+America/Santa_Isabel.generic.short=PT
+America/Santa_Isabel.standard.short=PST
+America/Santarem.daylight.short=BRST
+America/Santarem.generic.short=BRT
+America/Santarem.standard.short=BRT
+America/Santiago.daylight.short=CLST
+America/Santiago.generic.short=CLT
+America/Santiago.standard.short=CLT
+America/Santo_Domingo.daylight.short=ADT
+America/Santo_Domingo.generic.short=AT
+America/Santo_Domingo.standard.short=AST
+America/Sao_Paulo.daylight.short=BRST
+America/Sao_Paulo.generic.short=BRT
+America/Sao_Paulo.standard.short=BRT
+America/Scoresbysund.daylight.short=EGST
+America/Scoresbysund.generic.short=EGT
+America/Scoresbysund.standard.short=EGT
+America/Shiprock.daylight.short=MDT
+America/Shiprock.generic.short=MT
+America/Shiprock.standard.short=MST
+America/Sitka.daylight.short=AKDT
+America/Sitka.generic.short=AKT
+America/Sitka.standard.short=AKST
+America/St_Barthelemy.daylight.short=ADT
+America/St_Barthelemy.generic.short=AT
+America/St_Barthelemy.standard.short=AST
+America/St_Johns.daylight.short=NDT
+America/St_Johns.generic.short=NT
+America/St_Johns.standard.short=NST
+America/St_Kitts.daylight.short=ADT
+America/St_Kitts.generic.short=AT
+America/St_Kitts.standard.short=AST
+America/St_Lucia.daylight.short=ADT
+America/St_Lucia.generic.short=AT
+America/St_Lucia.standard.short=AST
+America/St_Thomas.daylight.short=ADT
+America/St_Thomas.generic.short=AT
+America/St_Thomas.standard.short=AST
+America/St_Vincent.daylight.short=ADT
+America/St_Vincent.generic.short=AT
+America/St_Vincent.standard.short=AST
+America/Swift_Current.daylight.short=CDT
+America/Swift_Current.generic.short=CT
+America/Swift_Current.standard.short=CST
+America/Tegucigalpa.daylight.short=CDT
+America/Tegucigalpa.generic.short=CT
+America/Tegucigalpa.standard.short=CST
+America/Thule.daylight.short=ADT
+America/Thule.generic.short=AT
+America/Thule.standard.short=AST
+America/Thunder_Bay.daylight.short=EDT
+America/Thunder_Bay.generic.short=ET
+America/Thunder_Bay.standard.short=EST
+America/Tijuana.daylight.short=PDT
+America/Tijuana.generic.short=PT
+America/Tijuana.standard.short=PST
+America/Toronto.daylight.short=EDT
+America/Toronto.generic.short=ET
+America/Toronto.standard.short=EST
+America/Tortola.daylight.short=ADT
+America/Tortola.generic.short=AT
+America/Tortola.standard.short=AST
+America/Vancouver.daylight.short=PDT
+America/Vancouver.generic.short=PT
+America/Vancouver.standard.short=PST
+America/Virgin.daylight.short=ADT
+America/Virgin.generic.short=AT
+America/Virgin.standard.short=AST
+America/Whitehorse.daylight.short=PDT
+America/Whitehorse.generic.short=PT
+America/Whitehorse.standard.short=PST
+America/Winnipeg.daylight.short=CDT
+America/Winnipeg.generic.short=CT
+America/Winnipeg.standard.short=CST
+America/Yakutat.daylight.short=AKDT
+America/Yakutat.generic.short=AKT
+America/Yakutat.standard.short=AKST
+America/Yellowknife.daylight.short=MDT
+America/Yellowknife.generic.short=MT
+America/Yellowknife.standard.short=MST
+Antarctica/Casey.daylight.short=WST
+Antarctica/Casey.generic.short=WT
+Antarctica/Casey.standard.short=WST
+Antarctica/Davis.daylight.short=DAVST
+Antarctica/Davis.generic.short=DAVT
+Antarctica/Davis.standard.short=DAVT
+Antarctica/DumontDUrville.daylight.short=DDUST
+Antarctica/DumontDUrville.generic.short=DDUT
+Antarctica/DumontDUrville.standard.short=DDUT
+Antarctica/Macquarie.daylight.short=MIST
+Antarctica/Macquarie.generic.short=MIST
+Antarctica/Macquarie.standard.short=MIST
+Antarctica/Mawson.daylight.short=MAWST
+Antarctica/Mawson.generic.short=MAWT
+Antarctica/Mawson.standard.short=MAWT
+Antarctica/McMurdo.daylight.short=NZDT
+Antarctica/McMurdo.generic.short=NZT
+Antarctica/McMurdo.standard.short=NZST
+Antarctica/Palmer.daylight.short=CLST
+Antarctica/Palmer.generic.short=CLT
+Antarctica/Palmer.standard.short=CLT
+Antarctica/Rothera.daylight.short=ROTST
+Antarctica/Rothera.generic.short=ROTT
+Antarctica/Rothera.standard.short=ROTT
+Antarctica/South_Pole.daylight.short=NZDT
+Antarctica/South_Pole.generic.short=NZT
+Antarctica/South_Pole.standard.short=NZST
+Antarctica/Syowa.daylight.short=SYOST
+Antarctica/Syowa.generic.short=SYOT
+Antarctica/Syowa.standard.short=SYOT
+Antarctica/Vostok.daylight.short=VOSST
+Antarctica/Vostok.generic.short=VOST
+Antarctica/Vostok.standard.short=VOST
+Arctic/Longyearbyen.daylight.short=CEST
+Arctic/Longyearbyen.generic.short=CET
+Arctic/Longyearbyen.standard.short=CET
+ART.daylight.short=EEST
+ART.generic.short=EET
+ART.standard.short=EET
+Asia/Aden.daylight.short=ADT
+Asia/Aden.generic.short=AT
+Asia/Aden.standard.short=AST
+Asia/Almaty.daylight.short=ALMST
+Asia/Almaty.generic.short=ALMT
+Asia/Almaty.standard.short=ALMT
+Asia/Amman.daylight.short=ADT
+Asia/Amman.generic.short=AT
+Asia/Amman.standard.short=AST
+Asia/Anadyr.daylight.short=ANAST
+Asia/Anadyr.generic.short=ANAT
+Asia/Anadyr.standard.short=ANAT
+Asia/Aqtau.daylight.short=AQTST
+Asia/Aqtau.generic.short=AQTT
+Asia/Aqtau.standard.short=AQTT
+Asia/Aqtobe.daylight.short=AQTST
+Asia/Aqtobe.generic.short=AQTT
+Asia/Aqtobe.standard.short=AQTT
+Asia/Ashgabat.daylight.short=TMST
+Asia/Ashgabat.generic.short=TMT
+Asia/Ashgabat.standard.short=TMT
+Asia/Ashkhabad.daylight.short=TMST
+Asia/Ashkhabad.generic.short=TMT
+Asia/Ashkhabad.standard.short=TMT
+Asia/Baghdad.daylight.short=ADT
+Asia/Baghdad.generic.short=AT
+Asia/Baghdad.standard.short=AST
+Asia/Bahrain.daylight.short=ADT
+Asia/Bahrain.generic.short=AT
+Asia/Bahrain.standard.short=AST
+Asia/Baku.daylight.short=AZST
+Asia/Baku.generic.short=AZT
+Asia/Baku.standard.short=AZT
+Asia/Bangkok.daylight.short=ICST
+Asia/Bangkok.generic.short=ICT
+Asia/Bangkok.standard.short=ICT
+Asia/Beirut.daylight.short=EEST
+Asia/Beirut.generic.short=EET
+Asia/Beirut.standard.short=EET
+Asia/Bishkek.daylight.short=KGST
+Asia/Bishkek.generic.short=KGT
+Asia/Bishkek.standard.short=KGT
+Asia/Brunei.daylight.short=BNST
+Asia/Brunei.generic.short=BNT
+Asia/Brunei.standard.short=BNT
+Asia/Calcutta.daylight.short=IDT
+Asia/Calcutta.generic.short=IT
+Asia/Calcutta.standard.short=IST
+Asia/Choibalsan.daylight.short=CHOST
+Asia/Choibalsan.generic.short=CHOT
+Asia/Choibalsan.standard.short=CHOT
+Asia/Chongqing.daylight.short=CDT
+Asia/Chongqing.generic.short=CT
+Asia/Chongqing.standard.short=CST
+Asia/Chungking.daylight.short=CDT
+Asia/Chungking.generic.short=CT
+Asia/Chungking.standard.short=CST
+Asia/Colombo.daylight.short=IDT
+Asia/Colombo.generic.short=IT
+Asia/Colombo.standard.short=IST
+Asia/Dacca.daylight.short=BDST
+Asia/Dacca.generic.short=BDT
+Asia/Dacca.standard.short=BDT
+Asia/Damascus.daylight.short=EEST
+Asia/Damascus.generic.short=EET
+Asia/Damascus.standard.short=EET
+Asia/Dhaka.daylight.short=BDST
+Asia/Dhaka.generic.short=BDT
+Asia/Dhaka.standard.short=BDT
+Asia/Dili.daylight.short=TLST
+Asia/Dili.generic.short=TLT
+Asia/Dili.standard.short=TLT
+Asia/Dubai.daylight.short=GDT
+Asia/Dubai.generic.short=GT
+Asia/Dubai.standard.short=GST
+Asia/Dushanbe.daylight.short=TJST
+Asia/Dushanbe.generic.short=TJT
+Asia/Dushanbe.standard.short=TJT
+Asia/Gaza.daylight.short=EEST
+Asia/Gaza.generic.short=EET
+Asia/Gaza.standard.short=EET
+Asia/Harbin.daylight.short=CDT
+Asia/Harbin.generic.short=CT
+Asia/Harbin.standard.short=CST
+Asia/Hebron.daylight.short=EEST
+Asia/Hebron.generic.short=EET
+Asia/Hebron.standard.short=EET
+Asia/Ho_Chi_Minh.daylight.short=ICST
+Asia/Ho_Chi_Minh.generic.short=ICT
+Asia/Ho_Chi_Minh.standard.short=ICT
+Asia/Hong_Kong.daylight.short=HKST
+Asia/Hong_Kong.generic.short=HKT
+Asia/Hong_Kong.standard.short=HKT
+Asia/Hovd.daylight.short=HOVST
+Asia/Hovd.generic.short=HOVT
+Asia/Hovd.standard.short=HOVT
+Asia/Irkutsk.daylight.short=IRKST
+Asia/Irkutsk.generic.short=IRKT
+Asia/Irkutsk.standard.short=IRKT
+Asia/Istanbul.daylight.short=EEST
+Asia/Istanbul.generic.short=EET
+Asia/Istanbul.standard.short=EET
+Asia/Jakarta.daylight.short=WIST
+Asia/Jakarta.generic.short=WIB
+Asia/Jakarta.standard.short=WIB
+Asia/Jayapura.daylight.short=EIST
+Asia/Jayapura.generic.short=WIT
+Asia/Jayapura.standard.short=WIT
+Asia/Jerusalem.daylight.short=IDT
+Asia/Jerusalem.generic.short=IT
+Asia/Jerusalem.standard.short=IST
+Asia/Kabul.daylight.short=AFST
+Asia/Kabul.generic.short=AFT
+Asia/Kabul.standard.short=AFT
+Asia/Kamchatka.daylight.short=PETST
+Asia/Kamchatka.generic.short=PETT
+Asia/Kamchatka.standard.short=PETT
+Asia/Karachi.daylight.short=PKST
+Asia/Karachi.generic.short=PKT
+Asia/Karachi.standard.short=PKT
+Asia/Kashgar.daylight.short=CDT
+Asia/Kashgar.generic.short=CT
+Asia/Kashgar.standard.short=CST
+Asia/Kathmandu.daylight.short=NPST
+Asia/Kathmandu.generic.short=NPT
+Asia/Kathmandu.standard.short=NPT
+Asia/Katmandu.daylight.short=NPST
+Asia/Katmandu.generic.short=NPT
+Asia/Katmandu.standard.short=NPT
+Asia/Khandyga.daylight.short=YAKST
+Asia/Khandyga.generic.short=YAKT
+Asia/Khandyga.standard.short=YAKT
+Asia/Kolkata.daylight.short=IDT
+Asia/Kolkata.generic.short=IT
+Asia/Kolkata.standard.short=IST
+Asia/Krasnoyarsk.daylight.short=KRAST
+Asia/Krasnoyarsk.generic.short=KRAT
+Asia/Krasnoyarsk.standard.short=KRAT
+Asia/Kuala_Lumpur.daylight.short=MYST
+Asia/Kuala_Lumpur.generic.short=MYT
+Asia/Kuala_Lumpur.standard.short=MYT
+Asia/Kuching.daylight.short=MYST
+Asia/Kuching.generic.short=MYT
+Asia/Kuching.standard.short=MYT
+Asia/Kuwait.daylight.short=ADT
+Asia/Kuwait.generic.short=AT
+Asia/Kuwait.standard.short=AST
+Asia/Macao.daylight.short=CDT
+Asia/Macao.generic.short=CT
+Asia/Macao.standard.short=CST
+Asia/Macau.daylight.short=CDT
+Asia/Macau.generic.short=CT
+Asia/Macau.standard.short=CST
+Asia/Magadan.daylight.short=MAGST
+Asia/Magadan.generic.short=MAGT
+Asia/Magadan.standard.short=MAGT
+Asia/Makassar.daylight.short=CIST
+Asia/Makassar.generic.short=WITA
+Asia/Makassar.standard.short=WITA
+Asia/Manila.daylight.short=PHST
+Asia/Manila.generic.short=PHT
+Asia/Manila.standard.short=PHT
+Asia/Muscat.daylight.short=GDT
+Asia/Muscat.generic.short=GT
+Asia/Muscat.standard.short=GST
+Asia/Nicosia.daylight.short=EEST
+Asia/Nicosia.generic.short=EET
+Asia/Nicosia.standard.short=EET
+Asia/Novokuznetsk.daylight.short=NOVST
+Asia/Novokuznetsk.generic.short=NOVT
+Asia/Novokuznetsk.standard.short=NOVT
+Asia/Novosibirsk.daylight.short=NOVST
+Asia/Novosibirsk.generic.short=NOVT
+Asia/Novosibirsk.standard.short=NOVT
+Asia/Omsk.daylight.short=OMSST
+Asia/Omsk.generic.short=OMST
+Asia/Omsk.standard.short=OMST
+Asia/Oral.daylight.short=ORAST
+Asia/Oral.generic.short=ORAT
+Asia/Oral.standard.short=ORAT
+Asia/Phnom_Penh.daylight.short=ICST
+Asia/Phnom_Penh.generic.short=ICT
+Asia/Phnom_Penh.standard.short=ICT
+Asia/Pontianak.daylight.short=WIST
+Asia/Pontianak.generic.short=WIB
+Asia/Pontianak.standard.short=WIB
+Asia/Pyongyang.daylight.short=KDT
+Asia/Pyongyang.generic.short=KT
+Asia/Pyongyang.standard.short=KST
+Asia/Qatar.daylight.short=ADT
+Asia/Qatar.generic.short=AT
+Asia/Qatar.standard.short=AST
+Asia/Qyzylorda.daylight.short=QYZST
+Asia/Qyzylorda.generic.short=QYZT
+Asia/Qyzylorda.standard.short=QYZT
+Asia/Rangoon.daylight.short=MMST
+Asia/Rangoon.generic.short=MMT
+Asia/Rangoon.standard.short=MMT
+Asia/Saigon.daylight.short=ICST
+Asia/Saigon.generic.short=ICT
+Asia/Saigon.standard.short=ICT
+Asia/Sakhalin.daylight.short=SAKST
+Asia/Sakhalin.generic.short=SAKT
+Asia/Sakhalin.standard.short=SAKT
+Asia/Samarkand.daylight.short=UZST
+Asia/Samarkand.generic.short=UZT
+Asia/Samarkand.standard.short=UZT
+Asia/Seoul.daylight.short=KDT
+Asia/Seoul.generic.short=KT
+Asia/Seoul.standard.short=KST
+Asia/Shanghai.daylight.short=CDT
+Asia/Shanghai.generic.short=CT
+Asia/Shanghai.standard.short=CST
+Asia/Singapore.daylight.short=SGST
+Asia/Singapore.generic.short=SGT
+Asia/Singapore.standard.short=SGT
+Asia/Taipei.daylight.short=CDT
+Asia/Taipei.generic.short=CT
+Asia/Taipei.standard.short=CST
+Asia/Tashkent.daylight.short=UZST
+Asia/Tashkent.generic.short=UZT
+Asia/Tashkent.standard.short=UZT
+Asia/Tbilisi.daylight.short=GEST
+Asia/Tbilisi.generic.short=GET
+Asia/Tbilisi.standard.short=GET
+Asia/Tehran.daylight.short=IRDT
+Asia/Tehran.generic.short=IRT
+Asia/Tehran.standard.short=IRST
+Asia/Tel_Aviv.daylight.short=IDT
+Asia/Tel_Aviv.generic.short=IT
+Asia/Tel_Aviv.standard.short=IST
+Asia/Thimbu.daylight.short=BTST
+Asia/Thimbu.generic.short=BTT
+Asia/Thimbu.standard.short=BTT
+Asia/Thimphu.daylight.short=BTST
+Asia/Thimphu.generic.short=BTT
+Asia/Thimphu.standard.short=BTT
+Asia/Tokyo.daylight.short=JDT
+Asia/Tokyo.generic.short=JT
+Asia/Tokyo.standard.short=JST
+Asia/Ujung_Pandang.daylight.short=CIST
+Asia/Ujung_Pandang.generic.short=WITA
+Asia/Ujung_Pandang.standard.short=WITA
+Asia/Ulaanbaatar.daylight.short=ULAST
+Asia/Ulaanbaatar.generic.short=ULAT
+Asia/Ulaanbaatar.standard.short=ULAT
+Asia/Ulan_Bator.daylight.short=ULAST
+Asia/Ulan_Bator.generic.short=ULAT
+Asia/Ulan_Bator.standard.short=ULAT
+Asia/Urumqi.daylight.short=CDT
+Asia/Urumqi.generic.short=CT
+Asia/Urumqi.standard.short=CST
+Asia/Ust-Nera.daylight.short=VLAST
+Asia/Ust-Nera.generic.short=VLAT
+Asia/Ust-Nera.standard.short=VLAT
+Asia/Vientiane.daylight.short=ICST
+Asia/Vientiane.generic.short=ICT
+Asia/Vientiane.standard.short=ICT
+Asia/Vladivostok.daylight.short=VLAST
+Asia/Vladivostok.generic.short=VLAT
+Asia/Vladivostok.standard.short=VLAT
+Asia/Yakutsk.daylight.short=YAKST
+Asia/Yakutsk.generic.short=YAKT
+Asia/Yakutsk.standard.short=YAKT
+Asia/Yekaterinburg.daylight.short=YEKST
+Asia/Yekaterinburg.generic.short=YEKT
+Asia/Yekaterinburg.standard.short=YEKT
+Asia/Yerevan.daylight.short=AMST
+Asia/Yerevan.generic.short=AMT
+Asia/Yerevan.standard.short=AMT
+AST.daylight.short=AKDT
+AST.generic.short=AKT
+AST.standard.short=AKST
+Atlantic/Azores.daylight.short=AZOST
+Atlantic/Azores.generic.short=AZOT
+Atlantic/Azores.standard.short=AZOT
+Atlantic/Bermuda.daylight.short=ADT
+Atlantic/Bermuda.generic.short=AT
+Atlantic/Bermuda.standard.short=AST
+Atlantic/Canary.daylight.short=WEST
+Atlantic/Canary.generic.short=WET
+Atlantic/Canary.standard.short=WET
+Atlantic/Cape_Verde.daylight.short=CVST
+Atlantic/Cape_Verde.generic.short=CVT
+Atlantic/Cape_Verde.standard.short=CVT
+Atlantic/Faeroe.daylight.short=WEST
+Atlantic/Faeroe.generic.short=WET
+Atlantic/Faeroe.standard.short=WET
+Atlantic/Faroe.daylight.short=WEST
+Atlantic/Faroe.generic.short=WET
+Atlantic/Faroe.standard.short=WET
+Atlantic/Jan_Mayen.daylight.short=CEST
+Atlantic/Jan_Mayen.generic.short=CET
+Atlantic/Jan_Mayen.standard.short=CET
+Atlantic/Madeira.daylight.short=WEST
+Atlantic/Madeira.generic.short=WET
+Atlantic/Madeira.standard.short=WET
+Atlantic/Reykjavik.daylight.short=GMT
+Atlantic/Reykjavik.generic.short=GMT
+Atlantic/Reykjavik.standard.short=GMT
+Atlantic/South_Georgia.daylight.short=GDT
+Atlantic/South_Georgia.generic.short=GT
+Atlantic/South_Georgia.standard.short=GST
+Atlantic/Stanley.daylight.short=FKST
+Atlantic/Stanley.generic.short=FKT
+Atlantic/Stanley.standard.short=FKT
+Atlantic/St_Helena.daylight.short=GMT
+Atlantic/St_Helena.generic.short=GMT
+Atlantic/St_Helena.standard.short=GMT
+Australia/ACT.daylight.short=EST
+Australia/ACT.generic.short=ET
+Australia/ACT.standard.short=EST
+Australia/Adelaide.daylight.short=CST
+Australia/Adelaide.generic.short=CT
+Australia/Adelaide.standard.short=CST
+Australia/Brisbane.daylight.short=EST
+Australia/Brisbane.generic.short=ET
+Australia/Brisbane.standard.short=EST
+Australia/Broken_Hill.daylight.short=CST
+Australia/Broken_Hill.generic.short=CT
+Australia/Broken_Hill.standard.short=CST
+Australia/Canberra.daylight.short=EST
+Australia/Canberra.generic.short=ET
+Australia/Canberra.standard.short=EST
+Australia/Currie.daylight.short=EST
+Australia/Currie.generic.short=ET
+Australia/Currie.standard.short=EST
+Australia/Darwin.daylight.short=CST
+Australia/Darwin.generic.short=CT
+Australia/Darwin.standard.short=CST
+Australia/Eucla.daylight.short=CWST
+Australia/Eucla.generic.short=CWT
+Australia/Eucla.standard.short=CWST
+Australia/Hobart.daylight.short=EST
+Australia/Hobart.generic.short=ET
+Australia/Hobart.standard.short=EST
+Australia/LHI.daylight.short=LHST
+Australia/LHI.generic.short=LHT
+Australia/LHI.standard.short=LHST
+Australia/Lindeman.daylight.short=EST
+Australia/Lindeman.generic.short=ET
+Australia/Lindeman.standard.short=EST
+Australia/Lord_Howe.daylight.short=LHST
+Australia/Lord_Howe.generic.short=LHT
+Australia/Lord_Howe.standard.short=LHST
+Australia/Melbourne.daylight.short=EST
+Australia/Melbourne.generic.short=ET
+Australia/Melbourne.standard.short=EST
+Australia/North.daylight.short=CST
+Australia/North.generic.short=CT
+Australia/North.standard.short=CST
+Australia/NSW.daylight.short=EST
+Australia/NSW.generic.short=ET
+Australia/NSW.standard.short=EST
+Australia/Perth.daylight.short=WST
+Australia/Perth.generic.short=WT
+Australia/Perth.standard.short=WST
+Australia/Queensland.daylight.short=EST
+Australia/Queensland.generic.short=ET
+Australia/Queensland.standard.short=EST
+Australia/South.daylight.short=CST
+Australia/South.generic.short=CT
+Australia/South.standard.short=CST
+Australia/Sydney.daylight.short=EST
+Australia/Sydney.generic.short=ET
+Australia/Sydney.standard.short=EST
+Australia/Tasmania.daylight.short=EST
+Australia/Tasmania.generic.short=ET
+Australia/Tasmania.standard.short=EST
+Australia/Victoria.daylight.short=EST
+Australia/Victoria.generic.short=ET
+Australia/Victoria.standard.short=EST
+Australia/West.daylight.short=WST
+Australia/West.generic.short=WT
+Australia/West.standard.short=WST
+Australia/Yancowinna.daylight.short=CST
+Australia/Yancowinna.generic.short=CT
+Australia/Yancowinna.standard.short=CST
+BET.daylight.short=BRST
+BET.generic.short=BRT
+BET.standard.short=BRT
+Brazil/Acre.daylight.short=ACST
+Brazil/Acre.generic.short=ACT
+Brazil/Acre.standard.short=ACT
+Brazil/DeNoronha.daylight.short=FNST
+Brazil/DeNoronha.generic.short=FNT
+Brazil/DeNoronha.standard.short=FNT
+Brazil/East.daylight.short=BRST
+Brazil/East.generic.short=BRT
+Brazil/East.standard.short=BRT
+Brazil/West.daylight.short=AMST
+Brazil/West.generic.short=AMT
+Brazil/West.standard.short=AMT
+BST.daylight.short=BDST
+BST.generic.short=BDT
+BST.standard.short=BDT
+Canada/Atlantic.daylight.short=ADT
+Canada/Atlantic.generic.short=AT
+Canada/Atlantic.standard.short=AST
+Canada/Central.daylight.short=CDT
+Canada/Central.generic.short=CT
+Canada/Central.standard.short=CST
+Canada/Eastern.daylight.short=EDT
+Canada/Eastern.generic.short=ET
+Canada/Eastern.standard.short=EST
+Canada/East-Saskatchewan.daylight.short=CDT
+Canada/East-Saskatchewan.generic.short=CT
+Canada/East-Saskatchewan.standard.short=CST
+Canada/Mountain.daylight.short=MDT
+Canada/Mountain.generic.short=MT
+Canada/Mountain.standard.short=MST
+Canada/Newfoundland.daylight.short=NDT
+Canada/Newfoundland.generic.short=NT
+Canada/Newfoundland.standard.short=NST
+Canada/Pacific.daylight.short=PDT
+Canada/Pacific.generic.short=PT
+Canada/Pacific.standard.short=PST
+Canada/Saskatchewan.daylight.short=CDT
+Canada/Saskatchewan.generic.short=CT
+Canada/Saskatchewan.standard.short=CST
+Canada/Yukon.daylight.short=PDT
+Canada/Yukon.generic.short=PT
+Canada/Yukon.standard.short=PST
+CAT.daylight.short=CAST
+CAT.generic.short=CAT
+CAT.standard.short=CAT
+CET.daylight.short=CEST
+CET.generic.short=CET
+CET.standard.short=CET
+Chile/Continental.daylight.short=CLST
+Chile/Continental.generic.short=CLT
+Chile/Continental.standard.short=CLT
+Chile/EasterIsland.daylight.short=EASST
+Chile/EasterIsland.generic.short=EAST
+Chile/EasterIsland.standard.short=EAST
+CNT.daylight.short=NDT
+CNT.generic.short=NT
+CNT.standard.short=NST
+CST6CDT.daylight.short=CDT
+CST6CDT.generic.short=CT
+CST6CDT.standard.short=CST
+CST.daylight.short=CDT
+CST.generic.short=CT
+CST.standard.short=CST
+CTT.daylight.short=CDT
+CTT.generic.short=CT
+CTT.standard.short=CST
+Cuba.daylight.short=CDT
+Cuba.generic.short=CT
+Cuba.standard.short=CST
+EAT.daylight.short=EAST
+EAT.generic.short=EAT
+EAT.standard.short=EAT
+ECT.daylight.short=CEST
+ECT.generic.short=CET
+ECT.standard.short=CET
+EET.daylight.short=EEST
+EET.generic.short=EET
+EET.standard.short=EET
+Egypt.daylight.short=EEST
+Egypt.generic.short=EET
+Egypt.standard.short=EET
+Eire.daylight.short=IST
+Eire.generic.short=IT
+Eire.standard.short=GMT
+EST5EDT.daylight.short=EDT
+EST5EDT.generic.short=ET
+EST5EDT.standard.short=EST
+EST.daylight.short=EDT
+EST.generic.short=ET
+EST.standard.short=EST
+Etc/Greenwich.daylight.short=GMT
+Etc/Greenwich.generic.short=GMT
+Etc/Greenwich.standard.short=GMT
+Etc/UCT.daylight.short=UTC
+Etc/UCT.generic.short=UTC
+Etc/UCT.standard.short=UTC
+Etc/Universal.daylight.short=UTC
+Etc/Universal.generic.short=UTC
+Etc/Universal.standard.short=UTC
+Etc/UTC.daylight.short=UTC
+Etc/UTC.generic.short=UTC
+Etc/UTC.standard.short=UTC
+Etc/Zulu.daylight.short=UTC
+Etc/Zulu.generic.short=UTC
+Etc/Zulu.standard.short=UTC
+Europe/Amsterdam.daylight.short=CEST
+Europe/Amsterdam.generic.short=CET
+Europe/Amsterdam.standard.short=CET
+Europe/Andorra.daylight.short=CEST
+Europe/Andorra.generic.short=CET
+Europe/Andorra.standard.short=CET
+Europe/Athens.daylight.short=EEST
+Europe/Athens.generic.short=EET
+Europe/Athens.standard.short=EET
+Europe/Belfast.daylight.short=BST
+Europe/Belfast.generic.short=BT
+Europe/Belfast.standard.short=GMT
+Europe/Belgrade.daylight.short=CEST
+Europe/Belgrade.generic.short=CET
+Europe/Belgrade.standard.short=CET
+Europe/Berlin.daylight.short=CEST
+Europe/Berlin.generic.short=CET
+Europe/Berlin.standard.short=CET
+Europe/Bratislava.daylight.short=CEST
+Europe/Bratislava.generic.short=CET
+Europe/Bratislava.standard.short=CET
+Europe/Brussels.daylight.short=CEST
+Europe/Brussels.generic.short=CET
+Europe/Brussels.standard.short=CET
+Europe/Bucharest.daylight.short=EEST
+Europe/Bucharest.generic.short=EET
+Europe/Bucharest.standard.short=EET
+Europe/Budapest.daylight.short=CEST
+Europe/Budapest.generic.short=CET
+Europe/Budapest.standard.short=CET
+Europe/Busingen.daylight.short=CEST
+Europe/Busingen.generic.short=CET
+Europe/Busingen.standard.short=CET
+Europe/Chisinau.daylight.short=EEST
+Europe/Chisinau.generic.short=EET
+Europe/Chisinau.standard.short=EET
+Europe/Copenhagen.daylight.short=CEST
+Europe/Copenhagen.generic.short=CET
+Europe/Copenhagen.standard.short=CET
+Europe/Dublin.daylight.short=IST
+Europe/Dublin.generic.short=IT
+Europe/Dublin.standard.short=GMT
+Europe/Gibraltar.daylight.short=CEST
+Europe/Gibraltar.generic.short=CET
+Europe/Gibraltar.standard.short=CET
+Europe/Guernsey.daylight.short=BST
+Europe/Guernsey.generic.short=BT
+Europe/Guernsey.standard.short=GMT
+Europe/Helsinki.daylight.short=EEST
+Europe/Helsinki.generic.short=EET
+Europe/Helsinki.standard.short=EET
+Europe/Isle_of_Man.daylight.short=BST
+Europe/Isle_of_Man.generic.short=BT
+Europe/Isle_of_Man.standard.short=GMT
+Europe/Istanbul.daylight.short=EEST
+Europe/Istanbul.generic.short=EET
+Europe/Istanbul.standard.short=EET
+Europe/Jersey.daylight.short=BST
+Europe/Jersey.generic.short=BT
+Europe/Jersey.standard.short=GMT
+Europe/Kaliningrad.daylight.short=FEST
+Europe/Kaliningrad.generic.short=FET
+Europe/Kaliningrad.standard.short=FET
+Europe/Kiev.daylight.short=EEST
+Europe/Kiev.generic.short=EET
+Europe/Kiev.standard.short=EET
+Europe/Lisbon.daylight.short=WEST
+Europe/Lisbon.generic.short=WET
+Europe/Lisbon.standard.short=WET
+Europe/Ljubljana.daylight.short=CEST
+Europe/Ljubljana.generic.short=CET
+Europe/Ljubljana.standard.short=CET
+Europe/London.daylight.short=BST
+Europe/London.generic.short=BT
+Europe/London.standard.short=GMT
+Europe/Luxembourg.daylight.short=CEST
+Europe/Luxembourg.generic.short=CET
+Europe/Luxembourg.standard.short=CET
+Europe/Madrid.daylight.short=CEST
+Europe/Madrid.generic.short=CET
+Europe/Madrid.standard.short=CET
+Europe/Malta.daylight.short=CEST
+Europe/Malta.generic.short=CET
+Europe/Malta.standard.short=CET
+Europe/Mariehamn.daylight.short=EEST
+Europe/Mariehamn.generic.short=EET
+Europe/Mariehamn.standard.short=EET
+Europe/Minsk.daylight.short=FEST
+Europe/Minsk.generic.short=FET
+Europe/Minsk.standard.short=FET
+Europe/Monaco.daylight.short=CEST
+Europe/Monaco.generic.short=CET
+Europe/Monaco.standard.short=CET
+Europe/Moscow.daylight.short=MSD
+Europe/Moscow.generic.short=MT
+Europe/Moscow.standard.short=MSK
+Europe/Nicosia.daylight.short=EEST
+Europe/Nicosia.generic.short=EET
+Europe/Nicosia.standard.short=EET
+Europe/Oslo.daylight.short=CEST
+Europe/Oslo.generic.short=CET
+Europe/Oslo.standard.short=CET
+Europe/Paris.daylight.short=CEST
+Europe/Paris.generic.short=CET
+Europe/Paris.standard.short=CET
+Europe/Podgorica.daylight.short=CEST
+Europe/Podgorica.generic.short=CET
+Europe/Podgorica.standard.short=CET
+Europe/Prague.daylight.short=CEST
+Europe/Prague.generic.short=CET
+Europe/Prague.standard.short=CET
+Europe/Riga.daylight.short=EEST
+Europe/Riga.generic.short=EET
+Europe/Riga.standard.short=EET
+Europe/Rome.daylight.short=CEST
+Europe/Rome.generic.short=CET
+Europe/Rome.standard.short=CET
+Europe/Samara.daylight.short=SAMST
+Europe/Samara.generic.short=SAMT
+Europe/Samara.standard.short=SAMT
+Europe/San_Marino.daylight.short=CEST
+Europe/San_Marino.generic.short=CET
+Europe/San_Marino.standard.short=CET
+Europe/Sarajevo.daylight.short=CEST
+Europe/Sarajevo.generic.short=CET
+Europe/Sarajevo.standard.short=CET
+Europe/Simferopol.daylight.short=EEST
+Europe/Simferopol.generic.short=EET
+Europe/Simferopol.standard.short=EET
+Europe/Skopje.daylight.short=CEST
+Europe/Skopje.generic.short=CET
+Europe/Skopje.standard.short=CET
+Europe/Sofia.daylight.short=EEST
+Europe/Sofia.generic.short=EET
+Europe/Sofia.standard.short=EET
+Europe/Stockholm.daylight.short=CEST
+Europe/Stockholm.generic.short=CET
+Europe/Stockholm.standard.short=CET
+Europe/Tallinn.daylight.short=EEST
+Europe/Tallinn.generic.short=EET
+Europe/Tallinn.standard.short=EET
+Europe/Tirane.daylight.short=CEST
+Europe/Tirane.generic.short=CET
+Europe/Tirane.standard.short=CET
+Europe/Tiraspol.daylight.short=EEST
+Europe/Tiraspol.generic.short=EET
+Europe/Tiraspol.standard.short=EET
+Europe/Uzhgorod.daylight.short=EEST
+Europe/Uzhgorod.generic.short=EET
+Europe/Uzhgorod.standard.short=EET
+Europe/Vaduz.daylight.short=CEST
+Europe/Vaduz.generic.short=CET
+Europe/Vaduz.standard.short=CET
+Europe/Vatican.daylight.short=CEST
+Europe/Vatican.generic.short=CET
+Europe/Vatican.standard.short=CET
+Europe/Vienna.daylight.short=CEST
+Europe/Vienna.generic.short=CET
+Europe/Vienna.standard.short=CET
+Europe/Vilnius.daylight.short=EEST
+Europe/Vilnius.generic.short=EET
+Europe/Vilnius.standard.short=EET
+Europe/Volgograd.daylight.short=VOLST
+Europe/Volgograd.generic.short=VOLT
+Europe/Volgograd.standard.short=VOLT
+Europe/Warsaw.daylight.short=CEST
+Europe/Warsaw.generic.short=CET
+Europe/Warsaw.standard.short=CET
+Europe/Zagreb.daylight.short=CEST
+Europe/Zagreb.generic.short=CET
+Europe/Zagreb.standard.short=CET
+Europe/Zaporozhye.daylight.short=EEST
+Europe/Zaporozhye.generic.short=EET
+Europe/Zaporozhye.standard.short=EET
+Europe/Zurich.daylight.short=CEST
+Europe/Zurich.generic.short=CET
+Europe/Zurich.standard.short=CET
+GB.daylight.short=BST
+GB-Eire.daylight.short=BST
+GB-Eire.generic.short=BT
+GB-Eire.standard.short=GMT
+GB.generic.short=BT
+GB.standard.short=GMT
+GMT.daylight.short=GMT
+GMT.generic.short=GMT
+GMT.standard.short=GMT
+Greenwich.daylight.short=GMT
+Greenwich.generic.short=GMT
+Greenwich.standard.short=GMT
+Hongkong.daylight.short=HKST
+Hongkong.generic.short=HKT
+Hongkong.standard.short=HKT
+HST.daylight.short=HDT
+HST.generic.short=HT
+HST.standard.short=HST
+Iceland.daylight.short=GMT
+Iceland.generic.short=GMT
+Iceland.standard.short=GMT
+IET.daylight.short=EDT
+IET.generic.short=ET
+IET.standard.short=EST
+Indian/Antananarivo.daylight.short=EAST
+Indian/Antananarivo.generic.short=EAT
+Indian/Antananarivo.standard.short=EAT
+Indian/Chagos.daylight.short=IOST
+Indian/Chagos.generic.short=IOT
+Indian/Chagos.standard.short=IOT
+Indian/Christmas.daylight.short=CXST
+Indian/Christmas.generic.short=CIT
+Indian/Christmas.standard.short=CXT
+Indian/Cocos.daylight.short=CCST
+Indian/Cocos.generic.short=CCT
+Indian/Cocos.standard.short=CCT
+Indian/Comoro.daylight.short=EAST
+Indian/Comoro.generic.short=EAT
+Indian/Comoro.standard.short=EAT
+Indian/Kerguelen.daylight.short=TFST
+Indian/Kerguelen.generic.short=TFT
+Indian/Kerguelen.standard.short=TFT
+Indian/Mahe.daylight.short=SCST
+Indian/Mahe.generic.short=SCT
+Indian/Mahe.standard.short=SCT
+Indian/Maldives.daylight.short=MVST
+Indian/Maldives.generic.short=MVT
+Indian/Maldives.standard.short=MVT
+Indian/Mauritius.daylight.short=MUST
+Indian/Mauritius.generic.short=MUT
+Indian/Mauritius.standard.short=MUT
+Indian/Mayotte.daylight.short=EAST
+Indian/Mayotte.generic.short=EAT
+Indian/Mayotte.standard.short=EAT
+Indian/Reunion.daylight.short=REST
+Indian/Reunion.generic.short=RET
+Indian/Reunion.standard.short=RET
+Iran.daylight.short=IRDT
+Iran.generic.short=IRT
+Iran.standard.short=IRST
+Israel.daylight.short=IDT
+Israel.generic.short=IT
+Israel.standard.short=IST
+IST.daylight.short=IDT
+IST.generic.short=IT
+IST.standard.short=IST
+Jamaica.daylight.short=EDT
+Jamaica.generic.short=ET
+Jamaica.standard.short=EST
+Japan.daylight.short=JDT
+Japan.generic.short=JT
+Japan.standard.short=JST
+JST.daylight.short=JDT
+JST.generic.short=JT
+JST.standard.short=JST
+Kwajalein.daylight.short=MHST
+Kwajalein.generic.short=MHT
+Kwajalein.standard.short=MHT
+Libya.daylight.short=EEST
+Libya.generic.short=EET
+Libya.standard.short=EET
+MET.daylight.short=MEST
+MET.generic.short=MET
+MET.standard.short=MET
+Mexico/BajaNorte.daylight.short=PDT
+Mexico/BajaNorte.generic.short=PT
+Mexico/BajaNorte.standard.short=PST
+Mexico/BajaSur.daylight.short=MDT
+Mexico/BajaSur.generic.short=MT
+Mexico/BajaSur.standard.short=MST
+Mexico/General.daylight.short=CDT
+Mexico/General.generic.short=CT
+Mexico/General.standard.short=CST
+MIT.daylight.short=WSDT
+MIT.generic.short=WST
+MIT.standard.short=WST
+MST7MDT.daylight.short=MDT
+MST7MDT.generic.short=MT
+MST7MDT.standard.short=MST
+MST.daylight.short=MDT
+MST.generic.short=MT
+MST.standard.short=MST
+Navajo.daylight.short=MDT
+Navajo.generic.short=MT
+Navajo.standard.short=MST
+NET.daylight.short=AMST
+NET.generic.short=AMT
+NET.standard.short=AMT
+NST.daylight.short=NZDT
+NST.generic.short=NZT
+NST.standard.short=NZST
+NZ-CHAT.daylight.short=CHADT
+NZ-CHAT.generic.short=CHAT
+NZ-CHAT.standard.short=CHAST
+NZ.daylight.short=NZDT
+NZ.generic.short=NZT
+NZ.standard.short=NZST
+Pacific/Apia.daylight.short=WSDT
+Pacific/Apia.generic.short=WST
+Pacific/Apia.standard.short=WST
+Pacific/Auckland.daylight.short=NZDT
+Pacific/Auckland.generic.short=NZT
+Pacific/Auckland.standard.short=NZST
+Pacific/Chatham.daylight.short=CHADT
+Pacific/Chatham.generic.short=CHAT
+Pacific/Chatham.standard.short=CHAST
+Pacific/Chuuk.daylight.short=CHUST
+Pacific/Chuuk.generic.short=CHUT
+Pacific/Chuuk.standard.short=CHUT
+Pacific/Easter.daylight.short=EASST
+Pacific/Easter.generic.short=EAST
+Pacific/Easter.standard.short=EAST
+Pacific/Efate.daylight.short=VUST
+Pacific/Efate.generic.short=VUT
+Pacific/Efate.standard.short=VUT
+Pacific/Enderbury.daylight.short=PHOST
+Pacific/Enderbury.generic.short=PHOT
+Pacific/Enderbury.standard.short=PHOT
+Pacific/Fakaofo.daylight.short=TKST
+Pacific/Fakaofo.generic.short=TKT
+Pacific/Fakaofo.standard.short=TKT
+Pacific/Fiji.daylight.short=FJST
+Pacific/Fiji.generic.short=FJT
+Pacific/Fiji.standard.short=FJT
+Pacific/Funafuti.daylight.short=TVST
+Pacific/Funafuti.generic.short=TVT
+Pacific/Funafuti.standard.short=TVT
+Pacific/Galapagos.daylight.short=GALST
+Pacific/Galapagos.generic.short=GALT
+Pacific/Galapagos.standard.short=GALT
+Pacific/Gambier.daylight.short=GAMST
+Pacific/Gambier.generic.short=GAMT
+Pacific/Gambier.standard.short=GAMT
+Pacific/Guadalcanal.daylight.short=SBST
+Pacific/Guadalcanal.generic.short=SBT
+Pacific/Guadalcanal.standard.short=SBT
+Pacific/Guam.daylight.short=ChDT
+Pacific/Guam.generic.short=ChT
+Pacific/Guam.standard.short=ChST
+Pacific/Honolulu.daylight.short=HDT
+Pacific/Honolulu.generic.short=HT
+Pacific/Honolulu.standard.short=HST
+Pacific/Johnston.daylight.short=HDT
+Pacific/Johnston.generic.short=HT
+Pacific/Johnston.standard.short=HST
+Pacific/Kiritimati.daylight.short=LINST
+Pacific/Kiritimati.generic.short=LINT
+Pacific/Kiritimati.standard.short=LINT
+Pacific/Kosrae.daylight.short=KOSST
+Pacific/Kosrae.generic.short=KOST
+Pacific/Kosrae.standard.short=KOST
+Pacific/Kwajalein.daylight.short=MHST
+Pacific/Kwajalein.generic.short=MHT
+Pacific/Kwajalein.standard.short=MHT
+Pacific/Majuro.daylight.short=MHST
+Pacific/Majuro.generic.short=MHT
+Pacific/Majuro.standard.short=MHT
+Pacific/Marquesas.daylight.short=MARST
+Pacific/Marquesas.generic.short=MART
+Pacific/Marquesas.standard.short=MART
+Pacific/Midway.daylight.short=SDT
+Pacific/Midway.generic.short=ST
+Pacific/Midway.standard.short=SST
+Pacific/Nauru.daylight.short=NRST
+Pacific/Nauru.generic.short=NRT
+Pacific/Nauru.standard.short=NRT
+Pacific/Niue.daylight.short=NUST
+Pacific/Niue.generic.short=NUT
+Pacific/Niue.standard.short=NUT
+Pacific/Norfolk.daylight.short=NFST
+Pacific/Norfolk.generic.short=NFT
+Pacific/Norfolk.standard.short=NFT
+Pacific/Noumea.daylight.short=NCST
+Pacific/Noumea.generic.short=NCT
+Pacific/Noumea.standard.short=NCT
+Pacific/Pago_Pago.daylight.short=SDT
+Pacific/Pago_Pago.generic.short=ST
+Pacific/Pago_Pago.standard.short=SST
+Pacific/Palau.daylight.short=PWST
+Pacific/Palau.generic.short=PWT
+Pacific/Palau.standard.short=PWT
+Pacific/Pitcairn.daylight.short=PDT
+Pacific/Pitcairn.generic.short=PT
+Pacific/Pitcairn.standard.short=PST
+Pacific/Pohnpei.daylight.short=PONST
+Pacific/Pohnpei.generic.short=PONT
+Pacific/Pohnpei.standard.short=PONT
+Pacific/Ponape.daylight.short=PONST
+Pacific/Ponape.generic.short=PONT
+Pacific/Ponape.standard.short=PONT
+Pacific/Port_Moresby.daylight.short=PGST
+Pacific/Port_Moresby.generic.short=PGT
+Pacific/Port_Moresby.standard.short=PGT
+Pacific/Rarotonga.daylight.short=CKHST
+Pacific/Rarotonga.generic.short=CKT
+Pacific/Rarotonga.standard.short=CKT
+Pacific/Saipan.daylight.short=ChDT
+Pacific/Saipan.generic.short=ChT
+Pacific/Saipan.standard.short=ChST
+Pacific/Samoa.daylight.short=SDT
+Pacific/Samoa.generic.short=ST
+Pacific/Samoa.standard.short=SST
+Pacific/Tahiti.daylight.short=TAHST
+Pacific/Tahiti.generic.short=TAHT
+Pacific/Tahiti.standard.short=TAHT
+Pacific/Tarawa.daylight.short=GILST
+Pacific/Tarawa.generic.short=GILT
+Pacific/Tarawa.standard.short=GILT
+Pacific/Tongatapu.daylight.short=TOST
+Pacific/Tongatapu.generic.short=TOT
+Pacific/Tongatapu.standard.short=TOT
+Pacific/Truk.daylight.short=CHUST
+Pacific/Truk.generic.short=CHUT
+Pacific/Truk.standard.short=CHUT
+Pacific/Wake.daylight.short=WAKST
+Pacific/Wake.generic.short=WAKT
+Pacific/Wake.standard.short=WAKT
+Pacific/Wallis.daylight.short=WFST
+Pacific/Wallis.generic.short=WFT
+Pacific/Wallis.standard.short=WFT
+Pacific/Yap.daylight.short=CHUST
+Pacific/Yap.generic.short=CHUT
+Pacific/Yap.standard.short=CHUT
+PLT.daylight.short=PKST
+PLT.generic.short=PKT
+PLT.standard.short=PKT
+PNT.daylight.short=MDT
+PNT.generic.short=MT
+PNT.standard.short=MST
+Poland.daylight.short=CEST
+Poland.generic.short=CET
+Poland.standard.short=CET
+Portugal.daylight.short=WEST
+Portugal.generic.short=WET
+Portugal.standard.short=WET
+PRC.daylight.short=CDT
+PRC.generic.short=CT
+PRC.standard.short=CST
+PRT.daylight.short=ADT
+PRT.generic.short=AT
+PRT.standard.short=AST
+PST8PDT.daylight.short=PDT
+PST8PDT.generic.short=PT
+PST8PDT.standard.short=PST
+PST.daylight.short=PDT
+PST.generic.short=PT
+PST.standard.short=PST
+ROK.daylight.short=KDT
+ROK.generic.short=KT
+ROK.standard.short=KST
+Singapore.daylight.short=SGST
+Singapore.generic.short=SGT
+Singapore.standard.short=SGT
+SST.daylight.short=SBST
+SST.generic.short=SBT
+SST.standard.short=SBT
+SystemV/AST4ADT.daylight.short=ADT
+SystemV/AST4ADT.generic.short=AT
+SystemV/AST4ADT.standard.short=AST
+SystemV/AST4.daylight.short=ADT
+SystemV/AST4.generic.short=AT
+SystemV/AST4.standard.short=AST
+SystemV/CST6CDT.daylight.short=CDT
+SystemV/CST6CDT.generic.short=CT
+SystemV/CST6CDT.standard.short=CST
+SystemV/CST6.daylight.short=CDT
+SystemV/CST6.generic.short=CT
+SystemV/CST6.standard.short=CST
+SystemV/EST5.daylight.short=EDT
+SystemV/EST5EDT.daylight.short=EDT
+SystemV/EST5EDT.generic.short=ET
+SystemV/EST5EDT.standard.short=EST
+SystemV/EST5.generic.short=ET
+SystemV/EST5.standard.short=EST
+SystemV/HST10.daylight.short=HDT
+SystemV/HST10.generic.short=HT
+SystemV/HST10.standard.short=HST
+SystemV/MST7.daylight.short=MDT
+SystemV/MST7.generic.short=MT
+SystemV/MST7MDT.daylight.short=MDT
+SystemV/MST7MDT.generic.short=MT
+SystemV/MST7MDT.standard.short=MST
+SystemV/MST7.standard.short=MST
+SystemV/PST8.daylight.short=PDT
+SystemV/PST8.generic.short=PT
+SystemV/PST8PDT.daylight.short=PDT
+SystemV/PST8PDT.generic.short=PT
+SystemV/PST8PDT.standard.short=PST
+SystemV/PST8.standard.short=PST
+SystemV/YST9.daylight.short=AKDT
+SystemV/YST9.generic.short=AKT
+SystemV/YST9.standard.short=AKST
+SystemV/YST9YDT.daylight.short=AKDT
+SystemV/YST9YDT.generic.short=AKT
+SystemV/YST9YDT.standard.short=AKST
+Turkey.daylight.short=EEST
+Turkey.generic.short=EET
+Turkey.standard.short=EET
+UCT.daylight.short=UTC
+UCT.generic.short=UTC
+UCT.standard.short=UTC
+Universal.daylight.short=UTC
+Universal.generic.short=UTC
+Universal.standard.short=UTC
+US/Alaska.daylight.short=AKDT
+US/Alaska.generic.short=AKT
+US/Alaska.standard.short=AKST
+US/Aleutian.daylight.short=HADT
+US/Aleutian.generic.short=HAT
+US/Aleutian.standard.short=HAST
+US/Arizona.daylight.short=MDT
+US/Arizona.generic.short=MT
+US/Arizona.standard.short=MST
+US/Central.daylight.short=CDT
+US/Central.generic.short=CT
+US/Central.standard.short=CST
+US/Eastern.daylight.short=EDT
+US/Eastern.generic.short=ET
+US/Eastern.standard.short=EST
+US/East-Indiana.daylight.short=EDT
+US/East-Indiana.generic.short=ET
+US/East-Indiana.standard.short=EST
+US/Hawaii.daylight.short=HDT
+US/Hawaii.generic.short=HT
+US/Hawaii.standard.short=HST
+US/Indiana-Starke.daylight.short=CDT
+US/Indiana-Starke.generic.short=CT
+US/Indiana-Starke.standard.short=CST
+US/Michigan.daylight.short=EDT
+US/Michigan.generic.short=ET
+US/Michigan.standard.short=EST
+US/Mountain.daylight.short=MDT
+US/Mountain.generic.short=MT
+US/Mountain.standard.short=MST
+US/Pacific.daylight.short=PDT
+US/Pacific.generic.short=PT
+US/Pacific-New.daylight.short=PDT
+US/Pacific-New.generic.short=PT
+US/Pacific-New.standard.short=PST
+US/Pacific.standard.short=PST
+US/Samoa.daylight.short=SDT
+US/Samoa.generic.short=ST
+US/Samoa.standard.short=SST
+UTC.daylight.short=UTC
+UTC.generic.short=UTC
+UTC.standard.short=UTC
+VST.daylight.short=ICST
+VST.generic.short=ICT
+VST.standard.short=ICT
+WET.daylight.short=WEST
+WET.generic.short=WET
+WET.standard.short=WET
+W-SU.daylight.short=MSD
+W-SU.generic.short=MT
+W-SU.standard.short=MSK
+Zulu.daylight.short=UTC
+Zulu.generic.short=UTC
+Zulu.standard.short=UTC
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_pt_BR.properties Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,651 @@
+ACT.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Central (Territ\u00F3rio do Norte)
+ACT.generic.long=Hor\u00E1rio Central (Territ\u00F3rio do Norte)
+ACT.standard.long=Hor\u00E1rio-Padr\u00E3o Central (Territ\u00F3rio do Norte)
+AET.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Nova Gales do Sul)
+AET.generic.long=Hor\u00E1rio Oriental (Nova Gales do Sul)
+AET.standard.long=Hor\u00E1rio-Padr\u00E3o Oriental (Nova Gales do Sul)
+AGT.generic.long=Hor\u00E1rio da Argentina
+ART.generic.long=Hor\u00E1rio da Europa Oriental
+AST.generic.long=Hor\u00E1rio do Alasca
+Africa/Abidjan.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Africa/Accra.generic.long=Fuso Hor\u00E1rio do Meridiano de Gana
+Africa/Addis_Ababa.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Africa/Algiers.generic.long=Hor\u00E1rio da Europa Central
+Africa/Asmara.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Africa/Asmera.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Africa/Bamako.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Africa/Bangui.generic.long=Hor\u00E1rio da \u00C1frica Ocidental
+Africa/Banjul.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Africa/Bissau.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Africa/Blantyre.generic.long=Hor\u00E1rio da \u00C1frica Central
+Africa/Brazzaville.generic.long=Hor\u00E1rio da \u00C1frica Ocidental
+Africa/Bujumbura.generic.long=Hor\u00E1rio da \u00C1frica Central
+Africa/Cairo.generic.long=Hor\u00E1rio da Europa Oriental
+Africa/Casablanca.generic.long=Hor\u00E1rio da Europa Ocidental
+Africa/Ceuta.generic.long=Hor\u00E1rio da Europa Central
+Africa/Conakry.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Africa/Dakar.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Africa/Dar_es_Salaam.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Africa/Djibouti.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Africa/Douala.generic.long=Hor\u00E1rio da \u00C1frica Ocidental
+Africa/El_Aaiun.generic.long=Hor\u00E1rio da Europa Ocidental
+Africa/Freetown.generic.long=Hor\u00E1rio de Serra Leoa
+Africa/Gaborone.generic.long=Hor\u00E1rio da \u00C1frica Central
+Africa/Harare.generic.long=Hor\u00E1rio da \u00C1frica Central
+Africa/Johannesburg.generic.long=Hor\u00E1rio da \u00C1frica do Sul
+Africa/Juba.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Africa/Kampala.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Africa/Khartoum.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Africa/Kigali.generic.long=Hor\u00E1rio da \u00C1frica Central
+Africa/Kinshasa.generic.long=Hor\u00E1rio da \u00C1frica Ocidental
+Africa/Lagos.generic.long=Hor\u00E1rio da \u00C1frica Ocidental
+Africa/Libreville.generic.long=Hor\u00E1rio da \u00C1frica Ocidental
+Africa/Lome.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Africa/Luanda.generic.long=Hor\u00E1rio da \u00C1frica Ocidental
+Africa/Lubumbashi.generic.long=Hor\u00E1rio da \u00C1frica Central
+Africa/Lusaka.generic.long=Hor\u00E1rio da \u00C1frica Central
+Africa/Malabo.generic.long=Hor\u00E1rio da \u00C1frica Ocidental
+Africa/Maputo.generic.long=Hor\u00E1rio da \u00C1frica Central
+Africa/Maseru.generic.long=Hor\u00E1rio da \u00C1frica do Sul
+Africa/Mbabane.generic.long=Hor\u00E1rio da \u00C1frica do Sul
+Africa/Mogadishu.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Africa/Monrovia.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Africa/Nairobi.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Africa/Ndjamena.generic.long=Hor\u00E1rio da \u00C1frica Ocidental
+Africa/Niamey.generic.long=Hor\u00E1rio da \u00C1frica Ocidental
+Africa/Nouakchott.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Africa/Ouagadougou.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Africa/Porto-Novo.generic.long=Hor\u00E1rio da \u00C1frica Ocidental
+Africa/Sao_Tome.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Africa/Timbuktu.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Africa/Tripoli.generic.long=Hor\u00e1rio da Europa Oriental
+Africa/Tunis.generic.long=Hor\u00E1rio da Europa Central
+Africa/Windhoek.generic.long=Hor\u00E1rio da \u00C1frica Ocidental
+America/Adak.generic.long=Hor\u00E1rio do Hava\u00ED-Aleutas
+America/Anchorage.generic.long=Hor\u00E1rio do Alasca
+America/Anguilla.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Antigua.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Araguaina.generic.long=Hor\u00E1rio de Bras\u00EDlia
+America/Argentina/Buenos_Aires.generic.long=Hor\u00E1rio da Argentina
+America/Argentina/Catamarca.generic.long=Hor\u00E1rio da Argentina
+America/Argentina/ComodRivadavia.generic.long=Hor\u00E1rio da Argentina
+America/Argentina/Cordoba.generic.long=Hor\u00E1rio da Argentina
+America/Argentina/Jujuy.generic.long=Hor\u00E1rio da Argentina
+America/Argentina/La_Rioja.generic.long=Hor\u00E1rio da Argentina
+America/Argentina/Mendoza.generic.long=Hor\u00E1rio da Argentina
+America/Argentina/Rio_Gallegos.generic.long=Hor\u00E1rio da Argentina
+America/Argentina/Salta.generic.long=Hor\u00E1rio da Argentina
+America/Argentina/San_Juan.generic.long=Hor\u00E1rio da Argentina
+America/Argentina/San_Luis.generic.long=Hor\u00e1rio da Argentina
+America/Argentina/Tucuman.generic.long=Hor\u00E1rio da Argentina
+America/Argentina/Ushuaia.generic.long=Hor\u00E1rio da Argentina
+America/Aruba.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Asuncion.generic.long=Hor\u00E1rio do Paraguai
+America/Atikokan.generic.long=Hor\u00E1rio do Leste
+America/Atka.generic.long=Hor\u00E1rio do Hava\u00ED-Aleutas
+America/Bahia.generic.long=Hor\u00E1rio de Bras\u00EDlia
+America/Bahia_Banderas.generic.long=Hor\u00E1rio Central
+America/Barbados.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Belem.generic.long=Hor\u00E1rio de Bras\u00EDlia
+America/Belize.generic.long=Hor\u00E1rio Central
+America/Blanc-Sablon.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Boa_Vista.generic.long=Hor\u00E1rio do Amazonas
+America/Bogota.generic.long=Hor\u00E1rio da Col\u00F4mbia
+America/Boise.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Buenos_Aires.generic.long=Hor\u00E1rio da Argentina
+America/Cambridge_Bay.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Campo_Grande.generic.long=Hor\u00E1rio do Amazonas
+America/Cancun.generic.long=Hor\u00E1rio Central
+America/Caracas.generic.long=Hor\u00E1rio da Venezuela
+America/Catamarca.generic.long=Hor\u00E1rio da Argentina
+America/Cayenne.generic.long=Hor\u00E1rio da Guiana Francesa
+America/Cayman.generic.long=Hor\u00E1rio do Leste
+America/Chicago.generic.long=Hor\u00E1rio Central
+America/Chihuahua.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Coral_Harbour.generic.long=Hor\u00E1rio do Leste
+America/Cordoba.generic.long=Hor\u00E1rio da Argentina
+America/Costa_Rica.generic.long=Hor\u00E1rio Central
+America/Creston.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Cuiaba.generic.long=Hor\u00E1rio do Amazonas
+America/Curacao.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Danmarkshavn.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+America/Dawson.generic.long=Hor\u00E1rio do Pac\u00EDfico
+America/Dawson_Creek.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Denver.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Detroit.generic.long=Hor\u00E1rio do Leste
+America/Dominica.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Edmonton.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Eirunepe.generic.long=Fuso hor\u00e1rio do Acre
+America/El_Salvador.generic.long=Hor\u00E1rio Central
+America/Ensenada.generic.long=Hor\u00E1rio do Pac\u00EDfico
+America/Fort_Wayne.generic.long=Hor\u00E1rio do Leste
+America/Fortaleza.generic.long=Hor\u00E1rio de Bras\u00EDlia
+America/Glace_Bay.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Godthab.generic.long=Hor\u00E1rio da Groenl\u00E2ndia Ocidental
+America/Goose_Bay.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Grand_Turk.generic.long=Hor\u00E1rio do Leste
+America/Grenada.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Guadeloupe.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Guatemala.generic.long=Hor\u00E1rio Central
+America/Guayaquil.generic.long=Hor\u00E1rio do Equador
+America/Guyana.generic.long=Hor\u00E1rios da Guiana
+America/Halifax.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Havana.generic.long=Hor\u00E1rio de Cuba
+America/Hermosillo.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Indiana/Indianapolis.generic.long=Hor\u00E1rio do Leste
+America/Indiana/Knox.generic.long=Hor\u00E1rio Central
+America/Indiana/Marengo.generic.long=Hor\u00E1rio do Leste
+America/Indiana/Petersburg.generic.long=Hor\u00E1rio do Leste
+America/Indiana/Tell_City.generic.long=Hor\u00E1rio Central
+America/Indiana/Vevay.generic.long=Hor\u00E1rio do Leste
+America/Indiana/Vincennes.generic.long=Hor\u00E1rio do Leste
+America/Indiana/Winamac.generic.long=Hor\u00E1rio do Leste
+America/Indianapolis.generic.long=Hor\u00E1rio do Leste
+America/Inuvik.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Iqaluit.generic.long=Hor\u00E1rio do Leste
+America/Jamaica.generic.long=Hor\u00E1rio do Leste
+America/Jujuy.generic.long=Hor\u00E1rio da Argentina
+America/Juneau.generic.long=Hor\u00E1rio do Alasca
+America/Kentucky/Louisville.generic.long=Hor\u00E1rio do Leste
+America/Kentucky/Monticello.generic.long=Hor\u00E1rio do Leste
+America/Knox_IN.generic.long=Hor\u00E1rio Central
+America/Kralendijk.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/La_Paz.generic.long=Hor\u00E1rio da Bol\u00EDvia
+America/Lima.generic.long=Hor\u00E1rio do Peru
+America/Los_Angeles.generic.long=Hor\u00E1rio do Pac\u00EDfico
+America/Louisville.generic.long=Hor\u00E1rio do Leste
+America/Lower_Princes.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Maceio.generic.long=Hor\u00E1rio de Bras\u00EDlia
+America/Managua.generic.long=Hor\u00E1rio Central
+America/Manaus.generic.long=Hor\u00E1rio do Amazonas
+America/Marigot.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Martinique.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Matamoros.generic.long=Hor\u00E1rio Central
+America/Mazatlan.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Mendoza.generic.long=Hor\u00E1rio da Argentina
+America/Menominee.generic.long=Hor\u00E1rio Central
+America/Merida.generic.long=Hor\u00E1rio Central
+America/Metlakatla.daylight.long=Hor\u00E1rio de Luz Natural de Metlakatla
+America/Metlakatla.generic.long=Hor\u00E1rio de Metlakatla
+America/Metlakatla.standard.long=Hor\u00E1rio Padr\u00E3o de Metlakatla
+America/Mexico_City.generic.long=Hor\u00E1rio Central
+America/Miquelon.generic.long=Hor\u00E1rio de Saint Pierre e Miquelon
+America/Moncton.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Monterrey.generic.long=Hor\u00E1rio Central
+America/Montevideo.generic.long=Hor\u00E1rio do Uruguai
+America/Montreal.generic.long=Hor\u00E1rio do Leste
+America/Montserrat.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Nassau.generic.long=Hor\u00E1rio do Leste
+America/New_York.generic.long=Hor\u00E1rio do Leste
+America/Nipigon.generic.long=Hor\u00E1rio do Leste
+America/Nome.generic.long=Hor\u00E1rio do Alasca
+America/Noronha.generic.long=Hor\u00E1rio de Fernando de Noronha
+America/North_Dakota/Beulah.generic.long=Hor\u00E1rio Central
+America/North_Dakota/Center.generic.long=Hor\u00E1rio Central
+America/North_Dakota/New_Salem.generic.long=Hor\u00E1rio Central
+America/Ojinaga.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Panama.generic.long=Hor\u00E1rio do Leste
+America/Pangnirtung.generic.long=Hor\u00E1rio do Leste
+America/Paramaribo.generic.long=Hor\u00E1rio do Suriname
+America/Phoenix.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Port-au-Prince.generic.long=Hor\u00E1rio do Leste
+America/Port_of_Spain.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Porto_Acre.generic.long=Fuso hor\u00e1rio do Acre
+America/Porto_Velho.generic.long=Hor\u00E1rio do Amazonas
+America/Puerto_Rico.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Rainy_River.generic.long=Hor\u00E1rio Central
+America/Rankin_Inlet.generic.long=Hor\u00E1rio Central
+America/Recife.generic.long=Hor\u00E1rio de Bras\u00EDlia
+America/Regina.generic.long=Hor\u00E1rio Central
+America/Resolute.generic.long=Hor\u00E1rio Central
+America/Rio_Branco.generic.long=Fuso hor\u00e1rio do Acre
+America/Rosario.generic.long=Hor\u00E1rio da Argentina
+America/Santa_Isabel.generic.long=Hor\u00E1rio do Pac\u00EDfico
+America/Santarem.generic.long=Hor\u00E1rio de Bras\u00EDlia
+America/Santiago.generic.long=Hor\u00E1rio do Chile
+America/Santo_Domingo.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Sao_Paulo.generic.long=Hor\u00E1rio de Bras\u00EDlia
+America/Scoresbysund.generic.long=Hor\u00E1rio da Groenl\u00E2ndia Oriental
+America/Shiprock.generic.long=Hor\u00E1rio das Montanhas Rochosas
+America/Sitka.generic.long=Hor\u00E1rio do Alasca
+America/St_Barthelemy.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/St_Johns.generic.long=Hor\u00E1rio de Terra Nova
+America/St_Kitts.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/St_Lucia.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/St_Thomas.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/St_Vincent.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Swift_Current.generic.long=Hor\u00E1rio Central
+America/Tegucigalpa.generic.long=Hor\u00E1rio Central
+America/Thule.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Thunder_Bay.generic.long=Hor\u00E1rio do Leste
+America/Tijuana.generic.long=Hor\u00E1rio do Pac\u00EDfico
+America/Toronto.generic.long=Hor\u00E1rio do Leste
+America/Tortola.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Vancouver.generic.long=Hor\u00E1rio do Pac\u00EDfico
+America/Virgin.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+America/Whitehorse.generic.long=Hor\u00E1rio do Pac\u00EDfico
+America/Winnipeg.generic.long=Hor\u00E1rio Central
+America/Yakutat.generic.long=Hor\u00E1rio do Alasca
+America/Yellowknife.generic.long=Hor\u00E1rio das Montanhas Rochosas
+Antarctica/Casey.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Ocidental (Austr\u00E1lia)
+Antarctica/Casey.generic.long=Hor\u00E1rio Ocidental (Austr\u00E1lia)
+Antarctica/Casey.standard.long=Hor\u00E1rio-Padr\u00E3o Ocidental (Austr\u00E1lia)
+Antarctica/Davis.generic.long=Hor\u00E1rio de Davis
+Antarctica/DumontDUrville.generic.long=Fuso Hor\u00E1rio de Dumont-d'Urville
+Antarctica/Macquarie.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o da Ilha de Macquarie
+Antarctica/Macquarie.generic.long=Fuso Hor\u00E1rio da Ilha de Macquarie
+Antarctica/Macquarie.standard.long=Fuso Hor\u00E1rio da Ilha de Macquarie
+Antarctica/Mawson.generic.long=Hor\u00E1rio de Mawson
+Antarctica/McMurdo.generic.long=Hor\u00E1rio da Nova Zel\u00E2ndia
+Antarctica/Palmer.generic.long=Hor\u00E1rio do Chile
+Antarctica/Rothera.generic.long=Hor\u00E1rio de Rothera
+Antarctica/South_Pole.generic.long=Hor\u00E1rio da Nova Zel\u00E2ndia
+Antarctica/Syowa.generic.long=Hor\u00E1rio de Syowa
+Antarctica/Vostok.generic.long=Hor\u00E1rio de Vostok
+Arctic/Longyearbyen.generic.long=Hor\u00E1rio da Europa Central
+Asia/Aden.generic.long=Hor\u00E1rio da Ar\u00E1bia
+Asia/Almaty.generic.long=Hor\u00E1rio de Alma-Ata
+Asia/Amman.generic.long=Hor\u00e1rio da Ar\u00e1bia
+Asia/Anadyr.generic.long=Hor\u00E1rio de Anadyr
+Asia/Aqtau.generic.long=Hor\u00E1rio de Aqtau
+Asia/Aqtobe.generic.long=Hor\u00E1rio de Aqtobe
+Asia/Ashgabat.generic.long=Hor\u00E1rio do Turcomenist\u00E3o
+Asia/Ashkhabad.generic.long=Hor\u00E1rio do Turcomenist\u00E3o
+Asia/Baghdad.generic.long=Hor\u00E1rio da Ar\u00E1bia
+Asia/Bahrain.generic.long=Hor\u00E1rio da Ar\u00E1bia
+Asia/Baku.generic.long=Hor\u00E1rio do Azerbaij\u00E3o
+Asia/Bangkok.generic.long=Hor\u00E1rio da Indochina
+Asia/Beirut.generic.long=Hor\u00E1rio da Europa Oriental
+Asia/Bishkek.generic.long=Hor\u00E1rio do Quirguist\u00E3o
+Asia/Brunei.generic.long=Hor\u00E1rio de Brunei
+Asia/Calcutta.generic.long=Hor\u00E1rio da \u00CDndia
+Asia/Choibalsan.generic.long=Hor\u00E1rio de Choibalsan
+Asia/Chongqing.generic.long=Hor\u00E1rio da China
+Asia/Chungking.generic.long=Hor\u00E1rio da China
+Asia/Colombo.generic.long=Hor\u00E1rio da \u00CDndia
+Asia/Dacca.generic.long=Hor\u00E1rio de Bangladesh
+Asia/Damascus.generic.long=Hor\u00E1rio da Europa Oriental
+Asia/Dhaka.generic.long=Hor\u00E1rio de Bangladesh
+Asia/Dili.generic.long=Hor\u00E1rio do Timor-Leste
+Asia/Dubai.generic.long=Hor\u00E1rio do Golfo
+Asia/Dushanbe.generic.long=Hor\u00E1rio do Tadjiquist\u00E3o
+Asia/Gaza.generic.long=Hor\u00E1rio da Europa Oriental
+Asia/Harbin.generic.long=Hor\u00E1rio da China
+Asia/Hebron.generic.long=Hor\u00E1rio da Europa Oriental
+Asia/Ho_Chi_Minh.generic.long=Hor\u00E1rio da Indochina
+Asia/Hong_Kong.generic.long=Hor\u00E1rio de Hong Kong
+Asia/Hovd.generic.long=Hor\u00E1rio de Hovd
+Asia/Irkutsk.generic.long=Hor\u00E1rio de Irkutsk
+Asia/Istanbul.generic.long=Hor\u00E1rio da Europa Oriental
+Asia/Jakarta.generic.long=Hor\u00E1rio da Indon\u00E9sia Ocidental
+Asia/Jayapura.generic.long=Hor\u00E1rio da Indon\u00E9sia Oriental
+Asia/Jerusalem.generic.long=Hor\u00E1rio de Israel
+Asia/Kabul.generic.long=Hor\u00E1rio do Afeganist\u00E3o
+Asia/Kamchatka.generic.long=Hor\u00E1rio de Petropavlovsk-Kamchatski
+Asia/Karachi.generic.long=Hor\u00E1rio do Paquist\u00E3o
+Asia/Kashgar.generic.long=Hor\u00E1rio da China
+Asia/Kathmandu.generic.long=Hor\u00E1rio do Nepal
+Asia/Katmandu.generic.long=Hor\u00E1rio do Nepal
+Asia/Khandyga.daylight.long=Hor\u00E1rio de Ver\u00E3o de Khandyga
+Asia/Khandyga.generic.long=Hor\u00E1rio de Khandyga
+Asia/Khandyga.standard.long=Hor\u00E1rio de Khandyga
+Asia/Kolkata.generic.long=Hor\u00E1rio da \u00CDndia
+Asia/Krasnoyarsk.generic.long=Hor\u00E1rio de Krasnoyarsk
+Asia/Kuala_Lumpur.generic.long=Hor\u00E1rio da Mal\u00E1sia
+Asia/Kuching.generic.long=Hor\u00E1rio da Mal\u00E1sia
+Asia/Kuwait.generic.long=Hor\u00E1rio da Ar\u00E1bia
+Asia/Macao.generic.long=Hor\u00E1rio da China
+Asia/Macau.generic.long=Hor\u00E1rio da China
+Asia/Magadan.generic.long=Hor\u00E1rio de Magadan
+Asia/Makassar.generic.long=Hor\u00E1rio da Indon\u00E9sia Central
+Asia/Manila.generic.long=Hor\u00E1rio das Filipinas
+Asia/Muscat.generic.long=Hor\u00E1rio do Golfo
+Asia/Nicosia.generic.long=Hor\u00E1rio da Europa Oriental
+Asia/Novokuznetsk.generic.long=Hor\u00E1rio de Novosibirsk
+Asia/Novosibirsk.generic.long=Hor\u00E1rio de Novosibirsk
+Asia/Omsk.generic.long=Hor\u00E1rio de Omsk
+Asia/Oral.generic.long=Hor\u00E1rio de Uralsk
+Asia/Phnom_Penh.generic.long=Hor\u00E1rio da Indochina
+Asia/Pontianak.generic.long=Hor\u00E1rio da Indon\u00E9sia Ocidental
+Asia/Pyongyang.generic.long=Hor\u00E1rio da Coreia
+Asia/Qatar.generic.long=Hor\u00E1rio da Ar\u00E1bia
+Asia/Qyzylorda.generic.long=Hor\u00E1rio de Qyzylorda
+Asia/Rangoon.generic.long=Hor\u00E1rio de Mianmar
+Asia/Saigon.generic.long=Hor\u00E1rio da Indochina
+Asia/Sakhalin.generic.long=Hor\u00E1rio de Sakhalin
+Asia/Samarkand.generic.long=Hor\u00E1rio do Uzbequist\u00E3o
+Asia/Seoul.generic.long=Hor\u00E1rio da Coreia
+Asia/Shanghai.generic.long=Hor\u00E1rio da China
+Asia/Singapore.generic.long=Hor\u00E1rio de Cingapura
+Asia/Taipei.generic.long=Hor\u00E1rio da China
+Asia/Tashkent.generic.long=Hor\u00E1rio do Uzbequist\u00E3o
+Asia/Tbilisi.generic.long=Hor\u00E1rio da Ge\u00F3rgia
+Asia/Tehran.generic.long=Hor\u00E1rio do Ir\u00E3
+Asia/Tel_Aviv.generic.long=Hor\u00E1rio de Israel
+Asia/Thimbu.generic.long=Hor\u00E1rio do But\u00E3o
+Asia/Thimphu.generic.long=Hor\u00E1rio do But\u00E3o
+Asia/Tokyo.generic.long=Hor\u00E1rio do Jap\u00E3o
+Asia/Ujung_Pandang.generic.long=Hor\u00E1rio da Indon\u00E9sia Central
+Asia/Ulaanbaatar.generic.long=Hor\u00E1rio de Ulaanbaatar
+Asia/Ulan_Bator.generic.long=Hor\u00E1rio de Ulaanbaatar
+Asia/Urumqi.generic.long=Hor\u00E1rio da China
+Asia/Ust-Nera.daylight.long=Hor\u00E1rio de Ver\u00E3o de Ust-Nera
+Asia/Ust-Nera.generic.long=Hor\u00E1rio de Ust-Nera
+Asia/Ust-Nera.standard.long=Hor\u00E1rio de Ust-Nera
+Asia/Vientiane.generic.long=Hor\u00E1rio da Indochina
+Asia/Vladivostok.generic.long=Hor\u00E1rio de Vladivostok
+Asia/Yakutsk.generic.long=Hor\u00E1rio de Yakutsk
+Asia/Yekaterinburg.generic.long=Hor\u00E1rio de Yekaterinburg
+Asia/Yerevan.generic.long=Hor\u00E1rio da Arm\u00EAnia
+Atlantic/Azores.generic.long=Hor\u00E1rio de A\u00E7ores
+Atlantic/Bermuda.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+Atlantic/Canary.generic.long=Hor\u00E1rio da Europa Ocidental
+Atlantic/Cape_Verde.generic.long=Hor\u00E1rio de Cabo Verde
+Atlantic/Faeroe.generic.long=Hor\u00E1rio da Europa Ocidental
+Atlantic/Faroe.generic.long=Hor\u00E1rio da Europa Ocidental
+Atlantic/Jan_Mayen.generic.long=Hor\u00E1rio da Europa Central
+Atlantic/Madeira.generic.long=Hor\u00E1rio da Europa Ocidental
+Atlantic/Reykjavik.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Atlantic/South_Georgia.generic.long=Hor\u00E1rio da Ge\u00F3rgia do Sul
+Atlantic/St_Helena.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Atlantic/Stanley.generic.long=Hor\u00E1rio das Ilhas Malvinas
+Australia/ACT.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Nova Gales do Sul)
+Australia/ACT.generic.long=Hor\u00E1rio Oriental (Nova Gales do Sul)
+Australia/ACT.standard.long=Hor\u00E1rio-Padr\u00E3o Oriental (Nova Gales do Sul)
+Australia/Adelaide.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Central (Austr\u00E1lia do Sul)
+Australia/Adelaide.generic.long=Hor\u00E1rio Central (Austr\u00E1lia do Sul)
+Australia/Adelaide.standard.long=Hor\u00E1rio-Padr\u00E3o Central (Austr\u00E1lia do Sul)
+Australia/Brisbane.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Queensland)
+Australia/Brisbane.generic.long=Hor\u00E1rio do Leste (Queensland)
+Australia/Brisbane.standard.long=Hor\u00E1rio-Padr\u00E3o do Leste (Queensland)
+Australia/Broken_Hill.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Central (Austr\u00E1lia do Sul/Nova Gales do Sul)
+Australia/Broken_Hill.generic.long=Hor\u00E1rio Central (Austr\u00E1lia do Sul/Nova Gales do Sul)
+Australia/Broken_Hill.standard.long=Hor\u00E1rio-Padr\u00E3o Central (Austr\u00E1lia do Sul/Nova Gales do Sul)
+Australia/Canberra.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Nova Gales do Sul)
+Australia/Canberra.generic.long=Hor\u00E1rio Oriental (Nova Gales do Sul)
+Australia/Canberra.standard.long=Hor\u00E1rio-Padr\u00E3o Oriental (Nova Gales do Sul)
+Australia/Currie.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Nova Gales do Sul)
+Australia/Currie.generic.long=Hor\u00E1rio Oriental (Nova Gales do Sul)
+Australia/Currie.standard.long=Hor\u00E1rio-Padr\u00E3o Oriental (Nova Gales do Sul)
+Australia/Darwin.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Central (Territ\u00F3rio do Norte)
+Australia/Darwin.generic.long=Hor\u00E1rio Central (Territ\u00F3rio do Norte)
+Australia/Darwin.standard.long=Hor\u00E1rio-Padr\u00E3o Central (Territ\u00F3rio do Norte)
+Australia/Eucla.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Ocidental Central (Austr\u00E1lia)
+Australia/Eucla.generic.long=Hor\u00E1rio Ocidental Central (Austr\u00E1lia)
+Australia/Eucla.standard.long=Fuso Hor\u00E1rio Ocidental Central (Austr\u00E1lia)
+Australia/Hobart.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Tasm\u00E2nia)
+Australia/Hobart.generic.long=Hor\u00E1rio do Leste (Tasm\u00E2nia)
+Australia/Hobart.standard.long=Hor\u00E1rio-Padr\u00E3o do Leste (Tasm\u00E2nia)
+Australia/LHI.generic.long=Hor\u00E1rio de Lord Howe
+Australia/Lindeman.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Queensland)
+Australia/Lindeman.generic.long=Hor\u00E1rio do Leste (Queensland)
+Australia/Lindeman.standard.long=Hor\u00E1rio-Padr\u00E3o do Leste (Queensland)
+Australia/Lord_Howe.generic.long=Hor\u00E1rio de Lord Howe
+Australia/Melbourne.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Victoria)
+Australia/Melbourne.generic.long=Hor\u00E1rio do Leste (Victoria)
+Australia/Melbourne.standard.long=Hor\u00E1rio-Padr\u00E3o do Leste (Victoria)
+Australia/NSW.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Nova Gales do Sul)
+Australia/NSW.generic.long=Hor\u00E1rio Oriental (Nova Gales do Sul)
+Australia/NSW.standard.long=Hor\u00E1rio-Padr\u00E3o Oriental (Nova Gales do Sul)
+Australia/North.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Central (Territ\u00F3rio do Norte)
+Australia/North.generic.long=Hor\u00E1rio Central (Territ\u00F3rio do Norte)
+Australia/North.standard.long=Hor\u00E1rio-Padr\u00E3o Central (Territ\u00F3rio do Norte)
+Australia/Perth.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Ocidental (Austr\u00E1lia)
+Australia/Perth.generic.long=Hor\u00E1rio Ocidental (Austr\u00E1lia)
+Australia/Perth.standard.long=Hor\u00E1rio-Padr\u00E3o Ocidental (Austr\u00E1lia)
+Australia/Queensland.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Queensland)
+Australia/Queensland.generic.long=Hor\u00E1rio do Leste (Queensland)
+Australia/Queensland.standard.long=Hor\u00E1rio-Padr\u00E3o do Leste (Queensland)
+Australia/South.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Central (Austr\u00E1lia do Sul)
+Australia/South.generic.long=Hor\u00E1rio Central (Austr\u00E1lia do Sul)
+Australia/South.standard.long=Hor\u00E1rio-Padr\u00E3o Central (Austr\u00E1lia do Sul)
+Australia/Sydney.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Nova Gales do Sul)
+Australia/Sydney.generic.long=Hor\u00E1rio Oriental (Nova Gales do Sul)
+Australia/Sydney.standard.long=Hor\u00E1rio-Padr\u00E3o Oriental (Nova Gales do Sul)
+Australia/Tasmania.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Tasm\u00E2nia)
+Australia/Tasmania.generic.long=Hor\u00E1rio do Leste (Tasm\u00E2nia)
+Australia/Tasmania.standard.long=Hor\u00E1rio-Padr\u00E3o do Leste (Tasm\u00E2nia)
+Australia/Victoria.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Oriental (Victoria)
+Australia/Victoria.generic.long=Hor\u00E1rio do Leste (Victoria)
+Australia/Victoria.standard.long=Hor\u00E1rio-Padr\u00E3o do Leste (Victoria)
+Australia/West.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Ocidental (Austr\u00E1lia)
+Australia/West.generic.long=Hor\u00E1rio Ocidental (Austr\u00E1lia)
+Australia/West.standard.long=Hor\u00E1rio-Padr\u00E3o Ocidental (Austr\u00E1lia)
+Australia/Yancowinna.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o Central (Austr\u00E1lia do Sul/Nova Gales do Sul)
+Australia/Yancowinna.generic.long=Hor\u00E1rio Central (Austr\u00E1lia do Sul/Nova Gales do Sul)
+Australia/Yancowinna.standard.long=Hor\u00E1rio-Padr\u00E3o Central (Austr\u00E1lia do Sul/Nova Gales do Sul)
+BET.generic.long=Hor\u00E1rio de Bras\u00EDlia
+BST.generic.long=Hor\u00E1rio de Bangladesh
+Brazil/Acre.generic.long=Fuso hor\u00e1rio do Acre
+Brazil/DeNoronha.generic.long=Hor\u00E1rio de Fernando de Noronha
+Brazil/East.generic.long=Hor\u00E1rio de Bras\u00EDlia
+Brazil/West.generic.long=Hor\u00E1rio do Amazonas
+CAT.generic.long=Hor\u00E1rio da \u00C1frica Central
+CET.generic.long=Hor\u00e1rio da Europa Central
+CNT.generic.long=Hor\u00E1rio de Terra Nova
+CST.generic.long=Hor\u00E1rio Central
+CST6CDT.generic.long=Hor\u00e1rio Central
+CTT.generic.long=Hor\u00E1rio da China
+Canada/Atlantic.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+Canada/Central.generic.long=Hor\u00E1rio Central
+Canada/East-Saskatchewan.generic.long=Hor\u00E1rio Central
+Canada/Eastern.generic.long=Hor\u00E1rio do Leste
+Canada/Mountain.generic.long=Hor\u00E1rio das Montanhas Rochosas
+Canada/Newfoundland.generic.long=Hor\u00E1rio de Terra Nova
+Canada/Pacific.generic.long=Hor\u00E1rio do Pac\u00EDfico
+Canada/Saskatchewan.generic.long=Hor\u00E1rio Central
+Canada/Yukon.generic.long=Hor\u00E1rio do Pac\u00EDfico
+Chile/Continental.generic.long=Hor\u00E1rio do Chile
+Chile/EasterIsland.generic.long=Hor\u00E1rio da Ilha de P\u00E1scoa
+Cuba.generic.long=Hor\u00E1rio de Cuba
+EAT.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+ECT.generic.long=Hor\u00E1rio da Europa Central
+EET.generic.long=Hor\u00e1rio da Europa Oriental
+EST.generic.long=Hor\u00e1rio do Leste
+EST5EDT.generic.long=Hor\u00e1rio do Leste
+Egypt.generic.long=Hor\u00E1rio da Europa Oriental
+Eire.generic.long=Hor\u00E1rio da Rep\u00FAblica da Irlanda
+Etc/Greenwich.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Etc/UCT.generic.long=Hor\u00E1rio Universal Coordenado
+Etc/UTC.generic.long=Hor\u00E1rio Universal Coordenado
+Etc/Universal.generic.long=Hor\u00E1rio Universal Coordenado
+Etc/Zulu.generic.long=Hor\u00E1rio Universal Coordenado
+Europe/Amsterdam.generic.long=Hor\u00E1rio da Europa Central
+Europe/Andorra.generic.long=Hor\u00E1rio da Europa Central
+Europe/Athens.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Belfast.generic.long=Hor\u00E1rio do Reino Unido
+Europe/Belgrade.generic.long=Hor\u00E1rio da Europa Central
+Europe/Berlin.generic.long=Hor\u00E1rio da Europa Central
+Europe/Bratislava.generic.long=Hor\u00E1rio da Europa Central
+Europe/Brussels.generic.long=Hor\u00E1rio da Europa Central
+Europe/Bucharest.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Budapest.generic.long=Hor\u00E1rio da Europa Central
+Europe/Busingen.generic.long=Hor\u00E1rio da Europa Central
+Europe/Chisinau.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Copenhagen.generic.long=Hor\u00E1rio da Europa Central
+Europe/Dublin.generic.long=Hor\u00E1rio da Rep\u00FAblica da Irlanda
+Europe/Gibraltar.generic.long=Hor\u00E1rio da Europa Central
+Europe/Guernsey.generic.long=Hor\u00E1rio do Reino Unido
+Europe/Helsinki.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Isle_of_Man.generic.long=Hor\u00E1rio do Reino Unido
+Europe/Istanbul.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Jersey.generic.long=Hor\u00E1rio do Reino Unido
+Europe/Kaliningrad.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o do Extremo Leste Europeu
+Europe/Kaliningrad.generic.long=Hor\u00E1rio do Extremo Leste Europeu (FET)
+Europe/Kaliningrad.standard.long=Hor\u00E1rio do Extremo Leste Europeu (FET)
+Europe/Kiev.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Lisbon.generic.long=Hor\u00E1rio da Europa Ocidental
+Europe/Ljubljana.generic.long=Hor\u00E1rio da Europa Central
+Europe/London.generic.long=Hor\u00E1rio do Reino Unido
+Europe/Luxembourg.generic.long=Hor\u00E1rio da Europa Central
+Europe/Madrid.generic.long=Hor\u00E1rio da Europa Central
+Europe/Malta.generic.long=Hor\u00E1rio da Europa Central
+Europe/Mariehamn.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Minsk.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o do Extremo Leste Europeu
+Europe/Minsk.generic.long=Hor\u00E1rio do Extremo Leste Europeu (FET)
+Europe/Minsk.standard.long=Hor\u00E1rio do Extremo Leste Europeu (FET)
+Europe/Monaco.generic.long=Hor\u00E1rio da Europa Central
+Europe/Moscow.generic.long=Hor\u00E1rio de Moscou
+Europe/Nicosia.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Oslo.generic.long=Hor\u00E1rio da Europa Central
+Europe/Paris.generic.long=Hor\u00E1rio da Europa Central
+Europe/Podgorica.generic.long=Hor\u00E1rio da Europa Central
+Europe/Prague.generic.long=Hor\u00E1rio da Europa Central
+Europe/Riga.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Rome.generic.long=Hor\u00E1rio da Europa Central
+Europe/Samara.generic.long=Hor\u00E1rio de Samara
+Europe/San_Marino.generic.long=Hor\u00E1rio da Europa Central
+Europe/Sarajevo.generic.long=Hor\u00E1rio da Europa Central
+Europe/Simferopol.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Skopje.generic.long=Hor\u00E1rio da Europa Central
+Europe/Sofia.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Stockholm.generic.long=Hor\u00E1rio da Europa Central
+Europe/Tallinn.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Tirane.generic.long=Hor\u00E1rio da Europa Central
+Europe/Tiraspol.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Uzhgorod.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Vaduz.generic.long=Hor\u00E1rio da Europa Central
+Europe/Vatican.generic.long=Hor\u00E1rio da Europa Central
+Europe/Vienna.generic.long=Hor\u00E1rio da Europa Central
+Europe/Vilnius.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Volgograd.generic.long=Hor\u00E1rio de Volgogrado
+Europe/Warsaw.generic.long=Hor\u00E1rio da Europa Central
+Europe/Zagreb.generic.long=Hor\u00E1rio da Europa Central
+Europe/Zaporozhye.generic.long=Hor\u00E1rio da Europa Oriental
+Europe/Zurich.generic.long=Hor\u00E1rio da Europa Central
+GB-Eire.generic.long=Hor\u00E1rio do Reino Unido
+GB.generic.long=Hor\u00E1rio do Reino Unido
+GMT.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Greenwich.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+HST.generic.long=Hor\u00e1rio do Hava\u00ed
+Hongkong.generic.long=Hor\u00E1rio de Hong Kong
+IET.generic.long=Hor\u00E1rio do Leste
+IST.generic.long=Hor\u00E1rio da \u00CDndia
+Iceland.generic.long=Hor\u00E1rio M\u00E9dio de Greenwich
+Indian/Antananarivo.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Indian/Chagos.generic.long=Hor\u00E1rio do Territ\u00F3rio do Oceano \u00CDndico
+Indian/Christmas.generic.long=Hor\u00E1rio da Ilha Christmas
+Indian/Cocos.generic.long=Hor\u00E1rio das Ilhas Cocos
+Indian/Comoro.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Indian/Kerguelen.generic.long=Hor\u00E1rio do Territ\u00F3rio Franc\u00EAs no Sul da Ant\u00E1rtica
+Indian/Mahe.generic.long=Hor\u00E1rio de Seychelles
+Indian/Maldives.generic.long=Hor\u00E1rio das Maldivas
+Indian/Mauritius.generic.long=Hor\u00E1rio de Maur\u00EDcio
+Indian/Mayotte.generic.long=Hor\u00E1rio do Leste da \u00C1frica
+Indian/Reunion.generic.long=Hor\u00E1rio das Ilhas Reuni\u00E3o
+Iran.generic.long=Hor\u00E1rio do Ir\u00E3
+Israel.generic.long=Hor\u00E1rio de Israel
+JST.generic.long=Hor\u00E1rio do Jap\u00E3o
+Jamaica.generic.long=Hor\u00E1rio do Leste
+Japan.generic.long=Hor\u00E1rio do Jap\u00E3o
+Kwajalein.generic.long=Hor\u00E1rio das Ilhas Marshall
+Libya.generic.long=Hor\u00e1rio da Europa Oriental
+MET.generic.long=MET
+MIT.generic.long=Fuso Hor\u00E1rio de Samoa Ocidental
+MST.generic.long=Hor\u00e1rio das Montanhas Rochosas
+MST7MDT.generic.long=Hor\u00e1rio das Montanhas Rochosas
+Mexico/BajaNorte.generic.long=Hor\u00E1rio do Pac\u00EDfico
+Mexico/BajaSur.generic.long=Hor\u00E1rio das Montanhas Rochosas
+Mexico/General.generic.long=Hor\u00E1rio Central
+NET.generic.long=Hor\u00E1rio da Arm\u00EAnia
+NST.generic.long=Hor\u00E1rio da Nova Zel\u00E2ndia
+NZ-CHAT.generic.long=Hor\u00E1rio de Chatham
+NZ.generic.long=Hor\u00E1rio da Nova Zel\u00E2ndia
+Navajo.generic.long=Hor\u00E1rio das Montanhas Rochosas
+PLT.generic.long=Hor\u00E1rio do Paquist\u00E3o
+PNT.generic.long=Hor\u00E1rio das Montanhas Rochosas
+PRC.generic.long=Hor\u00E1rio da China
+PRT.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+PST.generic.long=Hor\u00E1rio do Pac\u00EDfico
+PST8PDT.generic.long=Hor\u00e1rio do Pac\u00edfico
+Pacific/Apia.generic.long=Fuso Hor\u00E1rio de Samoa Ocidental
+Pacific/Auckland.generic.long=Hor\u00E1rio da Nova Zel\u00E2ndia
+Pacific/Chatham.generic.long=Hor\u00E1rio de Chatham
+Pacific/Chuuk.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o de Chuuk
+Pacific/Chuuk.generic.long=Fuso Hor\u00E1rio de Chuuk
+Pacific/Chuuk.standard.long=Fuso Hor\u00E1rio de Chuuk
+Pacific/Easter.generic.long=Hor\u00E1rio da Ilha de P\u00E1scoa
+Pacific/Efate.generic.long=Hor\u00E1rio de Vanuatu
+Pacific/Enderbury.generic.long=Hor\u00E1rio da Ilha Phoenix
+Pacific/Fakaofo.generic.long=Hor\u00E1rio de Toquelau
+Pacific/Fiji.generic.long=Hor\u00E1rio de Fiji
+Pacific/Funafuti.generic.long=Hor\u00E1rio de Tuvalu
+Pacific/Galapagos.generic.long=Hor\u00E1rio de Gal\u00E1pagos
+Pacific/Gambier.generic.long=Hor\u00E1rio de Gambier
+Pacific/Guadalcanal.generic.long=Hor\u00E1rio das Ilhas Salom\u00E3o
+Pacific/Guam.generic.long=Hor\u00E1rio de Chamorro
+Pacific/Honolulu.generic.long=Hor\u00E1rio do Hava\u00ED
+Pacific/Johnston.generic.long=Hor\u00E1rio do Hava\u00ED
+Pacific/Kiritimati.generic.long=Hor\u00E1rio das Ilhas Line
+Pacific/Kosrae.generic.long=Hor\u00E1rio de Kosrae
+Pacific/Kwajalein.generic.long=Hor\u00E1rio das Ilhas Marshall
+Pacific/Majuro.generic.long=Hor\u00E1rio das Ilhas Marshall
+Pacific/Marquesas.generic.long=Hor\u00E1rio das Ilhas Marquesas
+Pacific/Midway.generic.long=Hor\u00E1rio da Samoa
+Pacific/Nauru.generic.long=Hor\u00E1rio de Nauru
+Pacific/Niue.generic.long=Hor\u00E1rio de Niue
+Pacific/Norfolk.generic.long=Hor\u00E1rio de Norfolk
+Pacific/Noumea.generic.long=Hor\u00E1rio da Nova Caled\u00F4nia
+Pacific/Pago_Pago.generic.long=Hor\u00E1rio da Samoa
+Pacific/Palau.generic.long=Hor\u00E1rio de Palau
+Pacific/Pitcairn.generic.long=Hor\u00E1rio de Pitcairn
+Pacific/Pohnpei.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o de Pohnpei
+Pacific/Pohnpei.generic.long=Hor\u00E1rio de Ponape
+Pacific/Pohnpei.standard.long=Fuso Hor\u00E1rio de Pohnpei
+Pacific/Ponape.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o de Pohnpei
+Pacific/Ponape.generic.long=Hor\u00E1rio de Ponape
+Pacific/Ponape.standard.long=Fuso Hor\u00E1rio de Pohnpei
+Pacific/Port_Moresby.generic.long=Hor\u00E1rio de Papua-Nova Guin\u00E9
+Pacific/Rarotonga.generic.long=Hor\u00E1rio das Ilhas Cook
+Pacific/Saipan.generic.long=Hor\u00E1rio de Chamorro
+Pacific/Samoa.generic.long=Hor\u00E1rio da Samoa
+Pacific/Tahiti.generic.long=Hor\u00E1rio do Tahiti
+Pacific/Tarawa.generic.long=Hor\u00E1rio das Ilhas Gilbert
+Pacific/Tongatapu.generic.long=Hor\u00E1rio de Tonga
+Pacific/Truk.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o de Chuuk
+Pacific/Truk.generic.long=Fuso Hor\u00E1rio de Chuuk
+Pacific/Truk.standard.long=Fuso Hor\u00E1rio de Chuuk
+Pacific/Wake.generic.long=Hor\u00E1rio de Wake
+Pacific/Wallis.generic.long=Hor\u00E1rio das Ilhas Wallis e Futuna
+Pacific/Yap.daylight.long=Fuso Hor\u00E1rio de Ver\u00E3o de Chuuk
+Pacific/Yap.generic.long=Fuso Hor\u00E1rio de Chuuk
+Pacific/Yap.standard.long=Fuso Hor\u00E1rio de Chuuk
+Poland.generic.long=Hor\u00E1rio da Europa Central
+Portugal.generic.long=Hor\u00E1rio da Europa Ocidental
+ROK.generic.long=Hor\u00E1rio da Coreia
+SST.generic.long=Hor\u00E1rio das Ilhas Salom\u00E3o
+Singapore.generic.long=Hor\u00E1rio de Cingapura
+SystemV/AST4.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+SystemV/AST4ADT.generic.long=Hor\u00E1rio do Atl\u00E2ntico
+SystemV/CST6.generic.long=Hor\u00E1rio Central
+SystemV/CST6CDT.generic.long=Hor\u00E1rio Central
+SystemV/EST5.generic.long=Hor\u00E1rio do Leste
+SystemV/EST5EDT.generic.long=Hor\u00E1rio do Leste
+SystemV/HST10.generic.long=Hor\u00E1rio do Hava\u00ED
+SystemV/MST7.generic.long=Hor\u00E1rio das Montanhas Rochosas
+SystemV/MST7MDT.generic.long=Hor\u00E1rio das Montanhas Rochosas
+SystemV/PST8.generic.long=Hor\u00E1rio do Pac\u00EDfico
+SystemV/PST8PDT.generic.long=Hor\u00E1rio do Pac\u00EDfico
+SystemV/YST9.generic.long=Hor\u00E1rio do Alasca
+SystemV/YST9YDT.generic.long=Hor\u00E1rio do Alasca
+Turkey.generic.long=Hor\u00E1rio da Europa Oriental
+UCT.generic.long=Hor\u00E1rio Universal Coordenado
+US/Alaska.generic.long=Hor\u00E1rio do Alasca
+US/Aleutian.generic.long=Hor\u00E1rio do Hava\u00ED-Aleutas
+US/Arizona.generic.long=Hor\u00E1rio das Montanhas Rochosas
+US/Central.generic.long=Hor\u00E1rio Central
+US/East-Indiana.generic.long=Hor\u00E1rio do Leste
+US/Eastern.generic.long=Hor\u00E1rio do Leste
+US/Hawaii.generic.long=Hor\u00E1rio do Hava\u00ED
+US/Indiana-Starke.generic.long=Hor\u00E1rio Central
+US/Michigan.generic.long=Hor\u00E1rio do Leste
+US/Mountain.generic.long=Hor\u00E1rio das Montanhas Rochosas
+US/Pacific-New.generic.long=Hor\u00E1rio do Pac\u00EDfico
+US/Pacific.generic.long=Hor\u00E1rio do Pac\u00EDfico
+US/Samoa.generic.long=Hor\u00E1rio da Samoa
+UTC.generic.long=Hor\u00E1rio Universal Coordenado
+Universal.generic.long=Hor\u00E1rio Universal Coordenado
+VST.generic.long=Hor\u00E1rio da Indochina
+W-SU.generic.long=Hor\u00E1rio de Moscou
+WET.generic.long=Hor\u00e1rio da Europa Ocidental
+Zulu.generic.long=Hor\u00E1rio Universal Coordenado
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_pt_BR_short.properties Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,1743 @@
+ACT.daylight.short=CST
+ACT.generic.short=CT
+ACT.standard.short=CST
+AET.daylight.short=EST
+AET.generic.short=ET
+AET.standard.short=EST
+Africa/Abidjan.daylight.short=GMT
+Africa/Abidjan.generic.short=GMT
+Africa/Abidjan.standard.short=GMT
+Africa/Accra.daylight.short=GHST
+Africa/Accra.generic.short=GMT
+Africa/Accra.standard.short=GMT
+Africa/Addis_Ababa.daylight.short=EAST
+Africa/Addis_Ababa.generic.short=EAT
+Africa/Addis_Ababa.standard.short=EAT
+Africa/Algiers.daylight.short=CEST
+Africa/Algiers.generic.short=CET
+Africa/Algiers.standard.short=CET
+Africa/Asmara.daylight.short=EAST
+Africa/Asmara.generic.short=EAT
+Africa/Asmara.standard.short=EAT
+Africa/Asmera.daylight.short=EAST
+Africa/Asmera.generic.short=EAT
+Africa/Asmera.standard.short=EAT
+Africa/Bamako.daylight.short=GMT
+Africa/Bamako.generic.short=GMT
+Africa/Bamako.standard.short=GMT
+Africa/Bangui.daylight.short=WAST
+Africa/Bangui.generic.short=WAT
+Africa/Bangui.standard.short=WAT
+Africa/Banjul.daylight.short=GMT
+Africa/Banjul.generic.short=GMT
+Africa/Banjul.standard.short=GMT
+Africa/Bissau.daylight.short=GMT
+Africa/Bissau.generic.short=GMT
+Africa/Bissau.standard.short=GMT
+Africa/Blantyre.daylight.short=CAST
+Africa/Blantyre.generic.short=CAT
+Africa/Blantyre.standard.short=CAT
+Africa/Brazzaville.daylight.short=WAST
+Africa/Brazzaville.generic.short=WAT
+Africa/Brazzaville.standard.short=WAT
+Africa/Bujumbura.daylight.short=CAST
+Africa/Bujumbura.generic.short=CAT
+Africa/Bujumbura.standard.short=CAT
+Africa/Cairo.daylight.short=EEST
+Africa/Cairo.generic.short=EET
+Africa/Cairo.standard.short=EET
+Africa/Casablanca.daylight.short=WEST
+Africa/Casablanca.generic.short=WET
+Africa/Casablanca.standard.short=WET
+Africa/Ceuta.daylight.short=CEST
+Africa/Ceuta.generic.short=CET
+Africa/Ceuta.standard.short=CET
+Africa/Conakry.daylight.short=GMT
+Africa/Conakry.generic.short=GMT
+Africa/Conakry.standard.short=GMT
+Africa/Dakar.daylight.short=GMT
+Africa/Dakar.generic.short=GMT
+Africa/Dakar.standard.short=GMT
+Africa/Dar_es_Salaam.daylight.short=EAST
+Africa/Dar_es_Salaam.generic.short=EAT
+Africa/Dar_es_Salaam.standard.short=EAT
+Africa/Djibouti.daylight.short=EAST
+Africa/Djibouti.generic.short=EAT
+Africa/Djibouti.standard.short=EAT
+Africa/Douala.daylight.short=WAST
+Africa/Douala.generic.short=WAT
+Africa/Douala.standard.short=WAT
+Africa/El_Aaiun.daylight.short=WEST
+Africa/El_Aaiun.generic.short=WET
+Africa/El_Aaiun.standard.short=WET
+Africa/Freetown.daylight.short=SLST
+Africa/Freetown.generic.short=SLT
+Africa/Freetown.standard.short=GMT
+Africa/Gaborone.daylight.short=CAST
+Africa/Gaborone.generic.short=CAT
+Africa/Gaborone.standard.short=CAT
+Africa/Harare.daylight.short=CAST
+Africa/Harare.generic.short=CAT
+Africa/Harare.standard.short=CAT
+Africa/Johannesburg.daylight.short=SAST
+Africa/Johannesburg.generic.short=SAT
+Africa/Johannesburg.standard.short=SAST
+Africa/Juba.daylight.short=EAST
+Africa/Juba.generic.short=EAT
+Africa/Juba.standard.short=EAT
+Africa/Kampala.daylight.short=EAST
+Africa/Kampala.generic.short=EAT
+Africa/Kampala.standard.short=EAT
+Africa/Khartoum.daylight.short=EAST
+Africa/Khartoum.generic.short=EAT
+Africa/Khartoum.standard.short=EAT
+Africa/Kigali.daylight.short=CAST
+Africa/Kigali.generic.short=CAT
+Africa/Kigali.standard.short=CAT
+Africa/Kinshasa.daylight.short=WAST
+Africa/Kinshasa.generic.short=WAT
+Africa/Kinshasa.standard.short=WAT
+Africa/Lagos.daylight.short=WAST
+Africa/Lagos.generic.short=WAT
+Africa/Lagos.standard.short=WAT
+Africa/Libreville.daylight.short=WAST
+Africa/Libreville.generic.short=WAT
+Africa/Libreville.standard.short=WAT
+Africa/Lome.daylight.short=GMT
+Africa/Lome.generic.short=GMT
+Africa/Lome.standard.short=GMT
+Africa/Luanda.daylight.short=WAST
+Africa/Luanda.generic.short=WAT
+Africa/Luanda.standard.short=WAT
+Africa/Lubumbashi.daylight.short=CAST
+Africa/Lubumbashi.generic.short=CAT
+Africa/Lubumbashi.standard.short=CAT
+Africa/Lusaka.daylight.short=CAST
+Africa/Lusaka.generic.short=CAT
+Africa/Lusaka.standard.short=CAT
+Africa/Malabo.daylight.short=WAST
+Africa/Malabo.generic.short=WAT
+Africa/Malabo.standard.short=WAT
+Africa/Maputo.daylight.short=CAST
+Africa/Maputo.generic.short=CAT
+Africa/Maputo.standard.short=CAT
+Africa/Maseru.daylight.short=SAST
+Africa/Maseru.generic.short=SAT
+Africa/Maseru.standard.short=SAST
+Africa/Mbabane.daylight.short=SAST
+Africa/Mbabane.generic.short=SAT
+Africa/Mbabane.standard.short=SAST
+Africa/Mogadishu.daylight.short=EAST
+Africa/Mogadishu.generic.short=EAT
+Africa/Mogadishu.standard.short=EAT
+Africa/Monrovia.daylight.short=GMT
+Africa/Monrovia.generic.short=GMT
+Africa/Monrovia.standard.short=GMT
+Africa/Nairobi.daylight.short=EAST
+Africa/Nairobi.generic.short=EAT
+Africa/Nairobi.standard.short=EAT
+Africa/Ndjamena.daylight.short=WAST
+Africa/Ndjamena.generic.short=WAT
+Africa/Ndjamena.standard.short=WAT
+Africa/Niamey.daylight.short=WAST
+Africa/Niamey.generic.short=WAT
+Africa/Niamey.standard.short=WAT
+Africa/Nouakchott.daylight.short=GMT
+Africa/Nouakchott.generic.short=GMT
+Africa/Nouakchott.standard.short=GMT
+Africa/Ouagadougou.daylight.short=GMT
+Africa/Ouagadougou.generic.short=GMT
+Africa/Ouagadougou.standard.short=GMT
+Africa/Porto-Novo.daylight.short=WAST
+Africa/Porto-Novo.generic.short=WAT
+Africa/Porto-Novo.standard.short=WAT
+Africa/Sao_Tome.daylight.short=GMT
+Africa/Sao_Tome.generic.short=GMT
+Africa/Sao_Tome.standard.short=GMT
+Africa/Timbuktu.daylight.short=GMT
+Africa/Timbuktu.generic.short=GMT
+Africa/Timbuktu.standard.short=GMT
+Africa/Tripoli.daylight.short=EEST
+Africa/Tripoli.generic.short=EET
+Africa/Tripoli.standard.short=EET
+Africa/Tunis.daylight.short=CEST
+Africa/Tunis.generic.short=CET
+Africa/Tunis.standard.short=CET
+Africa/Windhoek.daylight.short=WAST
+Africa/Windhoek.generic.short=WAT
+Africa/Windhoek.standard.short=WAT
+AGT.daylight.short=ARST
+AGT.generic.short=ART
+AGT.standard.short=ART
+America/Adak.daylight.short=HADT
+America/Adak.generic.short=HAT
+America/Adak.standard.short=HAST
+America/Anchorage.daylight.short=AKDT
+America/Anchorage.generic.short=AKT
+America/Anchorage.standard.short=AKST
+America/Anguilla.daylight.short=ADT
+America/Anguilla.generic.short=AT
+America/Anguilla.standard.short=AST
+America/Antigua.daylight.short=ADT
+America/Antigua.generic.short=AT
+America/Antigua.standard.short=AST
+America/Araguaina.daylight.short=BRST
+America/Araguaina.generic.short=BRT
+America/Araguaina.standard.short=BRT
+America/Argentina/Buenos_Aires.daylight.short=ARST
+America/Argentina/Buenos_Aires.generic.short=ART
+America/Argentina/Buenos_Aires.standard.short=ART
+America/Argentina/Catamarca.daylight.short=ARST
+America/Argentina/Catamarca.generic.short=ART
+America/Argentina/Catamarca.standard.short=ART
+America/Argentina/ComodRivadavia.daylight.short=ARST
+America/Argentina/ComodRivadavia.generic.short=ART
+America/Argentina/ComodRivadavia.standard.short=ART
+America/Argentina/Cordoba.daylight.short=ARST
+America/Argentina/Cordoba.generic.short=ART
+America/Argentina/Cordoba.standard.short=ART
+America/Argentina/Jujuy.daylight.short=ARST
+America/Argentina/Jujuy.generic.short=ART
+America/Argentina/Jujuy.standard.short=ART
+America/Argentina/La_Rioja.daylight.short=ARST
+America/Argentina/La_Rioja.generic.short=ART
+America/Argentina/La_Rioja.standard.short=ART
+America/Argentina/Mendoza.daylight.short=ARST
+America/Argentina/Mendoza.generic.short=ART
+America/Argentina/Mendoza.standard.short=ART
+America/Argentina/Rio_Gallegos.daylight.short=ARST
+America/Argentina/Rio_Gallegos.generic.short=ART
+America/Argentina/Rio_Gallegos.standard.short=ART
+America/Argentina/Salta.daylight.short=ARST
+America/Argentina/Salta.generic.short=ART
+America/Argentina/Salta.standard.short=ART
+America/Argentina/San_Juan.daylight.short=ARST
+America/Argentina/San_Juan.generic.short=ART
+America/Argentina/San_Juan.standard.short=ART
+America/Argentina/San_Luis.daylight.short=ARST
+America/Argentina/San_Luis.generic.short=ART
+America/Argentina/San_Luis.standard.short=ART
+America/Argentina/Tucuman.daylight.short=ARST
+America/Argentina/Tucuman.generic.short=ART
+America/Argentina/Tucuman.standard.short=ART
+America/Argentina/Ushuaia.daylight.short=ARST
+America/Argentina/Ushuaia.generic.short=ART
+America/Argentina/Ushuaia.standard.short=ART
+America/Aruba.daylight.short=ADT
+America/Aruba.generic.short=AT
+America/Aruba.standard.short=AST
+America/Asuncion.daylight.short=PYST
+America/Asuncion.generic.short=PYT
+America/Asuncion.standard.short=PYT
+America/Atikokan.daylight.short=EDT
+America/Atikokan.generic.short=ET
+America/Atikokan.standard.short=EST
+America/Atka.daylight.short=HADT
+America/Atka.generic.short=HAT
+America/Atka.standard.short=HAST
+America/Bahia_Banderas.daylight.short=CDT
+America/Bahia_Banderas.generic.short=CT
+America/Bahia_Banderas.standard.short=CST
+America/Bahia.daylight.short=BRST
+America/Bahia.generic.short=BRT
+America/Bahia.standard.short=BRT
+America/Barbados.daylight.short=ADT
+America/Barbados.generic.short=AT
+America/Barbados.standard.short=AST
+America/Belem.daylight.short=BRST
+America/Belem.generic.short=BRT
+America/Belem.standard.short=BRT
+America/Belize.daylight.short=CDT
+America/Belize.generic.short=CT
+America/Belize.standard.short=CST
+America/Blanc-Sablon.daylight.short=ADT
+America/Blanc-Sablon.generic.short=AT
+America/Blanc-Sablon.standard.short=AST
+America/Boa_Vista.daylight.short=AMST
+America/Boa_Vista.generic.short=AMT
+America/Boa_Vista.standard.short=AMT
+America/Bogota.daylight.short=COST
+America/Bogota.generic.short=COT
+America/Bogota.standard.short=COT
+America/Boise.daylight.short=MDT
+America/Boise.generic.short=MT
+America/Boise.standard.short=MST
+America/Buenos_Aires.daylight.short=ARST
+America/Buenos_Aires.generic.short=ART
+America/Buenos_Aires.standard.short=ART
+America/Cambridge_Bay.daylight.short=MDT
+America/Cambridge_Bay.generic.short=MT
+America/Cambridge_Bay.standard.short=MST
+America/Campo_Grande.daylight.short=AMST
+America/Campo_Grande.generic.short=AMT
+America/Campo_Grande.standard.short=AMT
+America/Cancun.daylight.short=CDT
+America/Cancun.generic.short=CT
+America/Cancun.standard.short=CST
+America/Caracas.daylight.short=VEST
+America/Caracas.generic.short=VET
+America/Caracas.standard.short=VET
+America/Catamarca.daylight.short=ARST
+America/Catamarca.generic.short=ART
+America/Catamarca.standard.short=ART
+America/Cayenne.daylight.short=GFST
+America/Cayenne.generic.short=GFT
+America/Cayenne.standard.short=GFT
+America/Cayman.daylight.short=EDT
+America/Cayman.generic.short=ET
+America/Cayman.standard.short=EST
+America/Chicago.daylight.short=CDT
+America/Chicago.generic.short=CT
+America/Chicago.standard.short=CST
+America/Chihuahua.daylight.short=MDT
+America/Chihuahua.generic.short=MT
+America/Chihuahua.standard.short=MST
+America/Coral_Harbour.daylight.short=EDT
+America/Coral_Harbour.generic.short=ET
+America/Coral_Harbour.standard.short=EST
+America/Cordoba.daylight.short=ARST
+America/Cordoba.generic.short=ART
+America/Cordoba.standard.short=ART
+America/Costa_Rica.daylight.short=CDT
+America/Costa_Rica.generic.short=CT
+America/Costa_Rica.standard.short=CST
+America/Creston.daylight.short=MDT
+America/Creston.generic.short=MT
+America/Creston.standard.short=MST
+America/Cuiaba.daylight.short=AMST
+America/Cuiaba.generic.short=AMT
+America/Cuiaba.standard.short=AMT
+America/Curacao.daylight.short=ADT
+America/Curacao.generic.short=AT
+America/Curacao.standard.short=AST
+America/Danmarkshavn.daylight.short=GMT
+America/Danmarkshavn.generic.short=GMT
+America/Danmarkshavn.standard.short=GMT
+America/Dawson_Creek.daylight.short=MDT
+America/Dawson_Creek.generic.short=MT
+America/Dawson_Creek.standard.short=MST
+America/Dawson.daylight.short=PDT
+America/Dawson.generic.short=PT
+America/Dawson.standard.short=PST
+America/Denver.daylight.short=MDT
+America/Denver.generic.short=MT
+America/Denver.standard.short=MST
+America/Detroit.daylight.short=EDT
+America/Detroit.generic.short=ET
+America/Detroit.standard.short=EST
+America/Dominica.daylight.short=ADT
+America/Dominica.generic.short=AT
+America/Dominica.standard.short=AST
+America/Edmonton.daylight.short=MDT
+America/Edmonton.generic.short=MT
+America/Edmonton.standard.short=MST
+America/Eirunepe.daylight.short=ACST
+America/Eirunepe.generic.short=ACT
+America/Eirunepe.standard.short=ACT
+America/El_Salvador.daylight.short=CDT
+America/El_Salvador.generic.short=CT
+America/El_Salvador.standard.short=CST
+America/Ensenada.daylight.short=PDT
+America/Ensenada.generic.short=PT
+America/Ensenada.standard.short=PST
+America/Fortaleza.daylight.short=BRST
+America/Fortaleza.generic.short=BRT
+America/Fortaleza.standard.short=BRT
+America/Fort_Wayne.daylight.short=EDT
+America/Fort_Wayne.generic.short=ET
+America/Fort_Wayne.standard.short=EST
+America/Glace_Bay.daylight.short=ADT
+America/Glace_Bay.generic.short=AT
+America/Glace_Bay.standard.short=AST
+America/Godthab.daylight.short=WGST
+America/Godthab.generic.short=WGT
+America/Godthab.standard.short=WGT
+America/Goose_Bay.daylight.short=ADT
+America/Goose_Bay.generic.short=AT
+America/Goose_Bay.standard.short=AST
+America/Grand_Turk.daylight.short=EDT
+America/Grand_Turk.generic.short=ET
+America/Grand_Turk.standard.short=EST
+America/Grenada.daylight.short=ADT
+America/Grenada.generic.short=AT
+America/Grenada.standard.short=AST
+America/Guadeloupe.daylight.short=ADT
+America/Guadeloupe.generic.short=AT
+America/Guadeloupe.standard.short=AST
+America/Guatemala.daylight.short=CDT
+America/Guatemala.generic.short=CT
+America/Guatemala.standard.short=CST
+America/Guayaquil.daylight.short=ECST
+America/Guayaquil.generic.short=ECT
+America/Guayaquil.standard.short=ECT
+America/Guyana.daylight.short=GYST
+America/Guyana.generic.short=GYT
+America/Guyana.standard.short=GYT
+America/Halifax.daylight.short=ADT
+America/Halifax.generic.short=AT
+America/Halifax.standard.short=AST
+America/Havana.daylight.short=CDT
+America/Havana.generic.short=CT
+America/Havana.standard.short=CST
+America/Hermosillo.daylight.short=MDT
+America/Hermosillo.generic.short=MT
+America/Hermosillo.standard.short=MST
+America/Indiana/Indianapolis.daylight.short=EDT
+America/Indiana/Indianapolis.generic.short=ET
+America/Indiana/Indianapolis.standard.short=EST
+America/Indiana/Knox.daylight.short=CDT
+America/Indiana/Knox.generic.short=CT
+America/Indiana/Knox.standard.short=CST
+America/Indiana/Marengo.daylight.short=EDT
+America/Indiana/Marengo.generic.short=ET
+America/Indiana/Marengo.standard.short=EST
+America/Indiana/Petersburg.daylight.short=EDT
+America/Indiana/Petersburg.generic.short=ET
+America/Indiana/Petersburg.standard.short=EST
+America/Indianapolis.daylight.short=EDT
+America/Indianapolis.generic.short=ET
+America/Indianapolis.standard.short=EST
+America/Indiana/Tell_City.daylight.short=CDT
+America/Indiana/Tell_City.generic.short=CT
+America/Indiana/Tell_City.standard.short=CST
+America/Indiana/Vevay.daylight.short=EDT
+America/Indiana/Vevay.generic.short=ET
+America/Indiana/Vevay.standard.short=EST
+America/Indiana/Vincennes.daylight.short=EDT
+America/Indiana/Vincennes.generic.short=ET
+America/Indiana/Vincennes.standard.short=EST
+America/Indiana/Winamac.daylight.short=EDT
+America/Indiana/Winamac.generic.short=ET
+America/Indiana/Winamac.standard.short=EST
+America/Inuvik.daylight.short=MDT
+America/Inuvik.generic.short=MT
+America/Inuvik.standard.short=MST
+America/Iqaluit.daylight.short=EDT
+America/Iqaluit.generic.short=ET
+America/Iqaluit.standard.short=EST
+America/Jamaica.daylight.short=EDT
+America/Jamaica.generic.short=ET
+America/Jamaica.standard.short=EST
+America/Jujuy.daylight.short=ARST
+America/Jujuy.generic.short=ART
+America/Jujuy.standard.short=ART
+America/Juneau.daylight.short=AKDT
+America/Juneau.generic.short=AKT
+America/Juneau.standard.short=AKST
+America/Kentucky/Louisville.daylight.short=EDT
+America/Kentucky/Louisville.generic.short=ET
+America/Kentucky/Louisville.standard.short=EST
+America/Kentucky/Monticello.daylight.short=EDT
+America/Kentucky/Monticello.generic.short=ET
+America/Kentucky/Monticello.standard.short=EST
+America/Knox_IN.daylight.short=CDT
+America/Knox_IN.generic.short=CT
+America/Knox_IN.standard.short=CST
+America/Kralendijk.daylight.short=ADT
+America/Kralendijk.generic.short=AT
+America/Kralendijk.standard.short=AST
+America/La_Paz.daylight.short=BOST
+America/La_Paz.generic.short=BOT
+America/La_Paz.standard.short=BOT
+America/Lima.daylight.short=PEST
+America/Lima.generic.short=PET
+America/Lima.standard.short=PET
+America/Los_Angeles.daylight.short=PDT
+America/Los_Angeles.generic.short=PT
+America/Los_Angeles.standard.short=PST
+America/Louisville.daylight.short=EDT
+America/Louisville.generic.short=ET
+America/Louisville.standard.short=EST
+America/Lower_Princes.daylight.short=ADT
+America/Lower_Princes.generic.short=AT
+America/Lower_Princes.standard.short=AST
+America/Maceio.daylight.short=BRST
+America/Maceio.generic.short=BRT
+America/Maceio.standard.short=BRT
+America/Managua.daylight.short=CDT
+America/Managua.generic.short=CT
+America/Managua.standard.short=CST
+America/Manaus.daylight.short=AMST
+America/Manaus.generic.short=AMT
+America/Manaus.standard.short=AMT
+America/Marigot.daylight.short=ADT
+America/Marigot.generic.short=AT
+America/Marigot.standard.short=AST
+America/Martinique.daylight.short=ADT
+America/Martinique.generic.short=AT
+America/Martinique.standard.short=AST
+America/Matamoros.daylight.short=CDT
+America/Matamoros.generic.short=CT
+America/Matamoros.standard.short=CST
+America/Mazatlan.daylight.short=MDT
+America/Mazatlan.generic.short=MT
+America/Mazatlan.standard.short=MST
+America/Mendoza.daylight.short=ARST
+America/Mendoza.generic.short=ART
+America/Mendoza.standard.short=ART
+America/Menominee.daylight.short=CDT
+America/Menominee.generic.short=CT
+America/Menominee.standard.short=CST
+America/Merida.daylight.short=CDT
+America/Merida.generic.short=CT
+America/Merida.standard.short=CST
+America/Metlakatla.daylight.short=MeDT
+America/Metlakatla.generic.short=MeT
+America/Metlakatla.standard.short=MeST
+America/Mexico_City.daylight.short=CDT
+America/Mexico_City.generic.short=CT
+America/Mexico_City.standard.short=CST
+America/Miquelon.daylight.short=PMDT
+America/Miquelon.generic.short=PMT
+America/Miquelon.standard.short=PMST
+America/Moncton.daylight.short=ADT
+America/Moncton.generic.short=AT
+America/Moncton.standard.short=AST
+America/Monterrey.daylight.short=CDT
+America/Monterrey.generic.short=CT
+America/Monterrey.standard.short=CST
+America/Montevideo.daylight.short=UYST
+America/Montevideo.generic.short=UYT
+America/Montevideo.standard.short=UYT
+America/Montreal.daylight.short=EDT
+America/Montreal.generic.short=ET
+America/Montreal.standard.short=EST
+America/Montserrat.daylight.short=ADT
+America/Montserrat.generic.short=AT
+America/Montserrat.standard.short=AST
+America/Nassau.daylight.short=EDT
+America/Nassau.generic.short=ET
+America/Nassau.standard.short=EST
+America/New_York.daylight.short=EDT
+America/New_York.generic.short=ET
+America/New_York.standard.short=EST
+America/Nipigon.daylight.short=EDT
+America/Nipigon.generic.short=ET
+America/Nipigon.standard.short=EST
+America/Nome.daylight.short=AKDT
+America/Nome.generic.short=AKT
+America/Nome.standard.short=AKST
+America/Noronha.daylight.short=FNST
+America/Noronha.generic.short=FNT
+America/Noronha.standard.short=FNT
+America/North_Dakota/Beulah.daylight.short=CDT
+America/North_Dakota/Beulah.generic.short=CT
+America/North_Dakota/Beulah.standard.short=CST
+America/North_Dakota/Center.daylight.short=CDT
+America/North_Dakota/Center.generic.short=CT
+America/North_Dakota/Center.standard.short=CST
+America/North_Dakota/New_Salem.daylight.short=CDT
+America/North_Dakota/New_Salem.generic.short=CT
+America/North_Dakota/New_Salem.standard.short=CST
+America/Ojinaga.daylight.short=MDT
+America/Ojinaga.generic.short=MT
+America/Ojinaga.standard.short=MST
+America/Panama.daylight.short=EDT
+America/Panama.generic.short=ET
+America/Panama.standard.short=EST
+America/Pangnirtung.daylight.short=EDT
+America/Pangnirtung.generic.short=ET
+America/Pangnirtung.standard.short=EST
+America/Paramaribo.daylight.short=SRST
+America/Paramaribo.generic.short=SRT
+America/Paramaribo.standard.short=SRT
+America/Phoenix.daylight.short=MDT
+America/Phoenix.generic.short=MT
+America/Phoenix.standard.short=MST
+America/Port-au-Prince.daylight.short=EDT
+America/Port-au-Prince.generic.short=ET
+America/Port-au-Prince.standard.short=EST
+America/Porto_Acre.daylight.short=ACST
+America/Porto_Acre.generic.short=ACT
+America/Porto_Acre.standard.short=ACT
+America/Port_of_Spain.daylight.short=ADT
+America/Port_of_Spain.generic.short=AT
+America/Port_of_Spain.standard.short=AST
+America/Porto_Velho.daylight.short=AMST
+America/Porto_Velho.generic.short=AMT
+America/Porto_Velho.standard.short=AMT
+America/Puerto_Rico.daylight.short=ADT
+America/Puerto_Rico.generic.short=AT
+America/Puerto_Rico.standard.short=AST
+America/Rainy_River.daylight.short=CDT
+America/Rainy_River.generic.short=CT
+America/Rainy_River.standard.short=CST
+America/Rankin_Inlet.daylight.short=CDT
+America/Rankin_Inlet.generic.short=CT
+America/Rankin_Inlet.standard.short=CST
+America/Recife.daylight.short=BRST
+America/Recife.generic.short=BRT
+America/Recife.standard.short=BRT
+America/Regina.daylight.short=CDT
+America/Regina.generic.short=CT
+America/Regina.standard.short=CST
+America/Resolute.daylight.short=CDT
+America/Resolute.generic.short=CT
+America/Resolute.standard.short=CST
+America/Rio_Branco.daylight.short=ACST
+America/Rio_Branco.generic.short=ACT
+America/Rio_Branco.standard.short=ACT
+America/Rosario.daylight.short=ARST
+America/Rosario.generic.short=ART
+America/Rosario.standard.short=ART
+America/Santa_Isabel.daylight.short=PDT
+America/Santa_Isabel.generic.short=PT
+America/Santa_Isabel.standard.short=PST
+America/Santarem.daylight.short=BRST
+America/Santarem.generic.short=BRT
+America/Santarem.standard.short=BRT
+America/Santiago.daylight.short=CLST
+America/Santiago.generic.short=CLT
+America/Santiago.standard.short=CLT
+America/Santo_Domingo.daylight.short=ADT
+America/Santo_Domingo.generic.short=AT
+America/Santo_Domingo.standard.short=AST
+America/Sao_Paulo.daylight.short=BRST
+America/Sao_Paulo.generic.short=BRT
+America/Sao_Paulo.standard.short=BRT
+America/Scoresbysund.daylight.short=EGST
+America/Scoresbysund.generic.short=EGT
+America/Scoresbysund.standard.short=EGT
+America/Shiprock.daylight.short=MDT
+America/Shiprock.generic.short=MT
+America/Shiprock.standard.short=MST
+America/Sitka.daylight.short=AKDT
+America/Sitka.generic.short=AKT
+America/Sitka.standard.short=AKST
+America/St_Barthelemy.daylight.short=ADT
+America/St_Barthelemy.generic.short=AT
+America/St_Barthelemy.standard.short=AST
+America/St_Johns.daylight.short=NDT
+America/St_Johns.generic.short=NT
+America/St_Johns.standard.short=NST
+America/St_Kitts.daylight.short=ADT
+America/St_Kitts.generic.short=AT
+America/St_Kitts.standard.short=AST
+America/St_Lucia.daylight.short=ADT
+America/St_Lucia.generic.short=AT
+America/St_Lucia.standard.short=AST
+America/St_Thomas.daylight.short=ADT
+America/St_Thomas.generic.short=AT
+America/St_Thomas.standard.short=AST
+America/St_Vincent.daylight.short=ADT
+America/St_Vincent.generic.short=AT
+America/St_Vincent.standard.short=AST
+America/Swift_Current.daylight.short=CDT
+America/Swift_Current.generic.short=CT
+America/Swift_Current.standard.short=CST
+America/Tegucigalpa.daylight.short=CDT
+America/Tegucigalpa.generic.short=CT
+America/Tegucigalpa.standard.short=CST
+America/Thule.daylight.short=ADT
+America/Thule.generic.short=AT
+America/Thule.standard.short=AST
+America/Thunder_Bay.daylight.short=EDT
+America/Thunder_Bay.generic.short=ET
+America/Thunder_Bay.standard.short=EST
+America/Tijuana.daylight.short=PDT
+America/Tijuana.generic.short=PT
+America/Tijuana.standard.short=PST
+America/Toronto.daylight.short=EDT
+America/Toronto.generic.short=ET
+America/Toronto.standard.short=EST
+America/Tortola.daylight.short=ADT
+America/Tortola.generic.short=AT
+America/Tortola.standard.short=AST
+America/Vancouver.daylight.short=PDT
+America/Vancouver.generic.short=PT
+America/Vancouver.standard.short=PST
+America/Virgin.daylight.short=ADT
+America/Virgin.generic.short=AT
+America/Virgin.standard.short=AST
+America/Whitehorse.daylight.short=PDT
+America/Whitehorse.generic.short=PT
+America/Whitehorse.standard.short=PST
+America/Winnipeg.daylight.short=CDT
+America/Winnipeg.generic.short=CT
+America/Winnipeg.standard.short=CST
+America/Yakutat.daylight.short=AKDT
+America/Yakutat.generic.short=AKT
+America/Yakutat.standard.short=AKST
+America/Yellowknife.daylight.short=MDT
+America/Yellowknife.generic.short=MT
+America/Yellowknife.standard.short=MST
+Antarctica/Casey.daylight.short=WST
+Antarctica/Casey.generic.short=WT
+Antarctica/Casey.standard.short=WST
+Antarctica/Davis.daylight.short=DAVST
+Antarctica/Davis.generic.short=DAVT
+Antarctica/Davis.standard.short=DAVT
+Antarctica/DumontDUrville.daylight.short=DDUST
+Antarctica/DumontDUrville.generic.short=DDUT
+Antarctica/DumontDUrville.standard.short=DDUT
+Antarctica/Macquarie.daylight.short=MIST
+Antarctica/Macquarie.generic.short=MIST
+Antarctica/Macquarie.standard.short=MIST
+Antarctica/Mawson.daylight.short=MAWST
+Antarctica/Mawson.generic.short=MAWT
+Antarctica/Mawson.standard.short=MAWT
+Antarctica/McMurdo.daylight.short=NZDT
+Antarctica/McMurdo.generic.short=NZT
+Antarctica/McMurdo.standard.short=NZST
+Antarctica/Palmer.daylight.short=CLST
+Antarctica/Palmer.generic.short=CLT
+Antarctica/Palmer.standard.short=CLT
+Antarctica/Rothera.daylight.short=ROTST
+Antarctica/Rothera.generic.short=ROTT
+Antarctica/Rothera.standard.short=ROTT
+Antarctica/South_Pole.daylight.short=NZDT
+Antarctica/South_Pole.generic.short=NZT
+Antarctica/South_Pole.standard.short=NZST
+Antarctica/Syowa.daylight.short=SYOST
+Antarctica/Syowa.generic.short=SYOT
+Antarctica/Syowa.standard.short=SYOT
+Antarctica/Vostok.daylight.short=VOSST
+Antarctica/Vostok.generic.short=VOST
+Antarctica/Vostok.standard.short=VOST
+Arctic/Longyearbyen.daylight.short=CEST
+Arctic/Longyearbyen.generic.short=CET
+Arctic/Longyearbyen.standard.short=CET
+ART.daylight.short=EEST
+ART.generic.short=EET
+ART.standard.short=EET
+Asia/Aden.daylight.short=ADT
+Asia/Aden.generic.short=AT
+Asia/Aden.standard.short=AST
+Asia/Almaty.daylight.short=ALMST
+Asia/Almaty.generic.short=ALMT
+Asia/Almaty.standard.short=ALMT
+Asia/Amman.daylight.short=ADT
+Asia/Amman.generic.short=AT
+Asia/Amman.standard.short=AST
+Asia/Anadyr.daylight.short=ANAST
+Asia/Anadyr.generic.short=ANAT
+Asia/Anadyr.standard.short=ANAT
+Asia/Aqtau.daylight.short=AQTST
+Asia/Aqtau.generic.short=AQTT
+Asia/Aqtau.standard.short=AQTT
+Asia/Aqtobe.daylight.short=AQTST
+Asia/Aqtobe.generic.short=AQTT
+Asia/Aqtobe.standard.short=AQTT
+Asia/Ashgabat.daylight.short=TMST
+Asia/Ashgabat.generic.short=TMT
+Asia/Ashgabat.standard.short=TMT
+Asia/Ashkhabad.daylight.short=TMST
+Asia/Ashkhabad.generic.short=TMT
+Asia/Ashkhabad.standard.short=TMT
+Asia/Baghdad.daylight.short=ADT
+Asia/Baghdad.generic.short=AT
+Asia/Baghdad.standard.short=AST
+Asia/Bahrain.daylight.short=ADT
+Asia/Bahrain.generic.short=AT
+Asia/Bahrain.standard.short=AST
+Asia/Baku.daylight.short=AZST
+Asia/Baku.generic.short=AZT
+Asia/Baku.standard.short=AZT
+Asia/Bangkok.daylight.short=ICST
+Asia/Bangkok.generic.short=ICT
+Asia/Bangkok.standard.short=ICT
+Asia/Beirut.daylight.short=EEST
+Asia/Beirut.generic.short=EET
+Asia/Beirut.standard.short=EET
+Asia/Bishkek.daylight.short=KGST
+Asia/Bishkek.generic.short=KGT
+Asia/Bishkek.standard.short=KGT
+Asia/Brunei.daylight.short=BNST
+Asia/Brunei.generic.short=BNT
+Asia/Brunei.standard.short=BNT
+Asia/Calcutta.daylight.short=IDT
+Asia/Calcutta.generic.short=IT
+Asia/Calcutta.standard.short=IST
+Asia/Choibalsan.daylight.short=CHOST
+Asia/Choibalsan.generic.short=CHOT
+Asia/Choibalsan.standard.short=CHOT
+Asia/Chongqing.daylight.short=CDT
+Asia/Chongqing.generic.short=CT
+Asia/Chongqing.standard.short=CST
+Asia/Chungking.daylight.short=CDT
+Asia/Chungking.generic.short=CT
+Asia/Chungking.standard.short=CST
+Asia/Colombo.daylight.short=IDT
+Asia/Colombo.generic.short=IT
+Asia/Colombo.standard.short=IST
+Asia/Dacca.daylight.short=BDST
+Asia/Dacca.generic.short=BDT
+Asia/Dacca.standard.short=BDT
+Asia/Damascus.daylight.short=EEST
+Asia/Damascus.generic.short=EET
+Asia/Damascus.standard.short=EET
+Asia/Dhaka.daylight.short=BDST
+Asia/Dhaka.generic.short=BDT
+Asia/Dhaka.standard.short=BDT
+Asia/Dili.daylight.short=TLST
+Asia/Dili.generic.short=TLT
+Asia/Dili.standard.short=TLT
+Asia/Dubai.daylight.short=GDT
+Asia/Dubai.generic.short=GT
+Asia/Dubai.standard.short=GST
+Asia/Dushanbe.daylight.short=TJST
+Asia/Dushanbe.generic.short=TJT
+Asia/Dushanbe.standard.short=TJT
+Asia/Gaza.daylight.short=EEST
+Asia/Gaza.generic.short=EET
+Asia/Gaza.standard.short=EET
+Asia/Harbin.daylight.short=CDT
+Asia/Harbin.generic.short=CT
+Asia/Harbin.standard.short=CST
+Asia/Hebron.daylight.short=EEST
+Asia/Hebron.generic.short=EET
+Asia/Hebron.standard.short=EET
+Asia/Ho_Chi_Minh.daylight.short=ICST
+Asia/Ho_Chi_Minh.generic.short=ICT
+Asia/Ho_Chi_Minh.standard.short=ICT
+Asia/Hong_Kong.daylight.short=HKST
+Asia/Hong_Kong.generic.short=HKT
+Asia/Hong_Kong.standard.short=HKT
+Asia/Hovd.daylight.short=HOVST
+Asia/Hovd.generic.short=HOVT
+Asia/Hovd.standard.short=HOVT
+Asia/Irkutsk.daylight.short=IRKST
+Asia/Irkutsk.generic.short=IRKT
+Asia/Irkutsk.standard.short=IRKT
+Asia/Istanbul.daylight.short=EEST
+Asia/Istanbul.generic.short=EET
+Asia/Istanbul.standard.short=EET
+Asia/Jakarta.daylight.short=WIST
+Asia/Jakarta.generic.short=WIB
+Asia/Jakarta.standard.short=WIB
+Asia/Jayapura.daylight.short=EIST
+Asia/Jayapura.generic.short=WIT
+Asia/Jayapura.standard.short=WIT
+Asia/Jerusalem.daylight.short=IDT
+Asia/Jerusalem.generic.short=IT
+Asia/Jerusalem.standard.short=IST
+Asia/Kabul.daylight.short=AFST
+Asia/Kabul.generic.short=AFT
+Asia/Kabul.standard.short=AFT
+Asia/Kamchatka.daylight.short=PETST
+Asia/Kamchatka.generic.short=PETT
+Asia/Kamchatka.standard.short=PETT
+Asia/Karachi.daylight.short=PKST
+Asia/Karachi.generic.short=PKT
+Asia/Karachi.standard.short=PKT
+Asia/Kashgar.daylight.short=CDT
+Asia/Kashgar.generic.short=CT
+Asia/Kashgar.standard.short=CST
+Asia/Kathmandu.daylight.short=NPST
+Asia/Kathmandu.generic.short=NPT
+Asia/Kathmandu.standard.short=NPT
+Asia/Katmandu.daylight.short=NPST
+Asia/Katmandu.generic.short=NPT
+Asia/Katmandu.standard.short=NPT
+Asia/Khandyga.daylight.short=YAKST
+Asia/Khandyga.generic.short=YAKT
+Asia/Khandyga.standard.short=YAKT
+Asia/Kolkata.daylight.short=IDT
+Asia/Kolkata.generic.short=IT
+Asia/Kolkata.standard.short=IST
+Asia/Krasnoyarsk.daylight.short=KRAST
+Asia/Krasnoyarsk.generic.short=KRAT
+Asia/Krasnoyarsk.standard.short=KRAT
+Asia/Kuala_Lumpur.daylight.short=MYST
+Asia/Kuala_Lumpur.generic.short=MYT
+Asia/Kuala_Lumpur.standard.short=MYT
+Asia/Kuching.daylight.short=MYST
+Asia/Kuching.generic.short=MYT
+Asia/Kuching.standard.short=MYT
+Asia/Kuwait.daylight.short=ADT
+Asia/Kuwait.generic.short=AT
+Asia/Kuwait.standard.short=AST
+Asia/Macao.daylight.short=CDT
+Asia/Macao.generic.short=CT
+Asia/Macao.standard.short=CST
+Asia/Macau.daylight.short=CDT
+Asia/Macau.generic.short=CT
+Asia/Macau.standard.short=CST
+Asia/Magadan.daylight.short=MAGST
+Asia/Magadan.generic.short=MAGT
+Asia/Magadan.standard.short=MAGT
+Asia/Makassar.daylight.short=CIST
+Asia/Makassar.generic.short=WITA
+Asia/Makassar.standard.short=WITA
+Asia/Manila.daylight.short=PHST
+Asia/Manila.generic.short=PHT
+Asia/Manila.standard.short=PHT
+Asia/Muscat.daylight.short=GDT
+Asia/Muscat.generic.short=GT
+Asia/Muscat.standard.short=GST
+Asia/Nicosia.daylight.short=EEST
+Asia/Nicosia.generic.short=EET
+Asia/Nicosia.standard.short=EET
+Asia/Novokuznetsk.daylight.short=NOVST
+Asia/Novokuznetsk.generic.short=NOVT
+Asia/Novokuznetsk.standard.short=NOVT
+Asia/Novosibirsk.daylight.short=NOVST
+Asia/Novosibirsk.generic.short=NOVT
+Asia/Novosibirsk.standard.short=NOVT
+Asia/Omsk.daylight.short=OMSST
+Asia/Omsk.generic.short=OMST
+Asia/Omsk.standard.short=OMST
+Asia/Oral.daylight.short=ORAST
+Asia/Oral.generic.short=ORAT
+Asia/Oral.standard.short=ORAT
+Asia/Phnom_Penh.daylight.short=ICST
+Asia/Phnom_Penh.generic.short=ICT
+Asia/Phnom_Penh.standard.short=ICT
+Asia/Pontianak.daylight.short=WIST
+Asia/Pontianak.generic.short=WIB
+Asia/Pontianak.standard.short=WIB
+Asia/Pyongyang.daylight.short=KDT
+Asia/Pyongyang.generic.short=KT
+Asia/Pyongyang.standard.short=KST
+Asia/Qatar.daylight.short=ADT
+Asia/Qatar.generic.short=AT
+Asia/Qatar.standard.short=AST
+Asia/Qyzylorda.daylight.short=QYZST
+Asia/Qyzylorda.generic.short=QYZT
+Asia/Qyzylorda.standard.short=QYZT
+Asia/Rangoon.daylight.short=MMST
+Asia/Rangoon.generic.short=MMT
+Asia/Rangoon.standard.short=MMT
+Asia/Saigon.daylight.short=ICST
+Asia/Saigon.generic.short=ICT
+Asia/Saigon.standard.short=ICT
+Asia/Sakhalin.daylight.short=SAKST
+Asia/Sakhalin.generic.short=SAKT
+Asia/Sakhalin.standard.short=SAKT
+Asia/Samarkand.daylight.short=UZST
+Asia/Samarkand.generic.short=UZT
+Asia/Samarkand.standard.short=UZT
+Asia/Seoul.daylight.short=KDT
+Asia/Seoul.generic.short=KT
+Asia/Seoul.standard.short=KST
+Asia/Shanghai.daylight.short=CDT
+Asia/Shanghai.generic.short=CT
+Asia/Shanghai.standard.short=CST
+Asia/Singapore.daylight.short=SGST
+Asia/Singapore.generic.short=SGT
+Asia/Singapore.standard.short=SGT
+Asia/Taipei.daylight.short=CDT
+Asia/Taipei.generic.short=CT
+Asia/Taipei.standard.short=CST
+Asia/Tashkent.daylight.short=UZST
+Asia/Tashkent.generic.short=UZT
+Asia/Tashkent.standard.short=UZT
+Asia/Tbilisi.daylight.short=GEST
+Asia/Tbilisi.generic.short=GET
+Asia/Tbilisi.standard.short=GET
+Asia/Tehran.daylight.short=IRDT
+Asia/Tehran.generic.short=IRT
+Asia/Tehran.standard.short=IRST
+Asia/Tel_Aviv.daylight.short=IDT
+Asia/Tel_Aviv.generic.short=IT
+Asia/Tel_Aviv.standard.short=IST
+Asia/Thimbu.daylight.short=BTST
+Asia/Thimbu.generic.short=BTT
+Asia/Thimbu.standard.short=BTT
+Asia/Thimphu.daylight.short=BTST
+Asia/Thimphu.generic.short=BTT
+Asia/Thimphu.standard.short=BTT
+Asia/Tokyo.daylight.short=JDT
+Asia/Tokyo.generic.short=JT
+Asia/Tokyo.standard.short=JST
+Asia/Ujung_Pandang.daylight.short=CIST
+Asia/Ujung_Pandang.generic.short=WITA
+Asia/Ujung_Pandang.standard.short=WITA
+Asia/Ulaanbaatar.daylight.short=ULAST
+Asia/Ulaanbaatar.generic.short=ULAT
+Asia/Ulaanbaatar.standard.short=ULAT
+Asia/Ulan_Bator.daylight.short=ULAST
+Asia/Ulan_Bator.generic.short=ULAT
+Asia/Ulan_Bator.standard.short=ULAT
+Asia/Urumqi.daylight.short=CDT
+Asia/Urumqi.generic.short=CT
+Asia/Urumqi.standard.short=CST
+Asia/Ust-Nera.daylight.short=VLAST
+Asia/Ust-Nera.generic.short=VLAT
+Asia/Ust-Nera.standard.short=VLAT
+Asia/Vientiane.daylight.short=ICST
+Asia/Vientiane.generic.short=ICT
+Asia/Vientiane.standard.short=ICT
+Asia/Vladivostok.daylight.short=VLAST
+Asia/Vladivostok.generic.short=VLAT
+Asia/Vladivostok.standard.short=VLAT
+Asia/Yakutsk.daylight.short=YAKST
+Asia/Yakutsk.generic.short=YAKT
+Asia/Yakutsk.standard.short=YAKT
+Asia/Yekaterinburg.daylight.short=YEKST
+Asia/Yekaterinburg.generic.short=YEKT
+Asia/Yekaterinburg.standard.short=YEKT
+Asia/Yerevan.daylight.short=AMST
+Asia/Yerevan.generic.short=AMT
+Asia/Yerevan.standard.short=AMT
+AST.daylight.short=AKDT
+AST.generic.short=AKT
+AST.standard.short=AKST
+Atlantic/Azores.daylight.short=AZOST
+Atlantic/Azores.generic.short=AZOT
+Atlantic/Azores.standard.short=AZOT
+Atlantic/Bermuda.daylight.short=ADT
+Atlantic/Bermuda.generic.short=AT
+Atlantic/Bermuda.standard.short=AST
+Atlantic/Canary.daylight.short=WEST
+Atlantic/Canary.generic.short=WET
+Atlantic/Canary.standard.short=WET
+Atlantic/Cape_Verde.daylight.short=CVST
+Atlantic/Cape_Verde.generic.short=CVT
+Atlantic/Cape_Verde.standard.short=CVT
+Atlantic/Faeroe.daylight.short=WEST
+Atlantic/Faeroe.generic.short=WET
+Atlantic/Faeroe.standard.short=WET
+Atlantic/Faroe.daylight.short=WEST
+Atlantic/Faroe.generic.short=WET
+Atlantic/Faroe.standard.short=WET
+Atlantic/Jan_Mayen.daylight.short=CEST
+Atlantic/Jan_Mayen.generic.short=CET
+Atlantic/Jan_Mayen.standard.short=CET
+Atlantic/Madeira.daylight.short=WEST
+Atlantic/Madeira.generic.short=WET
+Atlantic/Madeira.standard.short=WET
+Atlantic/Reykjavik.daylight.short=GMT
+Atlantic/Reykjavik.generic.short=GMT
+Atlantic/Reykjavik.standard.short=GMT
+Atlantic/South_Georgia.daylight.short=GDT
+Atlantic/South_Georgia.generic.short=GT
+Atlantic/South_Georgia.standard.short=GST
+Atlantic/Stanley.daylight.short=FKST
+Atlantic/Stanley.generic.short=FKT
+Atlantic/Stanley.standard.short=FKT
+Atlantic/St_Helena.daylight.short=GMT
+Atlantic/St_Helena.generic.short=GMT
+Atlantic/St_Helena.standard.short=GMT
+Australia/ACT.daylight.short=EST
+Australia/ACT.generic.short=ET
+Australia/ACT.standard.short=EST
+Australia/Adelaide.daylight.short=CST
+Australia/Adelaide.generic.short=CT
+Australia/Adelaide.standard.short=CST
+Australia/Brisbane.daylight.short=EST
+Australia/Brisbane.generic.short=ET
+Australia/Brisbane.standard.short=EST
+Australia/Broken_Hill.daylight.short=CST
+Australia/Broken_Hill.generic.short=CT
+Australia/Broken_Hill.standard.short=CST
+Australia/Canberra.daylight.short=EST
+Australia/Canberra.generic.short=ET
+Australia/Canberra.standard.short=EST
+Australia/Currie.daylight.short=EST
+Australia/Currie.generic.short=ET
+Australia/Currie.standard.short=EST
+Australia/Darwin.daylight.short=CST
+Australia/Darwin.generic.short=CT
+Australia/Darwin.standard.short=CST
+Australia/Eucla.daylight.short=CWST
+Australia/Eucla.generic.short=CWT
+Australia/Eucla.standard.short=CWST
+Australia/Hobart.daylight.short=EST
+Australia/Hobart.generic.short=ET
+Australia/Hobart.standard.short=EST
+Australia/LHI.daylight.short=LHST
+Australia/LHI.generic.short=LHT
+Australia/LHI.standard.short=LHST
+Australia/Lindeman.daylight.short=EST
+Australia/Lindeman.generic.short=ET
+Australia/Lindeman.standard.short=EST
+Australia/Lord_Howe.daylight.short=LHST
+Australia/Lord_Howe.generic.short=LHT
+Australia/Lord_Howe.standard.short=LHST
+Australia/Melbourne.daylight.short=EST
+Australia/Melbourne.generic.short=ET
+Australia/Melbourne.standard.short=EST
+Australia/North.daylight.short=CST
+Australia/North.generic.short=CT
+Australia/North.standard.short=CST
+Australia/NSW.daylight.short=EST
+Australia/NSW.generic.short=ET
+Australia/NSW.standard.short=EST
+Australia/Perth.daylight.short=WST
+Australia/Perth.generic.short=WT
+Australia/Perth.standard.short=WST
+Australia/Queensland.daylight.short=EST
+Australia/Queensland.generic.short=ET
+Australia/Queensland.standard.short=EST
+Australia/South.daylight.short=CST
+Australia/South.generic.short=CT
+Australia/South.standard.short=CST
+Australia/Sydney.daylight.short=EST
+Australia/Sydney.generic.short=ET
+Australia/Sydney.standard.short=EST
+Australia/Tasmania.daylight.short=EST
+Australia/Tasmania.generic.short=ET
+Australia/Tasmania.standard.short=EST
+Australia/Victoria.daylight.short=EST
+Australia/Victoria.generic.short=ET
+Australia/Victoria.standard.short=EST
+Australia/West.daylight.short=WST
+Australia/West.generic.short=WT
+Australia/West.standard.short=WST
+Australia/Yancowinna.daylight.short=CST
+Australia/Yancowinna.generic.short=CT
+Australia/Yancowinna.standard.short=CST
+BET.daylight.short=BRST
+BET.generic.short=BRT
+BET.standard.short=BRT
+Brazil/Acre.daylight.short=ACST
+Brazil/Acre.generic.short=ACT
+Brazil/Acre.standard.short=ACT
+Brazil/DeNoronha.daylight.short=FNST
+Brazil/DeNoronha.generic.short=FNT
+Brazil/DeNoronha.standard.short=FNT
+Brazil/East.daylight.short=BRST
+Brazil/East.generic.short=BRT
+Brazil/East.standard.short=BRT
+Brazil/West.daylight.short=AMST
+Brazil/West.generic.short=AMT
+Brazil/West.standard.short=AMT
+BST.daylight.short=BDST
+BST.generic.short=BDT
+BST.standard.short=BDT
+Canada/Atlantic.daylight.short=ADT
+Canada/Atlantic.generic.short=AT
+Canada/Atlantic.standard.short=AST
+Canada/Central.daylight.short=CDT
+Canada/Central.generic.short=CT
+Canada/Central.standard.short=CST
+Canada/Eastern.daylight.short=EDT
+Canada/Eastern.generic.short=ET
+Canada/Eastern.standard.short=EST
+Canada/East-Saskatchewan.daylight.short=CDT
+Canada/East-Saskatchewan.generic.short=CT
+Canada/East-Saskatchewan.standard.short=CST
+Canada/Mountain.daylight.short=MDT
+Canada/Mountain.generic.short=MT
+Canada/Mountain.standard.short=MST
+Canada/Newfoundland.daylight.short=NDT
+Canada/Newfoundland.generic.short=NT
+Canada/Newfoundland.standard.short=NST
+Canada/Pacific.daylight.short=PDT
+Canada/Pacific.generic.short=PT
+Canada/Pacific.standard.short=PST
+Canada/Saskatchewan.daylight.short=CDT
+Canada/Saskatchewan.generic.short=CT
+Canada/Saskatchewan.standard.short=CST
+Canada/Yukon.daylight.short=PDT
+Canada/Yukon.generic.short=PT
+Canada/Yukon.standard.short=PST
+CAT.daylight.short=CAST
+CAT.generic.short=CAT
+CAT.standard.short=CAT
+CET.daylight.short=CEST
+CET.generic.short=CET
+CET.standard.short=CET
+Chile/Continental.daylight.short=CLST
+Chile/Continental.generic.short=CLT
+Chile/Continental.standard.short=CLT
+Chile/EasterIsland.daylight.short=EASST
+Chile/EasterIsland.generic.short=EAST
+Chile/EasterIsland.standard.short=EAST
+CNT.daylight.short=NDT
+CNT.generic.short=NT
+CNT.standard.short=NST
+CST6CDT.daylight.short=CDT
+CST6CDT.generic.short=CT
+CST6CDT.standard.short=CST
+CST.daylight.short=CDT
+CST.generic.short=CT
+CST.standard.short=CST
+CTT.daylight.short=CDT
+CTT.generic.short=CT
+CTT.standard.short=CST
+Cuba.daylight.short=CDT
+Cuba.generic.short=CT
+Cuba.standard.short=CST
+EAT.daylight.short=EAST
+EAT.generic.short=EAT
+EAT.standard.short=EAT
+ECT.daylight.short=CEST
+ECT.generic.short=CET
+ECT.standard.short=CET
+EET.daylight.short=EEST
+EET.generic.short=EET
+EET.standard.short=EET
+Egypt.daylight.short=EEST
+Egypt.generic.short=EET
+Egypt.standard.short=EET
+Eire.daylight.short=IST
+Eire.generic.short=IT
+Eire.standard.short=GMT
+EST5EDT.daylight.short=EDT
+EST5EDT.generic.short=ET
+EST5EDT.standard.short=EST
+EST.daylight.short=EDT
+EST.generic.short=ET
+EST.standard.short=EST
+Etc/Greenwich.daylight.short=GMT
+Etc/Greenwich.generic.short=GMT
+Etc/Greenwich.standard.short=GMT
+Etc/UCT.daylight.short=UTC
+Etc/UCT.generic.short=UTC
+Etc/UCT.standard.short=UTC
+Etc/Universal.daylight.short=UTC
+Etc/Universal.generic.short=UTC
+Etc/Universal.standard.short=UTC
+Etc/UTC.daylight.short=UTC
+Etc/UTC.generic.short=UTC
+Etc/UTC.standard.short=UTC
+Etc/Zulu.daylight.short=UTC
+Etc/Zulu.generic.short=UTC
+Etc/Zulu.standard.short=UTC
+Europe/Amsterdam.daylight.short=CEST
+Europe/Amsterdam.generic.short=CET
+Europe/Amsterdam.standard.short=CET
+Europe/Andorra.daylight.short=CEST
+Europe/Andorra.generic.short=CET
+Europe/Andorra.standard.short=CET
+Europe/Athens.daylight.short=EEST
+Europe/Athens.generic.short=EET
+Europe/Athens.standard.short=EET
+Europe/Belfast.daylight.short=BST
+Europe/Belfast.generic.short=BT
+Europe/Belfast.standard.short=GMT
+Europe/Belgrade.daylight.short=CEST
+Europe/Belgrade.generic.short=CET
+Europe/Belgrade.standard.short=CET
+Europe/Berlin.daylight.short=CEST
+Europe/Berlin.generic.short=CET
+Europe/Berlin.standard.short=CET
+Europe/Bratislava.daylight.short=CEST
+Europe/Bratislava.generic.short=CET
+Europe/Bratislava.standard.short=CET
+Europe/Brussels.daylight.short=CEST
+Europe/Brussels.generic.short=CET
+Europe/Brussels.standard.short=CET
+Europe/Bucharest.daylight.short=EEST
+Europe/Bucharest.generic.short=EET
+Europe/Bucharest.standard.short=EET
+Europe/Budapest.daylight.short=CEST
+Europe/Budapest.generic.short=CET
+Europe/Budapest.standard.short=CET
+Europe/Busingen.daylight.short=CEST
+Europe/Busingen.generic.short=CET
+Europe/Busingen.standard.short=CET
+Europe/Chisinau.daylight.short=EEST
+Europe/Chisinau.generic.short=EET
+Europe/Chisinau.standard.short=EET
+Europe/Copenhagen.daylight.short=CEST
+Europe/Copenhagen.generic.short=CET
+Europe/Copenhagen.standard.short=CET
+Europe/Dublin.daylight.short=IST
+Europe/Dublin.generic.short=IT
+Europe/Dublin.standard.short=GMT
+Europe/Gibraltar.daylight.short=CEST
+Europe/Gibraltar.generic.short=CET
+Europe/Gibraltar.standard.short=CET
+Europe/Guernsey.daylight.short=BST
+Europe/Guernsey.generic.short=BT
+Europe/Guernsey.standard.short=GMT
+Europe/Helsinki.daylight.short=EEST
+Europe/Helsinki.generic.short=EET
+Europe/Helsinki.standard.short=EET
+Europe/Isle_of_Man.daylight.short=BST
+Europe/Isle_of_Man.generic.short=BT
+Europe/Isle_of_Man.standard.short=GMT
+Europe/Istanbul.daylight.short=EEST
+Europe/Istanbul.generic.short=EET
+Europe/Istanbul.standard.short=EET
+Europe/Jersey.daylight.short=BST
+Europe/Jersey.generic.short=BT
+Europe/Jersey.standard.short=GMT
+Europe/Kaliningrad.daylight.short=FEST
+Europe/Kaliningrad.generic.short=FET
+Europe/Kaliningrad.standard.short=FET
+Europe/Kiev.daylight.short=EEST
+Europe/Kiev.generic.short=EET
+Europe/Kiev.standard.short=EET
+Europe/Lisbon.daylight.short=WEST
+Europe/Lisbon.generic.short=WET
+Europe/Lisbon.standard.short=WET
+Europe/Ljubljana.daylight.short=CEST
+Europe/Ljubljana.generic.short=CET
+Europe/Ljubljana.standard.short=CET
+Europe/London.daylight.short=BST
+Europe/London.generic.short=BT
+Europe/London.standard.short=GMT
+Europe/Luxembourg.daylight.short=CEST
+Europe/Luxembourg.generic.short=CET
+Europe/Luxembourg.standard.short=CET
+Europe/Madrid.daylight.short=CEST
+Europe/Madrid.generic.short=CET
+Europe/Madrid.standard.short=CET
+Europe/Malta.daylight.short=CEST
+Europe/Malta.generic.short=CET
+Europe/Malta.standard.short=CET
+Europe/Mariehamn.daylight.short=EEST
+Europe/Mariehamn.generic.short=EET
+Europe/Mariehamn.standard.short=EET
+Europe/Minsk.daylight.short=FEST
+Europe/Minsk.generic.short=FET
+Europe/Minsk.standard.short=FET
+Europe/Monaco.daylight.short=CEST
+Europe/Monaco.generic.short=CET
+Europe/Monaco.standard.short=CET
+Europe/Moscow.daylight.short=MSD
+Europe/Moscow.generic.short=MT
+Europe/Moscow.standard.short=MSK
+Europe/Nicosia.daylight.short=EEST
+Europe/Nicosia.generic.short=EET
+Europe/Nicosia.standard.short=EET
+Europe/Oslo.daylight.short=CEST
+Europe/Oslo.generic.short=CET
+Europe/Oslo.standard.short=CET
+Europe/Paris.daylight.short=CEST
+Europe/Paris.generic.short=CET
+Europe/Paris.standard.short=CET
+Europe/Podgorica.daylight.short=CEST
+Europe/Podgorica.generic.short=CET
+Europe/Podgorica.standard.short=CET
+Europe/Prague.daylight.short=CEST
+Europe/Prague.generic.short=CET
+Europe/Prague.standard.short=CET
+Europe/Riga.daylight.short=EEST
+Europe/Riga.generic.short=EET
+Europe/Riga.standard.short=EET
+Europe/Rome.daylight.short=CEST
+Europe/Rome.generic.short=CET
+Europe/Rome.standard.short=CET
+Europe/Samara.daylight.short=SAMST
+Europe/Samara.generic.short=SAMT
+Europe/Samara.standard.short=SAMT
+Europe/San_Marino.daylight.short=CEST
+Europe/San_Marino.generic.short=CET
+Europe/San_Marino.standard.short=CET
+Europe/Sarajevo.daylight.short=CEST
+Europe/Sarajevo.generic.short=CET
+Europe/Sarajevo.standard.short=CET
+Europe/Simferopol.daylight.short=EEST
+Europe/Simferopol.generic.short=EET
+Europe/Simferopol.standard.short=EET
+Europe/Skopje.daylight.short=CEST
+Europe/Skopje.generic.short=CET
+Europe/Skopje.standard.short=CET
+Europe/Sofia.daylight.short=EEST
+Europe/Sofia.generic.short=EET
+Europe/Sofia.standard.short=EET
+Europe/Stockholm.daylight.short=CEST
+Europe/Stockholm.generic.short=CET
+Europe/Stockholm.standard.short=CET
+Europe/Tallinn.daylight.short=EEST
+Europe/Tallinn.generic.short=EET
+Europe/Tallinn.standard.short=EET
+Europe/Tirane.daylight.short=CEST
+Europe/Tirane.generic.short=CET
+Europe/Tirane.standard.short=CET
+Europe/Tiraspol.daylight.short=EEST
+Europe/Tiraspol.generic.short=EET
+Europe/Tiraspol.standard.short=EET
+Europe/Uzhgorod.daylight.short=EEST
+Europe/Uzhgorod.generic.short=EET
+Europe/Uzhgorod.standard.short=EET
+Europe/Vaduz.daylight.short=CEST
+Europe/Vaduz.generic.short=CET
+Europe/Vaduz.standard.short=CET
+Europe/Vatican.daylight.short=CEST
+Europe/Vatican.generic.short=CET
+Europe/Vatican.standard.short=CET
+Europe/Vienna.daylight.short=CEST
+Europe/Vienna.generic.short=CET
+Europe/Vienna.standard.short=CET
+Europe/Vilnius.daylight.short=EEST
+Europe/Vilnius.generic.short=EET
+Europe/Vilnius.standard.short=EET
+Europe/Volgograd.daylight.short=VOLST
+Europe/Volgograd.generic.short=VOLT
+Europe/Volgograd.standard.short=VOLT
+Europe/Warsaw.daylight.short=CEST
+Europe/Warsaw.generic.short=CET
+Europe/Warsaw.standard.short=CET
+Europe/Zagreb.daylight.short=CEST
+Europe/Zagreb.generic.short=CET
+Europe/Zagreb.standard.short=CET
+Europe/Zaporozhye.daylight.short=EEST
+Europe/Zaporozhye.generic.short=EET
+Europe/Zaporozhye.standard.short=EET
+Europe/Zurich.daylight.short=CEST
+Europe/Zurich.generic.short=CET
+Europe/Zurich.standard.short=CET
+GB.daylight.short=BST
+GB-Eire.daylight.short=BST
+GB-Eire.generic.short=BT
+GB-Eire.standard.short=GMT
+GB.generic.short=BT
+GB.standard.short=GMT
+GMT.daylight.short=GMT
+GMT.generic.short=GMT
+GMT.standard.short=GMT
+Greenwich.daylight.short=GMT
+Greenwich.generic.short=GMT
+Greenwich.standard.short=GMT
+Hongkong.daylight.short=HKST
+Hongkong.generic.short=HKT
+Hongkong.standard.short=HKT
+HST.daylight.short=HDT
+HST.generic.short=HT
+HST.standard.short=HST
+Iceland.daylight.short=GMT
+Iceland.generic.short=GMT
+Iceland.standard.short=GMT
+IET.daylight.short=EDT
+IET.generic.short=ET
+IET.standard.short=EST
+Indian/Antananarivo.daylight.short=EAST
+Indian/Antananarivo.generic.short=EAT
+Indian/Antananarivo.standard.short=EAT
+Indian/Chagos.daylight.short=IOST
+Indian/Chagos.generic.short=IOT
+Indian/Chagos.standard.short=IOT
+Indian/Christmas.daylight.short=CXST
+Indian/Christmas.generic.short=CIT
+Indian/Christmas.standard.short=CXT
+Indian/Cocos.daylight.short=CCST
+Indian/Cocos.generic.short=CCT
+Indian/Cocos.standard.short=CCT
+Indian/Comoro.daylight.short=EAST
+Indian/Comoro.generic.short=EAT
+Indian/Comoro.standard.short=EAT
+Indian/Kerguelen.daylight.short=TFST
+Indian/Kerguelen.generic.short=TFT
+Indian/Kerguelen.standard.short=TFT
+Indian/Mahe.daylight.short=SCST
+Indian/Mahe.generic.short=SCT
+Indian/Mahe.standard.short=SCT
+Indian/Maldives.daylight.short=MVST
+Indian/Maldives.generic.short=MVT
+Indian/Maldives.standard.short=MVT
+Indian/Mauritius.daylight.short=MUST
+Indian/Mauritius.generic.short=MUT
+Indian/Mauritius.standard.short=MUT
+Indian/Mayotte.daylight.short=EAST
+Indian/Mayotte.generic.short=EAT
+Indian/Mayotte.standard.short=EAT
+Indian/Reunion.daylight.short=REST
+Indian/Reunion.generic.short=RET
+Indian/Reunion.standard.short=RET
+Iran.daylight.short=IRDT
+Iran.generic.short=IRT
+Iran.standard.short=IRST
+Israel.daylight.short=IDT
+Israel.generic.short=IT
+Israel.standard.short=IST
+IST.daylight.short=IDT
+IST.generic.short=IT
+IST.standard.short=IST
+Jamaica.daylight.short=EDT
+Jamaica.generic.short=ET
+Jamaica.standard.short=EST
+Japan.daylight.short=JDT
+Japan.generic.short=JT
+Japan.standard.short=JST
+JST.daylight.short=JDT
+JST.generic.short=JT
+JST.standard.short=JST
+Kwajalein.daylight.short=MHST
+Kwajalein.generic.short=MHT
+Kwajalein.standard.short=MHT
+Libya.daylight.short=EEST
+Libya.generic.short=EET
+Libya.standard.short=EET
+MET.daylight.short=MEST
+MET.generic.short=MET
+MET.standard.short=MET
+Mexico/BajaNorte.daylight.short=PDT
+Mexico/BajaNorte.generic.short=PT
+Mexico/BajaNorte.standard.short=PST
+Mexico/BajaSur.daylight.short=MDT
+Mexico/BajaSur.generic.short=MT
+Mexico/BajaSur.standard.short=MST
+Mexico/General.daylight.short=CDT
+Mexico/General.generic.short=CT
+Mexico/General.standard.short=CST
+MIT.daylight.short=WSDT
+MIT.generic.short=WST
+MIT.standard.short=WST
+MST7MDT.daylight.short=MDT
+MST7MDT.generic.short=MT
+MST7MDT.standard.short=MST
+MST.daylight.short=MDT
+MST.generic.short=MT
+MST.standard.short=MST
+Navajo.daylight.short=MDT
+Navajo.generic.short=MT
+Navajo.standard.short=MST
+NET.daylight.short=AMST
+NET.generic.short=AMT
+NET.standard.short=AMT
+NST.daylight.short=NZDT
+NST.generic.short=NZT
+NST.standard.short=NZST
+NZ-CHAT.daylight.short=CHADT
+NZ-CHAT.generic.short=CHAT
+NZ-CHAT.standard.short=CHAST
+NZ.daylight.short=NZDT
+NZ.generic.short=NZT
+NZ.standard.short=NZST
+Pacific/Apia.daylight.short=WSDT
+Pacific/Apia.generic.short=WST
+Pacific/Apia.standard.short=WST
+Pacific/Auckland.daylight.short=NZDT
+Pacific/Auckland.generic.short=NZT
+Pacific/Auckland.standard.short=NZST
+Pacific/Chatham.daylight.short=CHADT
+Pacific/Chatham.generic.short=CHAT
+Pacific/Chatham.standard.short=CHAST
+Pacific/Chuuk.daylight.short=CHUST
+Pacific/Chuuk.generic.short=CHUT
+Pacific/Chuuk.standard.short=CHUT
+Pacific/Easter.daylight.short=EASST
+Pacific/Easter.generic.short=EAST
+Pacific/Easter.standard.short=EAST
+Pacific/Efate.daylight.short=VUST
+Pacific/Efate.generic.short=VUT
+Pacific/Efate.standard.short=VUT
+Pacific/Enderbury.daylight.short=PHOST
+Pacific/Enderbury.generic.short=PHOT
+Pacific/Enderbury.standard.short=PHOT
+Pacific/Fakaofo.daylight.short=TKST
+Pacific/Fakaofo.generic.short=TKT
+Pacific/Fakaofo.standard.short=TKT
+Pacific/Fiji.daylight.short=FJST
+Pacific/Fiji.generic.short=FJT
+Pacific/Fiji.standard.short=FJT
+Pacific/Funafuti.daylight.short=TVST
+Pacific/Funafuti.generic.short=TVT
+Pacific/Funafuti.standard.short=TVT
+Pacific/Galapagos.daylight.short=GALST
+Pacific/Galapagos.generic.short=GALT
+Pacific/Galapagos.standard.short=GALT
+Pacific/Gambier.daylight.short=GAMST
+Pacific/Gambier.generic.short=GAMT
+Pacific/Gambier.standard.short=GAMT
+Pacific/Guadalcanal.daylight.short=SBST
+Pacific/Guadalcanal.generic.short=SBT
+Pacific/Guadalcanal.standard.short=SBT
+Pacific/Guam.daylight.short=ChDT
+Pacific/Guam.generic.short=ChT
+Pacific/Guam.standard.short=ChST
+Pacific/Honolulu.daylight.short=HDT
+Pacific/Honolulu.generic.short=HT
+Pacific/Honolulu.standard.short=HST
+Pacific/Johnston.daylight.short=HDT
+Pacific/Johnston.generic.short=HT
+Pacific/Johnston.standard.short=HST
+Pacific/Kiritimati.daylight.short=LINST
+Pacific/Kiritimati.generic.short=LINT
+Pacific/Kiritimati.standard.short=LINT
+Pacific/Kosrae.daylight.short=KOSST
+Pacific/Kosrae.generic.short=KOST
+Pacific/Kosrae.standard.short=KOST
+Pacific/Kwajalein.daylight.short=MHST
+Pacific/Kwajalein.generic.short=MHT
+Pacific/Kwajalein.standard.short=MHT
+Pacific/Majuro.daylight.short=MHST
+Pacific/Majuro.generic.short=MHT
+Pacific/Majuro.standard.short=MHT
+Pacific/Marquesas.daylight.short=MARST
+Pacific/Marquesas.generic.short=MART
+Pacific/Marquesas.standard.short=MART
+Pacific/Midway.daylight.short=SDT
+Pacific/Midway.generic.short=ST
+Pacific/Midway.standard.short=SST
+Pacific/Nauru.daylight.short=NRST
+Pacific/Nauru.generic.short=NRT
+Pacific/Nauru.standard.short=NRT
+Pacific/Niue.daylight.short=NUST
+Pacific/Niue.generic.short=NUT
+Pacific/Niue.standard.short=NUT
+Pacific/Norfolk.daylight.short=NFST
+Pacific/Norfolk.generic.short=NFT
+Pacific/Norfolk.standard.short=NFT
+Pacific/Noumea.daylight.short=NCST
+Pacific/Noumea.generic.short=NCT
+Pacific/Noumea.standard.short=NCT
+Pacific/Pago_Pago.daylight.short=SDT
+Pacific/Pago_Pago.generic.short=ST
+Pacific/Pago_Pago.standard.short=SST
+Pacific/Palau.daylight.short=PWST
+Pacific/Palau.generic.short=PWT
+Pacific/Palau.standard.short=PWT
+Pacific/Pitcairn.daylight.short=PDT
+Pacific/Pitcairn.generic.short=PT
+Pacific/Pitcairn.standard.short=PST
+Pacific/Pohnpei.daylight.short=PONST
+Pacific/Pohnpei.generic.short=PONT
+Pacific/Pohnpei.standard.short=PONT
+Pacific/Ponape.daylight.short=PONST
+Pacific/Ponape.generic.short=PONT
+Pacific/Ponape.standard.short=PONT
+Pacific/Port_Moresby.daylight.short=PGST
+Pacific/Port_Moresby.generic.short=PGT
+Pacific/Port_Moresby.standard.short=PGT
+Pacific/Rarotonga.daylight.short=CKHST
+Pacific/Rarotonga.generic.short=CKT
+Pacific/Rarotonga.standard.short=CKT
+Pacific/Saipan.daylight.short=ChDT
+Pacific/Saipan.generic.short=ChT
+Pacific/Saipan.standard.short=ChST
+Pacific/Samoa.daylight.short=SDT
+Pacific/Samoa.generic.short=ST
+Pacific/Samoa.standard.short=SST
+Pacific/Tahiti.daylight.short=TAHST
+Pacific/Tahiti.generic.short=TAHT
+Pacific/Tahiti.standard.short=TAHT
+Pacific/Tarawa.daylight.short=GILST
+Pacific/Tarawa.generic.short=GILT
+Pacific/Tarawa.standard.short=GILT
+Pacific/Tongatapu.daylight.short=TOST
+Pacific/Tongatapu.generic.short=TOT
+Pacific/Tongatapu.standard.short=TOT
+Pacific/Truk.daylight.short=CHUST
+Pacific/Truk.generic.short=CHUT
+Pacific/Truk.standard.short=CHUT
+Pacific/Wake.daylight.short=WAKST
+Pacific/Wake.generic.short=WAKT
+Pacific/Wake.standard.short=WAKT
+Pacific/Wallis.daylight.short=WFST
+Pacific/Wallis.generic.short=WFT
+Pacific/Wallis.standard.short=WFT
+Pacific/Yap.daylight.short=CHUST
+Pacific/Yap.generic.short=CHUT
+Pacific/Yap.standard.short=CHUT
+PLT.daylight.short=PKST
+PLT.generic.short=PKT
+PLT.standard.short=PKT
+PNT.daylight.short=MDT
+PNT.generic.short=MT
+PNT.standard.short=MST
+Poland.daylight.short=CEST
+Poland.generic.short=CET
+Poland.standard.short=CET
+Portugal.daylight.short=WEST
+Portugal.generic.short=WET
+Portugal.standard.short=WET
+PRC.daylight.short=CDT
+PRC.generic.short=CT
+PRC.standard.short=CST
+PRT.daylight.short=ADT
+PRT.generic.short=AT
+PRT.standard.short=AST
+PST8PDT.daylight.short=PDT
+PST8PDT.generic.short=PT
+PST8PDT.standard.short=PST
+PST.daylight.short=PDT
+PST.generic.short=PT
+PST.standard.short=PST
+ROK.daylight.short=KDT
+ROK.generic.short=KT
+ROK.standard.short=KST
+Singapore.daylight.short=SGST
+Singapore.generic.short=SGT
+Singapore.standard.short=SGT
+SST.daylight.short=SBST
+SST.generic.short=SBT
+SST.standard.short=SBT
+SystemV/AST4ADT.daylight.short=ADT
+SystemV/AST4ADT.generic.short=AT
+SystemV/AST4ADT.standard.short=AST
+SystemV/AST4.daylight.short=ADT
+SystemV/AST4.generic.short=AT
+SystemV/AST4.standard.short=AST
+SystemV/CST6CDT.daylight.short=CDT
+SystemV/CST6CDT.generic.short=CT
+SystemV/CST6CDT.standard.short=CST
+SystemV/CST6.daylight.short=CDT
+SystemV/CST6.generic.short=CT
+SystemV/CST6.standard.short=CST
+SystemV/EST5.daylight.short=EDT
+SystemV/EST5EDT.daylight.short=EDT
+SystemV/EST5EDT.generic.short=ET
+SystemV/EST5EDT.standard.short=EST
+SystemV/EST5.generic.short=ET
+SystemV/EST5.standard.short=EST
+SystemV/HST10.daylight.short=HDT
+SystemV/HST10.generic.short=HT
+SystemV/HST10.standard.short=HST
+SystemV/MST7.daylight.short=MDT
+SystemV/MST7.generic.short=MT
+SystemV/MST7MDT.daylight.short=MDT
+SystemV/MST7MDT.generic.short=MT
+SystemV/MST7MDT.standard.short=MST
+SystemV/MST7.standard.short=MST
+SystemV/PST8.daylight.short=PDT
+SystemV/PST8.generic.short=PT
+SystemV/PST8PDT.daylight.short=PDT
+SystemV/PST8PDT.generic.short=PT
+SystemV/PST8PDT.standard.short=PST
+SystemV/PST8.standard.short=PST
+SystemV/YST9.daylight.short=AKDT
+SystemV/YST9.generic.short=AKT
+SystemV/YST9.standard.short=AKST
+SystemV/YST9YDT.daylight.short=AKDT
+SystemV/YST9YDT.generic.short=AKT
+SystemV/YST9YDT.standard.short=AKST
+Turkey.daylight.short=EEST
+Turkey.generic.short=EET
+Turkey.standard.short=EET
+UCT.daylight.short=UTC
+UCT.generic.short=UTC
+UCT.standard.short=UTC
+Universal.daylight.short=UTC
+Universal.generic.short=UTC
+Universal.standard.short=UTC
+US/Alaska.daylight.short=AKDT
+US/Alaska.generic.short=AKT
+US/Alaska.standard.short=AKST
+US/Aleutian.daylight.short=HADT
+US/Aleutian.generic.short=HAT
+US/Aleutian.standard.short=HAST
+US/Arizona.daylight.short=MDT
+US/Arizona.generic.short=MT
+US/Arizona.standard.short=MST
+US/Central.daylight.short=CDT
+US/Central.generic.short=CT
+US/Central.standard.short=CST
+US/Eastern.daylight.short=EDT
+US/Eastern.generic.short=ET
+US/Eastern.standard.short=EST
+US/East-Indiana.daylight.short=EDT
+US/East-Indiana.generic.short=ET
+US/East-Indiana.standard.short=EST
+US/Hawaii.daylight.short=HDT
+US/Hawaii.generic.short=HT
+US/Hawaii.standard.short=HST
+US/Indiana-Starke.daylight.short=CDT
+US/Indiana-Starke.generic.short=CT
+US/Indiana-Starke.standard.short=CST
+US/Michigan.daylight.short=EDT
+US/Michigan.generic.short=ET
+US/Michigan.standard.short=EST
+US/Mountain.daylight.short=MDT
+US/Mountain.generic.short=MT
+US/Mountain.standard.short=MST
+US/Pacific.daylight.short=PDT
+US/Pacific.generic.short=PT
+US/Pacific-New.daylight.short=PDT
+US/Pacific-New.generic.short=PT
+US/Pacific-New.standard.short=PST
+US/Pacific.standard.short=PST
+US/Samoa.daylight.short=SDT
+US/Samoa.generic.short=ST
+US/Samoa.standard.short=SST
+UTC.daylight.short=UTC
+UTC.generic.short=UTC
+UTC.standard.short=UTC
+VST.daylight.short=ICST
+VST.generic.short=ICT
+VST.standard.short=ICT
+WET.daylight.short=WEST
+WET.generic.short=WET
+WET.standard.short=WET
+W-SU.daylight.short=MSD
+W-SU.generic.short=MT
+W-SU.standard.short=MSK
+Zulu.daylight.short=UTC
+Zulu.generic.short=UTC
+Zulu.standard.short=UTC
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_short.properties Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,1743 @@
+ACT.daylight.short=CST
+ACT.generic.short=CT
+ACT.standard.short=CST
+AET.daylight.short=EST
+AET.generic.short=ET
+AET.standard.short=EST
+Africa/Abidjan.daylight.short=GMT
+Africa/Abidjan.generic.short=GMT
+Africa/Abidjan.standard.short=GMT
+Africa/Accra.daylight.short=GHST
+Africa/Accra.generic.short=GMT
+Africa/Accra.standard.short=GMT
+Africa/Addis_Ababa.daylight.short=EAST
+Africa/Addis_Ababa.generic.short=EAT
+Africa/Addis_Ababa.standard.short=EAT
+Africa/Algiers.daylight.short=CEST
+Africa/Algiers.generic.short=CET
+Africa/Algiers.standard.short=CET
+Africa/Asmara.daylight.short=EAST
+Africa/Asmara.generic.short=EAT
+Africa/Asmara.standard.short=EAT
+Africa/Asmera.daylight.short=EAST
+Africa/Asmera.generic.short=EAT
+Africa/Asmera.standard.short=EAT
+Africa/Bamako.daylight.short=GMT
+Africa/Bamako.generic.short=GMT
+Africa/Bamako.standard.short=GMT
+Africa/Bangui.daylight.short=WAST
+Africa/Bangui.generic.short=WAT
+Africa/Bangui.standard.short=WAT
+Africa/Banjul.daylight.short=GMT
+Africa/Banjul.generic.short=GMT
+Africa/Banjul.standard.short=GMT
+Africa/Bissau.daylight.short=GMT
+Africa/Bissau.generic.short=GMT
+Africa/Bissau.standard.short=GMT
+Africa/Blantyre.daylight.short=CAST
+Africa/Blantyre.generic.short=CAT
+Africa/Blantyre.standard.short=CAT
+Africa/Brazzaville.daylight.short=WAST
+Africa/Brazzaville.generic.short=WAT
+Africa/Brazzaville.standard.short=WAT
+Africa/Bujumbura.daylight.short=CAST
+Africa/Bujumbura.generic.short=CAT
+Africa/Bujumbura.standard.short=CAT
+Africa/Cairo.daylight.short=EEST
+Africa/Cairo.generic.short=EET
+Africa/Cairo.standard.short=EET
+Africa/Casablanca.daylight.short=WEST
+Africa/Casablanca.generic.short=WET
+Africa/Casablanca.standard.short=WET
+Africa/Ceuta.daylight.short=CEST
+Africa/Ceuta.generic.short=CET
+Africa/Ceuta.standard.short=CET
+Africa/Conakry.daylight.short=GMT
+Africa/Conakry.generic.short=GMT
+Africa/Conakry.standard.short=GMT
+Africa/Dakar.daylight.short=GMT
+Africa/Dakar.generic.short=GMT
+Africa/Dakar.standard.short=GMT
+Africa/Dar_es_Salaam.daylight.short=EAST
+Africa/Dar_es_Salaam.generic.short=EAT
+Africa/Dar_es_Salaam.standard.short=EAT
+Africa/Djibouti.daylight.short=EAST
+Africa/Djibouti.generic.short=EAT
+Africa/Djibouti.standard.short=EAT
+Africa/Douala.daylight.short=WAST
+Africa/Douala.generic.short=WAT
+Africa/Douala.standard.short=WAT
+Africa/El_Aaiun.daylight.short=WEST
+Africa/El_Aaiun.generic.short=WET
+Africa/El_Aaiun.standard.short=WET
+Africa/Freetown.daylight.short=SLST
+Africa/Freetown.generic.short=SLT
+Africa/Freetown.standard.short=GMT
+Africa/Gaborone.daylight.short=CAST
+Africa/Gaborone.generic.short=CAT
+Africa/Gaborone.standard.short=CAT
+Africa/Harare.daylight.short=CAST
+Africa/Harare.generic.short=CAT
+Africa/Harare.standard.short=CAT
+Africa/Johannesburg.daylight.short=SAST
+Africa/Johannesburg.generic.short=SAT
+Africa/Johannesburg.standard.short=SAST
+Africa/Juba.daylight.short=EAST
+Africa/Juba.generic.short=EAT
+Africa/Juba.standard.short=EAT
+Africa/Kampala.daylight.short=EAST
+Africa/Kampala.generic.short=EAT
+Africa/Kampala.standard.short=EAT
+Africa/Khartoum.daylight.short=EAST
+Africa/Khartoum.generic.short=EAT
+Africa/Khartoum.standard.short=EAT
+Africa/Kigali.daylight.short=CAST
+Africa/Kigali.generic.short=CAT
+Africa/Kigali.standard.short=CAT
+Africa/Kinshasa.daylight.short=WAST
+Africa/Kinshasa.generic.short=WAT
+Africa/Kinshasa.standard.short=WAT
+Africa/Lagos.daylight.short=WAST
+Africa/Lagos.generic.short=WAT
+Africa/Lagos.standard.short=WAT
+Africa/Libreville.daylight.short=WAST
+Africa/Libreville.generic.short=WAT
+Africa/Libreville.standard.short=WAT
+Africa/Lome.daylight.short=GMT
+Africa/Lome.generic.short=GMT
+Africa/Lome.standard.short=GMT
+Africa/Luanda.daylight.short=WAST
+Africa/Luanda.generic.short=WAT
+Africa/Luanda.standard.short=WAT
+Africa/Lubumbashi.daylight.short=CAST
+Africa/Lubumbashi.generic.short=CAT
+Africa/Lubumbashi.standard.short=CAT
+Africa/Lusaka.daylight.short=CAST
+Africa/Lusaka.generic.short=CAT
+Africa/Lusaka.standard.short=CAT
+Africa/Malabo.daylight.short=WAST
+Africa/Malabo.generic.short=WAT
+Africa/Malabo.standard.short=WAT
+Africa/Maputo.daylight.short=CAST
+Africa/Maputo.generic.short=CAT
+Africa/Maputo.standard.short=CAT
+Africa/Maseru.daylight.short=SAST
+Africa/Maseru.generic.short=SAT
+Africa/Maseru.standard.short=SAST
+Africa/Mbabane.daylight.short=SAST
+Africa/Mbabane.generic.short=SAT
+Africa/Mbabane.standard.short=SAST
+Africa/Mogadishu.daylight.short=EAST
+Africa/Mogadishu.generic.short=EAT
+Africa/Mogadishu.standard.short=EAT
+Africa/Monrovia.daylight.short=GMT
+Africa/Monrovia.generic.short=GMT
+Africa/Monrovia.standard.short=GMT
+Africa/Nairobi.daylight.short=EAST
+Africa/Nairobi.generic.short=EAT
+Africa/Nairobi.standard.short=EAT
+Africa/Ndjamena.daylight.short=WAST
+Africa/Ndjamena.generic.short=WAT
+Africa/Ndjamena.standard.short=WAT
+Africa/Niamey.daylight.short=WAST
+Africa/Niamey.generic.short=WAT
+Africa/Niamey.standard.short=WAT
+Africa/Nouakchott.daylight.short=GMT
+Africa/Nouakchott.generic.short=GMT
+Africa/Nouakchott.standard.short=GMT
+Africa/Ouagadougou.daylight.short=GMT
+Africa/Ouagadougou.generic.short=GMT
+Africa/Ouagadougou.standard.short=GMT
+Africa/Porto-Novo.daylight.short=WAST
+Africa/Porto-Novo.generic.short=WAT
+Africa/Porto-Novo.standard.short=WAT
+Africa/Sao_Tome.daylight.short=GMT
+Africa/Sao_Tome.generic.short=GMT
+Africa/Sao_Tome.standard.short=GMT
+Africa/Timbuktu.daylight.short=GMT
+Africa/Timbuktu.generic.short=GMT
+Africa/Timbuktu.standard.short=GMT
+Africa/Tripoli.daylight.short=EEST
+Africa/Tripoli.generic.short=EET
+Africa/Tripoli.standard.short=EET
+Africa/Tunis.daylight.short=CEST
+Africa/Tunis.generic.short=CET
+Africa/Tunis.standard.short=CET
+Africa/Windhoek.daylight.short=WAST
+Africa/Windhoek.generic.short=WAT
+Africa/Windhoek.standard.short=WAT
+AGT.daylight.short=ARST
+AGT.generic.short=ART
+AGT.standard.short=ART
+America/Adak.daylight.short=HADT
+America/Adak.generic.short=HAT
+America/Adak.standard.short=HAST
+America/Anchorage.daylight.short=AKDT
+America/Anchorage.generic.short=AKT
+America/Anchorage.standard.short=AKST
+America/Anguilla.daylight.short=ADT
+America/Anguilla.generic.short=AT
+America/Anguilla.standard.short=AST
+America/Antigua.daylight.short=ADT
+America/Antigua.generic.short=AT
+America/Antigua.standard.short=AST
+America/Araguaina.daylight.short=BRST
+America/Araguaina.generic.short=BRT
+America/Araguaina.standard.short=BRT
+America/Argentina/Buenos_Aires.daylight.short=ARST
+America/Argentina/Buenos_Aires.generic.short=ART
+America/Argentina/Buenos_Aires.standard.short=ART
+America/Argentina/Catamarca.daylight.short=ARST
+America/Argentina/Catamarca.generic.short=ART
+America/Argentina/Catamarca.standard.short=ART
+America/Argentina/ComodRivadavia.daylight.short=ARST
+America/Argentina/ComodRivadavia.generic.short=ART
+America/Argentina/ComodRivadavia.standard.short=ART
+America/Argentina/Cordoba.daylight.short=ARST
+America/Argentina/Cordoba.generic.short=ART
+America/Argentina/Cordoba.standard.short=ART
+America/Argentina/Jujuy.daylight.short=ARST
+America/Argentina/Jujuy.generic.short=ART
+America/Argentina/Jujuy.standard.short=ART
+America/Argentina/La_Rioja.daylight.short=ARST
+America/Argentina/La_Rioja.generic.short=ART
+America/Argentina/La_Rioja.standard.short=ART
+America/Argentina/Mendoza.daylight.short=ARST
+America/Argentina/Mendoza.generic.short=ART
+America/Argentina/Mendoza.standard.short=ART
+America/Argentina/Rio_Gallegos.daylight.short=ARST
+America/Argentina/Rio_Gallegos.generic.short=ART
+America/Argentina/Rio_Gallegos.standard.short=ART
+America/Argentina/Salta.daylight.short=ARST
+America/Argentina/Salta.generic.short=ART
+America/Argentina/Salta.standard.short=ART
+America/Argentina/San_Juan.daylight.short=ARST
+America/Argentina/San_Juan.generic.short=ART
+America/Argentina/San_Juan.standard.short=ART
+America/Argentina/San_Luis.daylight.short=ARST
+America/Argentina/San_Luis.generic.short=ART
+America/Argentina/San_Luis.standard.short=ART
+America/Argentina/Tucuman.daylight.short=ARST
+America/Argentina/Tucuman.generic.short=ART
+America/Argentina/Tucuman.standard.short=ART
+America/Argentina/Ushuaia.daylight.short=ARST
+America/Argentina/Ushuaia.generic.short=ART
+America/Argentina/Ushuaia.standard.short=ART
+America/Aruba.daylight.short=ADT
+America/Aruba.generic.short=AT
+America/Aruba.standard.short=AST
+America/Asuncion.daylight.short=PYST
+America/Asuncion.generic.short=PYT
+America/Asuncion.standard.short=PYT
+America/Atikokan.daylight.short=EDT
+America/Atikokan.generic.short=ET
+America/Atikokan.standard.short=EST
+America/Atka.daylight.short=HADT
+America/Atka.generic.short=HAT
+America/Atka.standard.short=HAST
+America/Bahia_Banderas.daylight.short=CDT
+America/Bahia_Banderas.generic.short=CT
+America/Bahia_Banderas.standard.short=CST
+America/Bahia.daylight.short=BRST
+America/Bahia.generic.short=BRT
+America/Bahia.standard.short=BRT
+America/Barbados.daylight.short=ADT
+America/Barbados.generic.short=AT
+America/Barbados.standard.short=AST
+America/Belem.daylight.short=BRST
+America/Belem.generic.short=BRT
+America/Belem.standard.short=BRT
+America/Belize.daylight.short=CDT
+America/Belize.generic.short=CT
+America/Belize.standard.short=CST
+America/Blanc-Sablon.daylight.short=ADT
+America/Blanc-Sablon.generic.short=AT
+America/Blanc-Sablon.standard.short=AST
+America/Boa_Vista.daylight.short=AMST
+America/Boa_Vista.generic.short=AMT
+America/Boa_Vista.standard.short=AMT
+America/Bogota.daylight.short=COST
+America/Bogota.generic.short=COT
+America/Bogota.standard.short=COT
+America/Boise.daylight.short=MDT
+America/Boise.generic.short=MT
+America/Boise.standard.short=MST
+America/Buenos_Aires.daylight.short=ARST
+America/Buenos_Aires.generic.short=ART
+America/Buenos_Aires.standard.short=ART
+America/Cambridge_Bay.daylight.short=MDT
+America/Cambridge_Bay.generic.short=MT
+America/Cambridge_Bay.standard.short=MST
+America/Campo_Grande.daylight.short=AMST
+America/Campo_Grande.generic.short=AMT
+America/Campo_Grande.standard.short=AMT
+America/Cancun.daylight.short=CDT
+America/Cancun.generic.short=CT
+America/Cancun.standard.short=CST
+America/Caracas.daylight.short=VEST
+America/Caracas.generic.short=VET
+America/Caracas.standard.short=VET
+America/Catamarca.daylight.short=ARST
+America/Catamarca.generic.short=ART
+America/Catamarca.standard.short=ART
+America/Cayenne.daylight.short=GFST
+America/Cayenne.generic.short=GFT
+America/Cayenne.standard.short=GFT
+America/Cayman.daylight.short=EDT
+America/Cayman.generic.short=ET
+America/Cayman.standard.short=EST
+America/Chicago.daylight.short=CDT
+America/Chicago.generic.short=CT
+America/Chicago.standard.short=CST
+America/Chihuahua.daylight.short=MDT
+America/Chihuahua.generic.short=MT
+America/Chihuahua.standard.short=MST
+America/Coral_Harbour.daylight.short=EDT
+America/Coral_Harbour.generic.short=ET
+America/Coral_Harbour.standard.short=EST
+America/Cordoba.daylight.short=ARST
+America/Cordoba.generic.short=ART
+America/Cordoba.standard.short=ART
+America/Costa_Rica.daylight.short=CDT
+America/Costa_Rica.generic.short=CT
+America/Costa_Rica.standard.short=CST
+America/Creston.daylight.short=MDT
+America/Creston.generic.short=MT
+America/Creston.standard.short=MST
+America/Cuiaba.daylight.short=AMST
+America/Cuiaba.generic.short=AMT
+America/Cuiaba.standard.short=AMT
+America/Curacao.daylight.short=ADT
+America/Curacao.generic.short=AT
+America/Curacao.standard.short=AST
+America/Danmarkshavn.daylight.short=GMT
+America/Danmarkshavn.generic.short=GMT
+America/Danmarkshavn.standard.short=GMT
+America/Dawson_Creek.daylight.short=MDT
+America/Dawson_Creek.generic.short=MT
+America/Dawson_Creek.standard.short=MST
+America/Dawson.daylight.short=PDT
+America/Dawson.generic.short=PT
+America/Dawson.standard.short=PST
+America/Denver.daylight.short=MDT
+America/Denver.generic.short=MT
+America/Denver.standard.short=MST
+America/Detroit.daylight.short=EDT
+America/Detroit.generic.short=ET
+America/Detroit.standard.short=EST
+America/Dominica.daylight.short=ADT
+America/Dominica.generic.short=AT
+America/Dominica.standard.short=AST
+America/Edmonton.daylight.short=MDT
+America/Edmonton.generic.short=MT
+America/Edmonton.standard.short=MST
+America/Eirunepe.daylight.short=ACST
+America/Eirunepe.generic.short=ACT
+America/Eirunepe.standard.short=ACT
+America/El_Salvador.daylight.short=CDT
+America/El_Salvador.generic.short=CT
+America/El_Salvador.standard.short=CST
+America/Ensenada.daylight.short=PDT
+America/Ensenada.generic.short=PT
+America/Ensenada.standard.short=PST
+America/Fortaleza.daylight.short=BRST
+America/Fortaleza.generic.short=BRT
+America/Fortaleza.standard.short=BRT
+America/Fort_Wayne.daylight.short=EDT
+America/Fort_Wayne.generic.short=ET
+America/Fort_Wayne.standard.short=EST
+America/Glace_Bay.daylight.short=ADT
+America/Glace_Bay.generic.short=AT
+America/Glace_Bay.standard.short=AST
+America/Godthab.daylight.short=WGST
+America/Godthab.generic.short=WGT
+America/Godthab.standard.short=WGT
+America/Goose_Bay.daylight.short=ADT
+America/Goose_Bay.generic.short=AT
+America/Goose_Bay.standard.short=AST
+America/Grand_Turk.daylight.short=EDT
+America/Grand_Turk.generic.short=ET
+America/Grand_Turk.standard.short=EST
+America/Grenada.daylight.short=ADT
+America/Grenada.generic.short=AT
+America/Grenada.standard.short=AST
+America/Guadeloupe.daylight.short=ADT
+America/Guadeloupe.generic.short=AT
+America/Guadeloupe.standard.short=AST
+America/Guatemala.daylight.short=CDT
+America/Guatemala.generic.short=CT
+America/Guatemala.standard.short=CST
+America/Guayaquil.daylight.short=ECST
+America/Guayaquil.generic.short=ECT
+America/Guayaquil.standard.short=ECT
+America/Guyana.daylight.short=GYST
+America/Guyana.generic.short=GYT
+America/Guyana.standard.short=GYT
+America/Halifax.daylight.short=ADT
+America/Halifax.generic.short=AT
+America/Halifax.standard.short=AST
+America/Havana.daylight.short=CDT
+America/Havana.generic.short=CT
+America/Havana.standard.short=CST
+America/Hermosillo.daylight.short=MDT
+America/Hermosillo.generic.short=MT
+America/Hermosillo.standard.short=MST
+America/Indiana/Indianapolis.daylight.short=EDT
+America/Indiana/Indianapolis.generic.short=ET
+America/Indiana/Indianapolis.standard.short=EST
+America/Indiana/Knox.daylight.short=CDT
+America/Indiana/Knox.generic.short=CT
+America/Indiana/Knox.standard.short=CST
+America/Indiana/Marengo.daylight.short=EDT
+America/Indiana/Marengo.generic.short=ET
+America/Indiana/Marengo.standard.short=EST
+America/Indiana/Petersburg.daylight.short=EDT
+America/Indiana/Petersburg.generic.short=ET
+America/Indiana/Petersburg.standard.short=EST
+America/Indianapolis.daylight.short=EDT
+America/Indianapolis.generic.short=ET
+America/Indianapolis.standard.short=EST
+America/Indiana/Tell_City.daylight.short=CDT
+America/Indiana/Tell_City.generic.short=CT
+America/Indiana/Tell_City.standard.short=CST
+America/Indiana/Vevay.daylight.short=EDT
+America/Indiana/Vevay.generic.short=ET
+America/Indiana/Vevay.standard.short=EST
+America/Indiana/Vincennes.daylight.short=EDT
+America/Indiana/Vincennes.generic.short=ET
+America/Indiana/Vincennes.standard.short=EST
+America/Indiana/Winamac.daylight.short=EDT
+America/Indiana/Winamac.generic.short=ET
+America/Indiana/Winamac.standard.short=EST
+America/Inuvik.daylight.short=MDT
+America/Inuvik.generic.short=MT
+America/Inuvik.standard.short=MST
+America/Iqaluit.daylight.short=EDT
+America/Iqaluit.generic.short=ET
+America/Iqaluit.standard.short=EST
+America/Jamaica.daylight.short=EDT
+America/Jamaica.generic.short=ET
+America/Jamaica.standard.short=EST
+America/Jujuy.daylight.short=ARST
+America/Jujuy.generic.short=ART
+America/Jujuy.standard.short=ART
+America/Juneau.daylight.short=AKDT
+America/Juneau.generic.short=AKT
+America/Juneau.standard.short=AKST
+America/Kentucky/Louisville.daylight.short=EDT
+America/Kentucky/Louisville.generic.short=ET
+America/Kentucky/Louisville.standard.short=EST
+America/Kentucky/Monticello.daylight.short=EDT
+America/Kentucky/Monticello.generic.short=ET
+America/Kentucky/Monticello.standard.short=EST
+America/Knox_IN.daylight.short=CDT
+America/Knox_IN.generic.short=CT
+America/Knox_IN.standard.short=CST
+America/Kralendijk.daylight.short=ADT
+America/Kralendijk.generic.short=AT
+America/Kralendijk.standard.short=AST
+America/La_Paz.daylight.short=BOST
+America/La_Paz.generic.short=BOT
+America/La_Paz.standard.short=BOT
+America/Lima.daylight.short=PEST
+America/Lima.generic.short=PET
+America/Lima.standard.short=PET
+America/Los_Angeles.daylight.short=PDT
+America/Los_Angeles.generic.short=PT
+America/Los_Angeles.standard.short=PST
+America/Louisville.daylight.short=EDT
+America/Louisville.generic.short=ET
+America/Louisville.standard.short=EST
+America/Lower_Princes.daylight.short=ADT
+America/Lower_Princes.generic.short=AT
+America/Lower_Princes.standard.short=AST
+America/Maceio.daylight.short=BRST
+America/Maceio.generic.short=BRT
+America/Maceio.standard.short=BRT
+America/Managua.daylight.short=CDT
+America/Managua.generic.short=CT
+America/Managua.standard.short=CST
+America/Manaus.daylight.short=AMST
+America/Manaus.generic.short=AMT
+America/Manaus.standard.short=AMT
+America/Marigot.daylight.short=ADT
+America/Marigot.generic.short=AT
+America/Marigot.standard.short=AST
+America/Martinique.daylight.short=ADT
+America/Martinique.generic.short=AT
+America/Martinique.standard.short=AST
+America/Matamoros.daylight.short=CDT
+America/Matamoros.generic.short=CT
+America/Matamoros.standard.short=CST
+America/Mazatlan.daylight.short=MDT
+America/Mazatlan.generic.short=MT
+America/Mazatlan.standard.short=MST
+America/Mendoza.daylight.short=ARST
+America/Mendoza.generic.short=ART
+America/Mendoza.standard.short=ART
+America/Menominee.daylight.short=CDT
+America/Menominee.generic.short=CT
+America/Menominee.standard.short=CST
+America/Merida.daylight.short=CDT
+America/Merida.generic.short=CT
+America/Merida.standard.short=CST
+America/Metlakatla.daylight.short=MeDT
+America/Metlakatla.generic.short=MeT
+America/Metlakatla.standard.short=MeST
+America/Mexico_City.daylight.short=CDT
+America/Mexico_City.generic.short=CT
+America/Mexico_City.standard.short=CST
+America/Miquelon.daylight.short=PMDT
+America/Miquelon.generic.short=PMT
+America/Miquelon.standard.short=PMST
+America/Moncton.daylight.short=ADT
+America/Moncton.generic.short=AT
+America/Moncton.standard.short=AST
+America/Monterrey.daylight.short=CDT
+America/Monterrey.generic.short=CT
+America/Monterrey.standard.short=CST
+America/Montevideo.daylight.short=UYST
+America/Montevideo.generic.short=UYT
+America/Montevideo.standard.short=UYT
+America/Montreal.daylight.short=EDT
+America/Montreal.generic.short=ET
+America/Montreal.standard.short=EST
+America/Montserrat.daylight.short=ADT
+America/Montserrat.generic.short=AT
+America/Montserrat.standard.short=AST
+America/Nassau.daylight.short=EDT
+America/Nassau.generic.short=ET
+America/Nassau.standard.short=EST
+America/New_York.daylight.short=EDT
+America/New_York.generic.short=ET
+America/New_York.standard.short=EST
+America/Nipigon.daylight.short=EDT
+America/Nipigon.generic.short=ET
+America/Nipigon.standard.short=EST
+America/Nome.daylight.short=AKDT
+America/Nome.generic.short=AKT
+America/Nome.standard.short=AKST
+America/Noronha.daylight.short=FNST
+America/Noronha.generic.short=FNT
+America/Noronha.standard.short=FNT
+America/North_Dakota/Beulah.daylight.short=CDT
+America/North_Dakota/Beulah.generic.short=CT
+America/North_Dakota/Beulah.standard.short=CST
+America/North_Dakota/Center.daylight.short=CDT
+America/North_Dakota/Center.generic.short=CT
+America/North_Dakota/Center.standard.short=CST
+America/North_Dakota/New_Salem.daylight.short=CDT
+America/North_Dakota/New_Salem.generic.short=CT
+America/North_Dakota/New_Salem.standard.short=CST
+America/Ojinaga.daylight.short=MDT
+America/Ojinaga.generic.short=MT
+America/Ojinaga.standard.short=MST
+America/Panama.daylight.short=EDT
+America/Panama.generic.short=ET
+America/Panama.standard.short=EST
+America/Pangnirtung.daylight.short=EDT
+America/Pangnirtung.generic.short=ET
+America/Pangnirtung.standard.short=EST
+America/Paramaribo.daylight.short=SRST
+America/Paramaribo.generic.short=SRT
+America/Paramaribo.standard.short=SRT
+America/Phoenix.daylight.short=MDT
+America/Phoenix.generic.short=MT
+America/Phoenix.standard.short=MST
+America/Port-au-Prince.daylight.short=EDT
+America/Port-au-Prince.generic.short=ET
+America/Port-au-Prince.standard.short=EST
+America/Porto_Acre.daylight.short=ACST
+America/Porto_Acre.generic.short=ACT
+America/Porto_Acre.standard.short=ACT
+America/Port_of_Spain.daylight.short=ADT
+America/Port_of_Spain.generic.short=AT
+America/Port_of_Spain.standard.short=AST
+America/Porto_Velho.daylight.short=AMST
+America/Porto_Velho.generic.short=AMT
+America/Porto_Velho.standard.short=AMT
+America/Puerto_Rico.daylight.short=ADT
+America/Puerto_Rico.generic.short=AT
+America/Puerto_Rico.standard.short=AST
+America/Rainy_River.daylight.short=CDT
+America/Rainy_River.generic.short=CT
+America/Rainy_River.standard.short=CST
+America/Rankin_Inlet.daylight.short=CDT
+America/Rankin_Inlet.generic.short=CT
+America/Rankin_Inlet.standard.short=CST
+America/Recife.daylight.short=BRST
+America/Recife.generic.short=BRT
+America/Recife.standard.short=BRT
+America/Regina.daylight.short=CDT
+America/Regina.generic.short=CT
+America/Regina.standard.short=CST
+America/Resolute.daylight.short=CDT
+America/Resolute.generic.short=CT
+America/Resolute.standard.short=CST
+America/Rio_Branco.daylight.short=ACST
+America/Rio_Branco.generic.short=ACT
+America/Rio_Branco.standard.short=ACT
+America/Rosario.daylight.short=ARST
+America/Rosario.generic.short=ART
+America/Rosario.standard.short=ART
+America/Santa_Isabel.daylight.short=PDT
+America/Santa_Isabel.generic.short=PT
+America/Santa_Isabel.standard.short=PST
+America/Santarem.daylight.short=BRST
+America/Santarem.generic.short=BRT
+America/Santarem.standard.short=BRT
+America/Santiago.daylight.short=CLST
+America/Santiago.generic.short=CLT
+America/Santiago.standard.short=CLT
+America/Santo_Domingo.daylight.short=ADT
+America/Santo_Domingo.generic.short=AT
+America/Santo_Domingo.standard.short=AST
+America/Sao_Paulo.daylight.short=BRST
+America/Sao_Paulo.generic.short=BRT
+America/Sao_Paulo.standard.short=BRT
+America/Scoresbysund.daylight.short=EGST
+America/Scoresbysund.generic.short=EGT
+America/Scoresbysund.standard.short=EGT
+America/Shiprock.daylight.short=MDT
+America/Shiprock.generic.short=MT
+America/Shiprock.standard.short=MST
+America/Sitka.daylight.short=AKDT
+America/Sitka.generic.short=AKT
+America/Sitka.standard.short=AKST
+America/St_Barthelemy.daylight.short=ADT
+America/St_Barthelemy.generic.short=AT
+America/St_Barthelemy.standard.short=AST
+America/St_Johns.daylight.short=NDT
+America/St_Johns.generic.short=NT
+America/St_Johns.standard.short=NST
+America/St_Kitts.daylight.short=ADT
+America/St_Kitts.generic.short=AT
+America/St_Kitts.standard.short=AST
+America/St_Lucia.daylight.short=ADT
+America/St_Lucia.generic.short=AT
+America/St_Lucia.standard.short=AST
+America/St_Thomas.daylight.short=ADT
+America/St_Thomas.generic.short=AT
+America/St_Thomas.standard.short=AST
+America/St_Vincent.daylight.short=ADT
+America/St_Vincent.generic.short=AT
+America/St_Vincent.standard.short=AST
+America/Swift_Current.daylight.short=CDT
+America/Swift_Current.generic.short=CT
+America/Swift_Current.standard.short=CST
+America/Tegucigalpa.daylight.short=CDT
+America/Tegucigalpa.generic.short=CT
+America/Tegucigalpa.standard.short=CST
+America/Thule.daylight.short=ADT
+America/Thule.generic.short=AT
+America/Thule.standard.short=AST
+America/Thunder_Bay.daylight.short=EDT
+America/Thunder_Bay.generic.short=ET
+America/Thunder_Bay.standard.short=EST
+America/Tijuana.daylight.short=PDT
+America/Tijuana.generic.short=PT
+America/Tijuana.standard.short=PST
+America/Toronto.daylight.short=EDT
+America/Toronto.generic.short=ET
+America/Toronto.standard.short=EST
+America/Tortola.daylight.short=ADT
+America/Tortola.generic.short=AT
+America/Tortola.standard.short=AST
+America/Vancouver.daylight.short=PDT
+America/Vancouver.generic.short=PT
+America/Vancouver.standard.short=PST
+America/Virgin.daylight.short=ADT
+America/Virgin.generic.short=AT
+America/Virgin.standard.short=AST
+America/Whitehorse.daylight.short=PDT
+America/Whitehorse.generic.short=PT
+America/Whitehorse.standard.short=PST
+America/Winnipeg.daylight.short=CDT
+America/Winnipeg.generic.short=CT
+America/Winnipeg.standard.short=CST
+America/Yakutat.daylight.short=AKDT
+America/Yakutat.generic.short=AKT
+America/Yakutat.standard.short=AKST
+America/Yellowknife.daylight.short=MDT
+America/Yellowknife.generic.short=MT
+America/Yellowknife.standard.short=MST
+Antarctica/Casey.daylight.short=WST
+Antarctica/Casey.generic.short=WT
+Antarctica/Casey.standard.short=WST
+Antarctica/Davis.daylight.short=DAVST
+Antarctica/Davis.generic.short=DAVT
+Antarctica/Davis.standard.short=DAVT
+Antarctica/DumontDUrville.daylight.short=DDUST
+Antarctica/DumontDUrville.generic.short=DDUT
+Antarctica/DumontDUrville.standard.short=DDUT
+Antarctica/Macquarie.daylight.short=MIST
+Antarctica/Macquarie.generic.short=MIST
+Antarctica/Macquarie.standard.short=MIST
+Antarctica/Mawson.daylight.short=MAWST
+Antarctica/Mawson.generic.short=MAWT
+Antarctica/Mawson.standard.short=MAWT
+Antarctica/McMurdo.daylight.short=NZDT
+Antarctica/McMurdo.generic.short=NZT
+Antarctica/McMurdo.standard.short=NZST
+Antarctica/Palmer.daylight.short=CLST
+Antarctica/Palmer.generic.short=CLT
+Antarctica/Palmer.standard.short=CLT
+Antarctica/Rothera.daylight.short=ROTST
+Antarctica/Rothera.generic.short=ROTT
+Antarctica/Rothera.standard.short=ROTT
+Antarctica/South_Pole.daylight.short=NZDT
+Antarctica/South_Pole.generic.short=NZT
+Antarctica/South_Pole.standard.short=NZST
+Antarctica/Syowa.daylight.short=SYOST
+Antarctica/Syowa.generic.short=SYOT
+Antarctica/Syowa.standard.short=SYOT
+Antarctica/Vostok.daylight.short=VOSST
+Antarctica/Vostok.generic.short=VOST
+Antarctica/Vostok.standard.short=VOST
+Arctic/Longyearbyen.daylight.short=CEST
+Arctic/Longyearbyen.generic.short=CET
+Arctic/Longyearbyen.standard.short=CET
+ART.daylight.short=EEST
+ART.generic.short=EET
+ART.standard.short=EET
+Asia/Aden.daylight.short=ADT
+Asia/Aden.generic.short=AT
+Asia/Aden.standard.short=AST
+Asia/Almaty.daylight.short=ALMST
+Asia/Almaty.generic.short=ALMT
+Asia/Almaty.standard.short=ALMT
+Asia/Amman.daylight.short=ADT
+Asia/Amman.generic.short=AT
+Asia/Amman.standard.short=AST
+Asia/Anadyr.daylight.short=ANAST
+Asia/Anadyr.generic.short=ANAT
+Asia/Anadyr.standard.short=ANAT
+Asia/Aqtau.daylight.short=AQTST
+Asia/Aqtau.generic.short=AQTT
+Asia/Aqtau.standard.short=AQTT
+Asia/Aqtobe.daylight.short=AQTST
+Asia/Aqtobe.generic.short=AQTT
+Asia/Aqtobe.standard.short=AQTT
+Asia/Ashgabat.daylight.short=TMST
+Asia/Ashgabat.generic.short=TMT
+Asia/Ashgabat.standard.short=TMT
+Asia/Ashkhabad.daylight.short=TMST
+Asia/Ashkhabad.generic.short=TMT
+Asia/Ashkhabad.standard.short=TMT
+Asia/Baghdad.daylight.short=ADT
+Asia/Baghdad.generic.short=AT
+Asia/Baghdad.standard.short=AST
+Asia/Bahrain.daylight.short=ADT
+Asia/Bahrain.generic.short=AT
+Asia/Bahrain.standard.short=AST
+Asia/Baku.daylight.short=AZST
+Asia/Baku.generic.short=AZT
+Asia/Baku.standard.short=AZT
+Asia/Bangkok.daylight.short=ICST
+Asia/Bangkok.generic.short=ICT
+Asia/Bangkok.standard.short=ICT
+Asia/Beirut.daylight.short=EEST
+Asia/Beirut.generic.short=EET
+Asia/Beirut.standard.short=EET
+Asia/Bishkek.daylight.short=KGST
+Asia/Bishkek.generic.short=KGT
+Asia/Bishkek.standard.short=KGT
+Asia/Brunei.daylight.short=BNST
+Asia/Brunei.generic.short=BNT
+Asia/Brunei.standard.short=BNT
+Asia/Calcutta.daylight.short=IDT
+Asia/Calcutta.generic.short=IT
+Asia/Calcutta.standard.short=IST
+Asia/Choibalsan.daylight.short=CHOST
+Asia/Choibalsan.generic.short=CHOT
+Asia/Choibalsan.standard.short=CHOT
+Asia/Chongqing.daylight.short=CDT
+Asia/Chongqing.generic.short=CT
+Asia/Chongqing.standard.short=CST
+Asia/Chungking.daylight.short=CDT
+Asia/Chungking.generic.short=CT
+Asia/Chungking.standard.short=CST
+Asia/Colombo.daylight.short=IDT
+Asia/Colombo.generic.short=IT
+Asia/Colombo.standard.short=IST
+Asia/Dacca.daylight.short=BDST
+Asia/Dacca.generic.short=BDT
+Asia/Dacca.standard.short=BDT
+Asia/Damascus.daylight.short=EEST
+Asia/Damascus.generic.short=EET
+Asia/Damascus.standard.short=EET
+Asia/Dhaka.daylight.short=BDST
+Asia/Dhaka.generic.short=BDT
+Asia/Dhaka.standard.short=BDT
+Asia/Dili.daylight.short=TLST
+Asia/Dili.generic.short=TLT
+Asia/Dili.standard.short=TLT
+Asia/Dubai.daylight.short=GDT
+Asia/Dubai.generic.short=GT
+Asia/Dubai.standard.short=GST
+Asia/Dushanbe.daylight.short=TJST
+Asia/Dushanbe.generic.short=TJT
+Asia/Dushanbe.standard.short=TJT
+Asia/Gaza.daylight.short=EEST
+Asia/Gaza.generic.short=EET
+Asia/Gaza.standard.short=EET
+Asia/Harbin.daylight.short=CDT
+Asia/Harbin.generic.short=CT
+Asia/Harbin.standard.short=CST
+Asia/Hebron.daylight.short=EEST
+Asia/Hebron.generic.short=EET
+Asia/Hebron.standard.short=EET
+Asia/Ho_Chi_Minh.daylight.short=ICST
+Asia/Ho_Chi_Minh.generic.short=ICT
+Asia/Ho_Chi_Minh.standard.short=ICT
+Asia/Hong_Kong.daylight.short=HKST
+Asia/Hong_Kong.generic.short=HKT
+Asia/Hong_Kong.standard.short=HKT
+Asia/Hovd.daylight.short=HOVST
+Asia/Hovd.generic.short=HOVT
+Asia/Hovd.standard.short=HOVT
+Asia/Irkutsk.daylight.short=IRKST
+Asia/Irkutsk.generic.short=IRKT
+Asia/Irkutsk.standard.short=IRKT
+Asia/Istanbul.daylight.short=EEST
+Asia/Istanbul.generic.short=EET
+Asia/Istanbul.standard.short=EET
+Asia/Jakarta.daylight.short=WIST
+Asia/Jakarta.generic.short=WIB
+Asia/Jakarta.standard.short=WIB
+Asia/Jayapura.daylight.short=EIST
+Asia/Jayapura.generic.short=WIT
+Asia/Jayapura.standard.short=WIT
+Asia/Jerusalem.daylight.short=IDT
+Asia/Jerusalem.generic.short=IT
+Asia/Jerusalem.standard.short=IST
+Asia/Kabul.daylight.short=AFST
+Asia/Kabul.generic.short=AFT
+Asia/Kabul.standard.short=AFT
+Asia/Kamchatka.daylight.short=PETST
+Asia/Kamchatka.generic.short=PETT
+Asia/Kamchatka.standard.short=PETT
+Asia/Karachi.daylight.short=PKST
+Asia/Karachi.generic.short=PKT
+Asia/Karachi.standard.short=PKT
+Asia/Kashgar.daylight.short=CDT
+Asia/Kashgar.generic.short=CT
+Asia/Kashgar.standard.short=CST
+Asia/Kathmandu.daylight.short=NPST
+Asia/Kathmandu.generic.short=NPT
+Asia/Kathmandu.standard.short=NPT
+Asia/Katmandu.daylight.short=NPST
+Asia/Katmandu.generic.short=NPT
+Asia/Katmandu.standard.short=NPT
+Asia/Khandyga.daylight.short=YAKST
+Asia/Khandyga.generic.short=YAKT
+Asia/Khandyga.standard.short=YAKT
+Asia/Kolkata.daylight.short=IDT
+Asia/Kolkata.generic.short=IT
+Asia/Kolkata.standard.short=IST
+Asia/Krasnoyarsk.daylight.short=KRAST
+Asia/Krasnoyarsk.generic.short=KRAT
+Asia/Krasnoyarsk.standard.short=KRAT
+Asia/Kuala_Lumpur.daylight.short=MYST
+Asia/Kuala_Lumpur.generic.short=MYT
+Asia/Kuala_Lumpur.standard.short=MYT
+Asia/Kuching.daylight.short=MYST
+Asia/Kuching.generic.short=MYT
+Asia/Kuching.standard.short=MYT
+Asia/Kuwait.daylight.short=ADT
+Asia/Kuwait.generic.short=AT
+Asia/Kuwait.standard.short=AST
+Asia/Macao.daylight.short=CDT
+Asia/Macao.generic.short=CT
+Asia/Macao.standard.short=CST
+Asia/Macau.daylight.short=CDT
+Asia/Macau.generic.short=CT
+Asia/Macau.standard.short=CST
+Asia/Magadan.daylight.short=MAGST
+Asia/Magadan.generic.short=MAGT
+Asia/Magadan.standard.short=MAGT
+Asia/Makassar.daylight.short=CIST
+Asia/Makassar.generic.short=WITA
+Asia/Makassar.standard.short=WITA
+Asia/Manila.daylight.short=PHST
+Asia/Manila.generic.short=PHT
+Asia/Manila.standard.short=PHT
+Asia/Muscat.daylight.short=GDT
+Asia/Muscat.generic.short=GT
+Asia/Muscat.standard.short=GST
+Asia/Nicosia.daylight.short=EEST
+Asia/Nicosia.generic.short=EET
+Asia/Nicosia.standard.short=EET
+Asia/Novokuznetsk.daylight.short=NOVST
+Asia/Novokuznetsk.generic.short=NOVT
+Asia/Novokuznetsk.standard.short=NOVT
+Asia/Novosibirsk.daylight.short=NOVST
+Asia/Novosibirsk.generic.short=NOVT
+Asia/Novosibirsk.standard.short=NOVT
+Asia/Omsk.daylight.short=OMSST
+Asia/Omsk.generic.short=OMST
+Asia/Omsk.standard.short=OMST
+Asia/Oral.daylight.short=ORAST
+Asia/Oral.generic.short=ORAT
+Asia/Oral.standard.short=ORAT
+Asia/Phnom_Penh.daylight.short=ICST
+Asia/Phnom_Penh.generic.short=ICT
+Asia/Phnom_Penh.standard.short=ICT
+Asia/Pontianak.daylight.short=WIST
+Asia/Pontianak.generic.short=WIB
+Asia/Pontianak.standard.short=WIB
+Asia/Pyongyang.daylight.short=KDT
+Asia/Pyongyang.generic.short=KT
+Asia/Pyongyang.standard.short=KST
+Asia/Qatar.daylight.short=ADT
+Asia/Qatar.generic.short=AT
+Asia/Qatar.standard.short=AST
+Asia/Qyzylorda.daylight.short=QYZST
+Asia/Qyzylorda.generic.short=QYZT
+Asia/Qyzylorda.standard.short=QYZT
+Asia/Rangoon.daylight.short=MMST
+Asia/Rangoon.generic.short=MMT
+Asia/Rangoon.standard.short=MMT
+Asia/Saigon.daylight.short=ICST
+Asia/Saigon.generic.short=ICT
+Asia/Saigon.standard.short=ICT
+Asia/Sakhalin.daylight.short=SAKST
+Asia/Sakhalin.generic.short=SAKT
+Asia/Sakhalin.standard.short=SAKT
+Asia/Samarkand.daylight.short=UZST
+Asia/Samarkand.generic.short=UZT
+Asia/Samarkand.standard.short=UZT
+Asia/Seoul.daylight.short=KDT
+Asia/Seoul.generic.short=KT
+Asia/Seoul.standard.short=KST
+Asia/Shanghai.daylight.short=CDT
+Asia/Shanghai.generic.short=CT
+Asia/Shanghai.standard.short=CST
+Asia/Singapore.daylight.short=SGST
+Asia/Singapore.generic.short=SGT
+Asia/Singapore.standard.short=SGT
+Asia/Taipei.daylight.short=CDT
+Asia/Taipei.generic.short=CT
+Asia/Taipei.standard.short=CST
+Asia/Tashkent.daylight.short=UZST
+Asia/Tashkent.generic.short=UZT
+Asia/Tashkent.standard.short=UZT
+Asia/Tbilisi.daylight.short=GEST
+Asia/Tbilisi.generic.short=GET
+Asia/Tbilisi.standard.short=GET
+Asia/Tehran.daylight.short=IRDT
+Asia/Tehran.generic.short=IRT
+Asia/Tehran.standard.short=IRST
+Asia/Tel_Aviv.daylight.short=IDT
+Asia/Tel_Aviv.generic.short=IT
+Asia/Tel_Aviv.standard.short=IST
+Asia/Thimbu.daylight.short=BTST
+Asia/Thimbu.generic.short=BTT
+Asia/Thimbu.standard.short=BTT
+Asia/Thimphu.daylight.short=BTST
+Asia/Thimphu.generic.short=BTT
+Asia/Thimphu.standard.short=BTT
+Asia/Tokyo.daylight.short=JDT
+Asia/Tokyo.generic.short=JT
+Asia/Tokyo.standard.short=JST
+Asia/Ujung_Pandang.daylight.short=CIST
+Asia/Ujung_Pandang.generic.short=WITA
+Asia/Ujung_Pandang.standard.short=WITA
+Asia/Ulaanbaatar.daylight.short=ULAST
+Asia/Ulaanbaatar.generic.short=ULAT
+Asia/Ulaanbaatar.standard.short=ULAT
+Asia/Ulan_Bator.daylight.short=ULAST
+Asia/Ulan_Bator.generic.short=ULAT
+Asia/Ulan_Bator.standard.short=ULAT
+Asia/Urumqi.daylight.short=CDT
+Asia/Urumqi.generic.short=CT
+Asia/Urumqi.standard.short=CST
+Asia/Ust-Nera.daylight.short=VLAST
+Asia/Ust-Nera.generic.short=VLAT
+Asia/Ust-Nera.standard.short=VLAT
+Asia/Vientiane.daylight.short=ICST
+Asia/Vientiane.generic.short=ICT
+Asia/Vientiane.standard.short=ICT
+Asia/Vladivostok.daylight.short=VLAST
+Asia/Vladivostok.generic.short=VLAT
+Asia/Vladivostok.standard.short=VLAT
+Asia/Yakutsk.daylight.short=YAKST
+Asia/Yakutsk.generic.short=YAKT
+Asia/Yakutsk.standard.short=YAKT
+Asia/Yekaterinburg.daylight.short=YEKST
+Asia/Yekaterinburg.generic.short=YEKT
+Asia/Yekaterinburg.standard.short=YEKT
+Asia/Yerevan.daylight.short=AMST
+Asia/Yerevan.generic.short=AMT
+Asia/Yerevan.standard.short=AMT
+AST.daylight.short=AKDT
+AST.generic.short=AKT
+AST.standard.short=AKST
+Atlantic/Azores.daylight.short=AZOST
+Atlantic/Azores.generic.short=AZOT
+Atlantic/Azores.standard.short=AZOT
+Atlantic/Bermuda.daylight.short=ADT
+Atlantic/Bermuda.generic.short=AT
+Atlantic/Bermuda.standard.short=AST
+Atlantic/Canary.daylight.short=WEST
+Atlantic/Canary.generic.short=WET
+Atlantic/Canary.standard.short=WET
+Atlantic/Cape_Verde.daylight.short=CVST
+Atlantic/Cape_Verde.generic.short=CVT
+Atlantic/Cape_Verde.standard.short=CVT
+Atlantic/Faeroe.daylight.short=WEST
+Atlantic/Faeroe.generic.short=WET
+Atlantic/Faeroe.standard.short=WET
+Atlantic/Faroe.daylight.short=WEST
+Atlantic/Faroe.generic.short=WET
+Atlantic/Faroe.standard.short=WET
+Atlantic/Jan_Mayen.daylight.short=CEST
+Atlantic/Jan_Mayen.generic.short=CET
+Atlantic/Jan_Mayen.standard.short=CET
+Atlantic/Madeira.daylight.short=WEST
+Atlantic/Madeira.generic.short=WET
+Atlantic/Madeira.standard.short=WET
+Atlantic/Reykjavik.daylight.short=GMT
+Atlantic/Reykjavik.generic.short=GMT
+Atlantic/Reykjavik.standard.short=GMT
+Atlantic/South_Georgia.daylight.short=GDT
+Atlantic/South_Georgia.generic.short=GT
+Atlantic/South_Georgia.standard.short=GST
+Atlantic/Stanley.daylight.short=FKST
+Atlantic/Stanley.generic.short=FKT
+Atlantic/Stanley.standard.short=FKT
+Atlantic/St_Helena.daylight.short=GMT
+Atlantic/St_Helena.generic.short=GMT
+Atlantic/St_Helena.standard.short=GMT
+Australia/ACT.daylight.short=EST
+Australia/ACT.generic.short=ET
+Australia/ACT.standard.short=EST
+Australia/Adelaide.daylight.short=CST
+Australia/Adelaide.generic.short=CT
+Australia/Adelaide.standard.short=CST
+Australia/Brisbane.daylight.short=EST
+Australia/Brisbane.generic.short=ET
+Australia/Brisbane.standard.short=EST
+Australia/Broken_Hill.daylight.short=CST
+Australia/Broken_Hill.generic.short=CT
+Australia/Broken_Hill.standard.short=CST
+Australia/Canberra.daylight.short=EST
+Australia/Canberra.generic.short=ET
+Australia/Canberra.standard.short=EST
+Australia/Currie.daylight.short=EST
+Australia/Currie.generic.short=ET
+Australia/Currie.standard.short=EST
+Australia/Darwin.daylight.short=CST
+Australia/Darwin.generic.short=CT
+Australia/Darwin.standard.short=CST
+Australia/Eucla.daylight.short=CWST
+Australia/Eucla.generic.short=CWT
+Australia/Eucla.standard.short=CWST
+Australia/Hobart.daylight.short=EST
+Australia/Hobart.generic.short=ET
+Australia/Hobart.standard.short=EST
+Australia/LHI.daylight.short=LHST
+Australia/LHI.generic.short=LHT
+Australia/LHI.standard.short=LHST
+Australia/Lindeman.daylight.short=EST
+Australia/Lindeman.generic.short=ET
+Australia/Lindeman.standard.short=EST
+Australia/Lord_Howe.daylight.short=LHST
+Australia/Lord_Howe.generic.short=LHT
+Australia/Lord_Howe.standard.short=LHST
+Australia/Melbourne.daylight.short=EST
+Australia/Melbourne.generic.short=ET
+Australia/Melbourne.standard.short=EST
+Australia/North.daylight.short=CST
+Australia/North.generic.short=CT
+Australia/North.standard.short=CST
+Australia/NSW.daylight.short=EST
+Australia/NSW.generic.short=ET
+Australia/NSW.standard.short=EST
+Australia/Perth.daylight.short=WST
+Australia/Perth.generic.short=WT
+Australia/Perth.standard.short=WST
+Australia/Queensland.daylight.short=EST
+Australia/Queensland.generic.short=ET
+Australia/Queensland.standard.short=EST
+Australia/South.daylight.short=CST
+Australia/South.generic.short=CT
+Australia/South.standard.short=CST
+Australia/Sydney.daylight.short=EST
+Australia/Sydney.generic.short=ET
+Australia/Sydney.standard.short=EST
+Australia/Tasmania.daylight.short=EST
+Australia/Tasmania.generic.short=ET
+Australia/Tasmania.standard.short=EST
+Australia/Victoria.daylight.short=EST
+Australia/Victoria.generic.short=ET
+Australia/Victoria.standard.short=EST
+Australia/West.daylight.short=WST
+Australia/West.generic.short=WT
+Australia/West.standard.short=WST
+Australia/Yancowinna.daylight.short=CST
+Australia/Yancowinna.generic.short=CT
+Australia/Yancowinna.standard.short=CST
+BET.daylight.short=BRST
+BET.generic.short=BRT
+BET.standard.short=BRT
+Brazil/Acre.daylight.short=ACST
+Brazil/Acre.generic.short=ACT
+Brazil/Acre.standard.short=ACT
+Brazil/DeNoronha.daylight.short=FNST
+Brazil/DeNoronha.generic.short=FNT
+Brazil/DeNoronha.standard.short=FNT
+Brazil/East.daylight.short=BRST
+Brazil/East.generic.short=BRT
+Brazil/East.standard.short=BRT
+Brazil/West.daylight.short=AMST
+Brazil/West.generic.short=AMT
+Brazil/West.standard.short=AMT
+BST.daylight.short=BDST
+BST.generic.short=BDT
+BST.standard.short=BDT
+Canada/Atlantic.daylight.short=ADT
+Canada/Atlantic.generic.short=AT
+Canada/Atlantic.standard.short=AST
+Canada/Central.daylight.short=CDT
+Canada/Central.generic.short=CT
+Canada/Central.standard.short=CST
+Canada/Eastern.daylight.short=EDT
+Canada/Eastern.generic.short=ET
+Canada/Eastern.standard.short=EST
+Canada/East-Saskatchewan.daylight.short=CDT
+Canada/East-Saskatchewan.generic.short=CT
+Canada/East-Saskatchewan.standard.short=CST
+Canada/Mountain.daylight.short=MDT
+Canada/Mountain.generic.short=MT
+Canada/Mountain.standard.short=MST
+Canada/Newfoundland.daylight.short=NDT
+Canada/Newfoundland.generic.short=NT
+Canada/Newfoundland.standard.short=NST
+Canada/Pacific.daylight.short=PDT
+Canada/Pacific.generic.short=PT
+Canada/Pacific.standard.short=PST
+Canada/Saskatchewan.daylight.short=CDT
+Canada/Saskatchewan.generic.short=CT
+Canada/Saskatchewan.standard.short=CST
+Canada/Yukon.daylight.short=PDT
+Canada/Yukon.generic.short=PT
+Canada/Yukon.standard.short=PST
+CAT.daylight.short=CAST
+CAT.generic.short=CAT
+CAT.standard.short=CAT
+CET.daylight.short=CEST
+CET.generic.short=CET
+CET.standard.short=CET
+Chile/Continental.daylight.short=CLST
+Chile/Continental.generic.short=CLT
+Chile/Continental.standard.short=CLT
+Chile/EasterIsland.daylight.short=EASST
+Chile/EasterIsland.generic.short=EAST
+Chile/EasterIsland.standard.short=EAST
+CNT.daylight.short=NDT
+CNT.generic.short=NT
+CNT.standard.short=NST
+CST6CDT.daylight.short=CDT
+CST6CDT.generic.short=CT
+CST6CDT.standard.short=CST
+CST.daylight.short=CDT
+CST.generic.short=CT
+CST.standard.short=CST
+CTT.daylight.short=CDT
+CTT.generic.short=CT
+CTT.standard.short=CST
+Cuba.daylight.short=CDT
+Cuba.generic.short=CT
+Cuba.standard.short=CST
+EAT.daylight.short=EAST
+EAT.generic.short=EAT
+EAT.standard.short=EAT
+ECT.daylight.short=CEST
+ECT.generic.short=CET
+ECT.standard.short=CET
+EET.daylight.short=EEST
+EET.generic.short=EET
+EET.standard.short=EET
+Egypt.daylight.short=EEST
+Egypt.generic.short=EET
+Egypt.standard.short=EET
+Eire.daylight.short=IST
+Eire.generic.short=IT
+Eire.standard.short=GMT
+EST5EDT.daylight.short=EDT
+EST5EDT.generic.short=ET
+EST5EDT.standard.short=EST
+EST.daylight.short=EDT
+EST.generic.short=ET
+EST.standard.short=EST
+Etc/Greenwich.daylight.short=GMT
+Etc/Greenwich.generic.short=GMT
+Etc/Greenwich.standard.short=GMT
+Etc/UCT.daylight.short=UTC
+Etc/UCT.generic.short=UTC
+Etc/UCT.standard.short=UTC
+Etc/Universal.daylight.short=UTC
+Etc/Universal.generic.short=UTC
+Etc/Universal.standard.short=UTC
+Etc/UTC.daylight.short=UTC
+Etc/UTC.generic.short=UTC
+Etc/UTC.standard.short=UTC
+Etc/Zulu.daylight.short=UTC
+Etc/Zulu.generic.short=UTC
+Etc/Zulu.standard.short=UTC
+Europe/Amsterdam.daylight.short=CEST
+Europe/Amsterdam.generic.short=CET
+Europe/Amsterdam.standard.short=CET
+Europe/Andorra.daylight.short=CEST
+Europe/Andorra.generic.short=CET
+Europe/Andorra.standard.short=CET
+Europe/Athens.daylight.short=EEST
+Europe/Athens.generic.short=EET
+Europe/Athens.standard.short=EET
+Europe/Belfast.daylight.short=BST
+Europe/Belfast.generic.short=BT
+Europe/Belfast.standard.short=GMT
+Europe/Belgrade.daylight.short=CEST
+Europe/Belgrade.generic.short=CET
+Europe/Belgrade.standard.short=CET
+Europe/Berlin.daylight.short=CEST
+Europe/Berlin.generic.short=CET
+Europe/Berlin.standard.short=CET
+Europe/Bratislava.daylight.short=CEST
+Europe/Bratislava.generic.short=CET
+Europe/Bratislava.standard.short=CET
+Europe/Brussels.daylight.short=CEST
+Europe/Brussels.generic.short=CET
+Europe/Brussels.standard.short=CET
+Europe/Bucharest.daylight.short=EEST
+Europe/Bucharest.generic.short=EET
+Europe/Bucharest.standard.short=EET
+Europe/Budapest.daylight.short=CEST
+Europe/Budapest.generic.short=CET
+Europe/Budapest.standard.short=CET
+Europe/Busingen.daylight.short=CEST
+Europe/Busingen.generic.short=CET
+Europe/Busingen.standard.short=CET
+Europe/Chisinau.daylight.short=EEST
+Europe/Chisinau.generic.short=EET
+Europe/Chisinau.standard.short=EET
+Europe/Copenhagen.daylight.short=CEST
+Europe/Copenhagen.generic.short=CET
+Europe/Copenhagen.standard.short=CET
+Europe/Dublin.daylight.short=IST
+Europe/Dublin.generic.short=IT
+Europe/Dublin.standard.short=GMT
+Europe/Gibraltar.daylight.short=CEST
+Europe/Gibraltar.generic.short=CET
+Europe/Gibraltar.standard.short=CET
+Europe/Guernsey.daylight.short=BST
+Europe/Guernsey.generic.short=BT
+Europe/Guernsey.standard.short=GMT
+Europe/Helsinki.daylight.short=EEST
+Europe/Helsinki.generic.short=EET
+Europe/Helsinki.standard.short=EET
+Europe/Isle_of_Man.daylight.short=BST
+Europe/Isle_of_Man.generic.short=BT
+Europe/Isle_of_Man.standard.short=GMT
+Europe/Istanbul.daylight.short=EEST
+Europe/Istanbul.generic.short=EET
+Europe/Istanbul.standard.short=EET
+Europe/Jersey.daylight.short=BST
+Europe/Jersey.generic.short=BT
+Europe/Jersey.standard.short=GMT
+Europe/Kaliningrad.daylight.short=FEST
+Europe/Kaliningrad.generic.short=FET
+Europe/Kaliningrad.standard.short=FET
+Europe/Kiev.daylight.short=EEST
+Europe/Kiev.generic.short=EET
+Europe/Kiev.standard.short=EET
+Europe/Lisbon.daylight.short=WEST
+Europe/Lisbon.generic.short=WET
+Europe/Lisbon.standard.short=WET
+Europe/Ljubljana.daylight.short=CEST
+Europe/Ljubljana.generic.short=CET
+Europe/Ljubljana.standard.short=CET
+Europe/London.daylight.short=BST
+Europe/London.generic.short=BT
+Europe/London.standard.short=GMT
+Europe/Luxembourg.daylight.short=CEST
+Europe/Luxembourg.generic.short=CET
+Europe/Luxembourg.standard.short=CET
+Europe/Madrid.daylight.short=CEST
+Europe/Madrid.generic.short=CET
+Europe/Madrid.standard.short=CET
+Europe/Malta.daylight.short=CEST
+Europe/Malta.generic.short=CET
+Europe/Malta.standard.short=CET
+Europe/Mariehamn.daylight.short=EEST
+Europe/Mariehamn.generic.short=EET
+Europe/Mariehamn.standard.short=EET
+Europe/Minsk.daylight.short=FEST
+Europe/Minsk.generic.short=FET
+Europe/Minsk.standard.short=FET
+Europe/Monaco.daylight.short=CEST
+Europe/Monaco.generic.short=CET
+Europe/Monaco.standard.short=CET
+Europe/Moscow.daylight.short=MSD
+Europe/Moscow.generic.short=MT
+Europe/Moscow.standard.short=MSK
+Europe/Nicosia.daylight.short=EEST
+Europe/Nicosia.generic.short=EET
+Europe/Nicosia.standard.short=EET
+Europe/Oslo.daylight.short=CEST
+Europe/Oslo.generic.short=CET
+Europe/Oslo.standard.short=CET
+Europe/Paris.daylight.short=CEST
+Europe/Paris.generic.short=CET
+Europe/Paris.standard.short=CET
+Europe/Podgorica.daylight.short=CEST
+Europe/Podgorica.generic.short=CET
+Europe/Podgorica.standard.short=CET
+Europe/Prague.daylight.short=CEST
+Europe/Prague.generic.short=CET
+Europe/Prague.standard.short=CET
+Europe/Riga.daylight.short=EEST
+Europe/Riga.generic.short=EET
+Europe/Riga.standard.short=EET
+Europe/Rome.daylight.short=CEST
+Europe/Rome.generic.short=CET
+Europe/Rome.standard.short=CET
+Europe/Samara.daylight.short=SAMST
+Europe/Samara.generic.short=SAMT
+Europe/Samara.standard.short=SAMT
+Europe/San_Marino.daylight.short=CEST
+Europe/San_Marino.generic.short=CET
+Europe/San_Marino.standard.short=CET
+Europe/Sarajevo.daylight.short=CEST
+Europe/Sarajevo.generic.short=CET
+Europe/Sarajevo.standard.short=CET
+Europe/Simferopol.daylight.short=EEST
+Europe/Simferopol.generic.short=EET
+Europe/Simferopol.standard.short=EET
+Europe/Skopje.daylight.short=CEST
+Europe/Skopje.generic.short=CET
+Europe/Skopje.standard.short=CET
+Europe/Sofia.daylight.short=EEST
+Europe/Sofia.generic.short=EET
+Europe/Sofia.standard.short=EET
+Europe/Stockholm.daylight.short=CEST
+Europe/Stockholm.generic.short=CET
+Europe/Stockholm.standard.short=CET
+Europe/Tallinn.daylight.short=EEST
+Europe/Tallinn.generic.short=EET
+Europe/Tallinn.standard.short=EET
+Europe/Tirane.daylight.short=CEST
+Europe/Tirane.generic.short=CET
+Europe/Tirane.standard.short=CET
+Europe/Tiraspol.daylight.short=EEST
+Europe/Tiraspol.generic.short=EET
+Europe/Tiraspol.standard.short=EET
+Europe/Uzhgorod.daylight.short=EEST
+Europe/Uzhgorod.generic.short=EET
+Europe/Uzhgorod.standard.short=EET
+Europe/Vaduz.daylight.short=CEST
+Europe/Vaduz.generic.short=CET
+Europe/Vaduz.standard.short=CET
+Europe/Vatican.daylight.short=CEST
+Europe/Vatican.generic.short=CET
+Europe/Vatican.standard.short=CET
+Europe/Vienna.daylight.short=CEST
+Europe/Vienna.generic.short=CET
+Europe/Vienna.standard.short=CET
+Europe/Vilnius.daylight.short=EEST
+Europe/Vilnius.generic.short=EET
+Europe/Vilnius.standard.short=EET
+Europe/Volgograd.daylight.short=VOLST
+Europe/Volgograd.generic.short=VOLT
+Europe/Volgograd.standard.short=VOLT
+Europe/Warsaw.daylight.short=CEST
+Europe/Warsaw.generic.short=CET
+Europe/Warsaw.standard.short=CET
+Europe/Zagreb.daylight.short=CEST
+Europe/Zagreb.generic.short=CET
+Europe/Zagreb.standard.short=CET
+Europe/Zaporozhye.daylight.short=EEST
+Europe/Zaporozhye.generic.short=EET
+Europe/Zaporozhye.standard.short=EET
+Europe/Zurich.daylight.short=CEST
+Europe/Zurich.generic.short=CET
+Europe/Zurich.standard.short=CET
+GB.daylight.short=BST
+GB-Eire.daylight.short=BST
+GB-Eire.generic.short=BT
+GB-Eire.standard.short=GMT
+GB.generic.short=BT
+GB.standard.short=GMT
+GMT.daylight.short=GMT
+GMT.generic.short=GMT
+GMT.standard.short=GMT
+Greenwich.daylight.short=GMT
+Greenwich.generic.short=GMT
+Greenwich.standard.short=GMT
+Hongkong.daylight.short=HKST
+Hongkong.generic.short=HKT
+Hongkong.standard.short=HKT
+HST.daylight.short=HDT
+HST.generic.short=HT
+HST.standard.short=HST
+Iceland.daylight.short=GMT
+Iceland.generic.short=GMT
+Iceland.standard.short=GMT
+IET.daylight.short=EDT
+IET.generic.short=ET
+IET.standard.short=EST
+Indian/Antananarivo.daylight.short=EAST
+Indian/Antananarivo.generic.short=EAT
+Indian/Antananarivo.standard.short=EAT
+Indian/Chagos.daylight.short=IOST
+Indian/Chagos.generic.short=IOT
+Indian/Chagos.standard.short=IOT
+Indian/Christmas.daylight.short=CXST
+Indian/Christmas.generic.short=CIT
+Indian/Christmas.standard.short=CXT
+Indian/Cocos.daylight.short=CCST
+Indian/Cocos.generic.short=CCT
+Indian/Cocos.standard.short=CCT
+Indian/Comoro.daylight.short=EAST
+Indian/Comoro.generic.short=EAT
+Indian/Comoro.standard.short=EAT
+Indian/Kerguelen.daylight.short=TFST
+Indian/Kerguelen.generic.short=TFT
+Indian/Kerguelen.standard.short=TFT
+Indian/Mahe.daylight.short=SCST
+Indian/Mahe.generic.short=SCT
+Indian/Mahe.standard.short=SCT
+Indian/Maldives.daylight.short=MVST
+Indian/Maldives.generic.short=MVT
+Indian/Maldives.standard.short=MVT
+Indian/Mauritius.daylight.short=MUST
+Indian/Mauritius.generic.short=MUT
+Indian/Mauritius.standard.short=MUT
+Indian/Mayotte.daylight.short=EAST
+Indian/Mayotte.generic.short=EAT
+Indian/Mayotte.standard.short=EAT
+Indian/Reunion.daylight.short=REST
+Indian/Reunion.generic.short=RET
+Indian/Reunion.standard.short=RET
+Iran.daylight.short=IRDT
+Iran.generic.short=IRT
+Iran.standard.short=IRST
+Israel.daylight.short=IDT
+Israel.generic.short=IT
+Israel.standard.short=IST
+IST.daylight.short=IDT
+IST.generic.short=IT
+IST.standard.short=IST
+Jamaica.daylight.short=EDT
+Jamaica.generic.short=ET
+Jamaica.standard.short=EST
+Japan.daylight.short=JDT
+Japan.generic.short=JT
+Japan.standard.short=JST
+JST.daylight.short=JDT
+JST.generic.short=JT
+JST.standard.short=JST
+Kwajalein.daylight.short=MHST
+Kwajalein.generic.short=MHT
+Kwajalein.standard.short=MHT
+Libya.daylight.short=EEST
+Libya.generic.short=EET
+Libya.standard.short=EET
+MET.daylight.short=MEST
+MET.generic.short=MET
+MET.standard.short=MET
+Mexico/BajaNorte.daylight.short=PDT
+Mexico/BajaNorte.generic.short=PT
+Mexico/BajaNorte.standard.short=PST
+Mexico/BajaSur.daylight.short=MDT
+Mexico/BajaSur.generic.short=MT
+Mexico/BajaSur.standard.short=MST
+Mexico/General.daylight.short=CDT
+Mexico/General.generic.short=CT
+Mexico/General.standard.short=CST
+MIT.daylight.short=WSDT
+MIT.generic.short=WST
+MIT.standard.short=WST
+MST7MDT.daylight.short=MDT
+MST7MDT.generic.short=MT
+MST7MDT.standard.short=MST
+MST.daylight.short=MDT
+MST.generic.short=MT
+MST.standard.short=MST
+Navajo.daylight.short=MDT
+Navajo.generic.short=MT
+Navajo.standard.short=MST
+NET.daylight.short=AMST
+NET.generic.short=AMT
+NET.standard.short=AMT
+NST.daylight.short=NZDT
+NST.generic.short=NZT
+NST.standard.short=NZST
+NZ-CHAT.daylight.short=CHADT
+NZ-CHAT.generic.short=CHAT
+NZ-CHAT.standard.short=CHAST
+NZ.daylight.short=NZDT
+NZ.generic.short=NZT
+NZ.standard.short=NZST
+Pacific/Apia.daylight.short=WSDT
+Pacific/Apia.generic.short=WST
+Pacific/Apia.standard.short=WST
+Pacific/Auckland.daylight.short=NZDT
+Pacific/Auckland.generic.short=NZT
+Pacific/Auckland.standard.short=NZST
+Pacific/Chatham.daylight.short=CHADT
+Pacific/Chatham.generic.short=CHAT
+Pacific/Chatham.standard.short=CHAST
+Pacific/Chuuk.daylight.short=CHUST
+Pacific/Chuuk.generic.short=CHUT
+Pacific/Chuuk.standard.short=CHUT
+Pacific/Easter.daylight.short=EASST
+Pacific/Easter.generic.short=EAST
+Pacific/Easter.standard.short=EAST
+Pacific/Efate.daylight.short=VUST
+Pacific/Efate.generic.short=VUT
+Pacific/Efate.standard.short=VUT
+Pacific/Enderbury.daylight.short=PHOST
+Pacific/Enderbury.generic.short=PHOT
+Pacific/Enderbury.standard.short=PHOT
+Pacific/Fakaofo.daylight.short=TKST
+Pacific/Fakaofo.generic.short=TKT
+Pacific/Fakaofo.standard.short=TKT
+Pacific/Fiji.daylight.short=FJST
+Pacific/Fiji.generic.short=FJT
+Pacific/Fiji.standard.short=FJT
+Pacific/Funafuti.daylight.short=TVST
+Pacific/Funafuti.generic.short=TVT
+Pacific/Funafuti.standard.short=TVT
+Pacific/Galapagos.daylight.short=GALST
+Pacific/Galapagos.generic.short=GALT
+Pacific/Galapagos.standard.short=GALT
+Pacific/Gambier.daylight.short=GAMST
+Pacific/Gambier.generic.short=GAMT
+Pacific/Gambier.standard.short=GAMT
+Pacific/Guadalcanal.daylight.short=SBST
+Pacific/Guadalcanal.generic.short=SBT
+Pacific/Guadalcanal.standard.short=SBT
+Pacific/Guam.daylight.short=ChDT
+Pacific/Guam.generic.short=ChT
+Pacific/Guam.standard.short=ChST
+Pacific/Honolulu.daylight.short=HDT
+Pacific/Honolulu.generic.short=HT
+Pacific/Honolulu.standard.short=HST
+Pacific/Johnston.daylight.short=HDT
+Pacific/Johnston.generic.short=HT
+Pacific/Johnston.standard.short=HST
+Pacific/Kiritimati.daylight.short=LINST
+Pacific/Kiritimati.generic.short=LINT
+Pacific/Kiritimati.standard.short=LINT
+Pacific/Kosrae.daylight.short=KOSST
+Pacific/Kosrae.generic.short=KOST
+Pacific/Kosrae.standard.short=KOST
+Pacific/Kwajalein.daylight.short=MHST
+Pacific/Kwajalein.generic.short=MHT
+Pacific/Kwajalein.standard.short=MHT
+Pacific/Majuro.daylight.short=MHST
+Pacific/Majuro.generic.short=MHT
+Pacific/Majuro.standard.short=MHT
+Pacific/Marquesas.daylight.short=MARST
+Pacific/Marquesas.generic.short=MART
+Pacific/Marquesas.standard.short=MART
+Pacific/Midway.daylight.short=SDT
+Pacific/Midway.generic.short=ST
+Pacific/Midway.standard.short=SST
+Pacific/Nauru.daylight.short=NRST
+Pacific/Nauru.generic.short=NRT
+Pacific/Nauru.standard.short=NRT
+Pacific/Niue.daylight.short=NUST
+Pacific/Niue.generic.short=NUT
+Pacific/Niue.standard.short=NUT
+Pacific/Norfolk.daylight.short=NFST
+Pacific/Norfolk.generic.short=NFT
+Pacific/Norfolk.standard.short=NFT
+Pacific/Noumea.daylight.short=NCST
+Pacific/Noumea.generic.short=NCT
+Pacific/Noumea.standard.short=NCT
+Pacific/Pago_Pago.daylight.short=SDT
+Pacific/Pago_Pago.generic.short=ST
+Pacific/Pago_Pago.standard.short=SST
+Pacific/Palau.daylight.short=PWST
+Pacific/Palau.generic.short=PWT
+Pacific/Palau.standard.short=PWT
+Pacific/Pitcairn.daylight.short=PDT
+Pacific/Pitcairn.generic.short=PT
+Pacific/Pitcairn.standard.short=PST
+Pacific/Pohnpei.daylight.short=PONST
+Pacific/Pohnpei.generic.short=PONT
+Pacific/Pohnpei.standard.short=PONT
+Pacific/Ponape.daylight.short=PONST
+Pacific/Ponape.generic.short=PONT
+Pacific/Ponape.standard.short=PONT
+Pacific/Port_Moresby.daylight.short=PGST
+Pacific/Port_Moresby.generic.short=PGT
+Pacific/Port_Moresby.standard.short=PGT
+Pacific/Rarotonga.daylight.short=CKHST
+Pacific/Rarotonga.generic.short=CKT
+Pacific/Rarotonga.standard.short=CKT
+Pacific/Saipan.daylight.short=ChDT
+Pacific/Saipan.generic.short=ChT
+Pacific/Saipan.standard.short=ChST
+Pacific/Samoa.daylight.short=SDT
+Pacific/Samoa.generic.short=ST
+Pacific/Samoa.standard.short=SST
+Pacific/Tahiti.daylight.short=TAHST
+Pacific/Tahiti.generic.short=TAHT
+Pacific/Tahiti.standard.short=TAHT
+Pacific/Tarawa.daylight.short=GILST
+Pacific/Tarawa.generic.short=GILT
+Pacific/Tarawa.standard.short=GILT
+Pacific/Tongatapu.daylight.short=TOST
+Pacific/Tongatapu.generic.short=TOT
+Pacific/Tongatapu.standard.short=TOT
+Pacific/Truk.daylight.short=CHUST
+Pacific/Truk.generic.short=CHUT
+Pacific/Truk.standard.short=CHUT
+Pacific/Wake.daylight.short=WAKST
+Pacific/Wake.generic.short=WAKT
+Pacific/Wake.standard.short=WAKT
+Pacific/Wallis.daylight.short=WFST
+Pacific/Wallis.generic.short=WFT
+Pacific/Wallis.standard.short=WFT
+Pacific/Yap.daylight.short=CHUST
+Pacific/Yap.generic.short=CHUT
+Pacific/Yap.standard.short=CHUT
+PLT.daylight.short=PKST
+PLT.generic.short=PKT
+PLT.standard.short=PKT
+PNT.daylight.short=MDT
+PNT.generic.short=MT
+PNT.standard.short=MST
+Poland.daylight.short=CEST
+Poland.generic.short=CET
+Poland.standard.short=CET
+Portugal.daylight.short=WEST
+Portugal.generic.short=WET
+Portugal.standard.short=WET
+PRC.daylight.short=CDT
+PRC.generic.short=CT
+PRC.standard.short=CST
+PRT.daylight.short=ADT
+PRT.generic.short=AT
+PRT.standard.short=AST
+PST8PDT.daylight.short=PDT
+PST8PDT.generic.short=PT
+PST8PDT.standard.short=PST
+PST.daylight.short=PDT
+PST.generic.short=PT
+PST.standard.short=PST
+ROK.daylight.short=KDT
+ROK.generic.short=KT
+ROK.standard.short=KST
+Singapore.daylight.short=SGST
+Singapore.generic.short=SGT
+Singapore.standard.short=SGT
+SST.daylight.short=SBST
+SST.generic.short=SBT
+SST.standard.short=SBT
+SystemV/AST4ADT.daylight.short=ADT
+SystemV/AST4ADT.generic.short=AT
+SystemV/AST4ADT.standard.short=AST
+SystemV/AST4.daylight.short=ADT
+SystemV/AST4.generic.short=AT
+SystemV/AST4.standard.short=AST
+SystemV/CST6CDT.daylight.short=CDT
+SystemV/CST6CDT.generic.short=CT
+SystemV/CST6CDT.standard.short=CST
+SystemV/CST6.daylight.short=CDT
+SystemV/CST6.generic.short=CT
+SystemV/CST6.standard.short=CST
+SystemV/EST5.daylight.short=EDT
+SystemV/EST5EDT.daylight.short=EDT
+SystemV/EST5EDT.generic.short=ET
+SystemV/EST5EDT.standard.short=EST
+SystemV/EST5.generic.short=ET
+SystemV/EST5.standard.short=EST
+SystemV/HST10.daylight.short=HDT
+SystemV/HST10.generic.short=HT
+SystemV/HST10.standard.short=HST
+SystemV/MST7.daylight.short=MDT
+SystemV/MST7.generic.short=MT
+SystemV/MST7MDT.daylight.short=MDT
+SystemV/MST7MDT.generic.short=MT
+SystemV/MST7MDT.standard.short=MST
+SystemV/MST7.standard.short=MST
+SystemV/PST8.daylight.short=PDT
+SystemV/PST8.generic.short=PT
+SystemV/PST8PDT.daylight.short=PDT
+SystemV/PST8PDT.generic.short=PT
+SystemV/PST8PDT.standard.short=PST
+SystemV/PST8.standard.short=PST
+SystemV/YST9.daylight.short=AKDT
+SystemV/YST9.generic.short=AKT
+SystemV/YST9.standard.short=AKST
+SystemV/YST9YDT.daylight.short=AKDT
+SystemV/YST9YDT.generic.short=AKT
+SystemV/YST9YDT.standard.short=AKST
+Turkey.daylight.short=EEST
+Turkey.generic.short=EET
+Turkey.standard.short=EET
+UCT.daylight.short=UTC
+UCT.generic.short=UTC
+UCT.standard.short=UTC
+Universal.daylight.short=UTC
+Universal.generic.short=UTC
+Universal.standard.short=UTC
+US/Alaska.daylight.short=AKDT
+US/Alaska.generic.short=AKT
+US/Alaska.standard.short=AKST
+US/Aleutian.daylight.short=HADT
+US/Aleutian.generic.short=HAT
+US/Aleutian.standard.short=HAST
+US/Arizona.daylight.short=MDT
+US/Arizona.generic.short=MT
+US/Arizona.standard.short=MST
+US/Central.daylight.short=CDT
+US/Central.generic.short=CT
+US/Central.standard.short=CST
+US/Eastern.daylight.short=EDT
+US/Eastern.generic.short=ET
+US/Eastern.standard.short=EST
+US/East-Indiana.daylight.short=EDT
+US/East-Indiana.generic.short=ET
+US/East-Indiana.standard.short=EST
+US/Hawaii.daylight.short=HDT
+US/Hawaii.generic.short=HT
+US/Hawaii.standard.short=HST
+US/Indiana-Starke.daylight.short=CDT
+US/Indiana-Starke.generic.short=CT
+US/Indiana-Starke.standard.short=CST
+US/Michigan.daylight.short=EDT
+US/Michigan.generic.short=ET
+US/Michigan.standard.short=EST
+US/Mountain.daylight.short=MDT
+US/Mountain.generic.short=MT
+US/Mountain.standard.short=MST
+US/Pacific.daylight.short=PDT
+US/Pacific.generic.short=PT
+US/Pacific-New.daylight.short=PDT
+US/Pacific-New.generic.short=PT
+US/Pacific-New.standard.short=PST
+US/Pacific.standard.short=PST
+US/Samoa.daylight.short=SDT
+US/Samoa.generic.short=ST
+US/Samoa.standard.short=SST
+UTC.daylight.short=UTC
+UTC.generic.short=UTC
+UTC.standard.short=UTC
+VST.daylight.short=ICST
+VST.generic.short=ICT
+VST.standard.short=ICT
+WET.daylight.short=WEST
+WET.generic.short=WET
+WET.standard.short=WET
+W-SU.daylight.short=MSD
+W-SU.generic.short=MT
+W-SU.standard.short=MSK
+Zulu.daylight.short=UTC
+Zulu.generic.short=UTC
+Zulu.standard.short=UTC
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_sv.properties Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,651 @@
+ACT.daylight.long=Central sommartid (Nordterritoriet)
+ACT.generic.long=Central tid (Nordterritoriet)
+ACT.standard.long=Central standardtid (Nordterritoriet)
+AET.daylight.long=\u00D6stlig sommartid (New South Wales)
+AET.generic.long=\u00D6stlig tid (New South Wales)
+AET.standard.long=\u00D6stlig standardtid (New South Wales)
+AGT.generic.long=Argentinsk tid
+ART.generic.long=\u00D6steuropeisk tid
+AST.generic.long=Alaskisk tid
+Africa/Abidjan.generic.long=Greenwichtid
+Africa/Accra.generic.long=Ghana, normaltid
+Africa/Addis_Ababa.generic.long=\u00D6stafrikansk tid
+Africa/Algiers.generic.long=Centraleuropeisk tid
+Africa/Asmara.generic.long=\u00D6stafrikansk tid
+Africa/Asmera.generic.long=\u00D6stafrikansk tid
+Africa/Bamako.generic.long=Greenwichtid
+Africa/Bangui.generic.long=V\u00E4stafrikansk tid
+Africa/Banjul.generic.long=Greenwichtid
+Africa/Bissau.generic.long=Greenwichtid
+Africa/Blantyre.generic.long=Centralafrikansk tid
+Africa/Brazzaville.generic.long=V\u00E4stafrikansk tid
+Africa/Bujumbura.generic.long=Centralafrikansk tid
+Africa/Cairo.generic.long=\u00D6steuropeisk tid
+Africa/Casablanca.generic.long=V\u00E4steuropeisk tid
+Africa/Ceuta.generic.long=Centraleuropeisk tid
+Africa/Conakry.generic.long=Greenwichtid
+Africa/Dakar.generic.long=Greenwichtid
+Africa/Dar_es_Salaam.generic.long=\u00D6stafrikansk tid
+Africa/Djibouti.generic.long=\u00D6stafrikansk tid
+Africa/Douala.generic.long=V\u00E4stafrikansk tid
+Africa/El_Aaiun.generic.long=V\u00E4steuropeisk tid
+Africa/Freetown.generic.long=Sierra Leone-tid
+Africa/Gaborone.generic.long=Centralafrikansk tid
+Africa/Harare.generic.long=Centralafrikansk tid
+Africa/Johannesburg.generic.long=Sydafrikansk tid
+Africa/Juba.generic.long=\u00D6stafrikansk tid
+Africa/Kampala.generic.long=\u00D6stafrikansk tid
+Africa/Khartoum.generic.long=\u00D6stafrikansk tid
+Africa/Kigali.generic.long=Centralafrikansk tid
+Africa/Kinshasa.generic.long=V\u00E4stafrikansk tid
+Africa/Lagos.generic.long=V\u00E4stafrikansk tid
+Africa/Libreville.generic.long=V\u00E4stafrikansk tid
+Africa/Lome.generic.long=Greenwichtid
+Africa/Luanda.generic.long=V\u00E4stafrikansk tid
+Africa/Lubumbashi.generic.long=Centralafrikansk tid
+Africa/Lusaka.generic.long=Centralafrikansk tid
+Africa/Malabo.generic.long=V\u00E4stafrikansk tid
+Africa/Maputo.generic.long=Centralafrikansk tid
+Africa/Maseru.generic.long=Sydafrikansk tid
+Africa/Mbabane.generic.long=Sydafrikansk tid
+Africa/Mogadishu.generic.long=\u00D6stafrikansk tid
+Africa/Monrovia.generic.long=Greenwichtid
+Africa/Nairobi.generic.long=\u00D6stafrikansk tid
+Africa/Ndjamena.generic.long=V\u00E4stafrikansk tid
+Africa/Niamey.generic.long=V\u00E4stafrikansk tid
+Africa/Nouakchott.generic.long=Greenwichtid
+Africa/Ouagadougou.generic.long=Greenwichtid
+Africa/Porto-Novo.generic.long=V\u00E4stafrikansk tid
+Africa/Sao_Tome.generic.long=Greenwichtid
+Africa/Timbuktu.generic.long=Greenwichtid
+Africa/Tripoli.generic.long=\u00d6steuropeisk tid
+Africa/Tunis.generic.long=Centraleuropeisk tid
+Africa/Windhoek.generic.long=V\u00E4stafrikansk tid
+America/Adak.generic.long=Hawaiiansk-aleutisk tid
+America/Anchorage.generic.long=Alaskisk tid
+America/Anguilla.generic.long=Atlantisk tid
+America/Antigua.generic.long=Atlantisk tid
+America/Araguaina.generic.long=Brasiliansk tid
+America/Argentina/Buenos_Aires.generic.long=Argentinsk tid
+America/Argentina/Catamarca.generic.long=Argentinsk tid
+America/Argentina/ComodRivadavia.generic.long=Argentinsk tid
+America/Argentina/Cordoba.generic.long=Argentinsk tid
+America/Argentina/Jujuy.generic.long=Argentinsk tid
+America/Argentina/La_Rioja.generic.long=Argentinsk tid
+America/Argentina/Mendoza.generic.long=Argentinsk tid
+America/Argentina/Rio_Gallegos.generic.long=Argentinsk tid
+America/Argentina/Salta.generic.long=Argentinsk tid
+America/Argentina/San_Juan.generic.long=Argentinsk tid
+America/Argentina/San_Luis.generic.long=Argentinsk tid
+America/Argentina/Tucuman.generic.long=Argentinsk tid
+America/Argentina/Ushuaia.generic.long=Argentinsk tid
+America/Aruba.generic.long=Atlantisk tid
+America/Asuncion.generic.long=Paraguayansk tid
+America/Atikokan.generic.long=\u00D6stlig tid
+America/Atka.generic.long=Hawaiiansk-aleutisk tid
+America/Bahia.generic.long=Brasiliansk tid
+America/Bahia_Banderas.generic.long=Central tid
+America/Barbados.generic.long=Atlantisk tid
+America/Belem.generic.long=Brasiliansk tid
+America/Belize.generic.long=Central tid
+America/Blanc-Sablon.generic.long=Atlantisk tid
+America/Boa_Vista.generic.long=Amazonas-tid
+America/Bogota.generic.long=Kolombiansk tid
+America/Boise.generic.long=Mountain-tid
+America/Buenos_Aires.generic.long=Argentinsk tid
+America/Cambridge_Bay.generic.long=Mountain-tid
+America/Campo_Grande.generic.long=Amazonas-tid
+America/Cancun.generic.long=Central tid
+America/Caracas.generic.long=Venezuelansk tid
+America/Catamarca.generic.long=Argentinsk tid
+America/Cayenne.generic.long=Franska Guyana-tid
+America/Cayman.generic.long=\u00D6stlig tid
+America/Chicago.generic.long=Central tid
+America/Chihuahua.generic.long=Mountain-tid
+America/Coral_Harbour.generic.long=\u00D6stlig tid
+America/Cordoba.generic.long=Argentinsk tid
+America/Costa_Rica.generic.long=Central tid
+America/Creston.generic.long=Mountain-tid
+America/Cuiaba.generic.long=Amazonas-tid
+America/Curacao.generic.long=Atlantisk tid
+America/Danmarkshavn.generic.long=Greenwichtid
+America/Dawson.generic.long=Stillahavet
+America/Dawson_Creek.generic.long=Mountain-tid
+America/Denver.generic.long=Mountain-tid
+America/Detroit.generic.long=\u00D6stlig tid
+America/Dominica.generic.long=Atlantisk tid
+America/Edmonton.generic.long=Mountain-tid
+America/Eirunepe.generic.long=Acre, normaltid
+America/El_Salvador.generic.long=Central tid
+America/Ensenada.generic.long=Stillahavet
+America/Fort_Wayne.generic.long=\u00D6stlig tid
+America/Fortaleza.generic.long=Brasiliansk tid
+America/Glace_Bay.generic.long=Atlantisk tid
+America/Godthab.generic.long=V\u00E4stgr\u00F6nl\u00E4ndsk tid
+America/Goose_Bay.generic.long=Atlantisk tid
+America/Grand_Turk.generic.long=\u00D6stlig tid
+America/Grenada.generic.long=Atlantisk tid
+America/Guadeloupe.generic.long=Atlantisk tid
+America/Guatemala.generic.long=Central tid
+America/Guayaquil.generic.long=Ecuadoriansk tid
+America/Guyana.generic.long=Guyansk tid
+America/Halifax.generic.long=Atlantisk tid
+America/Havana.generic.long=Kubansk tid
+America/Hermosillo.generic.long=Mountain-tid
+America/Indiana/Indianapolis.generic.long=\u00D6stlig tid
+America/Indiana/Knox.generic.long=Central tid
+America/Indiana/Marengo.generic.long=\u00D6stlig tid
+America/Indiana/Petersburg.generic.long=\u00D6stlig tid
+America/Indiana/Tell_City.generic.long=Central tid
+America/Indiana/Vevay.generic.long=\u00D6stlig tid
+America/Indiana/Vincennes.generic.long=\u00D6stlig tid
+America/Indiana/Winamac.generic.long=\u00D6stlig tid
+America/Indianapolis.generic.long=\u00D6stlig tid
+America/Inuvik.generic.long=Mountain-tid
+America/Iqaluit.generic.long=\u00D6stlig tid
+America/Jamaica.generic.long=\u00D6stlig tid
+America/Jujuy.generic.long=Argentinsk tid
+America/Juneau.generic.long=Alaskisk tid
+America/Kentucky/Louisville.generic.long=\u00D6stlig tid
+America/Kentucky/Monticello.generic.long=\u00D6stlig tid
+America/Knox_IN.generic.long=Central tid
+America/Kralendijk.generic.long=Atlantisk tid
+America/La_Paz.generic.long=Boliviansk tid
+America/Lima.generic.long=Peruansk tid
+America/Los_Angeles.generic.long=Stillahavet
+America/Louisville.generic.long=\u00D6stlig tid
+America/Lower_Princes.generic.long=Atlantisk tid
+America/Maceio.generic.long=Brasiliansk tid
+America/Managua.generic.long=Central tid
+America/Manaus.generic.long=Amazonas-tid
+America/Marigot.generic.long=Atlantisk tid
+America/Martinique.generic.long=Atlantisk tid
+America/Matamoros.generic.long=Central tid
+America/Mazatlan.generic.long=Mountain-tid
+America/Mendoza.generic.long=Argentinsk tid
+America/Menominee.generic.long=Central tid
+America/Merida.generic.long=Central tid
+America/Metlakatla.daylight.long=Metlakatla, sommartid
+America/Metlakatla.generic.long=Metlakatla-tid
+America/Metlakatla.standard.long=Metlakatla, normaltid
+America/Mexico_City.generic.long=Central tid
+America/Miquelon.generic.long=Saint-Pierre och Miquelons tid
+America/Moncton.generic.long=Atlantisk tid
+America/Monterrey.generic.long=Central tid
+America/Montevideo.generic.long=Uruguayansk tid
+America/Montreal.generic.long=\u00D6stlig tid
+America/Montserrat.generic.long=Atlantisk tid
+America/Nassau.generic.long=\u00D6stlig tid
+America/New_York.generic.long=\u00D6stlig tid
+America/Nipigon.generic.long=\u00D6stlig tid
+America/Nome.generic.long=Alaskisk tid
+America/Noronha.generic.long=Fernando de Noronha-tid
+America/North_Dakota/Beulah.generic.long=Central tid
+America/North_Dakota/Center.generic.long=Central tid
+America/North_Dakota/New_Salem.generic.long=Central tid
+America/Ojinaga.generic.long=Mountain-tid
+America/Panama.generic.long=\u00D6stlig tid
+America/Pangnirtung.generic.long=\u00D6stlig tid
+America/Paramaribo.generic.long=Surinamsk tid
+America/Phoenix.generic.long=Mountain-tid
+America/Port-au-Prince.generic.long=\u00D6stlig tid
+America/Port_of_Spain.generic.long=Atlantisk tid
+America/Porto_Acre.generic.long=Acre, normaltid
+America/Porto_Velho.generic.long=Amazonas-tid
+America/Puerto_Rico.generic.long=Atlantisk tid
+America/Rainy_River.generic.long=Central tid
+America/Rankin_Inlet.generic.long=Central tid
+America/Recife.generic.long=Brasiliansk tid
+America/Regina.generic.long=Central tid
+America/Resolute.generic.long=Central tid
+America/Rio_Branco.generic.long=Acre, normaltid
+America/Rosario.generic.long=Argentinsk tid
+America/Santa_Isabel.generic.long=Stillahavet
+America/Santarem.generic.long=Brasiliansk tid
+America/Santiago.generic.long=Chilensk tid
+America/Santo_Domingo.generic.long=Atlantisk tid
+America/Sao_Paulo.generic.long=Brasiliansk tid
+America/Scoresbysund.generic.long=\u00D6stgr\u00F6nl\u00E4ndsk tid
+America/Shiprock.generic.long=Mountain-tid
+America/Sitka.generic.long=Alaskisk tid
+America/St_Barthelemy.generic.long=Atlantisk tid
+America/St_Johns.generic.long=Newfoundl\u00E4ndsk tid
+America/St_Kitts.generic.long=Atlantisk tid
+America/St_Lucia.generic.long=Atlantisk tid
+America/St_Thomas.generic.long=Atlantisk tid
+America/St_Vincent.generic.long=Atlantisk tid
+America/Swift_Current.generic.long=Central tid
+America/Tegucigalpa.generic.long=Central tid
+America/Thule.generic.long=Atlantisk tid
+America/Thunder_Bay.generic.long=\u00D6stlig tid
+America/Tijuana.generic.long=Stillahavet
+America/Toronto.generic.long=\u00D6stlig tid
+America/Tortola.generic.long=Atlantisk tid
+America/Vancouver.generic.long=Stillahavet
+America/Virgin.generic.long=Atlantisk tid
+America/Whitehorse.generic.long=Stillahavet
+America/Winnipeg.generic.long=Central tid
+America/Yakutat.generic.long=Alaskisk tid
+America/Yellowknife.generic.long=Mountain-tid
+Antarctica/Casey.daylight.long=V\u00E4stlig sommartid (Australien)
+Antarctica/Casey.generic.long=V\u00E4stlig tid (Australien)
+Antarctica/Casey.standard.long=Western Standard Time (Australien)
+Antarctica/Davis.generic.long=Davis-tid
+Antarctica/DumontDUrville.generic.long=Dumont-d'Urville-tid
+Antarctica/Macquarie.daylight.long=Macquarie\u00F6n, sommartid
+Antarctica/Macquarie.generic.long=Macquarie\u00F6n, normaltid
+Antarctica/Macquarie.standard.long=Macquarie\u00F6n, normaltid
+Antarctica/Mawson.generic.long=Mawson-tid
+Antarctica/McMurdo.generic.long=Nyzeel\u00E4ndsk tid
+Antarctica/Palmer.generic.long=Chilensk tid
+Antarctica/Rothera.generic.long=Rothera-tid
+Antarctica/South_Pole.generic.long=Nyzeel\u00E4ndsk tid
+Antarctica/Syowa.generic.long=Syowa-tid
+Antarctica/Vostok.generic.long=Vostok-tid
+Arctic/Longyearbyen.generic.long=Centraleuropeisk tid
+Asia/Aden.generic.long=Arabisk tid
+Asia/Almaty.generic.long=Alma-Ata-tid
+Asia/Amman.generic.long=Arabisk tid
+Asia/Anadyr.generic.long=Anadyr-tid
+Asia/Aqtau.generic.long=Aqtau-tid
+Asia/Aqtobe.generic.long=Aqtobe-tid
+Asia/Ashgabat.generic.long=Turkmensk tid
+Asia/Ashkhabad.generic.long=Turkmensk tid
+Asia/Baghdad.generic.long=Arabisk tid
+Asia/Bahrain.generic.long=Arabisk tid
+Asia/Baku.generic.long=Azerbajdzjansk tid
+Asia/Bangkok.generic.long=Indokinesisk tid
+Asia/Beirut.generic.long=\u00D6steuropeisk tid
+Asia/Bishkek.generic.long=Kirgizisk tid
+Asia/Brunei.generic.long=Bruneisk tid
+Asia/Calcutta.generic.long=Indisk tid
+Asia/Choibalsan.generic.long=Choibalsan-tid
+Asia/Chongqing.generic.long=Kinesisk tid
+Asia/Chungking.generic.long=Kinesisk tid
+Asia/Colombo.generic.long=Indisk tid
+Asia/Dacca.generic.long=Bangladeshisk tid
+Asia/Damascus.generic.long=\u00D6steuropeisk tid
+Asia/Dhaka.generic.long=Bangladeshisk tid
+Asia/Dili.generic.long=\u00D6sttimor, normaltid
+Asia/Dubai.generic.long=Golfens tid
+Asia/Dushanbe.generic.long=Tadzjikisk tid
+Asia/Gaza.generic.long=\u00D6steuropeisk tid
+Asia/Harbin.generic.long=Kinesisk tid
+Asia/Hebron.generic.long=\u00D6steuropeisk tid
+Asia/Ho_Chi_Minh.generic.long=Indokinesisk tid
+Asia/Hong_Kong.generic.long=Hongkong-tid
+Asia/Hovd.generic.long=Hovd-tid
+Asia/Irkutsk.generic.long=Irkutsk-tid
+Asia/Istanbul.generic.long=\u00D6steuropeisk tid
+Asia/Jakarta.generic.long=V\u00E4stindonesisk tid
+Asia/Jayapura.generic.long=\u00D6stindonesisk tid
+Asia/Jerusalem.generic.long=Israelisk tid
+Asia/Kabul.generic.long=Afghansk tid
+Asia/Kamchatka.generic.long=Petropavlovsk-Kamtjatskij-tid
+Asia/Karachi.generic.long=Pakistansk tid
+Asia/Kashgar.generic.long=Kinesisk tid
+Asia/Kathmandu.generic.long=Nepalesisk tid
+Asia/Katmandu.generic.long=Nepalesisk tid
+Asia/Khandyga.daylight.long=Khandyga, sommartid
+Asia/Khandyga.generic.long=Khandyga, normaltid
+Asia/Khandyga.standard.long=Khandyga, normaltid
+Asia/Kolkata.generic.long=Indisk tid
+Asia/Krasnoyarsk.generic.long=Krasnojarsk-tid
+Asia/Kuala_Lumpur.generic.long=Malaysisk tid
+Asia/Kuching.generic.long=Malaysisk tid
+Asia/Kuwait.generic.long=Arabisk tid
+Asia/Macao.generic.long=Kinesisk tid
+Asia/Macau.generic.long=Kinesisk tid
+Asia/Magadan.generic.long=Magadan-tid
+Asia/Makassar.generic.long=Centralindonesisk tid
+Asia/Manila.generic.long=Filippinsk tid
+Asia/Muscat.generic.long=Golfens tid
+Asia/Nicosia.generic.long=\u00D6steuropeisk tid
+Asia/Novokuznetsk.generic.long=Sibirisk tid
+Asia/Novosibirsk.generic.long=Sibirisk tid
+Asia/Omsk.generic.long=Omsk-tid
+Asia/Oral.generic.long=Oral-tid
+Asia/Phnom_Penh.generic.long=Indokinesisk tid
+Asia/Pontianak.generic.long=V\u00E4stindonesisk tid
+Asia/Pyongyang.generic.long=Koreansk tid
+Asia/Qatar.generic.long=Arabisk tid
+Asia/Qyzylorda.generic.long=Qyzylorda-tid
+Asia/Rangoon.generic.long=Myanmar-tid
+Asia/Saigon.generic.long=Indokinesisk tid
+Asia/Sakhalin.generic.long=Sakhalin-tid
+Asia/Samarkand.generic.long=Uzbekisk tid
+Asia/Seoul.generic.long=Koreansk tid
+Asia/Shanghai.generic.long=Kinesisk tid
+Asia/Singapore.generic.long=Singapore-tid
+Asia/Taipei.generic.long=Kinesisk tid
+Asia/Tashkent.generic.long=Uzbekisk tid
+Asia/Tbilisi.generic.long=Georgisk tid
+Asia/Tehran.generic.long=Iransk tid
+Asia/Tel_Aviv.generic.long=Israelisk tid
+Asia/Thimbu.generic.long=Bhutanesisk tid
+Asia/Thimphu.generic.long=Bhutanesisk tid
+Asia/Tokyo.generic.long=Japansk tid
+Asia/Ujung_Pandang.generic.long=Centralindonesisk tid
+Asia/Ulaanbaatar.generic.long=Ulaanbaatar-tid
+Asia/Ulan_Bator.generic.long=Ulaanbaatar-tid
+Asia/Urumqi.generic.long=Kinesisk tid
+Asia/Ust-Nera.daylight.long=Ust-Nera, sommartid
+Asia/Ust-Nera.generic.long=Ust-Nera, normaltid
+Asia/Ust-Nera.standard.long=Ust-Nera, normaltid
+Asia/Vientiane.generic.long=Indokinesisk tid
+Asia/Vladivostok.generic.long=Vladivostok-tid
+Asia/Yakutsk.generic.long=Jakutsk-tid
+Asia/Yekaterinburg.generic.long=Jekaterinburg-tid
+Asia/Yerevan.generic.long=Armenisk tid
+Atlantic/Azores.generic.long=Azorerna-tid
+Atlantic/Bermuda.generic.long=Atlantisk tid
+Atlantic/Canary.generic.long=V\u00E4steuropeisk tid
+Atlantic/Cape_Verde.generic.long=Kap Verde-tid
+Atlantic/Faeroe.generic.long=V\u00E4steuropeisk tid
+Atlantic/Faroe.generic.long=V\u00E4steuropeisk tid
+Atlantic/Jan_Mayen.generic.long=Centraleuropeisk tid
+Atlantic/Madeira.generic.long=V\u00E4steuropeisk tid
+Atlantic/Reykjavik.generic.long=Greenwichtid
+Atlantic/South_Georgia.generic.long=Sydgeorgisk tid
+Atlantic/St_Helena.generic.long=Greenwichtid
+Atlantic/Stanley.generic.long=Falklands\u00F6arna-tid
+Australia/ACT.daylight.long=\u00D6stlig sommartid (New South Wales)
+Australia/ACT.generic.long=\u00D6stlig tid (New South Wales)
+Australia/ACT.standard.long=\u00D6stlig standardtid (New South Wales)
+Australia/Adelaide.daylight.long=Central sommartid (South Australia)
+Australia/Adelaide.generic.long=Central tid (Sydaustralien)
+Australia/Adelaide.standard.long=Central standardtid (Sydaustralien)
+Australia/Brisbane.daylight.long=\u00D6stlig sommartid (Queensland)
+Australia/Brisbane.generic.long=\u00D6stlig tid (Queensland)
+Australia/Brisbane.standard.long=\u00D6stlig standardtid (Queensland)
+Australia/Broken_Hill.daylight.long=Central sommartid (South Australia/New South Wales)
+Australia/Broken_Hill.generic.long=Central tid (Sydaustralien/New South Wales)
+Australia/Broken_Hill.standard.long=Central standardtid (Sydaustralien/New South Wales)
+Australia/Canberra.daylight.long=\u00D6stlig sommartid (New South Wales)
+Australia/Canberra.generic.long=\u00D6stlig tid (New South Wales)
+Australia/Canberra.standard.long=\u00D6stlig standardtid (New South Wales)
+Australia/Currie.daylight.long=\u00D6stlig sommartid (New South Wales)
+Australia/Currie.generic.long=\u00D6stlig tid (New South Wales)
+Australia/Currie.standard.long=\u00D6stlig standardtid (New South Wales)
+Australia/Darwin.daylight.long=Central sommartid (Nordterritoriet)
+Australia/Darwin.generic.long=Central tid (Nordterritoriet)
+Australia/Darwin.standard.long=Central standardtid (Nordterritoriet)
+Australia/Eucla.daylight.long=Central v\u00E4stlig sommartid (Australien)
+Australia/Eucla.generic.long=Central v\u00E4stlig tid (Australien)
+Australia/Eucla.standard.long=Central v\u00E4stlig normaltid (Australien)
+Australia/Hobart.daylight.long=\u00D6stlig sommartid (Tasmanien)
+Australia/Hobart.generic.long=\u00D6stlig tid (Tasmania)
+Australia/Hobart.standard.long=\u00D6stlig standardtid (Tasmania)
+Australia/LHI.generic.long=Lord Howe-tid
+Australia/Lindeman.daylight.long=\u00D6stlig sommartid (Queensland)
+Australia/Lindeman.generic.long=\u00D6stlig tid (Queensland)
+Australia/Lindeman.standard.long=\u00D6stlig standardtid (Queensland)
+Australia/Lord_Howe.generic.long=Lord Howe-tid
+Australia/Melbourne.daylight.long=\u00D6stlig sommartid (Victoria)
+Australia/Melbourne.generic.long=\u00D6stlig tid (Victoria)
+Australia/Melbourne.standard.long=\u00D6stlig standardtid (Victoria)
+Australia/NSW.daylight.long=\u00D6stlig sommartid (New South Wales)
+Australia/NSW.generic.long=\u00D6stlig tid (New South Wales)
+Australia/NSW.standard.long=\u00D6stlig standardtid (New South Wales)
+Australia/North.daylight.long=Central sommartid (Nordterritoriet)
+Australia/North.generic.long=Central tid (Nordterritoriet)
+Australia/North.standard.long=Central standardtid (Nordterritoriet)
+Australia/Perth.daylight.long=V\u00E4stlig sommartid (Australien)
+Australia/Perth.generic.long=V\u00E4stlig tid (Australien)
+Australia/Perth.standard.long=Western Standard Time (Australien)
+Australia/Queensland.daylight.long=\u00D6stlig sommartid (Queensland)
+Australia/Queensland.generic.long=\u00D6stlig tid (Queensland)
+Australia/Queensland.standard.long=\u00D6stlig standardtid (Queensland)
+Australia/South.daylight.long=Central sommartid (South Australia)
+Australia/South.generic.long=Central tid (Sydaustralien)
+Australia/South.standard.long=Central standardtid (Sydaustralien)
+Australia/Sydney.daylight.long=\u00D6stlig sommartid (New South Wales)
+Australia/Sydney.generic.long=\u00D6stlig tid (New South Wales)
+Australia/Sydney.standard.long=\u00D6stlig standardtid (New South Wales)
+Australia/Tasmania.daylight.long=\u00D6stlig sommartid (Tasmanien)
+Australia/Tasmania.generic.long=\u00D6stlig tid (Tasmania)
+Australia/Tasmania.standard.long=\u00D6stlig standardtid (Tasmania)
+Australia/Victoria.daylight.long=\u00D6stlig sommartid (Victoria)
+Australia/Victoria.generic.long=\u00D6stlig tid (Victoria)
+Australia/Victoria.standard.long=\u00D6stlig standardtid (Victoria)
+Australia/West.daylight.long=V\u00E4stlig sommartid (Australien)
+Australia/West.generic.long=V\u00E4stlig tid (Australien)
+Australia/West.standard.long=Western Standard Time (Australien)
+Australia/Yancowinna.daylight.long=Central sommartid (South Australia/New South Wales)
+Australia/Yancowinna.generic.long=Central tid (Sydaustralien/New South Wales)
+Australia/Yancowinna.standard.long=Central standardtid (Sydaustralien/New South Wales)
+BET.generic.long=Brasiliansk tid
+BST.generic.long=Bangladeshisk tid
+Brazil/Acre.generic.long=Acre, normaltid
+Brazil/DeNoronha.generic.long=Fernando de Noronha-tid
+Brazil/East.generic.long=Brasiliansk tid
+Brazil/West.generic.long=Amazonas-tid
+CAT.generic.long=Centralafrikansk tid
+CET.generic.long=Centraleuropeisk tid
+CNT.generic.long=Newfoundl\u00E4ndsk tid
+CST.generic.long=Central tid
+CST6CDT.generic.long=Central tid
+CTT.generic.long=Kinesisk tid
+Canada/Atlantic.generic.long=Atlantisk tid
+Canada/Central.generic.long=Central tid
+Canada/East-Saskatchewan.generic.long=Central tid
+Canada/Eastern.generic.long=\u00D6stlig tid
+Canada/Mountain.generic.long=Mountain-tid
+Canada/Newfoundland.generic.long=Newfoundl\u00E4ndsk tid
+Canada/Pacific.generic.long=Stillahavet
+Canada/Saskatchewan.generic.long=Central tid
+Canada/Yukon.generic.long=Stillahavet
+Chile/Continental.generic.long=Chilensk tid
+Chile/EasterIsland.generic.long=P\u00E5sk\u00F6n-tid
+Cuba.generic.long=Kubansk tid
+EAT.generic.long=\u00D6stafrikansk tid
+ECT.generic.long=Centraleuropeisk tid
+EET.generic.long=\u00d6steuropeisk tid
+EST.generic.long=\u00d6stlig tid
+EST5EDT.generic.long=\u00d6stlig tid
+Egypt.generic.long=\u00D6steuropeisk tid
+Eire.generic.long=Irl\u00E4ndsk tid
+Etc/Greenwich.generic.long=Greenwichtid
+Etc/UCT.generic.long=UTC (koordinerad v\u00E4rldstid)
+Etc/UTC.generic.long=UTC (koordinerad v\u00E4rldstid)
+Etc/Universal.generic.long=UTC (koordinerad v\u00E4rldstid)
+Etc/Zulu.generic.long=UTC (koordinerad v\u00E4rldstid)
+Europe/Amsterdam.generic.long=Centraleuropeisk tid
+Europe/Andorra.generic.long=Centraleuropeisk tid
+Europe/Athens.generic.long=\u00D6steuropeisk tid
+Europe/Belfast.generic.long=Brittisk tid
+Europe/Belgrade.generic.long=Centraleuropeisk tid
+Europe/Berlin.generic.long=Centraleuropeisk tid
+Europe/Bratislava.generic.long=Centraleuropeisk tid
+Europe/Brussels.generic.long=Centraleuropeisk tid
+Europe/Bucharest.generic.long=\u00D6steuropeisk tid
+Europe/Budapest.generic.long=Centraleuropeisk tid
+Europe/Busingen.generic.long=Centraleuropeisk tid
+Europe/Chisinau.generic.long=\u00D6steuropeisk tid
+Europe/Copenhagen.generic.long=Centraleuropeisk tid
+Europe/Dublin.generic.long=Irl\u00E4ndsk tid
+Europe/Gibraltar.generic.long=Centraleuropeisk tid
+Europe/Guernsey.generic.long=Brittisk tid
+Europe/Helsinki.generic.long=\u00D6steuropeisk tid
+Europe/Isle_of_Man.generic.long=Brittisk tid
+Europe/Istanbul.generic.long=\u00D6steuropeisk tid
+Europe/Jersey.generic.long=Brittisk tid
+Europe/Kaliningrad.daylight.long=\u00D6steuropeisk sommartid
+Europe/Kaliningrad.generic.long=Kaliningradtid
+Europe/Kaliningrad.standard.long=Kaliningradtid
+Europe/Kiev.generic.long=\u00D6steuropeisk tid
+Europe/Lisbon.generic.long=V\u00E4steuropeisk tid
+Europe/Ljubljana.generic.long=Centraleuropeisk tid
+Europe/London.generic.long=Brittisk tid
+Europe/Luxembourg.generic.long=Centraleuropeisk tid
+Europe/Madrid.generic.long=Centraleuropeisk tid
+Europe/Malta.generic.long=Centraleuropeisk tid
+Europe/Mariehamn.generic.long=\u00D6steuropeisk tid
+Europe/Minsk.daylight.long=\u00D6steuropeisk sommartid
+Europe/Minsk.generic.long=Kaliningradtid
+Europe/Minsk.standard.long=Kaliningradtid
+Europe/Monaco.generic.long=Centraleuropeisk tid
+Europe/Moscow.generic.long=Moskvas tid
+Europe/Nicosia.generic.long=\u00D6steuropeisk tid
+Europe/Oslo.generic.long=Centraleuropeisk tid
+Europe/Paris.generic.long=Centraleuropeisk tid
+Europe/Podgorica.generic.long=Centraleuropeisk tid
+Europe/Prague.generic.long=Centraleuropeisk tid
+Europe/Riga.generic.long=\u00D6steuropeisk tid
+Europe/Rome.generic.long=Centraleuropeisk tid
+Europe/Samara.generic.long=Samara-tid
+Europe/San_Marino.generic.long=Centraleuropeisk tid
+Europe/Sarajevo.generic.long=Centraleuropeisk tid
+Europe/Simferopol.generic.long=\u00D6steuropeisk tid
+Europe/Skopje.generic.long=Centraleuropeisk tid
+Europe/Sofia.generic.long=\u00D6steuropeisk tid
+Europe/Stockholm.generic.long=Centraleuropeisk tid
+Europe/Tallinn.generic.long=\u00D6steuropeisk tid
+Europe/Tirane.generic.long=Centraleuropeisk tid
+Europe/Tiraspol.generic.long=\u00D6steuropeisk tid
+Europe/Uzhgorod.generic.long=\u00D6steuropeisk tid
+Europe/Vaduz.generic.long=Centraleuropeisk tid
+Europe/Vatican.generic.long=Centraleuropeisk tid
+Europe/Vienna.generic.long=Centraleuropeisk tid
+Europe/Vilnius.generic.long=\u00D6steuropeisk tid
+Europe/Volgograd.generic.long=Volgograd, normaltid
+Europe/Warsaw.generic.long=Centraleuropeisk tid
+Europe/Zagreb.generic.long=Centraleuropeisk tid
+Europe/Zaporozhye.generic.long=\u00D6steuropeisk tid
+Europe/Zurich.generic.long=Centraleuropeisk tid
+GB-Eire.generic.long=Brittisk tid
+GB.generic.long=Brittisk tid
+GMT.generic.long=Greenwichtid
+Greenwich.generic.long=Greenwichtid
+HST.generic.long=Hawaiiansk tid
+Hongkong.generic.long=Hongkong-tid
+IET.generic.long=\u00D6stlig tid
+IST.generic.long=Indisk tid
+Iceland.generic.long=Greenwichtid
+Indian/Antananarivo.generic.long=\u00D6stafrikansk tid
+Indian/Chagos.generic.long=Indiska Ocean\u00F6arna-tid
+Indian/Christmas.generic.long=Jul\u00F6n-tid
+Indian/Cocos.generic.long=Kokos\u00F6arna-tid
+Indian/Comoro.generic.long=\u00D6stafrikansk tid
+Indian/Kerguelen.generic.long=Franska s\u00F6dra och antarktiska \u00F6arna-tid
+Indian/Mahe.generic.long=Seychellisk tid
+Indian/Maldives.generic.long=Maldivisk tid
+Indian/Mauritius.generic.long=Mauritiansk tid
+Indian/Mayotte.generic.long=\u00D6stafrikansk tid
+Indian/Reunion.generic.long=Reunion-tid
+Iran.generic.long=Iransk tid
+Israel.generic.long=Israelisk tid
+JST.generic.long=Japansk tid
+Jamaica.generic.long=\u00D6stlig tid
+Japan.generic.long=Japansk tid
+Kwajalein.generic.long=Marshall\u00F6arna-tid
+Libya.generic.long=\u00d6steuropeisk tid
+MET.generic.long=MET
+MIT.generic.long=V\u00E4stsamoansk tid
+MST.generic.long=Mountain-tid
+MST7MDT.generic.long=Mountain-tid
+Mexico/BajaNorte.generic.long=Stillahavet
+Mexico/BajaSur.generic.long=Mountain-tid
+Mexico/General.generic.long=Central tid
+NET.generic.long=Armenisk tid
+NST.generic.long=Nyzeel\u00E4ndsk tid
+NZ-CHAT.generic.long=Chathams tid
+NZ.generic.long=Nyzeel\u00E4ndsk tid
+Navajo.generic.long=Mountain-tid
+PLT.generic.long=Pakistansk tid
+PNT.generic.long=Mountain-tid
+PRC.generic.long=Kinesisk tid
+PRT.generic.long=Atlantisk tid
+PST.generic.long=Stillahavet
+PST8PDT.generic.long=Stillahavet
+Pacific/Apia.generic.long=V\u00E4stsamoansk tid
+Pacific/Auckland.generic.long=Nyzeel\u00E4ndsk tid
+Pacific/Chatham.generic.long=Chathams tid
+Pacific/Chuuk.daylight.long=Chuuk, sommartid
+Pacific/Chuuk.generic.long=Chuuk, normaltid
+Pacific/Chuuk.standard.long=Chuuk, normaltid
+Pacific/Easter.generic.long=P\u00E5sk\u00F6n-tid
+Pacific/Efate.generic.long=Vanuatu-tid
+Pacific/Enderbury.generic.long=Phoenix\u00F6arna-tid
+Pacific/Fakaofo.generic.long=Tokelau-tid
+Pacific/Fiji.generic.long=Fijiansk tid
+Pacific/Funafuti.generic.long=Tuvalu-tid
+Pacific/Galapagos.generic.long=Galapagos-tid
+Pacific/Gambier.generic.long=Gambier\u00F6arna-tid
+Pacific/Guadalcanal.generic.long=Salomon\u00F6arna-tid
+Pacific/Guam.generic.long=Chamorros tid
+Pacific/Honolulu.generic.long=Hawaiiansk tid
+Pacific/Johnston.generic.long=Hawaiiansk tid
+Pacific/Kiritimati.generic.long=Line Islands-tid
+Pacific/Kosrae.generic.long=Kosrae-tid
+Pacific/Kwajalein.generic.long=Marshall\u00F6arna-tid
+Pacific/Majuro.generic.long=Marshall\u00F6arna-tid
+Pacific/Marquesas.generic.long=Marquesas\u00F6arna-tid
+Pacific/Midway.generic.long=Samoansk tid
+Pacific/Nauru.generic.long=Nauruansk tid
+Pacific/Niue.generic.long=Niue-tid
+Pacific/Norfolk.generic.long=Norfolk-tid
+Pacific/Noumea.generic.long=Nya Kaledonien-tid
+Pacific/Pago_Pago.generic.long=Samoansk tid
+Pacific/Palau.generic.long=Palau-tid
+Pacific/Pitcairn.generic.long=Pitcairn-tid
+Pacific/Pohnpei.daylight.long=Pohnpei, sommartid
+Pacific/Pohnpei.generic.long=Ponape-tid
+Pacific/Pohnpei.standard.long=Pohnpei, normaltid
+Pacific/Ponape.daylight.long=Pohnpei, sommartid
+Pacific/Ponape.generic.long=Ponape-tid
+Pacific/Ponape.standard.long=Pohnpei, normaltid
+Pacific/Port_Moresby.generic.long=Papua Nya Guinea-tid
+Pacific/Rarotonga.generic.long=Cook\u00F6arna-tid
+Pacific/Saipan.generic.long=Chamorros tid
+Pacific/Samoa.generic.long=Samoansk tid
+Pacific/Tahiti.generic.long=Tahiti-tid
+Pacific/Tarawa.generic.long=Gilbert\u00F6arna-tid
+Pacific/Tongatapu.generic.long=Tonga-tid
+Pacific/Truk.daylight.long=Chuuk, sommartid
+Pacific/Truk.generic.long=Chuuk, normaltid
+Pacific/Truk.standard.long=Chuuk, normaltid
+Pacific/Wake.generic.long=Wake-tid
+Pacific/Wallis.generic.long=Wallis- och Futuna\u00F6arna-tid
+Pacific/Yap.daylight.long=Chuuk, sommartid
+Pacific/Yap.generic.long=Chuuk, normaltid
+Pacific/Yap.standard.long=Chuuk, normaltid
+Poland.generic.long=Centraleuropeisk tid
+Portugal.generic.long=V\u00E4steuropeisk tid
+ROK.generic.long=Koreansk tid
+SST.generic.long=Salomon\u00F6arna-tid
+Singapore.generic.long=Singapore-tid
+SystemV/AST4.generic.long=Atlantisk tid
+SystemV/AST4ADT.generic.long=Atlantisk tid
+SystemV/CST6.generic.long=Central tid
+SystemV/CST6CDT.generic.long=Central tid
+SystemV/EST5.generic.long=\u00D6stlig tid
+SystemV/EST5EDT.generic.long=\u00D6stlig tid
+SystemV/HST10.generic.long=Hawaiiansk tid
+SystemV/MST7.generic.long=Mountain-tid
+SystemV/MST7MDT.generic.long=Mountain-tid
+SystemV/PST8.generic.long=Stillahavet
+SystemV/PST8PDT.generic.long=Stillahavet
+SystemV/YST9.generic.long=Alaskisk tid
+SystemV/YST9YDT.generic.long=Alaskisk tid
+Turkey.generic.long=\u00D6steuropeisk tid
+UCT.generic.long=UTC (koordinerad v\u00E4rldstid)
+US/Alaska.generic.long=Alaskisk tid
+US/Aleutian.generic.long=Hawaiiansk-aleutisk tid
+US/Arizona.generic.long=Mountain-tid
+US/Central.generic.long=Central tid
+US/East-Indiana.generic.long=\u00D6stlig tid
+US/Eastern.generic.long=\u00D6stlig tid
+US/Hawaii.generic.long=Hawaiiansk tid
+US/Indiana-Starke.generic.long=Central tid
+US/Michigan.generic.long=\u00D6stlig tid
+US/Mountain.generic.long=Mountain-tid
+US/Pacific-New.generic.long=Stillahavet
+US/Pacific.generic.long=Stillahavet
+US/Samoa.generic.long=Samoansk tid
+UTC.generic.long=UTC (koordinerad v\u00E4rldstid)
+Universal.generic.long=UTC (koordinerad v\u00E4rldstid)
+VST.generic.long=Indokinesisk tid
+W-SU.generic.long=Moskvas tid
+WET.generic.long=V\u00e4steuropeisk tid
+Zulu.generic.long=UTC (koordinerad v\u00E4rldstid)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_sv_short.properties Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,1743 @@
+ACT.daylight.short=CST
+ACT.generic.short=CT
+ACT.standard.short=CST
+AET.daylight.short=EST
+AET.generic.short=ET
+AET.standard.short=EST
+Africa/Abidjan.daylight.short=GMT
+Africa/Abidjan.generic.short=GMT
+Africa/Abidjan.standard.short=GMT
+Africa/Accra.daylight.short=GHST
+Africa/Accra.generic.short=GMT
+Africa/Accra.standard.short=GMT
+Africa/Addis_Ababa.daylight.short=EAST
+Africa/Addis_Ababa.generic.short=EAT
+Africa/Addis_Ababa.standard.short=EAT
+Africa/Algiers.daylight.short=CEST
+Africa/Algiers.generic.short=CET
+Africa/Algiers.standard.short=CET
+Africa/Asmara.daylight.short=EAST
+Africa/Asmara.generic.short=EAT
+Africa/Asmara.standard.short=EAT
+Africa/Asmera.daylight.short=EAST
+Africa/Asmera.generic.short=EAT
+Africa/Asmera.standard.short=EAT
+Africa/Bamako.daylight.short=GMT
+Africa/Bamako.generic.short=GMT
+Africa/Bamako.standard.short=GMT
+Africa/Bangui.daylight.short=WAST
+Africa/Bangui.generic.short=WAT
+Africa/Bangui.standard.short=WAT
+Africa/Banjul.daylight.short=GMT
+Africa/Banjul.generic.short=GMT
+Africa/Banjul.standard.short=GMT
+Africa/Bissau.daylight.short=GMT
+Africa/Bissau.generic.short=GMT
+Africa/Bissau.standard.short=GMT
+Africa/Blantyre.daylight.short=CAST
+Africa/Blantyre.generic.short=CAT
+Africa/Blantyre.standard.short=CAT
+Africa/Brazzaville.daylight.short=WAST
+Africa/Brazzaville.generic.short=WAT
+Africa/Brazzaville.standard.short=WAT
+Africa/Bujumbura.daylight.short=CAST
+Africa/Bujumbura.generic.short=CAT
+Africa/Bujumbura.standard.short=CAT
+Africa/Cairo.daylight.short=EEST
+Africa/Cairo.generic.short=EET
+Africa/Cairo.standard.short=EET
+Africa/Casablanca.daylight.short=WEST
+Africa/Casablanca.generic.short=WET
+Africa/Casablanca.standard.short=WET
+Africa/Ceuta.daylight.short=CEST
+Africa/Ceuta.generic.short=CET
+Africa/Ceuta.standard.short=CET
+Africa/Conakry.daylight.short=GMT
+Africa/Conakry.generic.short=GMT
+Africa/Conakry.standard.short=GMT
+Africa/Dakar.daylight.short=GMT
+Africa/Dakar.generic.short=GMT
+Africa/Dakar.standard.short=GMT
+Africa/Dar_es_Salaam.daylight.short=EAST
+Africa/Dar_es_Salaam.generic.short=EAT
+Africa/Dar_es_Salaam.standard.short=EAT
+Africa/Djibouti.daylight.short=EAST
+Africa/Djibouti.generic.short=EAT
+Africa/Djibouti.standard.short=EAT
+Africa/Douala.daylight.short=WAST
+Africa/Douala.generic.short=WAT
+Africa/Douala.standard.short=WAT
+Africa/El_Aaiun.daylight.short=WEST
+Africa/El_Aaiun.generic.short=WET
+Africa/El_Aaiun.standard.short=WET
+Africa/Freetown.daylight.short=SLST
+Africa/Freetown.generic.short=SLT
+Africa/Freetown.standard.short=GMT
+Africa/Gaborone.daylight.short=CAST
+Africa/Gaborone.generic.short=CAT
+Africa/Gaborone.standard.short=CAT
+Africa/Harare.daylight.short=CAST
+Africa/Harare.generic.short=CAT
+Africa/Harare.standard.short=CAT
+Africa/Johannesburg.daylight.short=SAST
+Africa/Johannesburg.generic.short=SAT
+Africa/Johannesburg.standard.short=SAST
+Africa/Juba.daylight.short=EAST
+Africa/Juba.generic.short=EAT
+Africa/Juba.standard.short=EAT
+Africa/Kampala.daylight.short=EAST
+Africa/Kampala.generic.short=EAT
+Africa/Kampala.standard.short=EAT
+Africa/Khartoum.daylight.short=EAST
+Africa/Khartoum.generic.short=EAT
+Africa/Khartoum.standard.short=EAT
+Africa/Kigali.daylight.short=CAST
+Africa/Kigali.generic.short=CAT
+Africa/Kigali.standard.short=CAT
+Africa/Kinshasa.daylight.short=WAST
+Africa/Kinshasa.generic.short=WAT
+Africa/Kinshasa.standard.short=WAT
+Africa/Lagos.daylight.short=WAST
+Africa/Lagos.generic.short=WAT
+Africa/Lagos.standard.short=WAT
+Africa/Libreville.daylight.short=WAST
+Africa/Libreville.generic.short=WAT
+Africa/Libreville.standard.short=WAT
+Africa/Lome.daylight.short=GMT
+Africa/Lome.generic.short=GMT
+Africa/Lome.standard.short=GMT
+Africa/Luanda.daylight.short=WAST
+Africa/Luanda.generic.short=WAT
+Africa/Luanda.standard.short=WAT
+Africa/Lubumbashi.daylight.short=CAST
+Africa/Lubumbashi.generic.short=CAT
+Africa/Lubumbashi.standard.short=CAT
+Africa/Lusaka.daylight.short=CAST
+Africa/Lusaka.generic.short=CAT
+Africa/Lusaka.standard.short=CAT
+Africa/Malabo.daylight.short=WAST
+Africa/Malabo.generic.short=WAT
+Africa/Malabo.standard.short=WAT
+Africa/Maputo.daylight.short=CAST
+Africa/Maputo.generic.short=CAT
+Africa/Maputo.standard.short=CAT
+Africa/Maseru.daylight.short=SAST
+Africa/Maseru.generic.short=SAT
+Africa/Maseru.standard.short=SAST
+Africa/Mbabane.daylight.short=SAST
+Africa/Mbabane.generic.short=SAT
+Africa/Mbabane.standard.short=SAST
+Africa/Mogadishu.daylight.short=EAST
+Africa/Mogadishu.generic.short=EAT
+Africa/Mogadishu.standard.short=EAT
+Africa/Monrovia.daylight.short=GMT
+Africa/Monrovia.generic.short=GMT
+Africa/Monrovia.standard.short=GMT
+Africa/Nairobi.daylight.short=EAST
+Africa/Nairobi.generic.short=EAT
+Africa/Nairobi.standard.short=EAT
+Africa/Ndjamena.daylight.short=WAST
+Africa/Ndjamena.generic.short=WAT
+Africa/Ndjamena.standard.short=WAT
+Africa/Niamey.daylight.short=WAST
+Africa/Niamey.generic.short=WAT
+Africa/Niamey.standard.short=WAT
+Africa/Nouakchott.daylight.short=GMT
+Africa/Nouakchott.generic.short=GMT
+Africa/Nouakchott.standard.short=GMT
+Africa/Ouagadougou.daylight.short=GMT
+Africa/Ouagadougou.generic.short=GMT
+Africa/Ouagadougou.standard.short=GMT
+Africa/Porto-Novo.daylight.short=WAST
+Africa/Porto-Novo.generic.short=WAT
+Africa/Porto-Novo.standard.short=WAT
+Africa/Sao_Tome.daylight.short=GMT
+Africa/Sao_Tome.generic.short=GMT
+Africa/Sao_Tome.standard.short=GMT
+Africa/Timbuktu.daylight.short=GMT
+Africa/Timbuktu.generic.short=GMT
+Africa/Timbuktu.standard.short=GMT
+Africa/Tripoli.daylight.short=EEST
+Africa/Tripoli.generic.short=EET
+Africa/Tripoli.standard.short=EET
+Africa/Tunis.daylight.short=CEST
+Africa/Tunis.generic.short=CET
+Africa/Tunis.standard.short=CET
+Africa/Windhoek.daylight.short=WAST
+Africa/Windhoek.generic.short=WAT
+Africa/Windhoek.standard.short=WAT
+AGT.daylight.short=ARST
+AGT.generic.short=ART
+AGT.standard.short=ART
+America/Adak.daylight.short=HADT
+America/Adak.generic.short=HAT
+America/Adak.standard.short=HAST
+America/Anchorage.daylight.short=AKDT
+America/Anchorage.generic.short=AKT
+America/Anchorage.standard.short=AKST
+America/Anguilla.daylight.short=ADT
+America/Anguilla.generic.short=AT
+America/Anguilla.standard.short=AST
+America/Antigua.daylight.short=ADT
+America/Antigua.generic.short=AT
+America/Antigua.standard.short=AST
+America/Araguaina.daylight.short=BRST
+America/Araguaina.generic.short=BRT
+America/Araguaina.standard.short=BRT
+America/Argentina/Buenos_Aires.daylight.short=ARST
+America/Argentina/Buenos_Aires.generic.short=ART
+America/Argentina/Buenos_Aires.standard.short=ART
+America/Argentina/Catamarca.daylight.short=ARST
+America/Argentina/Catamarca.generic.short=ART
+America/Argentina/Catamarca.standard.short=ART
+America/Argentina/ComodRivadavia.daylight.short=ARST
+America/Argentina/ComodRivadavia.generic.short=ART
+America/Argentina/ComodRivadavia.standard.short=ART
+America/Argentina/Cordoba.daylight.short=ARST
+America/Argentina/Cordoba.generic.short=ART
+America/Argentina/Cordoba.standard.short=ART
+America/Argentina/Jujuy.daylight.short=ARST
+America/Argentina/Jujuy.generic.short=ART
+America/Argentina/Jujuy.standard.short=ART
+America/Argentina/La_Rioja.daylight.short=ARST
+America/Argentina/La_Rioja.generic.short=ART
+America/Argentina/La_Rioja.standard.short=ART
+America/Argentina/Mendoza.daylight.short=ARST
+America/Argentina/Mendoza.generic.short=ART
+America/Argentina/Mendoza.standard.short=ART
+America/Argentina/Rio_Gallegos.daylight.short=ARST
+America/Argentina/Rio_Gallegos.generic.short=ART
+America/Argentina/Rio_Gallegos.standard.short=ART
+America/Argentina/Salta.daylight.short=ARST
+America/Argentina/Salta.generic.short=ART
+America/Argentina/Salta.standard.short=ART
+America/Argentina/San_Juan.daylight.short=ARST
+America/Argentina/San_Juan.generic.short=ART
+America/Argentina/San_Juan.standard.short=ART
+America/Argentina/San_Luis.daylight.short=ARST
+America/Argentina/San_Luis.generic.short=ART
+America/Argentina/San_Luis.standard.short=ART
+America/Argentina/Tucuman.daylight.short=ARST
+America/Argentina/Tucuman.generic.short=ART
+America/Argentina/Tucuman.standard.short=ART
+America/Argentina/Ushuaia.daylight.short=ARST
+America/Argentina/Ushuaia.generic.short=ART
+America/Argentina/Ushuaia.standard.short=ART
+America/Aruba.daylight.short=ADT
+America/Aruba.generic.short=AT
+America/Aruba.standard.short=AST
+America/Asuncion.daylight.short=PYST
+America/Asuncion.generic.short=PYT
+America/Asuncion.standard.short=PYT
+America/Atikokan.daylight.short=EDT
+America/Atikokan.generic.short=ET
+America/Atikokan.standard.short=EST
+America/Atka.daylight.short=HADT
+America/Atka.generic.short=HAT
+America/Atka.standard.short=HAST
+America/Bahia_Banderas.daylight.short=CDT
+America/Bahia_Banderas.generic.short=CT
+America/Bahia_Banderas.standard.short=CST
+America/Bahia.daylight.short=BRST
+America/Bahia.generic.short=BRT
+America/Bahia.standard.short=BRT
+America/Barbados.daylight.short=ADT
+America/Barbados.generic.short=AT
+America/Barbados.standard.short=AST
+America/Belem.daylight.short=BRST
+America/Belem.generic.short=BRT
+America/Belem.standard.short=BRT
+America/Belize.daylight.short=CDT
+America/Belize.generic.short=CT
+America/Belize.standard.short=CST
+America/Blanc-Sablon.daylight.short=ADT
+America/Blanc-Sablon.generic.short=AT
+America/Blanc-Sablon.standard.short=AST
+America/Boa_Vista.daylight.short=AMST
+America/Boa_Vista.generic.short=AMT
+America/Boa_Vista.standard.short=AMT
+America/Bogota.daylight.short=COST
+America/Bogota.generic.short=COT
+America/Bogota.standard.short=COT
+America/Boise.daylight.short=MDT
+America/Boise.generic.short=MT
+America/Boise.standard.short=MST
+America/Buenos_Aires.daylight.short=ARST
+America/Buenos_Aires.generic.short=ART
+America/Buenos_Aires.standard.short=ART
+America/Cambridge_Bay.daylight.short=MDT
+America/Cambridge_Bay.generic.short=MT
+America/Cambridge_Bay.standard.short=MST
+America/Campo_Grande.daylight.short=AMST
+America/Campo_Grande.generic.short=AMT
+America/Campo_Grande.standard.short=AMT
+America/Cancun.daylight.short=CDT
+America/Cancun.generic.short=CT
+America/Cancun.standard.short=CST
+America/Caracas.daylight.short=VEST
+America/Caracas.generic.short=VET
+America/Caracas.standard.short=VET
+America/Catamarca.daylight.short=ARST
+America/Catamarca.generic.short=ART
+America/Catamarca.standard.short=ART
+America/Cayenne.daylight.short=GFST
+America/Cayenne.generic.short=GFT
+America/Cayenne.standard.short=GFT
+America/Cayman.daylight.short=EDT
+America/Cayman.generic.short=ET
+America/Cayman.standard.short=EST
+America/Chicago.daylight.short=CDT
+America/Chicago.generic.short=CT
+America/Chicago.standard.short=CST
+America/Chihuahua.daylight.short=MDT
+America/Chihuahua.generic.short=MT
+America/Chihuahua.standard.short=MST
+America/Coral_Harbour.daylight.short=EDT
+America/Coral_Harbour.generic.short=ET
+America/Coral_Harbour.standard.short=EST
+America/Cordoba.daylight.short=ARST
+America/Cordoba.generic.short=ART
+America/Cordoba.standard.short=ART
+America/Costa_Rica.daylight.short=CDT
+America/Costa_Rica.generic.short=CT
+America/Costa_Rica.standard.short=CST
+America/Creston.daylight.short=MDT
+America/Creston.generic.short=MT
+America/Creston.standard.short=MST
+America/Cuiaba.daylight.short=AMST
+America/Cuiaba.generic.short=AMT
+America/Cuiaba.standard.short=AMT
+America/Curacao.daylight.short=ADT
+America/Curacao.generic.short=AT
+America/Curacao.standard.short=AST
+America/Danmarkshavn.daylight.short=GMT
+America/Danmarkshavn.generic.short=GMT
+America/Danmarkshavn.standard.short=GMT
+America/Dawson_Creek.daylight.short=MDT
+America/Dawson_Creek.generic.short=MT
+America/Dawson_Creek.standard.short=MST
+America/Dawson.daylight.short=PDT
+America/Dawson.generic.short=PT
+America/Dawson.standard.short=PST
+America/Denver.daylight.short=MDT
+America/Denver.generic.short=MT
+America/Denver.standard.short=MST
+America/Detroit.daylight.short=EDT
+America/Detroit.generic.short=ET
+America/Detroit.standard.short=EST
+America/Dominica.daylight.short=ADT
+America/Dominica.generic.short=AT
+America/Dominica.standard.short=AST
+America/Edmonton.daylight.short=MDT
+America/Edmonton.generic.short=MT
+America/Edmonton.standard.short=MST
+America/Eirunepe.daylight.short=ACST
+America/Eirunepe.generic.short=ACT
+America/Eirunepe.standard.short=ACT
+America/El_Salvador.daylight.short=CDT
+America/El_Salvador.generic.short=CT
+America/El_Salvador.standard.short=CST
+America/Ensenada.daylight.short=PDT
+America/Ensenada.generic.short=PT
+America/Ensenada.standard.short=PST
+America/Fortaleza.daylight.short=BRST
+America/Fortaleza.generic.short=BRT
+America/Fortaleza.standard.short=BRT
+America/Fort_Wayne.daylight.short=EDT
+America/Fort_Wayne.generic.short=ET
+America/Fort_Wayne.standard.short=EST
+America/Glace_Bay.daylight.short=ADT
+America/Glace_Bay.generic.short=AT
+America/Glace_Bay.standard.short=AST
+America/Godthab.daylight.short=WGST
+America/Godthab.generic.short=WGT
+America/Godthab.standard.short=WGT
+America/Goose_Bay.daylight.short=ADT
+America/Goose_Bay.generic.short=AT
+America/Goose_Bay.standard.short=AST
+America/Grand_Turk.daylight.short=EDT
+America/Grand_Turk.generic.short=ET
+America/Grand_Turk.standard.short=EST
+America/Grenada.daylight.short=ADT
+America/Grenada.generic.short=AT
+America/Grenada.standard.short=AST
+America/Guadeloupe.daylight.short=ADT
+America/Guadeloupe.generic.short=AT
+America/Guadeloupe.standard.short=AST
+America/Guatemala.daylight.short=CDT
+America/Guatemala.generic.short=CT
+America/Guatemala.standard.short=CST
+America/Guayaquil.daylight.short=ECST
+America/Guayaquil.generic.short=ECT
+America/Guayaquil.standard.short=ECT
+America/Guyana.daylight.short=GYST
+America/Guyana.generic.short=GYT
+America/Guyana.standard.short=GYT
+America/Halifax.daylight.short=ADT
+America/Halifax.generic.short=AT
+America/Halifax.standard.short=AST
+America/Havana.daylight.short=CDT
+America/Havana.generic.short=CT
+America/Havana.standard.short=CST
+America/Hermosillo.daylight.short=MDT
+America/Hermosillo.generic.short=MT
+America/Hermosillo.standard.short=MST
+America/Indiana/Indianapolis.daylight.short=EDT
+America/Indiana/Indianapolis.generic.short=ET
+America/Indiana/Indianapolis.standard.short=EST
+America/Indiana/Knox.daylight.short=CDT
+America/Indiana/Knox.generic.short=CT
+America/Indiana/Knox.standard.short=CST
+America/Indiana/Marengo.daylight.short=EDT
+America/Indiana/Marengo.generic.short=ET
+America/Indiana/Marengo.standard.short=EST
+America/Indiana/Petersburg.daylight.short=EDT
+America/Indiana/Petersburg.generic.short=ET
+America/Indiana/Petersburg.standard.short=EST
+America/Indianapolis.daylight.short=EDT
+America/Indianapolis.generic.short=ET
+America/Indianapolis.standard.short=EST
+America/Indiana/Tell_City.daylight.short=CDT
+America/Indiana/Tell_City.generic.short=CT
+America/Indiana/Tell_City.standard.short=CST
+America/Indiana/Vevay.daylight.short=EDT
+America/Indiana/Vevay.generic.short=ET
+America/Indiana/Vevay.standard.short=EST
+America/Indiana/Vincennes.daylight.short=EDT
+America/Indiana/Vincennes.generic.short=ET
+America/Indiana/Vincennes.standard.short=EST
+America/Indiana/Winamac.daylight.short=EDT
+America/Indiana/Winamac.generic.short=ET
+America/Indiana/Winamac.standard.short=EST
+America/Inuvik.daylight.short=MDT
+America/Inuvik.generic.short=MT
+America/Inuvik.standard.short=MST
+America/Iqaluit.daylight.short=EDT
+America/Iqaluit.generic.short=ET
+America/Iqaluit.standard.short=EST
+America/Jamaica.daylight.short=EDT
+America/Jamaica.generic.short=ET
+America/Jamaica.standard.short=EST
+America/Jujuy.daylight.short=ARST
+America/Jujuy.generic.short=ART
+America/Jujuy.standard.short=ART
+America/Juneau.daylight.short=AKDT
+America/Juneau.generic.short=AKT
+America/Juneau.standard.short=AKST
+America/Kentucky/Louisville.daylight.short=EDT
+America/Kentucky/Louisville.generic.short=ET
+America/Kentucky/Louisville.standard.short=EST
+America/Kentucky/Monticello.daylight.short=EDT
+America/Kentucky/Monticello.generic.short=ET
+America/Kentucky/Monticello.standard.short=EST
+America/Knox_IN.daylight.short=CDT
+America/Knox_IN.generic.short=CT
+America/Knox_IN.standard.short=CST
+America/Kralendijk.daylight.short=ADT
+America/Kralendijk.generic.short=AT
+America/Kralendijk.standard.short=AST
+America/La_Paz.daylight.short=BOST
+America/La_Paz.generic.short=BOT
+America/La_Paz.standard.short=BOT
+America/Lima.daylight.short=PEST
+America/Lima.generic.short=PET
+America/Lima.standard.short=PET
+America/Los_Angeles.daylight.short=PDT
+America/Los_Angeles.generic.short=PT
+America/Los_Angeles.standard.short=PST
+America/Louisville.daylight.short=EDT
+America/Louisville.generic.short=ET
+America/Louisville.standard.short=EST
+America/Lower_Princes.daylight.short=ADT
+America/Lower_Princes.generic.short=AT
+America/Lower_Princes.standard.short=AST
+America/Maceio.daylight.short=BRST
+America/Maceio.generic.short=BRT
+America/Maceio.standard.short=BRT
+America/Managua.daylight.short=CDT
+America/Managua.generic.short=CT
+America/Managua.standard.short=CST
+America/Manaus.daylight.short=AMST
+America/Manaus.generic.short=AMT
+America/Manaus.standard.short=AMT
+America/Marigot.daylight.short=ADT
+America/Marigot.generic.short=AT
+America/Marigot.standard.short=AST
+America/Martinique.daylight.short=ADT
+America/Martinique.generic.short=AT
+America/Martinique.standard.short=AST
+America/Matamoros.daylight.short=CDT
+America/Matamoros.generic.short=CT
+America/Matamoros.standard.short=CST
+America/Mazatlan.daylight.short=MDT
+America/Mazatlan.generic.short=MT
+America/Mazatlan.standard.short=MST
+America/Mendoza.daylight.short=ARST
+America/Mendoza.generic.short=ART
+America/Mendoza.standard.short=ART
+America/Menominee.daylight.short=CDT
+America/Menominee.generic.short=CT
+America/Menominee.standard.short=CST
+America/Merida.daylight.short=CDT
+America/Merida.generic.short=CT
+America/Merida.standard.short=CST
+America/Metlakatla.daylight.short=MeDT
+America/Metlakatla.generic.short=MeT
+America/Metlakatla.standard.short=MeST
+America/Mexico_City.daylight.short=CDT
+America/Mexico_City.generic.short=CT
+America/Mexico_City.standard.short=CST
+America/Miquelon.daylight.short=PMDT
+America/Miquelon.generic.short=PMT
+America/Miquelon.standard.short=PMST
+America/Moncton.daylight.short=ADT
+America/Moncton.generic.short=AT
+America/Moncton.standard.short=AST
+America/Monterrey.daylight.short=CDT
+America/Monterrey.generic.short=CT
+America/Monterrey.standard.short=CST
+America/Montevideo.daylight.short=UYST
+America/Montevideo.generic.short=UYT
+America/Montevideo.standard.short=UYT
+America/Montreal.daylight.short=EDT
+America/Montreal.generic.short=ET
+America/Montreal.standard.short=EST
+America/Montserrat.daylight.short=ADT
+America/Montserrat.generic.short=AT
+America/Montserrat.standard.short=AST
+America/Nassau.daylight.short=EDT
+America/Nassau.generic.short=ET
+America/Nassau.standard.short=EST
+America/New_York.daylight.short=EDT
+America/New_York.generic.short=ET
+America/New_York.standard.short=EST
+America/Nipigon.daylight.short=EDT
+America/Nipigon.generic.short=ET
+America/Nipigon.standard.short=EST
+America/Nome.daylight.short=AKDT
+America/Nome.generic.short=AKT
+America/Nome.standard.short=AKST
+America/Noronha.daylight.short=FNST
+America/Noronha.generic.short=FNT
+America/Noronha.standard.short=FNT
+America/North_Dakota/Beulah.daylight.short=CDT
+America/North_Dakota/Beulah.generic.short=CT
+America/North_Dakota/Beulah.standard.short=CST
+America/North_Dakota/Center.daylight.short=CDT
+America/North_Dakota/Center.generic.short=CT
+America/North_Dakota/Center.standard.short=CST
+America/North_Dakota/New_Salem.daylight.short=CDT
+America/North_Dakota/New_Salem.generic.short=CT
+America/North_Dakota/New_Salem.standard.short=CST
+America/Ojinaga.daylight.short=MDT
+America/Ojinaga.generic.short=MT
+America/Ojinaga.standard.short=MST
+America/Panama.daylight.short=EDT
+America/Panama.generic.short=ET
+America/Panama.standard.short=EST
+America/Pangnirtung.daylight.short=EDT
+America/Pangnirtung.generic.short=ET
+America/Pangnirtung.standard.short=EST
+America/Paramaribo.daylight.short=SRST
+America/Paramaribo.generic.short=SRT
+America/Paramaribo.standard.short=SRT
+America/Phoenix.daylight.short=MDT
+America/Phoenix.generic.short=MT
+America/Phoenix.standard.short=MST
+America/Port-au-Prince.daylight.short=EDT
+America/Port-au-Prince.generic.short=ET
+America/Port-au-Prince.standard.short=EST
+America/Porto_Acre.daylight.short=ACST
+America/Porto_Acre.generic.short=ACT
+America/Porto_Acre.standard.short=ACT
+America/Port_of_Spain.daylight.short=ADT
+America/Port_of_Spain.generic.short=AT
+America/Port_of_Spain.standard.short=AST
+America/Porto_Velho.daylight.short=AMST
+America/Porto_Velho.generic.short=AMT
+America/Porto_Velho.standard.short=AMT
+America/Puerto_Rico.daylight.short=ADT
+America/Puerto_Rico.generic.short=AT
+America/Puerto_Rico.standard.short=AST
+America/Rainy_River.daylight.short=CDT
+America/Rainy_River.generic.short=CT
+America/Rainy_River.standard.short=CST
+America/Rankin_Inlet.daylight.short=CDT
+America/Rankin_Inlet.generic.short=CT
+America/Rankin_Inlet.standard.short=CST
+America/Recife.daylight.short=BRST
+America/Recife.generic.short=BRT
+America/Recife.standard.short=BRT
+America/Regina.daylight.short=CDT
+America/Regina.generic.short=CT
+America/Regina.standard.short=CST
+America/Resolute.daylight.short=CDT
+America/Resolute.generic.short=CT
+America/Resolute.standard.short=CST
+America/Rio_Branco.daylight.short=ACST
+America/Rio_Branco.generic.short=ACT
+America/Rio_Branco.standard.short=ACT
+America/Rosario.daylight.short=ARST
+America/Rosario.generic.short=ART
+America/Rosario.standard.short=ART
+America/Santa_Isabel.daylight.short=PDT
+America/Santa_Isabel.generic.short=PT
+America/Santa_Isabel.standard.short=PST
+America/Santarem.daylight.short=BRST
+America/Santarem.generic.short=BRT
+America/Santarem.standard.short=BRT
+America/Santiago.daylight.short=CLST
+America/Santiago.generic.short=CLT
+America/Santiago.standard.short=CLT
+America/Santo_Domingo.daylight.short=ADT
+America/Santo_Domingo.generic.short=AT
+America/Santo_Domingo.standard.short=AST
+America/Sao_Paulo.daylight.short=BRST
+America/Sao_Paulo.generic.short=BRT
+America/Sao_Paulo.standard.short=BRT
+America/Scoresbysund.daylight.short=EGST
+America/Scoresbysund.generic.short=EGT
+America/Scoresbysund.standard.short=EGT
+America/Shiprock.daylight.short=MDT
+America/Shiprock.generic.short=MT
+America/Shiprock.standard.short=MST
+America/Sitka.daylight.short=AKDT
+America/Sitka.generic.short=AKT
+America/Sitka.standard.short=AKST
+America/St_Barthelemy.daylight.short=ADT
+America/St_Barthelemy.generic.short=AT
+America/St_Barthelemy.standard.short=AST
+America/St_Johns.daylight.short=NDT
+America/St_Johns.generic.short=NT
+America/St_Johns.standard.short=NST
+America/St_Kitts.daylight.short=ADT
+America/St_Kitts.generic.short=AT
+America/St_Kitts.standard.short=AST
+America/St_Lucia.daylight.short=ADT
+America/St_Lucia.generic.short=AT
+America/St_Lucia.standard.short=AST
+America/St_Thomas.daylight.short=ADT
+America/St_Thomas.generic.short=AT
+America/St_Thomas.standard.short=AST
+America/St_Vincent.daylight.short=ADT
+America/St_Vincent.generic.short=AT
+America/St_Vincent.standard.short=AST
+America/Swift_Current.daylight.short=CDT
+America/Swift_Current.generic.short=CT
+America/Swift_Current.standard.short=CST
+America/Tegucigalpa.daylight.short=CDT
+America/Tegucigalpa.generic.short=CT
+America/Tegucigalpa.standard.short=CST
+America/Thule.daylight.short=ADT
+America/Thule.generic.short=AT
+America/Thule.standard.short=AST
+America/Thunder_Bay.daylight.short=EDT
+America/Thunder_Bay.generic.short=ET
+America/Thunder_Bay.standard.short=EST
+America/Tijuana.daylight.short=PDT
+America/Tijuana.generic.short=PT
+America/Tijuana.standard.short=PST
+America/Toronto.daylight.short=EDT
+America/Toronto.generic.short=ET
+America/Toronto.standard.short=EST
+America/Tortola.daylight.short=ADT
+America/Tortola.generic.short=AT
+America/Tortola.standard.short=AST
+America/Vancouver.daylight.short=PDT
+America/Vancouver.generic.short=PT
+America/Vancouver.standard.short=PST
+America/Virgin.daylight.short=ADT
+America/Virgin.generic.short=AT
+America/Virgin.standard.short=AST
+America/Whitehorse.daylight.short=PDT
+America/Whitehorse.generic.short=PT
+America/Whitehorse.standard.short=PST
+America/Winnipeg.daylight.short=CDT
+America/Winnipeg.generic.short=CT
+America/Winnipeg.standard.short=CST
+America/Yakutat.daylight.short=AKDT
+America/Yakutat.generic.short=AKT
+America/Yakutat.standard.short=AKST
+America/Yellowknife.daylight.short=MDT
+America/Yellowknife.generic.short=MT
+America/Yellowknife.standard.short=MST
+Antarctica/Casey.daylight.short=WST
+Antarctica/Casey.generic.short=WT
+Antarctica/Casey.standard.short=WST
+Antarctica/Davis.daylight.short=DAVST
+Antarctica/Davis.generic.short=DAVT
+Antarctica/Davis.standard.short=DAVT
+Antarctica/DumontDUrville.daylight.short=DDUST
+Antarctica/DumontDUrville.generic.short=DDUT
+Antarctica/DumontDUrville.standard.short=DDUT
+Antarctica/Macquarie.daylight.short=MIST
+Antarctica/Macquarie.generic.short=MIST
+Antarctica/Macquarie.standard.short=MIST
+Antarctica/Mawson.daylight.short=MAWST
+Antarctica/Mawson.generic.short=MAWT
+Antarctica/Mawson.standard.short=MAWT
+Antarctica/McMurdo.daylight.short=NZDT
+Antarctica/McMurdo.generic.short=NZT
+Antarctica/McMurdo.standard.short=NZST
+Antarctica/Palmer.daylight.short=CLST
+Antarctica/Palmer.generic.short=CLT
+Antarctica/Palmer.standard.short=CLT
+Antarctica/Rothera.daylight.short=ROTST
+Antarctica/Rothera.generic.short=ROTT
+Antarctica/Rothera.standard.short=ROTT
+Antarctica/South_Pole.daylight.short=NZDT
+Antarctica/South_Pole.generic.short=NZT
+Antarctica/South_Pole.standard.short=NZST
+Antarctica/Syowa.daylight.short=SYOST
+Antarctica/Syowa.generic.short=SYOT
+Antarctica/Syowa.standard.short=SYOT
+Antarctica/Vostok.daylight.short=VOSST
+Antarctica/Vostok.generic.short=VOST
+Antarctica/Vostok.standard.short=VOST
+Arctic/Longyearbyen.daylight.short=CEST
+Arctic/Longyearbyen.generic.short=CET
+Arctic/Longyearbyen.standard.short=CET
+ART.daylight.short=EEST
+ART.generic.short=EET
+ART.standard.short=EET
+Asia/Aden.daylight.short=ADT
+Asia/Aden.generic.short=AT
+Asia/Aden.standard.short=AST
+Asia/Almaty.daylight.short=ALMST
+Asia/Almaty.generic.short=ALMT
+Asia/Almaty.standard.short=ALMT
+Asia/Amman.daylight.short=ADT
+Asia/Amman.generic.short=AT
+Asia/Amman.standard.short=AST
+Asia/Anadyr.daylight.short=ANAST
+Asia/Anadyr.generic.short=ANAT
+Asia/Anadyr.standard.short=ANAT
+Asia/Aqtau.daylight.short=AQTST
+Asia/Aqtau.generic.short=AQTT
+Asia/Aqtau.standard.short=AQTT
+Asia/Aqtobe.daylight.short=AQTST
+Asia/Aqtobe.generic.short=AQTT
+Asia/Aqtobe.standard.short=AQTT
+Asia/Ashgabat.daylight.short=TMST
+Asia/Ashgabat.generic.short=TMT
+Asia/Ashgabat.standard.short=TMT
+Asia/Ashkhabad.daylight.short=TMST
+Asia/Ashkhabad.generic.short=TMT
+Asia/Ashkhabad.standard.short=TMT
+Asia/Baghdad.daylight.short=ADT
+Asia/Baghdad.generic.short=AT
+Asia/Baghdad.standard.short=AST
+Asia/Bahrain.daylight.short=ADT
+Asia/Bahrain.generic.short=AT
+Asia/Bahrain.standard.short=AST
+Asia/Baku.daylight.short=AZST
+Asia/Baku.generic.short=AZT
+Asia/Baku.standard.short=AZT
+Asia/Bangkok.daylight.short=ICST
+Asia/Bangkok.generic.short=ICT
+Asia/Bangkok.standard.short=ICT
+Asia/Beirut.daylight.short=EEST
+Asia/Beirut.generic.short=EET
+Asia/Beirut.standard.short=EET
+Asia/Bishkek.daylight.short=KGST
+Asia/Bishkek.generic.short=KGT
+Asia/Bishkek.standard.short=KGT
+Asia/Brunei.daylight.short=BNST
+Asia/Brunei.generic.short=BNT
+Asia/Brunei.standard.short=BNT
+Asia/Calcutta.daylight.short=IDT
+Asia/Calcutta.generic.short=IT
+Asia/Calcutta.standard.short=IST
+Asia/Choibalsan.daylight.short=CHOST
+Asia/Choibalsan.generic.short=CHOT
+Asia/Choibalsan.standard.short=CHOT
+Asia/Chongqing.daylight.short=CDT
+Asia/Chongqing.generic.short=CT
+Asia/Chongqing.standard.short=CST
+Asia/Chungking.daylight.short=CDT
+Asia/Chungking.generic.short=CT
+Asia/Chungking.standard.short=CST
+Asia/Colombo.daylight.short=IDT
+Asia/Colombo.generic.short=IT
+Asia/Colombo.standard.short=IST
+Asia/Dacca.daylight.short=BDST
+Asia/Dacca.generic.short=BDT
+Asia/Dacca.standard.short=BDT
+Asia/Damascus.daylight.short=EEST
+Asia/Damascus.generic.short=EET
+Asia/Damascus.standard.short=EET
+Asia/Dhaka.daylight.short=BDST
+Asia/Dhaka.generic.short=BDT
+Asia/Dhaka.standard.short=BDT
+Asia/Dili.daylight.short=TLST
+Asia/Dili.generic.short=TLT
+Asia/Dili.standard.short=TLT
+Asia/Dubai.daylight.short=GDT
+Asia/Dubai.generic.short=GT
+Asia/Dubai.standard.short=GST
+Asia/Dushanbe.daylight.short=TJST
+Asia/Dushanbe.generic.short=TJT
+Asia/Dushanbe.standard.short=TJT
+Asia/Gaza.daylight.short=EEST
+Asia/Gaza.generic.short=EET
+Asia/Gaza.standard.short=EET
+Asia/Harbin.daylight.short=CDT
+Asia/Harbin.generic.short=CT
+Asia/Harbin.standard.short=CST
+Asia/Hebron.daylight.short=EEST
+Asia/Hebron.generic.short=EET
+Asia/Hebron.standard.short=EET
+Asia/Ho_Chi_Minh.daylight.short=ICST
+Asia/Ho_Chi_Minh.generic.short=ICT
+Asia/Ho_Chi_Minh.standard.short=ICT
+Asia/Hong_Kong.daylight.short=HKST
+Asia/Hong_Kong.generic.short=HKT
+Asia/Hong_Kong.standard.short=HKT
+Asia/Hovd.daylight.short=HOVST
+Asia/Hovd.generic.short=HOVT
+Asia/Hovd.standard.short=HOVT
+Asia/Irkutsk.daylight.short=IRKST
+Asia/Irkutsk.generic.short=IRKT
+Asia/Irkutsk.standard.short=IRKT
+Asia/Istanbul.daylight.short=EEST
+Asia/Istanbul.generic.short=EET
+Asia/Istanbul.standard.short=EET
+Asia/Jakarta.daylight.short=WIST
+Asia/Jakarta.generic.short=WIB
+Asia/Jakarta.standard.short=WIB
+Asia/Jayapura.daylight.short=EIST
+Asia/Jayapura.generic.short=WIT
+Asia/Jayapura.standard.short=WIT
+Asia/Jerusalem.daylight.short=IDT
+Asia/Jerusalem.generic.short=IT
+Asia/Jerusalem.standard.short=IST
+Asia/Kabul.daylight.short=AFST
+Asia/Kabul.generic.short=AFT
+Asia/Kabul.standard.short=AFT
+Asia/Kamchatka.daylight.short=PETST
+Asia/Kamchatka.generic.short=PETT
+Asia/Kamchatka.standard.short=PETT
+Asia/Karachi.daylight.short=PKST
+Asia/Karachi.generic.short=PKT
+Asia/Karachi.standard.short=PKT
+Asia/Kashgar.daylight.short=CDT
+Asia/Kashgar.generic.short=CT
+Asia/Kashgar.standard.short=CST
+Asia/Kathmandu.daylight.short=NPST
+Asia/Kathmandu.generic.short=NPT
+Asia/Kathmandu.standard.short=NPT
+Asia/Katmandu.daylight.short=NPST
+Asia/Katmandu.generic.short=NPT
+Asia/Katmandu.standard.short=NPT
+Asia/Khandyga.daylight.short=YAKST
+Asia/Khandyga.generic.short=YAKT
+Asia/Khandyga.standard.short=YAKT
+Asia/Kolkata.daylight.short=IDT
+Asia/Kolkata.generic.short=IT
+Asia/Kolkata.standard.short=IST
+Asia/Krasnoyarsk.daylight.short=KRAST
+Asia/Krasnoyarsk.generic.short=KRAT
+Asia/Krasnoyarsk.standard.short=KRAT
+Asia/Kuala_Lumpur.daylight.short=MYST
+Asia/Kuala_Lumpur.generic.short=MYT
+Asia/Kuala_Lumpur.standard.short=MYT
+Asia/Kuching.daylight.short=MYST
+Asia/Kuching.generic.short=MYT
+Asia/Kuching.standard.short=MYT
+Asia/Kuwait.daylight.short=ADT
+Asia/Kuwait.generic.short=AT
+Asia/Kuwait.standard.short=AST
+Asia/Macao.daylight.short=CDT
+Asia/Macao.generic.short=CT
+Asia/Macao.standard.short=CST
+Asia/Macau.daylight.short=CDT
+Asia/Macau.generic.short=CT
+Asia/Macau.standard.short=CST
+Asia/Magadan.daylight.short=MAGST
+Asia/Magadan.generic.short=MAGT
+Asia/Magadan.standard.short=MAGT
+Asia/Makassar.daylight.short=CIST
+Asia/Makassar.generic.short=WITA
+Asia/Makassar.standard.short=WITA
+Asia/Manila.daylight.short=PHST
+Asia/Manila.generic.short=PHT
+Asia/Manila.standard.short=PHT
+Asia/Muscat.daylight.short=GDT
+Asia/Muscat.generic.short=GT
+Asia/Muscat.standard.short=GST
+Asia/Nicosia.daylight.short=EEST
+Asia/Nicosia.generic.short=EET
+Asia/Nicosia.standard.short=EET
+Asia/Novokuznetsk.daylight.short=NOVST
+Asia/Novokuznetsk.generic.short=NOVT
+Asia/Novokuznetsk.standard.short=NOVT
+Asia/Novosibirsk.daylight.short=NOVST
+Asia/Novosibirsk.generic.short=NOVT
+Asia/Novosibirsk.standard.short=NOVT
+Asia/Omsk.daylight.short=OMSST
+Asia/Omsk.generic.short=OMST
+Asia/Omsk.standard.short=OMST
+Asia/Oral.daylight.short=ORAST
+Asia/Oral.generic.short=ORAT
+Asia/Oral.standard.short=ORAT
+Asia/Phnom_Penh.daylight.short=ICST
+Asia/Phnom_Penh.generic.short=ICT
+Asia/Phnom_Penh.standard.short=ICT
+Asia/Pontianak.daylight.short=WIST
+Asia/Pontianak.generic.short=WIB
+Asia/Pontianak.standard.short=WIB
+Asia/Pyongyang.daylight.short=KDT
+Asia/Pyongyang.generic.short=KT
+Asia/Pyongyang.standard.short=KST
+Asia/Qatar.daylight.short=ADT
+Asia/Qatar.generic.short=AT
+Asia/Qatar.standard.short=AST
+Asia/Qyzylorda.daylight.short=QYZST
+Asia/Qyzylorda.generic.short=QYZT
+Asia/Qyzylorda.standard.short=QYZT
+Asia/Rangoon.daylight.short=MMST
+Asia/Rangoon.generic.short=MMT
+Asia/Rangoon.standard.short=MMT
+Asia/Saigon.daylight.short=ICST
+Asia/Saigon.generic.short=ICT
+Asia/Saigon.standard.short=ICT
+Asia/Sakhalin.daylight.short=SAKST
+Asia/Sakhalin.generic.short=SAKT
+Asia/Sakhalin.standard.short=SAKT
+Asia/Samarkand.daylight.short=UZST
+Asia/Samarkand.generic.short=UZT
+Asia/Samarkand.standard.short=UZT
+Asia/Seoul.daylight.short=KDT
+Asia/Seoul.generic.short=KT
+Asia/Seoul.standard.short=KST
+Asia/Shanghai.daylight.short=CDT
+Asia/Shanghai.generic.short=CT
+Asia/Shanghai.standard.short=CST
+Asia/Singapore.daylight.short=SGST
+Asia/Singapore.generic.short=SGT
+Asia/Singapore.standard.short=SGT
+Asia/Taipei.daylight.short=CDT
+Asia/Taipei.generic.short=CT
+Asia/Taipei.standard.short=CST
+Asia/Tashkent.daylight.short=UZST
+Asia/Tashkent.generic.short=UZT
+Asia/Tashkent.standard.short=UZT
+Asia/Tbilisi.daylight.short=GEST
+Asia/Tbilisi.generic.short=GET
+Asia/Tbilisi.standard.short=GET
+Asia/Tehran.daylight.short=IRDT
+Asia/Tehran.generic.short=IRT
+Asia/Tehran.standard.short=IRST
+Asia/Tel_Aviv.daylight.short=IDT
+Asia/Tel_Aviv.generic.short=IT
+Asia/Tel_Aviv.standard.short=IST
+Asia/Thimbu.daylight.short=BTST
+Asia/Thimbu.generic.short=BTT
+Asia/Thimbu.standard.short=BTT
+Asia/Thimphu.daylight.short=BTST
+Asia/Thimphu.generic.short=BTT
+Asia/Thimphu.standard.short=BTT
+Asia/Tokyo.daylight.short=JDT
+Asia/Tokyo.generic.short=JT
+Asia/Tokyo.standard.short=JST
+Asia/Ujung_Pandang.daylight.short=CIST
+Asia/Ujung_Pandang.generic.short=WITA
+Asia/Ujung_Pandang.standard.short=WITA
+Asia/Ulaanbaatar.daylight.short=ULAST
+Asia/Ulaanbaatar.generic.short=ULAT
+Asia/Ulaanbaatar.standard.short=ULAT
+Asia/Ulan_Bator.daylight.short=ULAST
+Asia/Ulan_Bator.generic.short=ULAT
+Asia/Ulan_Bator.standard.short=ULAT
+Asia/Urumqi.daylight.short=CDT
+Asia/Urumqi.generic.short=CT
+Asia/Urumqi.standard.short=CST
+Asia/Ust-Nera.daylight.short=VLAST
+Asia/Ust-Nera.generic.short=VLAT
+Asia/Ust-Nera.standard.short=VLAT
+Asia/Vientiane.daylight.short=ICST
+Asia/Vientiane.generic.short=ICT
+Asia/Vientiane.standard.short=ICT
+Asia/Vladivostok.daylight.short=VLAST
+Asia/Vladivostok.generic.short=VLAT
+Asia/Vladivostok.standard.short=VLAT
+Asia/Yakutsk.daylight.short=YAKST
+Asia/Yakutsk.generic.short=YAKT
+Asia/Yakutsk.standard.short=YAKT
+Asia/Yekaterinburg.daylight.short=YEKST
+Asia/Yekaterinburg.generic.short=YEKT
+Asia/Yekaterinburg.standard.short=YEKT
+Asia/Yerevan.daylight.short=AMST
+Asia/Yerevan.generic.short=AMT
+Asia/Yerevan.standard.short=AMT
+AST.daylight.short=AKDT
+AST.generic.short=AKT
+AST.standard.short=AKST
+Atlantic/Azores.daylight.short=AZOST
+Atlantic/Azores.generic.short=AZOT
+Atlantic/Azores.standard.short=AZOT
+Atlantic/Bermuda.daylight.short=ADT
+Atlantic/Bermuda.generic.short=AT
+Atlantic/Bermuda.standard.short=AST
+Atlantic/Canary.daylight.short=WEST
+Atlantic/Canary.generic.short=WET
+Atlantic/Canary.standard.short=WET
+Atlantic/Cape_Verde.daylight.short=CVST
+Atlantic/Cape_Verde.generic.short=CVT
+Atlantic/Cape_Verde.standard.short=CVT
+Atlantic/Faeroe.daylight.short=WEST
+Atlantic/Faeroe.generic.short=WET
+Atlantic/Faeroe.standard.short=WET
+Atlantic/Faroe.daylight.short=WEST
+Atlantic/Faroe.generic.short=WET
+Atlantic/Faroe.standard.short=WET
+Atlantic/Jan_Mayen.daylight.short=CEST
+Atlantic/Jan_Mayen.generic.short=CET
+Atlantic/Jan_Mayen.standard.short=CET
+Atlantic/Madeira.daylight.short=WEST
+Atlantic/Madeira.generic.short=WET
+Atlantic/Madeira.standard.short=WET
+Atlantic/Reykjavik.daylight.short=GMT
+Atlantic/Reykjavik.generic.short=GMT
+Atlantic/Reykjavik.standard.short=GMT
+Atlantic/South_Georgia.daylight.short=GDT
+Atlantic/South_Georgia.generic.short=GT
+Atlantic/South_Georgia.standard.short=GST
+Atlantic/Stanley.daylight.short=FKST
+Atlantic/Stanley.generic.short=FKT
+Atlantic/Stanley.standard.short=FKT
+Atlantic/St_Helena.daylight.short=GMT
+Atlantic/St_Helena.generic.short=GMT
+Atlantic/St_Helena.standard.short=GMT
+Australia/ACT.daylight.short=EST
+Australia/ACT.generic.short=ET
+Australia/ACT.standard.short=EST
+Australia/Adelaide.daylight.short=CST
+Australia/Adelaide.generic.short=CT
+Australia/Adelaide.standard.short=CST
+Australia/Brisbane.daylight.short=EST
+Australia/Brisbane.generic.short=ET
+Australia/Brisbane.standard.short=EST
+Australia/Broken_Hill.daylight.short=CST
+Australia/Broken_Hill.generic.short=CT
+Australia/Broken_Hill.standard.short=CST
+Australia/Canberra.daylight.short=EST
+Australia/Canberra.generic.short=ET
+Australia/Canberra.standard.short=EST
+Australia/Currie.daylight.short=EST
+Australia/Currie.generic.short=ET
+Australia/Currie.standard.short=EST
+Australia/Darwin.daylight.short=CST
+Australia/Darwin.generic.short=CT
+Australia/Darwin.standard.short=CST
+Australia/Eucla.daylight.short=CWST
+Australia/Eucla.generic.short=CWT
+Australia/Eucla.standard.short=CWST
+Australia/Hobart.daylight.short=EST
+Australia/Hobart.generic.short=ET
+Australia/Hobart.standard.short=EST
+Australia/LHI.daylight.short=LHST
+Australia/LHI.generic.short=LHT
+Australia/LHI.standard.short=LHST
+Australia/Lindeman.daylight.short=EST
+Australia/Lindeman.generic.short=ET
+Australia/Lindeman.standard.short=EST
+Australia/Lord_Howe.daylight.short=LHST
+Australia/Lord_Howe.generic.short=LHT
+Australia/Lord_Howe.standard.short=LHST
+Australia/Melbourne.daylight.short=EST
+Australia/Melbourne.generic.short=ET
+Australia/Melbourne.standard.short=EST
+Australia/North.daylight.short=CST
+Australia/North.generic.short=CT
+Australia/North.standard.short=CST
+Australia/NSW.daylight.short=EST
+Australia/NSW.generic.short=ET
+Australia/NSW.standard.short=EST
+Australia/Perth.daylight.short=WST
+Australia/Perth.generic.short=WT
+Australia/Perth.standard.short=WST
+Australia/Queensland.daylight.short=EST
+Australia/Queensland.generic.short=ET
+Australia/Queensland.standard.short=EST
+Australia/South.daylight.short=CST
+Australia/South.generic.short=CT
+Australia/South.standard.short=CST
+Australia/Sydney.daylight.short=EST
+Australia/Sydney.generic.short=ET
+Australia/Sydney.standard.short=EST
+Australia/Tasmania.daylight.short=EST
+Australia/Tasmania.generic.short=ET
+Australia/Tasmania.standard.short=EST
+Australia/Victoria.daylight.short=EST
+Australia/Victoria.generic.short=ET
+Australia/Victoria.standard.short=EST
+Australia/West.daylight.short=WST
+Australia/West.generic.short=WT
+Australia/West.standard.short=WST
+Australia/Yancowinna.daylight.short=CST
+Australia/Yancowinna.generic.short=CT
+Australia/Yancowinna.standard.short=CST
+BET.daylight.short=BRST
+BET.generic.short=BRT
+BET.standard.short=BRT
+Brazil/Acre.daylight.short=ACST
+Brazil/Acre.generic.short=ACT
+Brazil/Acre.standard.short=ACT
+Brazil/DeNoronha.daylight.short=FNST
+Brazil/DeNoronha.generic.short=FNT
+Brazil/DeNoronha.standard.short=FNT
+Brazil/East.daylight.short=BRST
+Brazil/East.generic.short=BRT
+Brazil/East.standard.short=BRT
+Brazil/West.daylight.short=AMST
+Brazil/West.generic.short=AMT
+Brazil/West.standard.short=AMT
+BST.daylight.short=BDST
+BST.generic.short=BDT
+BST.standard.short=BDT
+Canada/Atlantic.daylight.short=ADT
+Canada/Atlantic.generic.short=AT
+Canada/Atlantic.standard.short=AST
+Canada/Central.daylight.short=CDT
+Canada/Central.generic.short=CT
+Canada/Central.standard.short=CST
+Canada/Eastern.daylight.short=EDT
+Canada/Eastern.generic.short=ET
+Canada/Eastern.standard.short=EST
+Canada/East-Saskatchewan.daylight.short=CDT
+Canada/East-Saskatchewan.generic.short=CT
+Canada/East-Saskatchewan.standard.short=CST
+Canada/Mountain.daylight.short=MDT
+Canada/Mountain.generic.short=MT
+Canada/Mountain.standard.short=MST
+Canada/Newfoundland.daylight.short=NDT
+Canada/Newfoundland.generic.short=NT
+Canada/Newfoundland.standard.short=NST
+Canada/Pacific.daylight.short=PDT
+Canada/Pacific.generic.short=PT
+Canada/Pacific.standard.short=PST
+Canada/Saskatchewan.daylight.short=CDT
+Canada/Saskatchewan.generic.short=CT
+Canada/Saskatchewan.standard.short=CST
+Canada/Yukon.daylight.short=PDT
+Canada/Yukon.generic.short=PT
+Canada/Yukon.standard.short=PST
+CAT.daylight.short=CAST
+CAT.generic.short=CAT
+CAT.standard.short=CAT
+CET.daylight.short=CEST
+CET.generic.short=CET
+CET.standard.short=CET
+Chile/Continental.daylight.short=CLST
+Chile/Continental.generic.short=CLT
+Chile/Continental.standard.short=CLT
+Chile/EasterIsland.daylight.short=EASST
+Chile/EasterIsland.generic.short=EAST
+Chile/EasterIsland.standard.short=EAST
+CNT.daylight.short=NDT
+CNT.generic.short=NT
+CNT.standard.short=NST
+CST6CDT.daylight.short=CDT
+CST6CDT.generic.short=CT
+CST6CDT.standard.short=CST
+CST.daylight.short=CDT
+CST.generic.short=CT
+CST.standard.short=CST
+CTT.daylight.short=CDT
+CTT.generic.short=CT
+CTT.standard.short=CST
+Cuba.daylight.short=CDT
+Cuba.generic.short=CT
+Cuba.standard.short=CST
+EAT.daylight.short=EAST
+EAT.generic.short=EAT
+EAT.standard.short=EAT
+ECT.daylight.short=CEST
+ECT.generic.short=CET
+ECT.standard.short=CET
+EET.daylight.short=EEST
+EET.generic.short=EET
+EET.standard.short=EET
+Egypt.daylight.short=EEST
+Egypt.generic.short=EET
+Egypt.standard.short=EET
+Eire.daylight.short=IST
+Eire.generic.short=IT
+Eire.standard.short=GMT
+EST5EDT.daylight.short=EDT
+EST5EDT.generic.short=ET
+EST5EDT.standard.short=EST
+EST.daylight.short=EDT
+EST.generic.short=ET
+EST.standard.short=EST
+Etc/Greenwich.daylight.short=GMT
+Etc/Greenwich.generic.short=GMT
+Etc/Greenwich.standard.short=GMT
+Etc/UCT.daylight.short=UTC
+Etc/UCT.generic.short=UTC
+Etc/UCT.standard.short=UTC
+Etc/Universal.daylight.short=UTC
+Etc/Universal.generic.short=UTC
+Etc/Universal.standard.short=UTC
+Etc/UTC.daylight.short=UTC
+Etc/UTC.generic.short=UTC
+Etc/UTC.standard.short=UTC
+Etc/Zulu.daylight.short=UTC
+Etc/Zulu.generic.short=UTC
+Etc/Zulu.standard.short=UTC
+Europe/Amsterdam.daylight.short=CEST
+Europe/Amsterdam.generic.short=CET
+Europe/Amsterdam.standard.short=CET
+Europe/Andorra.daylight.short=CEST
+Europe/Andorra.generic.short=CET
+Europe/Andorra.standard.short=CET
+Europe/Athens.daylight.short=EEST
+Europe/Athens.generic.short=EET
+Europe/Athens.standard.short=EET
+Europe/Belfast.daylight.short=BST
+Europe/Belfast.generic.short=BT
+Europe/Belfast.standard.short=GMT
+Europe/Belgrade.daylight.short=CEST
+Europe/Belgrade.generic.short=CET
+Europe/Belgrade.standard.short=CET
+Europe/Berlin.daylight.short=CEST
+Europe/Berlin.generic.short=CET
+Europe/Berlin.standard.short=CET
+Europe/Bratislava.daylight.short=CEST
+Europe/Bratislava.generic.short=CET
+Europe/Bratislava.standard.short=CET
+Europe/Brussels.daylight.short=CEST
+Europe/Brussels.generic.short=CET
+Europe/Brussels.standard.short=CET
+Europe/Bucharest.daylight.short=EEST
+Europe/Bucharest.generic.short=EET
+Europe/Bucharest.standard.short=EET
+Europe/Budapest.daylight.short=CEST
+Europe/Budapest.generic.short=CET
+Europe/Budapest.standard.short=CET
+Europe/Busingen.daylight.short=CEST
+Europe/Busingen.generic.short=CET
+Europe/Busingen.standard.short=CET
+Europe/Chisinau.daylight.short=EEST
+Europe/Chisinau.generic.short=EET
+Europe/Chisinau.standard.short=EET
+Europe/Copenhagen.daylight.short=CEST
+Europe/Copenhagen.generic.short=CET
+Europe/Copenhagen.standard.short=CET
+Europe/Dublin.daylight.short=IST
+Europe/Dublin.generic.short=IT
+Europe/Dublin.standard.short=GMT
+Europe/Gibraltar.daylight.short=CEST
+Europe/Gibraltar.generic.short=CET
+Europe/Gibraltar.standard.short=CET
+Europe/Guernsey.daylight.short=BST
+Europe/Guernsey.generic.short=BT
+Europe/Guernsey.standard.short=GMT
+Europe/Helsinki.daylight.short=EEST
+Europe/Helsinki.generic.short=EET
+Europe/Helsinki.standard.short=EET
+Europe/Isle_of_Man.daylight.short=BST
+Europe/Isle_of_Man.generic.short=BT
+Europe/Isle_of_Man.standard.short=GMT
+Europe/Istanbul.daylight.short=EEST
+Europe/Istanbul.generic.short=EET
+Europe/Istanbul.standard.short=EET
+Europe/Jersey.daylight.short=BST
+Europe/Jersey.generic.short=BT
+Europe/Jersey.standard.short=GMT
+Europe/Kaliningrad.daylight.short=FEST
+Europe/Kaliningrad.generic.short=FET
+Europe/Kaliningrad.standard.short=FET
+Europe/Kiev.daylight.short=EEST
+Europe/Kiev.generic.short=EET
+Europe/Kiev.standard.short=EET
+Europe/Lisbon.daylight.short=WEST
+Europe/Lisbon.generic.short=WET
+Europe/Lisbon.standard.short=WET
+Europe/Ljubljana.daylight.short=CEST
+Europe/Ljubljana.generic.short=CET
+Europe/Ljubljana.standard.short=CET
+Europe/London.daylight.short=BST
+Europe/London.generic.short=BT
+Europe/London.standard.short=GMT
+Europe/Luxembourg.daylight.short=CEST
+Europe/Luxembourg.generic.short=CET
+Europe/Luxembourg.standard.short=CET
+Europe/Madrid.daylight.short=CEST
+Europe/Madrid.generic.short=CET
+Europe/Madrid.standard.short=CET
+Europe/Malta.daylight.short=CEST
+Europe/Malta.generic.short=CET
+Europe/Malta.standard.short=CET
+Europe/Mariehamn.daylight.short=EEST
+Europe/Mariehamn.generic.short=EET
+Europe/Mariehamn.standard.short=EET
+Europe/Minsk.daylight.short=FEST
+Europe/Minsk.generic.short=FET
+Europe/Minsk.standard.short=FET
+Europe/Monaco.daylight.short=CEST
+Europe/Monaco.generic.short=CET
+Europe/Monaco.standard.short=CET
+Europe/Moscow.daylight.short=MSD
+Europe/Moscow.generic.short=MT
+Europe/Moscow.standard.short=MSK
+Europe/Nicosia.daylight.short=EEST
+Europe/Nicosia.generic.short=EET
+Europe/Nicosia.standard.short=EET
+Europe/Oslo.daylight.short=CEST
+Europe/Oslo.generic.short=CET
+Europe/Oslo.standard.short=CET
+Europe/Paris.daylight.short=CEST
+Europe/Paris.generic.short=CET
+Europe/Paris.standard.short=CET
+Europe/Podgorica.daylight.short=CEST
+Europe/Podgorica.generic.short=CET
+Europe/Podgorica.standard.short=CET
+Europe/Prague.daylight.short=CEST
+Europe/Prague.generic.short=CET
+Europe/Prague.standard.short=CET
+Europe/Riga.daylight.short=EEST
+Europe/Riga.generic.short=EET
+Europe/Riga.standard.short=EET
+Europe/Rome.daylight.short=CEST
+Europe/Rome.generic.short=CET
+Europe/Rome.standard.short=CET
+Europe/Samara.daylight.short=SAMST
+Europe/Samara.generic.short=SAMT
+Europe/Samara.standard.short=SAMT
+Europe/San_Marino.daylight.short=CEST
+Europe/San_Marino.generic.short=CET
+Europe/San_Marino.standard.short=CET
+Europe/Sarajevo.daylight.short=CEST
+Europe/Sarajevo.generic.short=CET
+Europe/Sarajevo.standard.short=CET
+Europe/Simferopol.daylight.short=EEST
+Europe/Simferopol.generic.short=EET
+Europe/Simferopol.standard.short=EET
+Europe/Skopje.daylight.short=CEST
+Europe/Skopje.generic.short=CET
+Europe/Skopje.standard.short=CET
+Europe/Sofia.daylight.short=EEST
+Europe/Sofia.generic.short=EET
+Europe/Sofia.standard.short=EET
+Europe/Stockholm.daylight.short=CEST
+Europe/Stockholm.generic.short=CET
+Europe/Stockholm.standard.short=CET
+Europe/Tallinn.daylight.short=EEST
+Europe/Tallinn.generic.short=EET
+Europe/Tallinn.standard.short=EET
+Europe/Tirane.daylight.short=CEST
+Europe/Tirane.generic.short=CET
+Europe/Tirane.standard.short=CET
+Europe/Tiraspol.daylight.short=EEST
+Europe/Tiraspol.generic.short=EET
+Europe/Tiraspol.standard.short=EET
+Europe/Uzhgorod.daylight.short=EEST
+Europe/Uzhgorod.generic.short=EET
+Europe/Uzhgorod.standard.short=EET
+Europe/Vaduz.daylight.short=CEST
+Europe/Vaduz.generic.short=CET
+Europe/Vaduz.standard.short=CET
+Europe/Vatican.daylight.short=CEST
+Europe/Vatican.generic.short=CET
+Europe/Vatican.standard.short=CET
+Europe/Vienna.daylight.short=CEST
+Europe/Vienna.generic.short=CET
+Europe/Vienna.standard.short=CET
+Europe/Vilnius.daylight.short=EEST
+Europe/Vilnius.generic.short=EET
+Europe/Vilnius.standard.short=EET
+Europe/Volgograd.daylight.short=VOLST
+Europe/Volgograd.generic.short=VOLT
+Europe/Volgograd.standard.short=VOLT
+Europe/Warsaw.daylight.short=CEST
+Europe/Warsaw.generic.short=CET
+Europe/Warsaw.standard.short=CET
+Europe/Zagreb.daylight.short=CEST
+Europe/Zagreb.generic.short=CET
+Europe/Zagreb.standard.short=CET
+Europe/Zaporozhye.daylight.short=EEST
+Europe/Zaporozhye.generic.short=EET
+Europe/Zaporozhye.standard.short=EET
+Europe/Zurich.daylight.short=CEST
+Europe/Zurich.generic.short=CET
+Europe/Zurich.standard.short=CET
+GB.daylight.short=BST
+GB-Eire.daylight.short=BST
+GB-Eire.generic.short=BT
+GB-Eire.standard.short=GMT
+GB.generic.short=BT
+GB.standard.short=GMT
+GMT.daylight.short=GMT
+GMT.generic.short=GMT
+GMT.standard.short=GMT
+Greenwich.daylight.short=GMT
+Greenwich.generic.short=GMT
+Greenwich.standard.short=GMT
+Hongkong.daylight.short=HKST
+Hongkong.generic.short=HKT
+Hongkong.standard.short=HKT
+HST.daylight.short=HDT
+HST.generic.short=HT
+HST.standard.short=HST
+Iceland.daylight.short=GMT
+Iceland.generic.short=GMT
+Iceland.standard.short=GMT
+IET.daylight.short=EDT
+IET.generic.short=ET
+IET.standard.short=EST
+Indian/Antananarivo.daylight.short=EAST
+Indian/Antananarivo.generic.short=EAT
+Indian/Antananarivo.standard.short=EAT
+Indian/Chagos.daylight.short=IOST
+Indian/Chagos.generic.short=IOT
+Indian/Chagos.standard.short=IOT
+Indian/Christmas.daylight.short=CXST
+Indian/Christmas.generic.short=CIT
+Indian/Christmas.standard.short=CXT
+Indian/Cocos.daylight.short=CCST
+Indian/Cocos.generic.short=CCT
+Indian/Cocos.standard.short=CCT
+Indian/Comoro.daylight.short=EAST
+Indian/Comoro.generic.short=EAT
+Indian/Comoro.standard.short=EAT
+Indian/Kerguelen.daylight.short=TFST
+Indian/Kerguelen.generic.short=TFT
+Indian/Kerguelen.standard.short=TFT
+Indian/Mahe.daylight.short=SCST
+Indian/Mahe.generic.short=SCT
+Indian/Mahe.standard.short=SCT
+Indian/Maldives.daylight.short=MVST
+Indian/Maldives.generic.short=MVT
+Indian/Maldives.standard.short=MVT
+Indian/Mauritius.daylight.short=MUST
+Indian/Mauritius.generic.short=MUT
+Indian/Mauritius.standard.short=MUT
+Indian/Mayotte.daylight.short=EAST
+Indian/Mayotte.generic.short=EAT
+Indian/Mayotte.standard.short=EAT
+Indian/Reunion.daylight.short=REST
+Indian/Reunion.generic.short=RET
+Indian/Reunion.standard.short=RET
+Iran.daylight.short=IRDT
+Iran.generic.short=IRT
+Iran.standard.short=IRST
+Israel.daylight.short=IDT
+Israel.generic.short=IT
+Israel.standard.short=IST
+IST.daylight.short=IDT
+IST.generic.short=IT
+IST.standard.short=IST
+Jamaica.daylight.short=EDT
+Jamaica.generic.short=ET
+Jamaica.standard.short=EST
+Japan.daylight.short=JDT
+Japan.generic.short=JT
+Japan.standard.short=JST
+JST.daylight.short=JDT
+JST.generic.short=JT
+JST.standard.short=JST
+Kwajalein.daylight.short=MHST
+Kwajalein.generic.short=MHT
+Kwajalein.standard.short=MHT
+Libya.daylight.short=EEST
+Libya.generic.short=EET
+Libya.standard.short=EET
+MET.daylight.short=MEST
+MET.generic.short=MET
+MET.standard.short=MET
+Mexico/BajaNorte.daylight.short=PDT
+Mexico/BajaNorte.generic.short=PT
+Mexico/BajaNorte.standard.short=PST
+Mexico/BajaSur.daylight.short=MDT
+Mexico/BajaSur.generic.short=MT
+Mexico/BajaSur.standard.short=MST
+Mexico/General.daylight.short=CDT
+Mexico/General.generic.short=CT
+Mexico/General.standard.short=CST
+MIT.daylight.short=WSDT
+MIT.generic.short=WST
+MIT.standard.short=WST
+MST7MDT.daylight.short=MDT
+MST7MDT.generic.short=MT
+MST7MDT.standard.short=MST
+MST.daylight.short=MDT
+MST.generic.short=MT
+MST.standard.short=MST
+Navajo.daylight.short=MDT
+Navajo.generic.short=MT
+Navajo.standard.short=MST
+NET.daylight.short=AMST
+NET.generic.short=AMT
+NET.standard.short=AMT
+NST.daylight.short=NZDT
+NST.generic.short=NZT
+NST.standard.short=NZST
+NZ-CHAT.daylight.short=CHADT
+NZ-CHAT.generic.short=CHAT
+NZ-CHAT.standard.short=CHAST
+NZ.daylight.short=NZDT
+NZ.generic.short=NZT
+NZ.standard.short=NZST
+Pacific/Apia.daylight.short=WSDT
+Pacific/Apia.generic.short=WST
+Pacific/Apia.standard.short=WST
+Pacific/Auckland.daylight.short=NZDT
+Pacific/Auckland.generic.short=NZT
+Pacific/Auckland.standard.short=NZST
+Pacific/Chatham.daylight.short=CHADT
+Pacific/Chatham.generic.short=CHAT
+Pacific/Chatham.standard.short=CHAST
+Pacific/Chuuk.daylight.short=CHUST
+Pacific/Chuuk.generic.short=CHUT
+Pacific/Chuuk.standard.short=CHUT
+Pacific/Easter.daylight.short=EASST
+Pacific/Easter.generic.short=EAST
+Pacific/Easter.standard.short=EAST
+Pacific/Efate.daylight.short=VUST
+Pacific/Efate.generic.short=VUT
+Pacific/Efate.standard.short=VUT
+Pacific/Enderbury.daylight.short=PHOST
+Pacific/Enderbury.generic.short=PHOT
+Pacific/Enderbury.standard.short=PHOT
+Pacific/Fakaofo.daylight.short=TKST
+Pacific/Fakaofo.generic.short=TKT
+Pacific/Fakaofo.standard.short=TKT
+Pacific/Fiji.daylight.short=FJST
+Pacific/Fiji.generic.short=FJT
+Pacific/Fiji.standard.short=FJT
+Pacific/Funafuti.daylight.short=TVST
+Pacific/Funafuti.generic.short=TVT
+Pacific/Funafuti.standard.short=TVT
+Pacific/Galapagos.daylight.short=GALST
+Pacific/Galapagos.generic.short=GALT
+Pacific/Galapagos.standard.short=GALT
+Pacific/Gambier.daylight.short=GAMST
+Pacific/Gambier.generic.short=GAMT
+Pacific/Gambier.standard.short=GAMT
+Pacific/Guadalcanal.daylight.short=SBST
+Pacific/Guadalcanal.generic.short=SBT
+Pacific/Guadalcanal.standard.short=SBT
+Pacific/Guam.daylight.short=ChDT
+Pacific/Guam.generic.short=ChT
+Pacific/Guam.standard.short=ChST
+Pacific/Honolulu.daylight.short=HDT
+Pacific/Honolulu.generic.short=HT
+Pacific/Honolulu.standard.short=HST
+Pacific/Johnston.daylight.short=HDT
+Pacific/Johnston.generic.short=HT
+Pacific/Johnston.standard.short=HST
+Pacific/Kiritimati.daylight.short=LINST
+Pacific/Kiritimati.generic.short=LINT
+Pacific/Kiritimati.standard.short=LINT
+Pacific/Kosrae.daylight.short=KOSST
+Pacific/Kosrae.generic.short=KOST
+Pacific/Kosrae.standard.short=KOST
+Pacific/Kwajalein.daylight.short=MHST
+Pacific/Kwajalein.generic.short=MHT
+Pacific/Kwajalein.standard.short=MHT
+Pacific/Majuro.daylight.short=MHST
+Pacific/Majuro.generic.short=MHT
+Pacific/Majuro.standard.short=MHT
+Pacific/Marquesas.daylight.short=MARST
+Pacific/Marquesas.generic.short=MART
+Pacific/Marquesas.standard.short=MART
+Pacific/Midway.daylight.short=SDT
+Pacific/Midway.generic.short=ST
+Pacific/Midway.standard.short=SST
+Pacific/Nauru.daylight.short=NRST
+Pacific/Nauru.generic.short=NRT
+Pacific/Nauru.standard.short=NRT
+Pacific/Niue.daylight.short=NUST
+Pacific/Niue.generic.short=NUT
+Pacific/Niue.standard.short=NUT
+Pacific/Norfolk.daylight.short=NFST
+Pacific/Norfolk.generic.short=NFT
+Pacific/Norfolk.standard.short=NFT
+Pacific/Noumea.daylight.short=NCST
+Pacific/Noumea.generic.short=NCT
+Pacific/Noumea.standard.short=NCT
+Pacific/Pago_Pago.daylight.short=SDT
+Pacific/Pago_Pago.generic.short=ST
+Pacific/Pago_Pago.standard.short=SST
+Pacific/Palau.daylight.short=PWST
+Pacific/Palau.generic.short=PWT
+Pacific/Palau.standard.short=PWT
+Pacific/Pitcairn.daylight.short=PDT
+Pacific/Pitcairn.generic.short=PT
+Pacific/Pitcairn.standard.short=PST
+Pacific/Pohnpei.daylight.short=PONST
+Pacific/Pohnpei.generic.short=PONT
+Pacific/Pohnpei.standard.short=PONT
+Pacific/Ponape.daylight.short=PONST
+Pacific/Ponape.generic.short=PONT
+Pacific/Ponape.standard.short=PONT
+Pacific/Port_Moresby.daylight.short=PGST
+Pacific/Port_Moresby.generic.short=PGT
+Pacific/Port_Moresby.standard.short=PGT
+Pacific/Rarotonga.daylight.short=CKHST
+Pacific/Rarotonga.generic.short=CKT
+Pacific/Rarotonga.standard.short=CKT
+Pacific/Saipan.daylight.short=ChDT
+Pacific/Saipan.generic.short=ChT
+Pacific/Saipan.standard.short=ChST
+Pacific/Samoa.daylight.short=SDT
+Pacific/Samoa.generic.short=ST
+Pacific/Samoa.standard.short=SST
+Pacific/Tahiti.daylight.short=TAHST
+Pacific/Tahiti.generic.short=TAHT
+Pacific/Tahiti.standard.short=TAHT
+Pacific/Tarawa.daylight.short=GILST
+Pacific/Tarawa.generic.short=GILT
+Pacific/Tarawa.standard.short=GILT
+Pacific/Tongatapu.daylight.short=TOST
+Pacific/Tongatapu.generic.short=TOT
+Pacific/Tongatapu.standard.short=TOT
+Pacific/Truk.daylight.short=CHUST
+Pacific/Truk.generic.short=CHUT
+Pacific/Truk.standard.short=CHUT
+Pacific/Wake.daylight.short=WAKST
+Pacific/Wake.generic.short=WAKT
+Pacific/Wake.standard.short=WAKT
+Pacific/Wallis.daylight.short=WFST
+Pacific/Wallis.generic.short=WFT
+Pacific/Wallis.standard.short=WFT
+Pacific/Yap.daylight.short=CHUST
+Pacific/Yap.generic.short=CHUT
+Pacific/Yap.standard.short=CHUT
+PLT.daylight.short=PKST
+PLT.generic.short=PKT
+PLT.standard.short=PKT
+PNT.daylight.short=MDT
+PNT.generic.short=MT
+PNT.standard.short=MST
+Poland.daylight.short=CEST
+Poland.generic.short=CET
+Poland.standard.short=CET
+Portugal.daylight.short=WEST
+Portugal.generic.short=WET
+Portugal.standard.short=WET
+PRC.daylight.short=CDT
+PRC.generic.short=CT
+PRC.standard.short=CST
+PRT.daylight.short=ADT
+PRT.generic.short=AT
+PRT.standard.short=AST
+PST8PDT.daylight.short=PDT
+PST8PDT.generic.short=PT
+PST8PDT.standard.short=PST
+PST.daylight.short=PDT
+PST.generic.short=PT
+PST.standard.short=PST
+ROK.daylight.short=KDT
+ROK.generic.short=KT
+ROK.standard.short=KST
+Singapore.daylight.short=SGST
+Singapore.generic.short=SGT
+Singapore.standard.short=SGT
+SST.daylight.short=SBST
+SST.generic.short=SBT
+SST.standard.short=SBT
+SystemV/AST4ADT.daylight.short=ADT
+SystemV/AST4ADT.generic.short=AT
+SystemV/AST4ADT.standard.short=AST
+SystemV/AST4.daylight.short=ADT
+SystemV/AST4.generic.short=AT
+SystemV/AST4.standard.short=AST
+SystemV/CST6CDT.daylight.short=CDT
+SystemV/CST6CDT.generic.short=CT
+SystemV/CST6CDT.standard.short=CST
+SystemV/CST6.daylight.short=CDT
+SystemV/CST6.generic.short=CT
+SystemV/CST6.standard.short=CST
+SystemV/EST5.daylight.short=EDT
+SystemV/EST5EDT.daylight.short=EDT
+SystemV/EST5EDT.generic.short=ET
+SystemV/EST5EDT.standard.short=EST
+SystemV/EST5.generic.short=ET
+SystemV/EST5.standard.short=EST
+SystemV/HST10.daylight.short=HDT
+SystemV/HST10.generic.short=HT
+SystemV/HST10.standard.short=HST
+SystemV/MST7.daylight.short=MDT
+SystemV/MST7.generic.short=MT
+SystemV/MST7MDT.daylight.short=MDT
+SystemV/MST7MDT.generic.short=MT
+SystemV/MST7MDT.standard.short=MST
+SystemV/MST7.standard.short=MST
+SystemV/PST8.daylight.short=PDT
+SystemV/PST8.generic.short=PT
+SystemV/PST8PDT.daylight.short=PDT
+SystemV/PST8PDT.generic.short=PT
+SystemV/PST8PDT.standard.short=PST
+SystemV/PST8.standard.short=PST
+SystemV/YST9.daylight.short=AKDT
+SystemV/YST9.generic.short=AKT
+SystemV/YST9.standard.short=AKST
+SystemV/YST9YDT.daylight.short=AKDT
+SystemV/YST9YDT.generic.short=AKT
+SystemV/YST9YDT.standard.short=AKST
+Turkey.daylight.short=EEST
+Turkey.generic.short=EET
+Turkey.standard.short=EET
+UCT.daylight.short=UTC
+UCT.generic.short=UTC
+UCT.standard.short=UTC
+Universal.daylight.short=UTC
+Universal.generic.short=UTC
+Universal.standard.short=UTC
+US/Alaska.daylight.short=AKDT
+US/Alaska.generic.short=AKT
+US/Alaska.standard.short=AKST
+US/Aleutian.daylight.short=HADT
+US/Aleutian.generic.short=HAT
+US/Aleutian.standard.short=HAST
+US/Arizona.daylight.short=MDT
+US/Arizona.generic.short=MT
+US/Arizona.standard.short=MST
+US/Central.daylight.short=CDT
+US/Central.generic.short=CT
+US/Central.standard.short=CST
+US/Eastern.daylight.short=EDT
+US/Eastern.generic.short=ET
+US/Eastern.standard.short=EST
+US/East-Indiana.daylight.short=EDT
+US/East-Indiana.generic.short=ET
+US/East-Indiana.standard.short=EST
+US/Hawaii.daylight.short=HDT
+US/Hawaii.generic.short=HT
+US/Hawaii.standard.short=HST
+US/Indiana-Starke.daylight.short=CDT
+US/Indiana-Starke.generic.short=CT
+US/Indiana-Starke.standard.short=CST
+US/Michigan.daylight.short=EDT
+US/Michigan.generic.short=ET
+US/Michigan.standard.short=EST
+US/Mountain.daylight.short=MDT
+US/Mountain.generic.short=MT
+US/Mountain.standard.short=MST
+US/Pacific.daylight.short=PDT
+US/Pacific.generic.short=PT
+US/Pacific-New.daylight.short=PDT
+US/Pacific-New.generic.short=PT
+US/Pacific-New.standard.short=PST
+US/Pacific.standard.short=PST
+US/Samoa.daylight.short=SDT
+US/Samoa.generic.short=ST
+US/Samoa.standard.short=SST
+UTC.daylight.short=UTC
+UTC.generic.short=UTC
+UTC.standard.short=UTC
+VST.daylight.short=ICST
+VST.generic.short=ICT
+VST.standard.short=ICT
+WET.daylight.short=WEST
+WET.generic.short=WET
+WET.standard.short=WET
+W-SU.daylight.short=MSD
+W-SU.generic.short=MT
+W-SU.standard.short=MSK
+Zulu.daylight.short=UTC
+Zulu.generic.short=UTC
+Zulu.standard.short=UTC
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_zh_CN.properties Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,651 @@
+ACT.daylight.long=\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5317\u9886\u5730)
+ACT.generic.long=\u4E2D\u90E8\u65F6\u95F4 (\u5317\u90E8\u5730\u533A)
+ACT.standard.long=\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5317\u9886\u5730)
+AET.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u65B0\u5357\u5A01\u5C14\u65AF)
+AET.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)
+AET.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)
+AGT.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+ART.generic.long=\u4E1C\u6B27\u65F6\u95F4
+AST.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4
+Africa/Abidjan.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Africa/Accra.generic.long=\u52A0\u7EB3\u65F6\u95F4
+Africa/Addis_Ababa.generic.long=\u4E1C\u975E\u65F6\u95F4
+Africa/Algiers.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Africa/Asmara.generic.long=\u4E1C\u975E\u65F6\u95F4
+Africa/Asmera.generic.long=\u4E1C\u975E\u65F6\u95F4
+Africa/Bamako.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Africa/Bangui.generic.long=\u897F\u975E\u65F6\u95F4
+Africa/Banjul.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Africa/Bissau.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Africa/Blantyre.generic.long=\u4E2D\u975E\u65F6\u95F4
+Africa/Brazzaville.generic.long=\u897F\u975E\u65F6\u95F4
+Africa/Bujumbura.generic.long=\u4E2D\u975E\u65F6\u95F4
+Africa/Cairo.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Africa/Casablanca.generic.long=\u897F\u6B27\u65F6\u95F4
+Africa/Ceuta.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Africa/Conakry.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Africa/Dakar.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Africa/Dar_es_Salaam.generic.long=\u4E1C\u975E\u65F6\u95F4
+Africa/Djibouti.generic.long=\u4E1C\u975E\u65F6\u95F4
+Africa/Douala.generic.long=\u897F\u975E\u65F6\u95F4
+Africa/El_Aaiun.generic.long=\u897F\u6B27\u65F6\u95F4
+Africa/Freetown.generic.long=\u585E\u62C9\u91CC\u6602\u65F6\u95F4
+Africa/Gaborone.generic.long=\u4E2D\u975E\u65F6\u95F4
+Africa/Harare.generic.long=\u4E2D\u975E\u65F6\u95F4
+Africa/Johannesburg.generic.long=\u5357\u975E\u65F6\u95F4
+Africa/Juba.generic.long=\u4E1C\u975E\u65F6\u95F4
+Africa/Kampala.generic.long=\u4E1C\u975E\u65F6\u95F4
+Africa/Khartoum.generic.long=\u4E1C\u975E\u65F6\u95F4
+Africa/Kigali.generic.long=\u4E2D\u975E\u65F6\u95F4
+Africa/Kinshasa.generic.long=\u897F\u975E\u65F6\u95F4
+Africa/Lagos.generic.long=\u897F\u975E\u65F6\u95F4
+Africa/Libreville.generic.long=\u897F\u975E\u65F6\u95F4
+Africa/Lome.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Africa/Luanda.generic.long=\u897F\u975E\u65F6\u95F4
+Africa/Lubumbashi.generic.long=\u4E2D\u975E\u65F6\u95F4
+Africa/Lusaka.generic.long=\u4E2D\u975E\u65F6\u95F4
+Africa/Malabo.generic.long=\u897F\u975E\u65F6\u95F4
+Africa/Maputo.generic.long=\u4E2D\u975E\u65F6\u95F4
+Africa/Maseru.generic.long=\u5357\u975E\u65F6\u95F4
+Africa/Mbabane.generic.long=\u5357\u975E\u65F6\u95F4
+Africa/Mogadishu.generic.long=\u4E1C\u975E\u65F6\u95F4
+Africa/Monrovia.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Africa/Nairobi.generic.long=\u4E1C\u975E\u65F6\u95F4
+Africa/Ndjamena.generic.long=\u897F\u975E\u65F6\u95F4
+Africa/Niamey.generic.long=\u897F\u975E\u65F6\u95F4
+Africa/Nouakchott.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Africa/Ouagadougou.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Africa/Porto-Novo.generic.long=\u897F\u975E\u65F6\u95F4
+Africa/Sao_Tome.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Africa/Timbuktu.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Africa/Tripoli.generic.long=\u4e1c\u6b27\u65f6\u95f4
+Africa/Tunis.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Africa/Windhoek.generic.long=\u897F\u975E\u65F6\u95F4
+America/Adak.generic.long=\u590F\u5A01\u5937-\u963F\u7559\u7533\u65F6\u95F4
+America/Anchorage.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4
+America/Anguilla.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Antigua.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Araguaina.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4
+America/Argentina/Buenos_Aires.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Argentina/Catamarca.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Argentina/ComodRivadavia.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Argentina/Cordoba.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Argentina/Jujuy.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Argentina/La_Rioja.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Argentina/Mendoza.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Argentina/Rio_Gallegos.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Argentina/Salta.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Argentina/San_Juan.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Argentina/San_Luis.generic.long=\u963f\u6839\u5ef7\u65f6\u95f4
+America/Argentina/Tucuman.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Argentina/Ushuaia.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Aruba.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Asuncion.generic.long=\u5DF4\u62C9\u572D\u65F6\u95F4
+America/Atikokan.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Atka.generic.long=\u590F\u5A01\u5937-\u963F\u7559\u7533\u65F6\u95F4
+America/Bahia.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4
+America/Bahia_Banderas.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Barbados.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Belem.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4
+America/Belize.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Blanc-Sablon.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Boa_Vista.generic.long=\u4E9A\u9A6C\u900A\u65F6\u95F4
+America/Bogota.generic.long=\u54E5\u4F26\u6BD4\u4E9A\u65F6\u95F4
+America/Boise.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Buenos_Aires.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Cambridge_Bay.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Campo_Grande.generic.long=\u4E9A\u9A6C\u900A\u65F6\u95F4
+America/Cancun.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Caracas.generic.long=\u59D4\u5185\u745E\u62C9\u65F6\u95F4
+America/Catamarca.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Cayenne.generic.long=\u6CD5\u5C5E\u572D\u4E9A\u90A3\u65F6\u95F4
+America/Cayman.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Chicago.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Chihuahua.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Coral_Harbour.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Cordoba.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Costa_Rica.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Creston.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Cuiaba.generic.long=\u4E9A\u9A6C\u900A\u65F6\u95F4
+America/Curacao.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Danmarkshavn.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+America/Dawson.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+America/Dawson_Creek.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Denver.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Detroit.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Dominica.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Edmonton.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Eirunepe.generic.long=Acre \u65f6\u95f4
+America/El_Salvador.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Ensenada.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+America/Fort_Wayne.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Fortaleza.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4
+America/Glace_Bay.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Godthab.generic.long=\u897F\u683C\u6797\u5170\u5C9B\u65F6\u95F4
+America/Goose_Bay.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Grand_Turk.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Grenada.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Guadeloupe.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Guatemala.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Guayaquil.generic.long=\u5384\u74DC\u591A\u5C14\u65F6\u95F4
+America/Guyana.generic.long=\u572D\u4E9A\u90A3\u65F6\u95F4
+America/Halifax.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Havana.generic.long=\u53E4\u5DF4\u65F6\u95F4
+America/Hermosillo.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Indiana/Indianapolis.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Indiana/Knox.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Indiana/Marengo.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Indiana/Petersburg.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Indiana/Tell_City.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Indiana/Vevay.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Indiana/Vincennes.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Indiana/Winamac.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Indianapolis.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Inuvik.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Iqaluit.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Jamaica.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Jujuy.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Juneau.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4
+America/Kentucky/Louisville.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Kentucky/Monticello.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Knox_IN.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Kralendijk.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/La_Paz.generic.long=\u73BB\u5229\u7EF4\u4E9A\u65F6\u95F4
+America/Lima.generic.long=\u79D8\u9C81\u65F6\u95F4
+America/Los_Angeles.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+America/Louisville.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Lower_Princes.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Maceio.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4
+America/Managua.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Manaus.generic.long=\u4E9A\u9A6C\u900A\u65F6\u95F4
+America/Marigot.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Martinique.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Matamoros.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Mazatlan.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Mendoza.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Menominee.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Merida.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Metlakatla.daylight.long=\u6885\u7279\u62C9\u5361\u7279\u62C9\u590F\u4EE4\u65F6
+America/Metlakatla.generic.long=\u6885\u7279\u62C9\u5361\u7279\u62C9\u65F6\u95F4
+America/Metlakatla.standard.long=\u6885\u7279\u62C9\u5361\u7279\u62C9\u6807\u51C6\u65F6\u95F4
+America/Mexico_City.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Miquelon.generic.long=\u76AE\u57C3\u5C14\u548C\u5BC6\u514B\u9686\u5C9B\u65F6\u95F4
+America/Moncton.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Monterrey.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Montevideo.generic.long=\u4E4C\u62C9\u572D\u65F6\u95F4
+America/Montreal.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Montserrat.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Nassau.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/New_York.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Nipigon.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Nome.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4
+America/Noronha.generic.long=\u8D39\u5C14\u5357\u591A\u5FB7\u8BFA\u7F57\u5C3C\u4E9A\u65F6\u95F4
+America/North_Dakota/Beulah.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/North_Dakota/Center.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/North_Dakota/New_Salem.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Ojinaga.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Panama.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Pangnirtung.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Paramaribo.generic.long=\u82CF\u5229\u5357\u65F6\u95F4
+America/Phoenix.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Port-au-Prince.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Port_of_Spain.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Porto_Acre.generic.long=Acre \u65f6\u95f4
+America/Porto_Velho.generic.long=\u4E9A\u9A6C\u900A\u65F6\u95F4
+America/Puerto_Rico.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Rainy_River.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Rankin_Inlet.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Recife.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4
+America/Regina.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Resolute.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Rio_Branco.generic.long=Acre \u65f6\u95f4
+America/Rosario.generic.long=\u963F\u6839\u5EF7\u65F6\u95F4
+America/Santa_Isabel.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+America/Santarem.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4
+America/Santiago.generic.long=\u667A\u5229\u65F6\u95F4
+America/Santo_Domingo.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Sao_Paulo.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4
+America/Scoresbysund.generic.long=\u4E1C\u683C\u6797\u5C9B\u65F6\u95F4
+America/Shiprock.generic.long=\u5C71\u5730\u65F6\u95F4
+America/Sitka.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4
+America/St_Barthelemy.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/St_Johns.generic.long=\u7EBD\u82AC\u5170\u65F6\u95F4
+America/St_Kitts.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/St_Lucia.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/St_Thomas.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/St_Vincent.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Swift_Current.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Tegucigalpa.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Thule.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Thunder_Bay.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Tijuana.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+America/Toronto.generic.long=\u4E1C\u90E8\u65F6\u95F4
+America/Tortola.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Vancouver.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+America/Virgin.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+America/Whitehorse.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+America/Winnipeg.generic.long=\u4E2D\u90E8\u65F6\u95F4
+America/Yakutat.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4
+America/Yellowknife.generic.long=\u5C71\u5730\u65F6\u95F4
+Antarctica/Casey.daylight.long=\u897F\u90E8\u590F\u4EE4\u65F6 (\u6FB3\u5927\u5229\u4E9A)
+Antarctica/Casey.generic.long=\u897F\u90E8\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)
+Antarctica/Casey.standard.long=\u897F\u90E8\u6807\u51C6\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)
+Antarctica/Davis.generic.long=\u6234\u7EF4\u65AF\u65F6\u95F4
+Antarctica/DumontDUrville.generic.long=Dumont-d'Urville \u65F6\u95F4
+Antarctica/Macquarie.daylight.long=\u9EA6\u5938\u91CC\u5C9B\u590F\u4EE4\u65F6
+Antarctica/Macquarie.generic.long=\u9EA6\u5938\u91CC\u5C9B\u65F6\u95F4
+Antarctica/Macquarie.standard.long=\u9EA6\u5938\u91CC\u5C9B\u65F6\u95F4
+Antarctica/Mawson.generic.long=\u83AB\u68EE\u65F6\u95F4
+Antarctica/McMurdo.generic.long=\u65B0\u897F\u5170\u65F6\u95F4
+Antarctica/Palmer.generic.long=\u667A\u5229\u65F6\u95F4
+Antarctica/Rothera.generic.long=\u7F57\u745F\u62C9\u65F6\u95F4
+Antarctica/South_Pole.generic.long=\u65B0\u897F\u5170\u65F6\u95F4
+Antarctica/Syowa.generic.long=Syowa \u65F6\u95F4
+Antarctica/Vostok.generic.long=\u83AB\u65AF\u6258\u514B\u65F6\u95F4
+Arctic/Longyearbyen.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Asia/Aden.generic.long=\u963F\u62C9\u4F2F\u534A\u5C9B\u65F6\u95F4
+Asia/Almaty.generic.long=Alma-Ata \u65F6\u95F4
+Asia/Amman.generic.long=\u963f\u62c9\u4f2f\u534a\u5c9b\u65f6\u95f4
+Asia/Anadyr.generic.long=\u963F\u90A3\u5E95\u6CB3\u65F6\u95F4
+Asia/Aqtau.generic.long=Aqtau \u65F6\u95F4
+Asia/Aqtobe.generic.long=Aqtobe \u65F6\u95F4
+Asia/Ashgabat.generic.long=\u571F\u5E93\u66FC\u65F6\u95F4
+Asia/Ashkhabad.generic.long=\u571F\u5E93\u66FC\u65F6\u95F4
+Asia/Baghdad.generic.long=\u963F\u62C9\u4F2F\u534A\u5C9B\u65F6\u95F4
+Asia/Bahrain.generic.long=\u963F\u62C9\u4F2F\u534A\u5C9B\u65F6\u95F4
+Asia/Baku.generic.long=\u4E9A\u585E\u62DC\u7136\u65F6\u95F4
+Asia/Bangkok.generic.long=\u5370\u5EA6\u652F\u90A3\u65F6\u95F4
+Asia/Beirut.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Asia/Bishkek.generic.long=\u5409\u5C14\u5409\u65AF\u65AF\u5766\u65F6\u95F4
+Asia/Brunei.generic.long=\u6587\u83B1\u65F6\u95F4
+Asia/Calcutta.generic.long=\u5370\u5EA6\u65F6\u95F4
+Asia/Choibalsan.generic.long=Choibalsan \u65F6\u95F4
+Asia/Chongqing.generic.long=\u4E2D\u56FD\u65F6\u95F4
+Asia/Chungking.generic.long=\u4E2D\u56FD\u65F6\u95F4
+Asia/Colombo.generic.long=\u5370\u5EA6\u65F6\u95F4
+Asia/Dacca.generic.long=\u5B5F\u52A0\u62C9\u65F6\u95F4
+Asia/Damascus.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Asia/Dhaka.generic.long=\u5B5F\u52A0\u62C9\u65F6\u95F4
+Asia/Dili.generic.long=\u4E1C\u5E1D\u6C76\u65F6\u95F4
+Asia/Dubai.generic.long=\u6D77\u6E7E\u65F6\u95F4
+Asia/Dushanbe.generic.long=\u5854\u5409\u514B\u65AF\u5766\u65F6\u95F4
+Asia/Gaza.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Asia/Harbin.generic.long=\u4E2D\u56FD\u65F6\u95F4
+Asia/Hebron.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Asia/Ho_Chi_Minh.generic.long=\u5370\u5EA6\u652F\u90A3\u65F6\u95F4
+Asia/Hong_Kong.generic.long=\u9999\u6E2F\u65F6\u95F4
+Asia/Hovd.generic.long=\u79D1\u5E03\u591A\u65F6\u95F4
+Asia/Irkutsk.generic.long=\u4F0A\u5C14\u5E93\u6B21\u514B\u65F6\u95F4
+Asia/Istanbul.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Asia/Jakarta.generic.long=\u897F\u5370\u5EA6\u5C3C\u897F\u4E9A\u65F6\u95F4
+Asia/Jayapura.generic.long=\u4E1C\u5370\u5EA6\u5C3C\u897F\u4E9A\u65F6\u95F4
+Asia/Jerusalem.generic.long=\u4EE5\u8272\u5217\u65F6\u95F4
+Asia/Kabul.generic.long=\u963F\u5BCC\u6C57\u65F6\u95F4
+Asia/Kamchatka.generic.long=\u5F7C\u5F97\u7F57\u5DF4\u752B\u6D1B\u592B\u65AF\u514B\u65F6\u95F4
+Asia/Karachi.generic.long=\u5DF4\u57FA\u65AF\u5766\u65F6\u95F4
+Asia/Kashgar.generic.long=\u4E2D\u56FD\u65F6\u95F4
+Asia/Kathmandu.generic.long=\u5C3C\u6CCA\u5C14\u65F6\u95F4
+Asia/Katmandu.generic.long=\u5C3C\u6CCA\u5C14\u65F6\u95F4
+Asia/Khandyga.daylight.long=\u6C49\u5FB7\u52A0\u590F\u4EE4\u65F6
+Asia/Khandyga.generic.long=\u6C49\u5FB7\u52A0\u65F6\u95F4
+Asia/Khandyga.standard.long=\u6C49\u5FB7\u52A0\u65F6\u95F4
+Asia/Kolkata.generic.long=\u5370\u5EA6\u65F6\u95F4
+Asia/Krasnoyarsk.generic.long=\u514B\u62C9\u65AF\u8BFA\u4E9A\u5C14\u65AF\u514B\u65F6\u95F4
+Asia/Kuala_Lumpur.generic.long=\u9A6C\u6765\u897F\u4E9A\u65F6\u95F4
+Asia/Kuching.generic.long=\u9A6C\u6765\u897F\u4E9A\u65F6\u95F4
+Asia/Kuwait.generic.long=\u963F\u62C9\u4F2F\u534A\u5C9B\u65F6\u95F4
+Asia/Macao.generic.long=\u4E2D\u56FD\u65F6\u95F4
+Asia/Macau.generic.long=\u4E2D\u56FD\u65F6\u95F4
+Asia/Magadan.generic.long=Magadan \u65F6\u95F4
+Asia/Makassar.generic.long=\u4E2D\u90E8\u5370\u5EA6\u5C3C\u897F\u4E9A\u65F6\u95F4
+Asia/Manila.generic.long=\u83F2\u5F8B\u5BBE\u65F6\u95F4
+Asia/Muscat.generic.long=\u6D77\u6E7E\u65F6\u95F4
+Asia/Nicosia.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Asia/Novokuznetsk.generic.long=Novosibirsk \u65F6\u95F4
+Asia/Novosibirsk.generic.long=Novosibirsk \u65F6\u95F4
+Asia/Omsk.generic.long=\u9102\u6728\u65AF\u514B\u65F6\u95F4
+Asia/Oral.generic.long=Oral \u65F6\u95F4
+Asia/Phnom_Penh.generic.long=\u5370\u5EA6\u652F\u90A3\u65F6\u95F4
+Asia/Pontianak.generic.long=\u897F\u5370\u5EA6\u5C3C\u897F\u4E9A\u65F6\u95F4
+Asia/Pyongyang.generic.long=\u97E9\u56FD\u65F6\u95F4
+Asia/Qatar.generic.long=\u963F\u62C9\u4F2F\u534A\u5C9B\u65F6\u95F4
+Asia/Qyzylorda.generic.long=Qyzylorda \u65F6\u95F4
+Asia/Rangoon.generic.long=\u7F05\u7538\u65F6\u95F4
+Asia/Saigon.generic.long=\u5370\u5EA6\u652F\u90A3\u65F6\u95F4
+Asia/Sakhalin.generic.long=\u5E93\u9875\u5C9B\u65F6\u95F4
+Asia/Samarkand.generic.long=\u4E4C\u5179\u522B\u514B\u65AF\u5766\u65F6\u95F4
+Asia/Seoul.generic.long=\u97E9\u56FD\u65F6\u95F4
+Asia/Shanghai.generic.long=\u4E2D\u56FD\u65F6\u95F4
+Asia/Singapore.generic.long=\u65B0\u52A0\u5761\u65F6\u95F4
+Asia/Taipei.generic.long=\u4E2D\u56FD\u65F6\u95F4
+Asia/Tashkent.generic.long=\u4E4C\u5179\u522B\u514B\u65AF\u5766\u65F6\u95F4
+Asia/Tbilisi.generic.long=\u4E54\u6CBB\u4E9A\u65F6\u95F4
+Asia/Tehran.generic.long=\u4F0A\u6717\u65F6\u95F4
+Asia/Tel_Aviv.generic.long=\u4EE5\u8272\u5217\u65F6\u95F4
+Asia/Thimbu.generic.long=\u4E0D\u4E39\u65F6\u95F4
+Asia/Thimphu.generic.long=\u4E0D\u4E39\u65F6\u95F4
+Asia/Tokyo.generic.long=\u65E5\u672C\u65F6\u95F4
+Asia/Ujung_Pandang.generic.long=\u4E2D\u90E8\u5370\u5EA6\u5C3C\u897F\u4E9A\u65F6\u95F4
+Asia/Ulaanbaatar.generic.long=\u5E93\u4F26\u65F6\u95F4
+Asia/Ulan_Bator.generic.long=\u5E93\u4F26\u65F6\u95F4
+Asia/Urumqi.generic.long=\u4E2D\u56FD\u65F6\u95F4
+Asia/Ust-Nera.daylight.long=\u4E4C\u65AF\u5B63\u6D85\u62C9\u590F\u4EE4\u65F6
+Asia/Ust-Nera.generic.long=\u4E4C\u65AF\u5B63\u6D85\u62C9\u65F6\u95F4
+Asia/Ust-Nera.standard.long=\u4E4C\u65AF\u5B63\u6D85\u62C9\u65F6\u95F4
+Asia/Vientiane.generic.long=\u5370\u5EA6\u652F\u90A3\u65F6\u95F4
+Asia/Vladivostok.generic.long=\u6D77\u53C2\u5D34\u65F6\u95F4
+Asia/Yakutsk.generic.long=\u4E9A\u5E93\u6B21\u514B\u65F6\u95F4
+Asia/Yekaterinburg.generic.long=Yekaterinburg \u65F6\u95F4
+Asia/Yerevan.generic.long=\u4E9A\u7F8E\u5C3C\u4E9A\u65F6\u95F4
+Atlantic/Azores.generic.long=\u4E9A\u901F\u5C14\u7FA4\u5C9B\u65F6\u95F4
+Atlantic/Bermuda.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+Atlantic/Canary.generic.long=\u897F\u6B27\u65F6\u95F4
+Atlantic/Cape_Verde.generic.long=\u4F5B\u5FB7\u89D2\u65F6\u95F4
+Atlantic/Faeroe.generic.long=\u897F\u6B27\u65F6\u95F4
+Atlantic/Faroe.generic.long=\u897F\u6B27\u65F6\u95F4
+Atlantic/Jan_Mayen.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Atlantic/Madeira.generic.long=\u897F\u6B27\u65F6\u95F4
+Atlantic/Reykjavik.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Atlantic/South_Georgia.generic.long=\u5357\u4E54\u6CBB\u4E9A\u5C9B\u65F6\u95F4
+Atlantic/St_Helena.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Atlantic/Stanley.generic.long=\u798F\u514B\u5170\u7FA4\u5C9B\u65F6\u95F4
+Australia/ACT.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/ACT.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/ACT.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Adelaide.daylight.long=\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5357\u6FB3\u5927\u5229\u4E9A)
+Australia/Adelaide.generic.long=\u4E2D\u90E8\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A)
+Australia/Adelaide.standard.long=\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A)
+Australia/Brisbane.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u6606\u58EB\u5170)
+Australia/Brisbane.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u6606\u58EB\u5170)
+Australia/Brisbane.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u6606\u58EB\u5170)
+Australia/Broken_Hill.daylight.long=\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Broken_Hill.generic.long=\u4E2D\u90E8\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Broken_Hill.standard.long=\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Canberra.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Canberra.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Canberra.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Currie.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Currie.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Currie.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Darwin.daylight.long=\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5317\u9886\u5730)
+Australia/Darwin.generic.long=\u4E2D\u90E8\u65F6\u95F4 (\u5317\u90E8\u5730\u533A)
+Australia/Darwin.standard.long=\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5317\u9886\u5730)
+Australia/Eucla.daylight.long=\u4E2D\u897F\u90E8\u590F\u4EE4\u65F6 (\u6FB3\u5927\u5229\u4E9A)
+Australia/Eucla.generic.long=\u4E2D\u897F\u90E8\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)
+Australia/Eucla.standard.long=\u4E2D\u897F\u90E8\u6807\u51C6\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)
+Australia/Hobart.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u5854\u65AF\u9A6C\u5C3C\u4E9A)
+Australia/Hobart.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u5854\u65AF\u9A6C\u5C3C\u4E9A)
+Australia/Hobart.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u5854\u65AF\u9A6C\u5C3C\u4E9A)
+Australia/LHI.generic.long=\u8C6A\u516C\u65F6\u95F4
+Australia/Lindeman.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u6606\u58EB\u5170)
+Australia/Lindeman.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u6606\u58EB\u5170)
+Australia/Lindeman.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u6606\u58EB\u5170)
+Australia/Lord_Howe.generic.long=\u8C6A\u516C\u65F6\u95F4
+Australia/Melbourne.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u7EF4\u591A\u5229\u4E9A)
+Australia/Melbourne.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u7EF4\u591A\u5229\u4E9A)
+Australia/Melbourne.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u7EF4\u591A\u5229\u4E9A)
+Australia/NSW.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/NSW.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/NSW.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/North.daylight.long=\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5317\u9886\u5730)
+Australia/North.generic.long=\u4E2D\u90E8\u65F6\u95F4 (\u5317\u90E8\u5730\u533A)
+Australia/North.standard.long=\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5317\u9886\u5730)
+Australia/Perth.daylight.long=\u897F\u90E8\u590F\u4EE4\u65F6 (\u6FB3\u5927\u5229\u4E9A)
+Australia/Perth.generic.long=\u897F\u90E8\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)
+Australia/Perth.standard.long=\u897F\u90E8\u6807\u51C6\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)
+Australia/Queensland.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u6606\u58EB\u5170)
+Australia/Queensland.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u6606\u58EB\u5170)
+Australia/Queensland.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u6606\u58EB\u5170)
+Australia/South.daylight.long=\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5357\u6FB3\u5927\u5229\u4E9A)
+Australia/South.generic.long=\u4E2D\u90E8\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A)
+Australia/South.standard.long=\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A)
+Australia/Sydney.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Sydney.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Sydney.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Tasmania.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u5854\u65AF\u9A6C\u5C3C\u4E9A)
+Australia/Tasmania.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u5854\u65AF\u9A6C\u5C3C\u4E9A)
+Australia/Tasmania.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u5854\u65AF\u9A6C\u5C3C\u4E9A)
+Australia/Victoria.daylight.long=\u4E1C\u90E8\u590F\u4EE4\u65F6 (\u7EF4\u591A\u5229\u4E9A)
+Australia/Victoria.generic.long=\u4E1C\u90E8\u65F6\u95F4 (\u7EF4\u591A\u5229\u4E9A)
+Australia/Victoria.standard.long=\u4E1C\u90E8\u6807\u51C6\u65F6\u95F4 (\u7EF4\u591A\u5229\u4E9A)
+Australia/West.daylight.long=\u897F\u90E8\u590F\u4EE4\u65F6 (\u6FB3\u5927\u5229\u4E9A)
+Australia/West.generic.long=\u897F\u90E8\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)
+Australia/West.standard.long=\u897F\u90E8\u6807\u51C6\u65F6\u95F4 (\u6FB3\u5927\u5229\u4E9A)
+Australia/Yancowinna.daylight.long=\u4E2D\u592E\u590F\u4EE4\u65F6 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Yancowinna.generic.long=\u4E2D\u90E8\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF)
+Australia/Yancowinna.standard.long=\u4E2D\u592E\u6807\u51C6\u65F6\u95F4 (\u5357\u6FB3\u5927\u5229\u4E9A/\u65B0\u5357\u5A01\u5C14\u65AF)
+BET.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4
+BST.generic.long=\u5B5F\u52A0\u62C9\u65F6\u95F4
+Brazil/Acre.generic.long=Acre \u65f6\u95f4
+Brazil/DeNoronha.generic.long=\u8D39\u5C14\u5357\u591A\u5FB7\u8BFA\u7F57\u5C3C\u4E9A\u65F6\u95F4
+Brazil/East.generic.long=\u5DF4\u897F\u5229\u4E9A\u65F6\u95F4
+Brazil/West.generic.long=\u4E9A\u9A6C\u900A\u65F6\u95F4
+CAT.generic.long=\u4E2D\u975E\u65F6\u95F4
+CET.generic.long=\u4e2d\u6b27\u65f6\u95f4
+CNT.generic.long=\u7EBD\u82AC\u5170\u65F6\u95F4
+CST.generic.long=\u4E2D\u90E8\u65F6\u95F4
+CST6CDT.generic.long=\u4e2d\u90e8\u65f6\u95f4
+CTT.generic.long=\u4E2D\u56FD\u65F6\u95F4
+Canada/Atlantic.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+Canada/Central.generic.long=\u4E2D\u90E8\u65F6\u95F4
+Canada/East-Saskatchewan.generic.long=\u4E2D\u90E8\u65F6\u95F4
+Canada/Eastern.generic.long=\u4E1C\u90E8\u65F6\u95F4
+Canada/Mountain.generic.long=\u5C71\u5730\u65F6\u95F4
+Canada/Newfoundland.generic.long=\u7EBD\u82AC\u5170\u65F6\u95F4
+Canada/Pacific.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+Canada/Saskatchewan.generic.long=\u4E2D\u90E8\u65F6\u95F4
+Canada/Yukon.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+Chile/Continental.generic.long=\u667A\u5229\u65F6\u95F4
+Chile/EasterIsland.generic.long=\u590D\u6D3B\u5C9B\u65F6\u95F4
+Cuba.generic.long=\u53E4\u5DF4\u65F6\u95F4
+EAT.generic.long=\u4E1C\u975E\u65F6\u95F4
+ECT.generic.long=\u4E2D\u6B27\u65F6\u95F4
+EET.generic.long=\u4e1c\u6b27\u65f6\u95f4
+EST.generic.long=\u4e1c\u90e8\u65f6\u95f4
+EST5EDT.generic.long=\u4e1c\u90e8\u65f6\u95f4
+Egypt.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Eire.generic.long=\u7231\u5C14\u5170\u65F6\u95F4
+Etc/Greenwich.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Etc/UCT.generic.long=\u534F\u8C03\u4E16\u754C\u65F6\u95F4
+Etc/UTC.generic.long=\u534F\u8C03\u4E16\u754C\u65F6\u95F4
+Etc/Universal.generic.long=\u534F\u8C03\u4E16\u754C\u65F6\u95F4
+Etc/Zulu.generic.long=\u534F\u8C03\u4E16\u754C\u65F6\u95F4
+Europe/Amsterdam.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Andorra.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Athens.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Belfast.generic.long=\u82F1\u56FD\u65F6\u95F4
+Europe/Belgrade.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Berlin.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Bratislava.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Brussels.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Bucharest.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Budapest.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Busingen.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Chisinau.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Copenhagen.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Dublin.generic.long=\u7231\u5C14\u5170\u65F6\u95F4
+Europe/Gibraltar.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Guernsey.generic.long=\u82F1\u56FD\u65F6\u95F4
+Europe/Helsinki.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Isle_of_Man.generic.long=\u82F1\u56FD\u65F6\u95F4
+Europe/Istanbul.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Jersey.generic.long=\u82F1\u56FD\u65F6\u95F4
+Europe/Kaliningrad.daylight.long=\u8FDC\u4E1C\u6B27\u590F\u4EE4\u65F6
+Europe/Kaliningrad.generic.long=\u8FDC\u4E1C\u6B27\u65F6\u95F4
+Europe/Kaliningrad.standard.long=\u8FDC\u4E1C\u6B27\u65F6\u95F4
+Europe/Kiev.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Lisbon.generic.long=\u897F\u6B27\u65F6\u95F4
+Europe/Ljubljana.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/London.generic.long=\u82F1\u56FD\u65F6\u95F4
+Europe/Luxembourg.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Madrid.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Malta.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Mariehamn.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Minsk.daylight.long=\u8FDC\u4E1C\u6B27\u590F\u4EE4\u65F6
+Europe/Minsk.generic.long=\u8FDC\u4E1C\u6B27\u65F6\u95F4
+Europe/Minsk.standard.long=\u8FDC\u4E1C\u6B27\u65F6\u95F4
+Europe/Monaco.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Moscow.generic.long=\u83AB\u65AF\u79D1\u65F6\u95F4
+Europe/Nicosia.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Oslo.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Paris.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Podgorica.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Prague.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Riga.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Rome.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Samara.generic.long=\u6C99\u9A6C\u62C9\u65F6\u95F4
+Europe/San_Marino.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Sarajevo.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Simferopol.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Skopje.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Sofia.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Stockholm.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Tallinn.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Tirane.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Tiraspol.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Uzhgorod.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Vaduz.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Vatican.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Vienna.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Vilnius.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Volgograd.generic.long=\u4F0F\u5C14\u52A0\u683C\u52D2\u65F6\u95F4
+Europe/Warsaw.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Zagreb.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Europe/Zaporozhye.generic.long=\u4E1C\u6B27\u65F6\u95F4
+Europe/Zurich.generic.long=\u4E2D\u6B27\u65F6\u95F4
+GB-Eire.generic.long=\u82F1\u56FD\u65F6\u95F4
+GB.generic.long=\u82F1\u56FD\u65F6\u95F4
+GMT.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Greenwich.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+HST.generic.long=\u590f\u5a01\u5937\u65f6\u95f4
+Hongkong.generic.long=\u9999\u6E2F\u65F6\u95F4
+IET.generic.long=\u4E1C\u90E8\u65F6\u95F4
+IST.generic.long=\u5370\u5EA6\u65F6\u95F4
+Iceland.generic.long=\u683C\u6797\u5A01\u6CBB\u65F6\u95F4
+Indian/Antananarivo.generic.long=\u4E1C\u975E\u65F6\u95F4
+Indian/Chagos.generic.long=\u5370\u5EA6\u6D0B\u5730\u5E26\u65F6\u95F4
+Indian/Christmas.generic.long=\u5723\u8BDE\u5C9B\u65F6\u95F4
+Indian/Cocos.generic.long=\u53EF\u53EF\u65AF\u7FA4\u5C9B\u65F6\u95F4
+Indian/Comoro.generic.long=\u4E1C\u975E\u65F6\u95F4
+Indian/Kerguelen.generic.long=\u6CD5\u5C5E\u5357\u6781\u65F6\u95F4
+Indian/Mahe.generic.long=\u585E\u5E2D\u5C14\u7FA4\u5C9B\u65F6\u95F4
+Indian/Maldives.generic.long=\u9A6C\u5C14\u4EE3\u592B\u65F6\u95F4
+Indian/Mauritius.generic.long=\u6469\u91CC\u897F\u65AF\u65F6\u95F4
+Indian/Mayotte.generic.long=\u4E1C\u975E\u65F6\u95F4
+Indian/Reunion.generic.long=\u7559\u5C3C\u65FA\u5C9B\u65F6\u95F4
+Iran.generic.long=\u4F0A\u6717\u65F6\u95F4
+Israel.generic.long=\u4EE5\u8272\u5217\u65F6\u95F4
+JST.generic.long=\u65E5\u672C\u65F6\u95F4
+Jamaica.generic.long=\u4E1C\u90E8\u65F6\u95F4
+Japan.generic.long=\u65E5\u672C\u65F6\u95F4
+Kwajalein.generic.long=\u9A6C\u7ECD\u5C14\u7FA4\u5C9B\u65F6\u95F4
+Libya.generic.long=\u4e1c\u6b27\u65f6\u95f4
+MET.generic.long=MET
+MIT.generic.long=\u897F\u8428\u6469\u4E9A\u65F6\u95F4
+MST.generic.long=\u5c71\u5730\u65f6\u95f4
+MST7MDT.generic.long=\u5c71\u5730\u65f6\u95f4
+Mexico/BajaNorte.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+Mexico/BajaSur.generic.long=\u5C71\u5730\u65F6\u95F4
+Mexico/General.generic.long=\u4E2D\u90E8\u65F6\u95F4
+NET.generic.long=\u4E9A\u7F8E\u5C3C\u4E9A\u65F6\u95F4
+NST.generic.long=\u65B0\u897F\u5170\u65F6\u95F4
+NZ-CHAT.generic.long=\u67E5\u5854\u59C6\u65F6\u95F4
+NZ.generic.long=\u65B0\u897F\u5170\u65F6\u95F4
+Navajo.generic.long=\u5C71\u5730\u65F6\u95F4
+PLT.generic.long=\u5DF4\u57FA\u65AF\u5766\u65F6\u95F4
+PNT.generic.long=\u5C71\u5730\u65F6\u95F4
+PRC.generic.long=\u4E2D\u56FD\u65F6\u95F4
+PRT.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+PST.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+PST8PDT.generic.long=\u592a\u5e73\u6d0b\u65f6\u95f4
+Pacific/Apia.generic.long=\u897F\u8428\u6469\u4E9A\u65F6\u95F4
+Pacific/Auckland.generic.long=\u65B0\u897F\u5170\u65F6\u95F4
+Pacific/Chatham.generic.long=\u67E5\u5854\u59C6\u65F6\u95F4
+Pacific/Chuuk.daylight.long=\u4E18\u514B\u590F\u4EE4\u65F6
+Pacific/Chuuk.generic.long=\u4E18\u514B\u65F6\u95F4
+Pacific/Chuuk.standard.long=\u4E18\u514B\u65F6\u95F4
+Pacific/Easter.generic.long=\u590D\u6D3B\u5C9B\u65F6\u95F4
+Pacific/Efate.generic.long=\u74E6\u5974\u963F\u56FE\u65F6\u95F4
+Pacific/Enderbury.generic.long=\u83F2\u5C3C\u514B\u65AF\u7FA4\u5C9B\u65F6\u95F4
+Pacific/Fakaofo.generic.long=\u6258\u514B\u52B3\u7FA4\u5C9B\u65F6\u95F4
+Pacific/Fiji.generic.long=\u6590\u6D4E\u65F6\u95F4
+Pacific/Funafuti.generic.long=\u5410\u9C81\u74E6\u65F6\u95F4
+Pacific/Galapagos.generic.long=\u52A0\u62C9\u5DF4\u54E5\u65F6\u95F4
+Pacific/Gambier.generic.long=\u5188\u6BD4\u4E9A\u65F6\u95F4
+Pacific/Guadalcanal.generic.long=\u6240\u7F57\u95E8\u7FA4\u5C9B\u65F6\u95F4
+Pacific/Guam.generic.long=\u67E5\u6469\u6D1B\u65F6\u95F4
+Pacific/Honolulu.generic.long=\u590F\u5A01\u5937\u65F6\u95F4
+Pacific/Johnston.generic.long=\u590F\u5A01\u5937\u65F6\u95F4
+Pacific/Kiritimati.generic.long=Line \u5C9B\u65F6\u95F4
+Pacific/Kosrae.generic.long=Kosrae \u65F6\u95F4
+Pacific/Kwajalein.generic.long=\u9A6C\u7ECD\u5C14\u7FA4\u5C9B\u65F6\u95F4
+Pacific/Majuro.generic.long=\u9A6C\u7ECD\u5C14\u7FA4\u5C9B\u65F6\u95F4
+Pacific/Marquesas.generic.long=\u9A6C\u514B\u8428\u65AF\u65F6\u95F4
+Pacific/Midway.generic.long=\u8428\u6469\u4E9A\u65F6\u95F4
+Pacific/Nauru.generic.long=\u8BFA\u9C81\u65F6\u95F4
+Pacific/Niue.generic.long=\u7EBD\u5A01\u5C9B\u65F6\u95F4
+Pacific/Norfolk.generic.long=\u8BFA\u798F\u514B\u65F6\u95F4
+Pacific/Noumea.generic.long=\u65B0\u52A0\u52D2\u591A\u5C3C\u4E9A\u65F6\u95F4
+Pacific/Pago_Pago.generic.long=\u8428\u6469\u4E9A\u65F6\u95F4
+Pacific/Palau.generic.long=\u5E1B\u7409\u65F6\u95F4
+Pacific/Pitcairn.generic.long=\u76AE\u7279\u51EF\u6069\u65F6\u95F4
+Pacific/Pohnpei.daylight.long=\u6CE2\u7EB3\u4F69\u590F\u4EE4\u65F6
+Pacific/Pohnpei.generic.long=\u6CE2\u7EB3\u4F69\u65F6\u95F4
+Pacific/Pohnpei.standard.long=\u6CE2\u7EB3\u4F69\u65F6\u95F4
+Pacific/Ponape.daylight.long=\u6CE2\u7EB3\u4F69\u590F\u4EE4\u65F6
+Pacific/Ponape.generic.long=\u6CE2\u7EB3\u4F69\u65F6\u95F4
+Pacific/Ponape.standard.long=\u6CE2\u7EB3\u4F69\u65F6\u95F4
+Pacific/Port_Moresby.generic.long=\u5DF4\u5E03\u4E9A\u65B0\u51E0\u5185\u4E9A\u65F6\u95F4
+Pacific/Rarotonga.generic.long=\u5E93\u514B\u7FA4\u5C9B\u65F6\u95F4
+Pacific/Saipan.generic.long=\u67E5\u6469\u6D1B\u65F6\u95F4
+Pacific/Samoa.generic.long=\u8428\u6469\u4E9A\u65F6\u95F4
+Pacific/Tahiti.generic.long=\u5927\u6EAA\u5730\u5C9B\u65F6\u95F4
+Pacific/Tarawa.generic.long=\u5409\u4F2F\u7279\u7FA4\u5C9B\u65F6\u95F4
+Pacific/Tongatapu.generic.long=\u4E1C\u52A0\u65F6\u95F4
+Pacific/Truk.daylight.long=\u4E18\u514B\u590F\u4EE4\u65F6
+Pacific/Truk.generic.long=\u4E18\u514B\u65F6\u95F4
+Pacific/Truk.standard.long=\u4E18\u514B\u65F6\u95F4
+Pacific/Wake.generic.long=\u5A01\u514B\u65F6\u95F4
+Pacific/Wallis.generic.long=\u74E6\u5229\u65AF\u53CA\u798F\u675C\u7EB3\u7FA4\u5C9B\u65F6\u95F4
+Pacific/Yap.daylight.long=\u4E18\u514B\u590F\u4EE4\u65F6
+Pacific/Yap.generic.long=\u4E18\u514B\u65F6\u95F4
+Pacific/Yap.standard.long=\u4E18\u514B\u65F6\u95F4
+Poland.generic.long=\u4E2D\u6B27\u65F6\u95F4
+Portugal.generic.long=\u897F\u6B27\u65F6\u95F4
+ROK.generic.long=\u97E9\u56FD\u65F6\u95F4
+SST.generic.long=\u6240\u7F57\u95E8\u7FA4\u5C9B\u65F6\u95F4
+Singapore.generic.long=\u65B0\u52A0\u5761\u65F6\u95F4
+SystemV/AST4.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+SystemV/AST4ADT.generic.long=\u5927\u897F\u6D0B\u65F6\u95F4
+SystemV/CST6.generic.long=\u4E2D\u90E8\u65F6\u95F4
+SystemV/CST6CDT.generic.long=\u4E2D\u90E8\u65F6\u95F4
+SystemV/EST5.generic.long=\u4E1C\u90E8\u65F6\u95F4
+SystemV/EST5EDT.generic.long=\u4E1C\u90E8\u65F6\u95F4
+SystemV/HST10.generic.long=\u590F\u5A01\u5937\u65F6\u95F4
+SystemV/MST7.generic.long=\u5C71\u5730\u65F6\u95F4
+SystemV/MST7MDT.generic.long=\u5C71\u5730\u65F6\u95F4
+SystemV/PST8.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+SystemV/PST8PDT.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+SystemV/YST9.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4
+SystemV/YST9YDT.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4
+Turkey.generic.long=\u4E1C\u6B27\u65F6\u95F4
+UCT.generic.long=\u534F\u8C03\u4E16\u754C\u65F6\u95F4
+US/Alaska.generic.long=\u963F\u62C9\u65AF\u52A0\u65F6\u95F4
+US/Aleutian.generic.long=\u590F\u5A01\u5937-\u963F\u7559\u7533\u65F6\u95F4
+US/Arizona.generic.long=\u5C71\u5730\u65F6\u95F4
+US/Central.generic.long=\u4E2D\u90E8\u65F6\u95F4
+US/East-Indiana.generic.long=\u4E1C\u90E8\u65F6\u95F4
+US/Eastern.generic.long=\u4E1C\u90E8\u65F6\u95F4
+US/Hawaii.generic.long=\u590F\u5A01\u5937\u65F6\u95F4
+US/Indiana-Starke.generic.long=\u4E2D\u90E8\u65F6\u95F4
+US/Michigan.generic.long=\u4E1C\u90E8\u65F6\u95F4
+US/Mountain.generic.long=\u5C71\u5730\u65F6\u95F4
+US/Pacific-New.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+US/Pacific.generic.long=\u592A\u5E73\u6D0B\u65F6\u95F4
+US/Samoa.generic.long=\u8428\u6469\u4E9A\u65F6\u95F4
+UTC.generic.long=\u534F\u8C03\u4E16\u754C\u65F6\u95F4
+Universal.generic.long=\u534F\u8C03\u4E16\u754C\u65F6\u95F4
+VST.generic.long=\u5370\u5EA6\u652F\u90A3\u65F6\u95F4
+W-SU.generic.long=\u83AB\u65AF\u79D1\u65F6\u95F4
+WET.generic.long=\u897f\u6b27\u65f6\u95f4
+Zulu.generic.long=\u534F\u8C03\u4E16\u754C\u65F6\u95F4
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_zh_CN_short.properties Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,1743 @@
+ACT.daylight.short=CST
+ACT.generic.short=CT
+ACT.standard.short=CST
+AET.daylight.short=EST
+AET.generic.short=ET
+AET.standard.short=EST
+Africa/Abidjan.daylight.short=GMT
+Africa/Abidjan.generic.short=GMT
+Africa/Abidjan.standard.short=GMT
+Africa/Accra.daylight.short=GHST
+Africa/Accra.generic.short=GMT
+Africa/Accra.standard.short=GMT
+Africa/Addis_Ababa.daylight.short=EAST
+Africa/Addis_Ababa.generic.short=EAT
+Africa/Addis_Ababa.standard.short=EAT
+Africa/Algiers.daylight.short=CEST
+Africa/Algiers.generic.short=CET
+Africa/Algiers.standard.short=CET
+Africa/Asmara.daylight.short=EAST
+Africa/Asmara.generic.short=EAT
+Africa/Asmara.standard.short=EAT
+Africa/Asmera.daylight.short=EAST
+Africa/Asmera.generic.short=EAT
+Africa/Asmera.standard.short=EAT
+Africa/Bamako.daylight.short=GMT
+Africa/Bamako.generic.short=GMT
+Africa/Bamako.standard.short=GMT
+Africa/Bangui.daylight.short=WAST
+Africa/Bangui.generic.short=WAT
+Africa/Bangui.standard.short=WAT
+Africa/Banjul.daylight.short=GMT
+Africa/Banjul.generic.short=GMT
+Africa/Banjul.standard.short=GMT
+Africa/Bissau.daylight.short=GMT
+Africa/Bissau.generic.short=GMT
+Africa/Bissau.standard.short=GMT
+Africa/Blantyre.daylight.short=CAST
+Africa/Blantyre.generic.short=CAT
+Africa/Blantyre.standard.short=CAT
+Africa/Brazzaville.daylight.short=WAST
+Africa/Brazzaville.generic.short=WAT
+Africa/Brazzaville.standard.short=WAT
+Africa/Bujumbura.daylight.short=CAST
+Africa/Bujumbura.generic.short=CAT
+Africa/Bujumbura.standard.short=CAT
+Africa/Cairo.daylight.short=EEST
+Africa/Cairo.generic.short=EET
+Africa/Cairo.standard.short=EET
+Africa/Casablanca.daylight.short=WEST
+Africa/Casablanca.generic.short=WET
+Africa/Casablanca.standard.short=WET
+Africa/Ceuta.daylight.short=CEST
+Africa/Ceuta.generic.short=CET
+Africa/Ceuta.standard.short=CET
+Africa/Conakry.daylight.short=GMT
+Africa/Conakry.generic.short=GMT
+Africa/Conakry.standard.short=GMT
+Africa/Dakar.daylight.short=GMT
+Africa/Dakar.generic.short=GMT
+Africa/Dakar.standard.short=GMT
+Africa/Dar_es_Salaam.daylight.short=EAST
+Africa/Dar_es_Salaam.generic.short=EAT
+Africa/Dar_es_Salaam.standard.short=EAT
+Africa/Djibouti.daylight.short=EAST
+Africa/Djibouti.generic.short=EAT
+Africa/Djibouti.standard.short=EAT
+Africa/Douala.daylight.short=WAST
+Africa/Douala.generic.short=WAT
+Africa/Douala.standard.short=WAT
+Africa/El_Aaiun.daylight.short=WEST
+Africa/El_Aaiun.generic.short=WET
+Africa/El_Aaiun.standard.short=WET
+Africa/Freetown.daylight.short=SLST
+Africa/Freetown.generic.short=SLT
+Africa/Freetown.standard.short=GMT
+Africa/Gaborone.daylight.short=CAST
+Africa/Gaborone.generic.short=CAT
+Africa/Gaborone.standard.short=CAT
+Africa/Harare.daylight.short=CAST
+Africa/Harare.generic.short=CAT
+Africa/Harare.standard.short=CAT
+Africa/Johannesburg.daylight.short=SAST
+Africa/Johannesburg.generic.short=SAT
+Africa/Johannesburg.standard.short=SAST
+Africa/Juba.daylight.short=EAST
+Africa/Juba.generic.short=EAT
+Africa/Juba.standard.short=EAT
+Africa/Kampala.daylight.short=EAST
+Africa/Kampala.generic.short=EAT
+Africa/Kampala.standard.short=EAT
+Africa/Khartoum.daylight.short=EAST
+Africa/Khartoum.generic.short=EAT
+Africa/Khartoum.standard.short=EAT
+Africa/Kigali.daylight.short=CAST
+Africa/Kigali.generic.short=CAT
+Africa/Kigali.standard.short=CAT
+Africa/Kinshasa.daylight.short=WAST
+Africa/Kinshasa.generic.short=WAT
+Africa/Kinshasa.standard.short=WAT
+Africa/Lagos.daylight.short=WAST
+Africa/Lagos.generic.short=WAT
+Africa/Lagos.standard.short=WAT
+Africa/Libreville.daylight.short=WAST
+Africa/Libreville.generic.short=WAT
+Africa/Libreville.standard.short=WAT
+Africa/Lome.daylight.short=GMT
+Africa/Lome.generic.short=GMT
+Africa/Lome.standard.short=GMT
+Africa/Luanda.daylight.short=WAST
+Africa/Luanda.generic.short=WAT
+Africa/Luanda.standard.short=WAT
+Africa/Lubumbashi.daylight.short=CAST
+Africa/Lubumbashi.generic.short=CAT
+Africa/Lubumbashi.standard.short=CAT
+Africa/Lusaka.daylight.short=CAST
+Africa/Lusaka.generic.short=CAT
+Africa/Lusaka.standard.short=CAT
+Africa/Malabo.daylight.short=WAST
+Africa/Malabo.generic.short=WAT
+Africa/Malabo.standard.short=WAT
+Africa/Maputo.daylight.short=CAST
+Africa/Maputo.generic.short=CAT
+Africa/Maputo.standard.short=CAT
+Africa/Maseru.daylight.short=SAST
+Africa/Maseru.generic.short=SAT
+Africa/Maseru.standard.short=SAST
+Africa/Mbabane.daylight.short=SAST
+Africa/Mbabane.generic.short=SAT
+Africa/Mbabane.standard.short=SAST
+Africa/Mogadishu.daylight.short=EAST
+Africa/Mogadishu.generic.short=EAT
+Africa/Mogadishu.standard.short=EAT
+Africa/Monrovia.daylight.short=GMT
+Africa/Monrovia.generic.short=GMT
+Africa/Monrovia.standard.short=GMT
+Africa/Nairobi.daylight.short=EAST
+Africa/Nairobi.generic.short=EAT
+Africa/Nairobi.standard.short=EAT
+Africa/Ndjamena.daylight.short=WAST
+Africa/Ndjamena.generic.short=WAT
+Africa/Ndjamena.standard.short=WAT
+Africa/Niamey.daylight.short=WAST
+Africa/Niamey.generic.short=WAT
+Africa/Niamey.standard.short=WAT
+Africa/Nouakchott.daylight.short=GMT
+Africa/Nouakchott.generic.short=GMT
+Africa/Nouakchott.standard.short=GMT
+Africa/Ouagadougou.daylight.short=GMT
+Africa/Ouagadougou.generic.short=GMT
+Africa/Ouagadougou.standard.short=GMT
+Africa/Porto-Novo.daylight.short=WAST
+Africa/Porto-Novo.generic.short=WAT
+Africa/Porto-Novo.standard.short=WAT
+Africa/Sao_Tome.daylight.short=GMT
+Africa/Sao_Tome.generic.short=GMT
+Africa/Sao_Tome.standard.short=GMT
+Africa/Timbuktu.daylight.short=GMT
+Africa/Timbuktu.generic.short=GMT
+Africa/Timbuktu.standard.short=GMT
+Africa/Tripoli.daylight.short=EEST
+Africa/Tripoli.generic.short=EET
+Africa/Tripoli.standard.short=EET
+Africa/Tunis.daylight.short=CEST
+Africa/Tunis.generic.short=CET
+Africa/Tunis.standard.short=CET
+Africa/Windhoek.daylight.short=WAST
+Africa/Windhoek.generic.short=WAT
+Africa/Windhoek.standard.short=WAT
+AGT.daylight.short=ARST
+AGT.generic.short=ART
+AGT.standard.short=ART
+America/Adak.daylight.short=HADT
+America/Adak.generic.short=HAT
+America/Adak.standard.short=HAST
+America/Anchorage.daylight.short=AKDT
+America/Anchorage.generic.short=AKT
+America/Anchorage.standard.short=AKST
+America/Anguilla.daylight.short=ADT
+America/Anguilla.generic.short=AT
+America/Anguilla.standard.short=AST
+America/Antigua.daylight.short=ADT
+America/Antigua.generic.short=AT
+America/Antigua.standard.short=AST
+America/Araguaina.daylight.short=BRST
+America/Araguaina.generic.short=BRT
+America/Araguaina.standard.short=BRT
+America/Argentina/Buenos_Aires.daylight.short=ARST
+America/Argentina/Buenos_Aires.generic.short=ART
+America/Argentina/Buenos_Aires.standard.short=ART
+America/Argentina/Catamarca.daylight.short=ARST
+America/Argentina/Catamarca.generic.short=ART
+America/Argentina/Catamarca.standard.short=ART
+America/Argentina/ComodRivadavia.daylight.short=ARST
+America/Argentina/ComodRivadavia.generic.short=ART
+America/Argentina/ComodRivadavia.standard.short=ART
+America/Argentina/Cordoba.daylight.short=ARST
+America/Argentina/Cordoba.generic.short=ART
+America/Argentina/Cordoba.standard.short=ART
+America/Argentina/Jujuy.daylight.short=ARST
+America/Argentina/Jujuy.generic.short=ART
+America/Argentina/Jujuy.standard.short=ART
+America/Argentina/La_Rioja.daylight.short=ARST
+America/Argentina/La_Rioja.generic.short=ART
+America/Argentina/La_Rioja.standard.short=ART
+America/Argentina/Mendoza.daylight.short=ARST
+America/Argentina/Mendoza.generic.short=ART
+America/Argentina/Mendoza.standard.short=ART
+America/Argentina/Rio_Gallegos.daylight.short=ARST
+America/Argentina/Rio_Gallegos.generic.short=ART
+America/Argentina/Rio_Gallegos.standard.short=ART
+America/Argentina/Salta.daylight.short=ARST
+America/Argentina/Salta.generic.short=ART
+America/Argentina/Salta.standard.short=ART
+America/Argentina/San_Juan.daylight.short=ARST
+America/Argentina/San_Juan.generic.short=ART
+America/Argentina/San_Juan.standard.short=ART
+America/Argentina/San_Luis.daylight.short=ARST
+America/Argentina/San_Luis.generic.short=ART
+America/Argentina/San_Luis.standard.short=ART
+America/Argentina/Tucuman.daylight.short=ARST
+America/Argentina/Tucuman.generic.short=ART
+America/Argentina/Tucuman.standard.short=ART
+America/Argentina/Ushuaia.daylight.short=ARST
+America/Argentina/Ushuaia.generic.short=ART
+America/Argentina/Ushuaia.standard.short=ART
+America/Aruba.daylight.short=ADT
+America/Aruba.generic.short=AT
+America/Aruba.standard.short=AST
+America/Asuncion.daylight.short=PYST
+America/Asuncion.generic.short=PYT
+America/Asuncion.standard.short=PYT
+America/Atikokan.daylight.short=EDT
+America/Atikokan.generic.short=ET
+America/Atikokan.standard.short=EST
+America/Atka.daylight.short=HADT
+America/Atka.generic.short=HAT
+America/Atka.standard.short=HAST
+America/Bahia_Banderas.daylight.short=CDT
+America/Bahia_Banderas.generic.short=CT
+America/Bahia_Banderas.standard.short=CST
+America/Bahia.daylight.short=BRST
+America/Bahia.generic.short=BRT
+America/Bahia.standard.short=BRT
+America/Barbados.daylight.short=ADT
+America/Barbados.generic.short=AT
+America/Barbados.standard.short=AST
+America/Belem.daylight.short=BRST
+America/Belem.generic.short=BRT
+America/Belem.standard.short=BRT
+America/Belize.daylight.short=CDT
+America/Belize.generic.short=CT
+America/Belize.standard.short=CST
+America/Blanc-Sablon.daylight.short=ADT
+America/Blanc-Sablon.generic.short=AT
+America/Blanc-Sablon.standard.short=AST
+America/Boa_Vista.daylight.short=AMST
+America/Boa_Vista.generic.short=AMT
+America/Boa_Vista.standard.short=AMT
+America/Bogota.daylight.short=COST
+America/Bogota.generic.short=COT
+America/Bogota.standard.short=COT
+America/Boise.daylight.short=MDT
+America/Boise.generic.short=MT
+America/Boise.standard.short=MST
+America/Buenos_Aires.daylight.short=ARST
+America/Buenos_Aires.generic.short=ART
+America/Buenos_Aires.standard.short=ART
+America/Cambridge_Bay.daylight.short=MDT
+America/Cambridge_Bay.generic.short=MT
+America/Cambridge_Bay.standard.short=MST
+America/Campo_Grande.daylight.short=AMST
+America/Campo_Grande.generic.short=AMT
+America/Campo_Grande.standard.short=AMT
+America/Cancun.daylight.short=CDT
+America/Cancun.generic.short=CT
+America/Cancun.standard.short=CST
+America/Caracas.daylight.short=VEST
+America/Caracas.generic.short=VET
+America/Caracas.standard.short=VET
+America/Catamarca.daylight.short=ARST
+America/Catamarca.generic.short=ART
+America/Catamarca.standard.short=ART
+America/Cayenne.daylight.short=GFST
+America/Cayenne.generic.short=GFT
+America/Cayenne.standard.short=GFT
+America/Cayman.daylight.short=EDT
+America/Cayman.generic.short=ET
+America/Cayman.standard.short=EST
+America/Chicago.daylight.short=CDT
+America/Chicago.generic.short=CT
+America/Chicago.standard.short=CST
+America/Chihuahua.daylight.short=MDT
+America/Chihuahua.generic.short=MT
+America/Chihuahua.standard.short=MST
+America/Coral_Harbour.daylight.short=EDT
+America/Coral_Harbour.generic.short=ET
+America/Coral_Harbour.standard.short=EST
+America/Cordoba.daylight.short=ARST
+America/Cordoba.generic.short=ART
+America/Cordoba.standard.short=ART
+America/Costa_Rica.daylight.short=CDT
+America/Costa_Rica.generic.short=CT
+America/Costa_Rica.standard.short=CST
+America/Creston.daylight.short=MDT
+America/Creston.generic.short=MT
+America/Creston.standard.short=MST
+America/Cuiaba.daylight.short=AMST
+America/Cuiaba.generic.short=AMT
+America/Cuiaba.standard.short=AMT
+America/Curacao.daylight.short=ADT
+America/Curacao.generic.short=AT
+America/Curacao.standard.short=AST
+America/Danmarkshavn.daylight.short=GMT
+America/Danmarkshavn.generic.short=GMT
+America/Danmarkshavn.standard.short=GMT
+America/Dawson_Creek.daylight.short=MDT
+America/Dawson_Creek.generic.short=MT
+America/Dawson_Creek.standard.short=MST
+America/Dawson.daylight.short=PDT
+America/Dawson.generic.short=PT
+America/Dawson.standard.short=PST
+America/Denver.daylight.short=MDT
+America/Denver.generic.short=MT
+America/Denver.standard.short=MST
+America/Detroit.daylight.short=EDT
+America/Detroit.generic.short=ET
+America/Detroit.standard.short=EST
+America/Dominica.daylight.short=ADT
+America/Dominica.generic.short=AT
+America/Dominica.standard.short=AST
+America/Edmonton.daylight.short=MDT
+America/Edmonton.generic.short=MT
+America/Edmonton.standard.short=MST
+America/Eirunepe.daylight.short=ACST
+America/Eirunepe.generic.short=ACT
+America/Eirunepe.standard.short=ACT
+America/El_Salvador.daylight.short=CDT
+America/El_Salvador.generic.short=CT
+America/El_Salvador.standard.short=CST
+America/Ensenada.daylight.short=PDT
+America/Ensenada.generic.short=PT
+America/Ensenada.standard.short=PST
+America/Fortaleza.daylight.short=BRST
+America/Fortaleza.generic.short=BRT
+America/Fortaleza.standard.short=BRT
+America/Fort_Wayne.daylight.short=EDT
+America/Fort_Wayne.generic.short=ET
+America/Fort_Wayne.standard.short=EST
+America/Glace_Bay.daylight.short=ADT
+America/Glace_Bay.generic.short=AT
+America/Glace_Bay.standard.short=AST
+America/Godthab.daylight.short=WGST
+America/Godthab.generic.short=WGT
+America/Godthab.standard.short=WGT
+America/Goose_Bay.daylight.short=ADT
+America/Goose_Bay.generic.short=AT
+America/Goose_Bay.standard.short=AST
+America/Grand_Turk.daylight.short=EDT
+America/Grand_Turk.generic.short=ET
+America/Grand_Turk.standard.short=EST
+America/Grenada.daylight.short=ADT
+America/Grenada.generic.short=AT
+America/Grenada.standard.short=AST
+America/Guadeloupe.daylight.short=ADT
+America/Guadeloupe.generic.short=AT
+America/Guadeloupe.standard.short=AST
+America/Guatemala.daylight.short=CDT
+America/Guatemala.generic.short=CT
+America/Guatemala.standard.short=CST
+America/Guayaquil.daylight.short=ECST
+America/Guayaquil.generic.short=ECT
+America/Guayaquil.standard.short=ECT
+America/Guyana.daylight.short=GYST
+America/Guyana.generic.short=GYT
+America/Guyana.standard.short=GYT
+America/Halifax.daylight.short=ADT
+America/Halifax.generic.short=AT
+America/Halifax.standard.short=AST
+America/Havana.daylight.short=CDT
+America/Havana.generic.short=CT
+America/Havana.standard.short=CST
+America/Hermosillo.daylight.short=MDT
+America/Hermosillo.generic.short=MT
+America/Hermosillo.standard.short=MST
+America/Indiana/Indianapolis.daylight.short=EDT
+America/Indiana/Indianapolis.generic.short=ET
+America/Indiana/Indianapolis.standard.short=EST
+America/Indiana/Knox.daylight.short=CDT
+America/Indiana/Knox.generic.short=CT
+America/Indiana/Knox.standard.short=CST
+America/Indiana/Marengo.daylight.short=EDT
+America/Indiana/Marengo.generic.short=ET
+America/Indiana/Marengo.standard.short=EST
+America/Indiana/Petersburg.daylight.short=EDT
+America/Indiana/Petersburg.generic.short=ET
+America/Indiana/Petersburg.standard.short=EST
+America/Indianapolis.daylight.short=EDT
+America/Indianapolis.generic.short=ET
+America/Indianapolis.standard.short=EST
+America/Indiana/Tell_City.daylight.short=CDT
+America/Indiana/Tell_City.generic.short=CT
+America/Indiana/Tell_City.standard.short=CST
+America/Indiana/Vevay.daylight.short=EDT
+America/Indiana/Vevay.generic.short=ET
+America/Indiana/Vevay.standard.short=EST
+America/Indiana/Vincennes.daylight.short=EDT
+America/Indiana/Vincennes.generic.short=ET
+America/Indiana/Vincennes.standard.short=EST
+America/Indiana/Winamac.daylight.short=EDT
+America/Indiana/Winamac.generic.short=ET
+America/Indiana/Winamac.standard.short=EST
+America/Inuvik.daylight.short=MDT
+America/Inuvik.generic.short=MT
+America/Inuvik.standard.short=MST
+America/Iqaluit.daylight.short=EDT
+America/Iqaluit.generic.short=ET
+America/Iqaluit.standard.short=EST
+America/Jamaica.daylight.short=EDT
+America/Jamaica.generic.short=ET
+America/Jamaica.standard.short=EST
+America/Jujuy.daylight.short=ARST
+America/Jujuy.generic.short=ART
+America/Jujuy.standard.short=ART
+America/Juneau.daylight.short=AKDT
+America/Juneau.generic.short=AKT
+America/Juneau.standard.short=AKST
+America/Kentucky/Louisville.daylight.short=EDT
+America/Kentucky/Louisville.generic.short=ET
+America/Kentucky/Louisville.standard.short=EST
+America/Kentucky/Monticello.daylight.short=EDT
+America/Kentucky/Monticello.generic.short=ET
+America/Kentucky/Monticello.standard.short=EST
+America/Knox_IN.daylight.short=CDT
+America/Knox_IN.generic.short=CT
+America/Knox_IN.standard.short=CST
+America/Kralendijk.daylight.short=ADT
+America/Kralendijk.generic.short=AT
+America/Kralendijk.standard.short=AST
+America/La_Paz.daylight.short=BOST
+America/La_Paz.generic.short=BOT
+America/La_Paz.standard.short=BOT
+America/Lima.daylight.short=PEST
+America/Lima.generic.short=PET
+America/Lima.standard.short=PET
+America/Los_Angeles.daylight.short=PDT
+America/Los_Angeles.generic.short=PT
+America/Los_Angeles.standard.short=PST
+America/Louisville.daylight.short=EDT
+America/Louisville.generic.short=ET
+America/Louisville.standard.short=EST
+America/Lower_Princes.daylight.short=ADT
+America/Lower_Princes.generic.short=AT
+America/Lower_Princes.standard.short=AST
+America/Maceio.daylight.short=BRST
+America/Maceio.generic.short=BRT
+America/Maceio.standard.short=BRT
+America/Managua.daylight.short=CDT
+America/Managua.generic.short=CT
+America/Managua.standard.short=CST
+America/Manaus.daylight.short=AMST
+America/Manaus.generic.short=AMT
+America/Manaus.standard.short=AMT
+America/Marigot.daylight.short=ADT
+America/Marigot.generic.short=AT
+America/Marigot.standard.short=AST
+America/Martinique.daylight.short=ADT
+America/Martinique.generic.short=AT
+America/Martinique.standard.short=AST
+America/Matamoros.daylight.short=CDT
+America/Matamoros.generic.short=CT
+America/Matamoros.standard.short=CST
+America/Mazatlan.daylight.short=MDT
+America/Mazatlan.generic.short=MT
+America/Mazatlan.standard.short=MST
+America/Mendoza.daylight.short=ARST
+America/Mendoza.generic.short=ART
+America/Mendoza.standard.short=ART
+America/Menominee.daylight.short=CDT
+America/Menominee.generic.short=CT
+America/Menominee.standard.short=CST
+America/Merida.daylight.short=CDT
+America/Merida.generic.short=CT
+America/Merida.standard.short=CST
+America/Metlakatla.daylight.short=MeDT
+America/Metlakatla.generic.short=MeT
+America/Metlakatla.standard.short=MeST
+America/Mexico_City.daylight.short=CDT
+America/Mexico_City.generic.short=CT
+America/Mexico_City.standard.short=CST
+America/Miquelon.daylight.short=PMDT
+America/Miquelon.generic.short=PMT
+America/Miquelon.standard.short=PMST
+America/Moncton.daylight.short=ADT
+America/Moncton.generic.short=AT
+America/Moncton.standard.short=AST
+America/Monterrey.daylight.short=CDT
+America/Monterrey.generic.short=CT
+America/Monterrey.standard.short=CST
+America/Montevideo.daylight.short=UYST
+America/Montevideo.generic.short=UYT
+America/Montevideo.standard.short=UYT
+America/Montreal.daylight.short=EDT
+America/Montreal.generic.short=ET
+America/Montreal.standard.short=EST
+America/Montserrat.daylight.short=ADT
+America/Montserrat.generic.short=AT
+America/Montserrat.standard.short=AST
+America/Nassau.daylight.short=EDT
+America/Nassau.generic.short=ET
+America/Nassau.standard.short=EST
+America/New_York.daylight.short=EDT
+America/New_York.generic.short=ET
+America/New_York.standard.short=EST
+America/Nipigon.daylight.short=EDT
+America/Nipigon.generic.short=ET
+America/Nipigon.standard.short=EST
+America/Nome.daylight.short=AKDT
+America/Nome.generic.short=AKT
+America/Nome.standard.short=AKST
+America/Noronha.daylight.short=FNST
+America/Noronha.generic.short=FNT
+America/Noronha.standard.short=FNT
+America/North_Dakota/Beulah.daylight.short=CDT
+America/North_Dakota/Beulah.generic.short=CT
+America/North_Dakota/Beulah.standard.short=CST
+America/North_Dakota/Center.daylight.short=CDT
+America/North_Dakota/Center.generic.short=CT
+America/North_Dakota/Center.standard.short=CST
+America/North_Dakota/New_Salem.daylight.short=CDT
+America/North_Dakota/New_Salem.generic.short=CT
+America/North_Dakota/New_Salem.standard.short=CST
+America/Ojinaga.daylight.short=MDT
+America/Ojinaga.generic.short=MT
+America/Ojinaga.standard.short=MST
+America/Panama.daylight.short=EDT
+America/Panama.generic.short=ET
+America/Panama.standard.short=EST
+America/Pangnirtung.daylight.short=EDT
+America/Pangnirtung.generic.short=ET
+America/Pangnirtung.standard.short=EST
+America/Paramaribo.daylight.short=SRST
+America/Paramaribo.generic.short=SRT
+America/Paramaribo.standard.short=SRT
+America/Phoenix.daylight.short=MDT
+America/Phoenix.generic.short=MT
+America/Phoenix.standard.short=MST
+America/Port-au-Prince.daylight.short=EDT
+America/Port-au-Prince.generic.short=ET
+America/Port-au-Prince.standard.short=EST
+America/Porto_Acre.daylight.short=ACST
+America/Porto_Acre.generic.short=ACT
+America/Porto_Acre.standard.short=ACT
+America/Port_of_Spain.daylight.short=ADT
+America/Port_of_Spain.generic.short=AT
+America/Port_of_Spain.standard.short=AST
+America/Porto_Velho.daylight.short=AMST
+America/Porto_Velho.generic.short=AMT
+America/Porto_Velho.standard.short=AMT
+America/Puerto_Rico.daylight.short=ADT
+America/Puerto_Rico.generic.short=AT
+America/Puerto_Rico.standard.short=AST
+America/Rainy_River.daylight.short=CDT
+America/Rainy_River.generic.short=CT
+America/Rainy_River.standard.short=CST
+America/Rankin_Inlet.daylight.short=CDT
+America/Rankin_Inlet.generic.short=CT
+America/Rankin_Inlet.standard.short=CST
+America/Recife.daylight.short=BRST
+America/Recife.generic.short=BRT
+America/Recife.standard.short=BRT
+America/Regina.daylight.short=CDT
+America/Regina.generic.short=CT
+America/Regina.standard.short=CST
+America/Resolute.daylight.short=CDT
+America/Resolute.generic.short=CT
+America/Resolute.standard.short=CST
+America/Rio_Branco.daylight.short=ACST
+America/Rio_Branco.generic.short=ACT
+America/Rio_Branco.standard.short=ACT
+America/Rosario.daylight.short=ARST
+America/Rosario.generic.short=ART
+America/Rosario.standard.short=ART
+America/Santa_Isabel.daylight.short=PDT
+America/Santa_Isabel.generic.short=PT
+America/Santa_Isabel.standard.short=PST
+America/Santarem.daylight.short=BRST
+America/Santarem.generic.short=BRT
+America/Santarem.standard.short=BRT
+America/Santiago.daylight.short=CLST
+America/Santiago.generic.short=CLT
+America/Santiago.standard.short=CLT
+America/Santo_Domingo.daylight.short=ADT
+America/Santo_Domingo.generic.short=AT
+America/Santo_Domingo.standard.short=AST
+America/Sao_Paulo.daylight.short=BRST
+America/Sao_Paulo.generic.short=BRT
+America/Sao_Paulo.standard.short=BRT
+America/Scoresbysund.daylight.short=EGST
+America/Scoresbysund.generic.short=EGT
+America/Scoresbysund.standard.short=EGT
+America/Shiprock.daylight.short=MDT
+America/Shiprock.generic.short=MT
+America/Shiprock.standard.short=MST
+America/Sitka.daylight.short=AKDT
+America/Sitka.generic.short=AKT
+America/Sitka.standard.short=AKST
+America/St_Barthelemy.daylight.short=ADT
+America/St_Barthelemy.generic.short=AT
+America/St_Barthelemy.standard.short=AST
+America/St_Johns.daylight.short=NDT
+America/St_Johns.generic.short=NT
+America/St_Johns.standard.short=NST
+America/St_Kitts.daylight.short=ADT
+America/St_Kitts.generic.short=AT
+America/St_Kitts.standard.short=AST
+America/St_Lucia.daylight.short=ADT
+America/St_Lucia.generic.short=AT
+America/St_Lucia.standard.short=AST
+America/St_Thomas.daylight.short=ADT
+America/St_Thomas.generic.short=AT
+America/St_Thomas.standard.short=AST
+America/St_Vincent.daylight.short=ADT
+America/St_Vincent.generic.short=AT
+America/St_Vincent.standard.short=AST
+America/Swift_Current.daylight.short=CDT
+America/Swift_Current.generic.short=CT
+America/Swift_Current.standard.short=CST
+America/Tegucigalpa.daylight.short=CDT
+America/Tegucigalpa.generic.short=CT
+America/Tegucigalpa.standard.short=CST
+America/Thule.daylight.short=ADT
+America/Thule.generic.short=AT
+America/Thule.standard.short=AST
+America/Thunder_Bay.daylight.short=EDT
+America/Thunder_Bay.generic.short=ET
+America/Thunder_Bay.standard.short=EST
+America/Tijuana.daylight.short=PDT
+America/Tijuana.generic.short=PT
+America/Tijuana.standard.short=PST
+America/Toronto.daylight.short=EDT
+America/Toronto.generic.short=ET
+America/Toronto.standard.short=EST
+America/Tortola.daylight.short=ADT
+America/Tortola.generic.short=AT
+America/Tortola.standard.short=AST
+America/Vancouver.daylight.short=PDT
+America/Vancouver.generic.short=PT
+America/Vancouver.standard.short=PST
+America/Virgin.daylight.short=ADT
+America/Virgin.generic.short=AT
+America/Virgin.standard.short=AST
+America/Whitehorse.daylight.short=PDT
+America/Whitehorse.generic.short=PT
+America/Whitehorse.standard.short=PST
+America/Winnipeg.daylight.short=CDT
+America/Winnipeg.generic.short=CT
+America/Winnipeg.standard.short=CST
+America/Yakutat.daylight.short=AKDT
+America/Yakutat.generic.short=AKT
+America/Yakutat.standard.short=AKST
+America/Yellowknife.daylight.short=MDT
+America/Yellowknife.generic.short=MT
+America/Yellowknife.standard.short=MST
+Antarctica/Casey.daylight.short=WST
+Antarctica/Casey.generic.short=WT
+Antarctica/Casey.standard.short=WST
+Antarctica/Davis.daylight.short=DAVST
+Antarctica/Davis.generic.short=DAVT
+Antarctica/Davis.standard.short=DAVT
+Antarctica/DumontDUrville.daylight.short=DDUST
+Antarctica/DumontDUrville.generic.short=DDUT
+Antarctica/DumontDUrville.standard.short=DDUT
+Antarctica/Macquarie.daylight.short=MIST
+Antarctica/Macquarie.generic.short=MIST
+Antarctica/Macquarie.standard.short=MIST
+Antarctica/Mawson.daylight.short=MAWST
+Antarctica/Mawson.generic.short=MAWT
+Antarctica/Mawson.standard.short=MAWT
+Antarctica/McMurdo.daylight.short=NZDT
+Antarctica/McMurdo.generic.short=NZT
+Antarctica/McMurdo.standard.short=NZST
+Antarctica/Palmer.daylight.short=CLST
+Antarctica/Palmer.generic.short=CLT
+Antarctica/Palmer.standard.short=CLT
+Antarctica/Rothera.daylight.short=ROTST
+Antarctica/Rothera.generic.short=ROTT
+Antarctica/Rothera.standard.short=ROTT
+Antarctica/South_Pole.daylight.short=NZDT
+Antarctica/South_Pole.generic.short=NZT
+Antarctica/South_Pole.standard.short=NZST
+Antarctica/Syowa.daylight.short=SYOST
+Antarctica/Syowa.generic.short=SYOT
+Antarctica/Syowa.standard.short=SYOT
+Antarctica/Vostok.daylight.short=VOSST
+Antarctica/Vostok.generic.short=VOST
+Antarctica/Vostok.standard.short=VOST
+Arctic/Longyearbyen.daylight.short=CEST
+Arctic/Longyearbyen.generic.short=CET
+Arctic/Longyearbyen.standard.short=CET
+ART.daylight.short=EEST
+ART.generic.short=EET
+ART.standard.short=EET
+Asia/Aden.daylight.short=ADT
+Asia/Aden.generic.short=AT
+Asia/Aden.standard.short=AST
+Asia/Almaty.daylight.short=ALMST
+Asia/Almaty.generic.short=ALMT
+Asia/Almaty.standard.short=ALMT
+Asia/Amman.daylight.short=ADT
+Asia/Amman.generic.short=AT
+Asia/Amman.standard.short=AST
+Asia/Anadyr.daylight.short=ANAST
+Asia/Anadyr.generic.short=ANAT
+Asia/Anadyr.standard.short=ANAT
+Asia/Aqtau.daylight.short=AQTST
+Asia/Aqtau.generic.short=AQTT
+Asia/Aqtau.standard.short=AQTT
+Asia/Aqtobe.daylight.short=AQTST
+Asia/Aqtobe.generic.short=AQTT
+Asia/Aqtobe.standard.short=AQTT
+Asia/Ashgabat.daylight.short=TMST
+Asia/Ashgabat.generic.short=TMT
+Asia/Ashgabat.standard.short=TMT
+Asia/Ashkhabad.daylight.short=TMST
+Asia/Ashkhabad.generic.short=TMT
+Asia/Ashkhabad.standard.short=TMT
+Asia/Baghdad.daylight.short=ADT
+Asia/Baghdad.generic.short=AT
+Asia/Baghdad.standard.short=AST
+Asia/Bahrain.daylight.short=ADT
+Asia/Bahrain.generic.short=AT
+Asia/Bahrain.standard.short=AST
+Asia/Baku.daylight.short=AZST
+Asia/Baku.generic.short=AZT
+Asia/Baku.standard.short=AZT
+Asia/Bangkok.daylight.short=ICST
+Asia/Bangkok.generic.short=ICT
+Asia/Bangkok.standard.short=ICT
+Asia/Beirut.daylight.short=EEST
+Asia/Beirut.generic.short=EET
+Asia/Beirut.standard.short=EET
+Asia/Bishkek.daylight.short=KGST
+Asia/Bishkek.generic.short=KGT
+Asia/Bishkek.standard.short=KGT
+Asia/Brunei.daylight.short=BNST
+Asia/Brunei.generic.short=BNT
+Asia/Brunei.standard.short=BNT
+Asia/Calcutta.daylight.short=IDT
+Asia/Calcutta.generic.short=IT
+Asia/Calcutta.standard.short=IST
+Asia/Choibalsan.daylight.short=CHOST
+Asia/Choibalsan.generic.short=CHOT
+Asia/Choibalsan.standard.short=CHOT
+Asia/Chongqing.daylight.short=CDT
+Asia/Chongqing.generic.short=CT
+Asia/Chongqing.standard.short=CST
+Asia/Chungking.daylight.short=CDT
+Asia/Chungking.generic.short=CT
+Asia/Chungking.standard.short=CST
+Asia/Colombo.daylight.short=IDT
+Asia/Colombo.generic.short=IT
+Asia/Colombo.standard.short=IST
+Asia/Dacca.daylight.short=BDST
+Asia/Dacca.generic.short=BDT
+Asia/Dacca.standard.short=BDT
+Asia/Damascus.daylight.short=EEST
+Asia/Damascus.generic.short=EET
+Asia/Damascus.standard.short=EET
+Asia/Dhaka.daylight.short=BDST
+Asia/Dhaka.generic.short=BDT
+Asia/Dhaka.standard.short=BDT
+Asia/Dili.daylight.short=TLST
+Asia/Dili.generic.short=TLT
+Asia/Dili.standard.short=TLT
+Asia/Dubai.daylight.short=GDT
+Asia/Dubai.generic.short=GT
+Asia/Dubai.standard.short=GST
+Asia/Dushanbe.daylight.short=TJST
+Asia/Dushanbe.generic.short=TJT
+Asia/Dushanbe.standard.short=TJT
+Asia/Gaza.daylight.short=EEST
+Asia/Gaza.generic.short=EET
+Asia/Gaza.standard.short=EET
+Asia/Harbin.daylight.short=CDT
+Asia/Harbin.generic.short=CT
+Asia/Harbin.standard.short=CST
+Asia/Hebron.daylight.short=EEST
+Asia/Hebron.generic.short=EET
+Asia/Hebron.standard.short=EET
+Asia/Ho_Chi_Minh.daylight.short=ICST
+Asia/Ho_Chi_Minh.generic.short=ICT
+Asia/Ho_Chi_Minh.standard.short=ICT
+Asia/Hong_Kong.daylight.short=HKST
+Asia/Hong_Kong.generic.short=HKT
+Asia/Hong_Kong.standard.short=HKT
+Asia/Hovd.daylight.short=HOVST
+Asia/Hovd.generic.short=HOVT
+Asia/Hovd.standard.short=HOVT
+Asia/Irkutsk.daylight.short=IRKST
+Asia/Irkutsk.generic.short=IRKT
+Asia/Irkutsk.standard.short=IRKT
+Asia/Istanbul.daylight.short=EEST
+Asia/Istanbul.generic.short=EET
+Asia/Istanbul.standard.short=EET
+Asia/Jakarta.daylight.short=WIST
+Asia/Jakarta.generic.short=WIB
+Asia/Jakarta.standard.short=WIB
+Asia/Jayapura.daylight.short=EIST
+Asia/Jayapura.generic.short=WIT
+Asia/Jayapura.standard.short=WIT
+Asia/Jerusalem.daylight.short=IDT
+Asia/Jerusalem.generic.short=IT
+Asia/Jerusalem.standard.short=IST
+Asia/Kabul.daylight.short=AFST
+Asia/Kabul.generic.short=AFT
+Asia/Kabul.standard.short=AFT
+Asia/Kamchatka.daylight.short=PETST
+Asia/Kamchatka.generic.short=PETT
+Asia/Kamchatka.standard.short=PETT
+Asia/Karachi.daylight.short=PKST
+Asia/Karachi.generic.short=PKT
+Asia/Karachi.standard.short=PKT
+Asia/Kashgar.daylight.short=CDT
+Asia/Kashgar.generic.short=CT
+Asia/Kashgar.standard.short=CST
+Asia/Kathmandu.daylight.short=NPST
+Asia/Kathmandu.generic.short=NPT
+Asia/Kathmandu.standard.short=NPT
+Asia/Katmandu.daylight.short=NPST
+Asia/Katmandu.generic.short=NPT
+Asia/Katmandu.standard.short=NPT
+Asia/Khandyga.daylight.short=YAKST
+Asia/Khandyga.generic.short=YAKT
+Asia/Khandyga.standard.short=YAKT
+Asia/Kolkata.daylight.short=IDT
+Asia/Kolkata.generic.short=IT
+Asia/Kolkata.standard.short=IST
+Asia/Krasnoyarsk.daylight.short=KRAST
+Asia/Krasnoyarsk.generic.short=KRAT
+Asia/Krasnoyarsk.standard.short=KRAT
+Asia/Kuala_Lumpur.daylight.short=MYST
+Asia/Kuala_Lumpur.generic.short=MYT
+Asia/Kuala_Lumpur.standard.short=MYT
+Asia/Kuching.daylight.short=MYST
+Asia/Kuching.generic.short=MYT
+Asia/Kuching.standard.short=MYT
+Asia/Kuwait.daylight.short=ADT
+Asia/Kuwait.generic.short=AT
+Asia/Kuwait.standard.short=AST
+Asia/Macao.daylight.short=CDT
+Asia/Macao.generic.short=CT
+Asia/Macao.standard.short=CST
+Asia/Macau.daylight.short=CDT
+Asia/Macau.generic.short=CT
+Asia/Macau.standard.short=CST
+Asia/Magadan.daylight.short=MAGST
+Asia/Magadan.generic.short=MAGT
+Asia/Magadan.standard.short=MAGT
+Asia/Makassar.daylight.short=CIST
+Asia/Makassar.generic.short=WITA
+Asia/Makassar.standard.short=WITA
+Asia/Manila.daylight.short=PHST
+Asia/Manila.generic.short=PHT
+Asia/Manila.standard.short=PHT
+Asia/Muscat.daylight.short=GDT
+Asia/Muscat.generic.short=GT
+Asia/Muscat.standard.short=GST
+Asia/Nicosia.daylight.short=EEST
+Asia/Nicosia.generic.short=EET
+Asia/Nicosia.standard.short=EET
+Asia/Novokuznetsk.daylight.short=NOVST
+Asia/Novokuznetsk.generic.short=NOVT
+Asia/Novokuznetsk.standard.short=NOVT
+Asia/Novosibirsk.daylight.short=NOVST
+Asia/Novosibirsk.generic.short=NOVT
+Asia/Novosibirsk.standard.short=NOVT
+Asia/Omsk.daylight.short=OMSST
+Asia/Omsk.generic.short=OMST
+Asia/Omsk.standard.short=OMST
+Asia/Oral.daylight.short=ORAST
+Asia/Oral.generic.short=ORAT
+Asia/Oral.standard.short=ORAT
+Asia/Phnom_Penh.daylight.short=ICST
+Asia/Phnom_Penh.generic.short=ICT
+Asia/Phnom_Penh.standard.short=ICT
+Asia/Pontianak.daylight.short=WIST
+Asia/Pontianak.generic.short=WIB
+Asia/Pontianak.standard.short=WIB
+Asia/Pyongyang.daylight.short=KDT
+Asia/Pyongyang.generic.short=KT
+Asia/Pyongyang.standard.short=KST
+Asia/Qatar.daylight.short=ADT
+Asia/Qatar.generic.short=AT
+Asia/Qatar.standard.short=AST
+Asia/Qyzylorda.daylight.short=QYZST
+Asia/Qyzylorda.generic.short=QYZT
+Asia/Qyzylorda.standard.short=QYZT
+Asia/Rangoon.daylight.short=MMST
+Asia/Rangoon.generic.short=MMT
+Asia/Rangoon.standard.short=MMT
+Asia/Saigon.daylight.short=ICST
+Asia/Saigon.generic.short=ICT
+Asia/Saigon.standard.short=ICT
+Asia/Sakhalin.daylight.short=SAKST
+Asia/Sakhalin.generic.short=SAKT
+Asia/Sakhalin.standard.short=SAKT
+Asia/Samarkand.daylight.short=UZST
+Asia/Samarkand.generic.short=UZT
+Asia/Samarkand.standard.short=UZT
+Asia/Seoul.daylight.short=KDT
+Asia/Seoul.generic.short=KT
+Asia/Seoul.standard.short=KST
+Asia/Shanghai.daylight.short=CDT
+Asia/Shanghai.generic.short=CT
+Asia/Shanghai.standard.short=CST
+Asia/Singapore.daylight.short=SGST
+Asia/Singapore.generic.short=SGT
+Asia/Singapore.standard.short=SGT
+Asia/Taipei.daylight.short=CDT
+Asia/Taipei.generic.short=CT
+Asia/Taipei.standard.short=CST
+Asia/Tashkent.daylight.short=UZST
+Asia/Tashkent.generic.short=UZT
+Asia/Tashkent.standard.short=UZT
+Asia/Tbilisi.daylight.short=GEST
+Asia/Tbilisi.generic.short=GET
+Asia/Tbilisi.standard.short=GET
+Asia/Tehran.daylight.short=IRDT
+Asia/Tehran.generic.short=IRT
+Asia/Tehran.standard.short=IRST
+Asia/Tel_Aviv.daylight.short=IDT
+Asia/Tel_Aviv.generic.short=IT
+Asia/Tel_Aviv.standard.short=IST
+Asia/Thimbu.daylight.short=BTST
+Asia/Thimbu.generic.short=BTT
+Asia/Thimbu.standard.short=BTT
+Asia/Thimphu.daylight.short=BTST
+Asia/Thimphu.generic.short=BTT
+Asia/Thimphu.standard.short=BTT
+Asia/Tokyo.daylight.short=JDT
+Asia/Tokyo.generic.short=JT
+Asia/Tokyo.standard.short=JST
+Asia/Ujung_Pandang.daylight.short=CIST
+Asia/Ujung_Pandang.generic.short=WITA
+Asia/Ujung_Pandang.standard.short=WITA
+Asia/Ulaanbaatar.daylight.short=ULAST
+Asia/Ulaanbaatar.generic.short=ULAT
+Asia/Ulaanbaatar.standard.short=ULAT
+Asia/Ulan_Bator.daylight.short=ULAST
+Asia/Ulan_Bator.generic.short=ULAT
+Asia/Ulan_Bator.standard.short=ULAT
+Asia/Urumqi.daylight.short=CDT
+Asia/Urumqi.generic.short=CT
+Asia/Urumqi.standard.short=CST
+Asia/Ust-Nera.daylight.short=VLAST
+Asia/Ust-Nera.generic.short=VLAT
+Asia/Ust-Nera.standard.short=VLAT
+Asia/Vientiane.daylight.short=ICST
+Asia/Vientiane.generic.short=ICT
+Asia/Vientiane.standard.short=ICT
+Asia/Vladivostok.daylight.short=VLAST
+Asia/Vladivostok.generic.short=VLAT
+Asia/Vladivostok.standard.short=VLAT
+Asia/Yakutsk.daylight.short=YAKST
+Asia/Yakutsk.generic.short=YAKT
+Asia/Yakutsk.standard.short=YAKT
+Asia/Yekaterinburg.daylight.short=YEKST
+Asia/Yekaterinburg.generic.short=YEKT
+Asia/Yekaterinburg.standard.short=YEKT
+Asia/Yerevan.daylight.short=AMST
+Asia/Yerevan.generic.short=AMT
+Asia/Yerevan.standard.short=AMT
+AST.daylight.short=AKDT
+AST.generic.short=AKT
+AST.standard.short=AKST
+Atlantic/Azores.daylight.short=AZOST
+Atlantic/Azores.generic.short=AZOT
+Atlantic/Azores.standard.short=AZOT
+Atlantic/Bermuda.daylight.short=ADT
+Atlantic/Bermuda.generic.short=AT
+Atlantic/Bermuda.standard.short=AST
+Atlantic/Canary.daylight.short=WEST
+Atlantic/Canary.generic.short=WET
+Atlantic/Canary.standard.short=WET
+Atlantic/Cape_Verde.daylight.short=CVST
+Atlantic/Cape_Verde.generic.short=CVT
+Atlantic/Cape_Verde.standard.short=CVT
+Atlantic/Faeroe.daylight.short=WEST
+Atlantic/Faeroe.generic.short=WET
+Atlantic/Faeroe.standard.short=WET
+Atlantic/Faroe.daylight.short=WEST
+Atlantic/Faroe.generic.short=WET
+Atlantic/Faroe.standard.short=WET
+Atlantic/Jan_Mayen.daylight.short=CEST
+Atlantic/Jan_Mayen.generic.short=CET
+Atlantic/Jan_Mayen.standard.short=CET
+Atlantic/Madeira.daylight.short=WEST
+Atlantic/Madeira.generic.short=WET
+Atlantic/Madeira.standard.short=WET
+Atlantic/Reykjavik.daylight.short=GMT
+Atlantic/Reykjavik.generic.short=GMT
+Atlantic/Reykjavik.standard.short=GMT
+Atlantic/South_Georgia.daylight.short=GDT
+Atlantic/South_Georgia.generic.short=GT
+Atlantic/South_Georgia.standard.short=GST
+Atlantic/Stanley.daylight.short=FKST
+Atlantic/Stanley.generic.short=FKT
+Atlantic/Stanley.standard.short=FKT
+Atlantic/St_Helena.daylight.short=GMT
+Atlantic/St_Helena.generic.short=GMT
+Atlantic/St_Helena.standard.short=GMT
+Australia/ACT.daylight.short=EST
+Australia/ACT.generic.short=ET
+Australia/ACT.standard.short=EST
+Australia/Adelaide.daylight.short=CST
+Australia/Adelaide.generic.short=CT
+Australia/Adelaide.standard.short=CST
+Australia/Brisbane.daylight.short=EST
+Australia/Brisbane.generic.short=ET
+Australia/Brisbane.standard.short=EST
+Australia/Broken_Hill.daylight.short=CST
+Australia/Broken_Hill.generic.short=CT
+Australia/Broken_Hill.standard.short=CST
+Australia/Canberra.daylight.short=EST
+Australia/Canberra.generic.short=ET
+Australia/Canberra.standard.short=EST
+Australia/Currie.daylight.short=EST
+Australia/Currie.generic.short=ET
+Australia/Currie.standard.short=EST
+Australia/Darwin.daylight.short=CST
+Australia/Darwin.generic.short=CT
+Australia/Darwin.standard.short=CST
+Australia/Eucla.daylight.short=CWST
+Australia/Eucla.generic.short=CWT
+Australia/Eucla.standard.short=CWST
+Australia/Hobart.daylight.short=EST
+Australia/Hobart.generic.short=ET
+Australia/Hobart.standard.short=EST
+Australia/LHI.daylight.short=LHST
+Australia/LHI.generic.short=LHT
+Australia/LHI.standard.short=LHST
+Australia/Lindeman.daylight.short=EST
+Australia/Lindeman.generic.short=ET
+Australia/Lindeman.standard.short=EST
+Australia/Lord_Howe.daylight.short=LHST
+Australia/Lord_Howe.generic.short=LHT
+Australia/Lord_Howe.standard.short=LHST
+Australia/Melbourne.daylight.short=EST
+Australia/Melbourne.generic.short=ET
+Australia/Melbourne.standard.short=EST
+Australia/North.daylight.short=CST
+Australia/North.generic.short=CT
+Australia/North.standard.short=CST
+Australia/NSW.daylight.short=EST
+Australia/NSW.generic.short=ET
+Australia/NSW.standard.short=EST
+Australia/Perth.daylight.short=WST
+Australia/Perth.generic.short=WT
+Australia/Perth.standard.short=WST
+Australia/Queensland.daylight.short=EST
+Australia/Queensland.generic.short=ET
+Australia/Queensland.standard.short=EST
+Australia/South.daylight.short=CST
+Australia/South.generic.short=CT
+Australia/South.standard.short=CST
+Australia/Sydney.daylight.short=EST
+Australia/Sydney.generic.short=ET
+Australia/Sydney.standard.short=EST
+Australia/Tasmania.daylight.short=EST
+Australia/Tasmania.generic.short=ET
+Australia/Tasmania.standard.short=EST
+Australia/Victoria.daylight.short=EST
+Australia/Victoria.generic.short=ET
+Australia/Victoria.standard.short=EST
+Australia/West.daylight.short=WST
+Australia/West.generic.short=WT
+Australia/West.standard.short=WST
+Australia/Yancowinna.daylight.short=CST
+Australia/Yancowinna.generic.short=CT
+Australia/Yancowinna.standard.short=CST
+BET.daylight.short=BRST
+BET.generic.short=BRT
+BET.standard.short=BRT
+Brazil/Acre.daylight.short=ACST
+Brazil/Acre.generic.short=ACT
+Brazil/Acre.standard.short=ACT
+Brazil/DeNoronha.daylight.short=FNST
+Brazil/DeNoronha.generic.short=FNT
+Brazil/DeNoronha.standard.short=FNT
+Brazil/East.daylight.short=BRST
+Brazil/East.generic.short=BRT
+Brazil/East.standard.short=BRT
+Brazil/West.daylight.short=AMST
+Brazil/West.generic.short=AMT
+Brazil/West.standard.short=AMT
+BST.daylight.short=BDST
+BST.generic.short=BDT
+BST.standard.short=BDT
+Canada/Atlantic.daylight.short=ADT
+Canada/Atlantic.generic.short=AT
+Canada/Atlantic.standard.short=AST
+Canada/Central.daylight.short=CDT
+Canada/Central.generic.short=CT
+Canada/Central.standard.short=CST
+Canada/Eastern.daylight.short=EDT
+Canada/Eastern.generic.short=ET
+Canada/Eastern.standard.short=EST
+Canada/East-Saskatchewan.daylight.short=CDT
+Canada/East-Saskatchewan.generic.short=CT
+Canada/East-Saskatchewan.standard.short=CST
+Canada/Mountain.daylight.short=MDT
+Canada/Mountain.generic.short=MT
+Canada/Mountain.standard.short=MST
+Canada/Newfoundland.daylight.short=NDT
+Canada/Newfoundland.generic.short=NT
+Canada/Newfoundland.standard.short=NST
+Canada/Pacific.daylight.short=PDT
+Canada/Pacific.generic.short=PT
+Canada/Pacific.standard.short=PST
+Canada/Saskatchewan.daylight.short=CDT
+Canada/Saskatchewan.generic.short=CT
+Canada/Saskatchewan.standard.short=CST
+Canada/Yukon.daylight.short=PDT
+Canada/Yukon.generic.short=PT
+Canada/Yukon.standard.short=PST
+CAT.daylight.short=CAST
+CAT.generic.short=CAT
+CAT.standard.short=CAT
+CET.daylight.short=CEST
+CET.generic.short=CET
+CET.standard.short=CET
+Chile/Continental.daylight.short=CLST
+Chile/Continental.generic.short=CLT
+Chile/Continental.standard.short=CLT
+Chile/EasterIsland.daylight.short=EASST
+Chile/EasterIsland.generic.short=EAST
+Chile/EasterIsland.standard.short=EAST
+CNT.daylight.short=NDT
+CNT.generic.short=NT
+CNT.standard.short=NST
+CST6CDT.daylight.short=CDT
+CST6CDT.generic.short=CT
+CST6CDT.standard.short=CST
+CST.daylight.short=CDT
+CST.generic.short=CT
+CST.standard.short=CST
+CTT.daylight.short=CDT
+CTT.generic.short=CT
+CTT.standard.short=CST
+Cuba.daylight.short=CDT
+Cuba.generic.short=CT
+Cuba.standard.short=CST
+EAT.daylight.short=EAST
+EAT.generic.short=EAT
+EAT.standard.short=EAT
+ECT.daylight.short=CEST
+ECT.generic.short=CET
+ECT.standard.short=CET
+EET.daylight.short=EEST
+EET.generic.short=EET
+EET.standard.short=EET
+Egypt.daylight.short=EEST
+Egypt.generic.short=EET
+Egypt.standard.short=EET
+Eire.daylight.short=IST
+Eire.generic.short=IT
+Eire.standard.short=GMT
+EST5EDT.daylight.short=EDT
+EST5EDT.generic.short=ET
+EST5EDT.standard.short=EST
+EST.daylight.short=EDT
+EST.generic.short=ET
+EST.standard.short=EST
+Etc/Greenwich.daylight.short=GMT
+Etc/Greenwich.generic.short=GMT
+Etc/Greenwich.standard.short=GMT
+Etc/UCT.daylight.short=UTC
+Etc/UCT.generic.short=UTC
+Etc/UCT.standard.short=UTC
+Etc/Universal.daylight.short=UTC
+Etc/Universal.generic.short=UTC
+Etc/Universal.standard.short=UTC
+Etc/UTC.daylight.short=UTC
+Etc/UTC.generic.short=UTC
+Etc/UTC.standard.short=UTC
+Etc/Zulu.daylight.short=UTC
+Etc/Zulu.generic.short=UTC
+Etc/Zulu.standard.short=UTC
+Europe/Amsterdam.daylight.short=CEST
+Europe/Amsterdam.generic.short=CET
+Europe/Amsterdam.standard.short=CET
+Europe/Andorra.daylight.short=CEST
+Europe/Andorra.generic.short=CET
+Europe/Andorra.standard.short=CET
+Europe/Athens.daylight.short=EEST
+Europe/Athens.generic.short=EET
+Europe/Athens.standard.short=EET
+Europe/Belfast.daylight.short=BST
+Europe/Belfast.generic.short=BT
+Europe/Belfast.standard.short=GMT
+Europe/Belgrade.daylight.short=CEST
+Europe/Belgrade.generic.short=CET
+Europe/Belgrade.standard.short=CET
+Europe/Berlin.daylight.short=CEST
+Europe/Berlin.generic.short=CET
+Europe/Berlin.standard.short=CET
+Europe/Bratislava.daylight.short=CEST
+Europe/Bratislava.generic.short=CET
+Europe/Bratislava.standard.short=CET
+Europe/Brussels.daylight.short=CEST
+Europe/Brussels.generic.short=CET
+Europe/Brussels.standard.short=CET
+Europe/Bucharest.daylight.short=EEST
+Europe/Bucharest.generic.short=EET
+Europe/Bucharest.standard.short=EET
+Europe/Budapest.daylight.short=CEST
+Europe/Budapest.generic.short=CET
+Europe/Budapest.standard.short=CET
+Europe/Busingen.daylight.short=CEST
+Europe/Busingen.generic.short=CET
+Europe/Busingen.standard.short=CET
+Europe/Chisinau.daylight.short=EEST
+Europe/Chisinau.generic.short=EET
+Europe/Chisinau.standard.short=EET
+Europe/Copenhagen.daylight.short=CEST
+Europe/Copenhagen.generic.short=CET
+Europe/Copenhagen.standard.short=CET
+Europe/Dublin.daylight.short=IST
+Europe/Dublin.generic.short=IT
+Europe/Dublin.standard.short=GMT
+Europe/Gibraltar.daylight.short=CEST
+Europe/Gibraltar.generic.short=CET
+Europe/Gibraltar.standard.short=CET
+Europe/Guernsey.daylight.short=BST
+Europe/Guernsey.generic.short=BT
+Europe/Guernsey.standard.short=GMT
+Europe/Helsinki.daylight.short=EEST
+Europe/Helsinki.generic.short=EET
+Europe/Helsinki.standard.short=EET
+Europe/Isle_of_Man.daylight.short=BST
+Europe/Isle_of_Man.generic.short=BT
+Europe/Isle_of_Man.standard.short=GMT
+Europe/Istanbul.daylight.short=EEST
+Europe/Istanbul.generic.short=EET
+Europe/Istanbul.standard.short=EET
+Europe/Jersey.daylight.short=BST
+Europe/Jersey.generic.short=BT
+Europe/Jersey.standard.short=GMT
+Europe/Kaliningrad.daylight.short=FEST
+Europe/Kaliningrad.generic.short=FET
+Europe/Kaliningrad.standard.short=FET
+Europe/Kiev.daylight.short=EEST
+Europe/Kiev.generic.short=EET
+Europe/Kiev.standard.short=EET
+Europe/Lisbon.daylight.short=WEST
+Europe/Lisbon.generic.short=WET
+Europe/Lisbon.standard.short=WET
+Europe/Ljubljana.daylight.short=CEST
+Europe/Ljubljana.generic.short=CET
+Europe/Ljubljana.standard.short=CET
+Europe/London.daylight.short=BST
+Europe/London.generic.short=BT
+Europe/London.standard.short=GMT
+Europe/Luxembourg.daylight.short=CEST
+Europe/Luxembourg.generic.short=CET
+Europe/Luxembourg.standard.short=CET
+Europe/Madrid.daylight.short=CEST
+Europe/Madrid.generic.short=CET
+Europe/Madrid.standard.short=CET
+Europe/Malta.daylight.short=CEST
+Europe/Malta.generic.short=CET
+Europe/Malta.standard.short=CET
+Europe/Mariehamn.daylight.short=EEST
+Europe/Mariehamn.generic.short=EET
+Europe/Mariehamn.standard.short=EET
+Europe/Minsk.daylight.short=FEST
+Europe/Minsk.generic.short=FET
+Europe/Minsk.standard.short=FET
+Europe/Monaco.daylight.short=CEST
+Europe/Monaco.generic.short=CET
+Europe/Monaco.standard.short=CET
+Europe/Moscow.daylight.short=MSD
+Europe/Moscow.generic.short=MT
+Europe/Moscow.standard.short=MSK
+Europe/Nicosia.daylight.short=EEST
+Europe/Nicosia.generic.short=EET
+Europe/Nicosia.standard.short=EET
+Europe/Oslo.daylight.short=CEST
+Europe/Oslo.generic.short=CET
+Europe/Oslo.standard.short=CET
+Europe/Paris.daylight.short=CEST
+Europe/Paris.generic.short=CET
+Europe/Paris.standard.short=CET
+Europe/Podgorica.daylight.short=CEST
+Europe/Podgorica.generic.short=CET
+Europe/Podgorica.standard.short=CET
+Europe/Prague.daylight.short=CEST
+Europe/Prague.generic.short=CET
+Europe/Prague.standard.short=CET
+Europe/Riga.daylight.short=EEST
+Europe/Riga.generic.short=EET
+Europe/Riga.standard.short=EET
+Europe/Rome.daylight.short=CEST
+Europe/Rome.generic.short=CET
+Europe/Rome.standard.short=CET
+Europe/Samara.daylight.short=SAMST
+Europe/Samara.generic.short=SAMT
+Europe/Samara.standard.short=SAMT
+Europe/San_Marino.daylight.short=CEST
+Europe/San_Marino.generic.short=CET
+Europe/San_Marino.standard.short=CET
+Europe/Sarajevo.daylight.short=CEST
+Europe/Sarajevo.generic.short=CET
+Europe/Sarajevo.standard.short=CET
+Europe/Simferopol.daylight.short=EEST
+Europe/Simferopol.generic.short=EET
+Europe/Simferopol.standard.short=EET
+Europe/Skopje.daylight.short=CEST
+Europe/Skopje.generic.short=CET
+Europe/Skopje.standard.short=CET
+Europe/Sofia.daylight.short=EEST
+Europe/Sofia.generic.short=EET
+Europe/Sofia.standard.short=EET
+Europe/Stockholm.daylight.short=CEST
+Europe/Stockholm.generic.short=CET
+Europe/Stockholm.standard.short=CET
+Europe/Tallinn.daylight.short=EEST
+Europe/Tallinn.generic.short=EET
+Europe/Tallinn.standard.short=EET
+Europe/Tirane.daylight.short=CEST
+Europe/Tirane.generic.short=CET
+Europe/Tirane.standard.short=CET
+Europe/Tiraspol.daylight.short=EEST
+Europe/Tiraspol.generic.short=EET
+Europe/Tiraspol.standard.short=EET
+Europe/Uzhgorod.daylight.short=EEST
+Europe/Uzhgorod.generic.short=EET
+Europe/Uzhgorod.standard.short=EET
+Europe/Vaduz.daylight.short=CEST
+Europe/Vaduz.generic.short=CET
+Europe/Vaduz.standard.short=CET
+Europe/Vatican.daylight.short=CEST
+Europe/Vatican.generic.short=CET
+Europe/Vatican.standard.short=CET
+Europe/Vienna.daylight.short=CEST
+Europe/Vienna.generic.short=CET
+Europe/Vienna.standard.short=CET
+Europe/Vilnius.daylight.short=EEST
+Europe/Vilnius.generic.short=EET
+Europe/Vilnius.standard.short=EET
+Europe/Volgograd.daylight.short=VOLST
+Europe/Volgograd.generic.short=VOLT
+Europe/Volgograd.standard.short=VOLT
+Europe/Warsaw.daylight.short=CEST
+Europe/Warsaw.generic.short=CET
+Europe/Warsaw.standard.short=CET
+Europe/Zagreb.daylight.short=CEST
+Europe/Zagreb.generic.short=CET
+Europe/Zagreb.standard.short=CET
+Europe/Zaporozhye.daylight.short=EEST
+Europe/Zaporozhye.generic.short=EET
+Europe/Zaporozhye.standard.short=EET
+Europe/Zurich.daylight.short=CEST
+Europe/Zurich.generic.short=CET
+Europe/Zurich.standard.short=CET
+GB.daylight.short=BST
+GB-Eire.daylight.short=BST
+GB-Eire.generic.short=BT
+GB-Eire.standard.short=GMT
+GB.generic.short=BT
+GB.standard.short=GMT
+GMT.daylight.short=GMT
+GMT.generic.short=GMT
+GMT.standard.short=GMT
+Greenwich.daylight.short=GMT
+Greenwich.generic.short=GMT
+Greenwich.standard.short=GMT
+Hongkong.daylight.short=HKST
+Hongkong.generic.short=HKT
+Hongkong.standard.short=HKT
+HST.daylight.short=HDT
+HST.generic.short=HT
+HST.standard.short=HST
+Iceland.daylight.short=GMT
+Iceland.generic.short=GMT
+Iceland.standard.short=GMT
+IET.daylight.short=EDT
+IET.generic.short=ET
+IET.standard.short=EST
+Indian/Antananarivo.daylight.short=EAST
+Indian/Antananarivo.generic.short=EAT
+Indian/Antananarivo.standard.short=EAT
+Indian/Chagos.daylight.short=IOST
+Indian/Chagos.generic.short=IOT
+Indian/Chagos.standard.short=IOT
+Indian/Christmas.daylight.short=CXST
+Indian/Christmas.generic.short=CIT
+Indian/Christmas.standard.short=CXT
+Indian/Cocos.daylight.short=CCST
+Indian/Cocos.generic.short=CCT
+Indian/Cocos.standard.short=CCT
+Indian/Comoro.daylight.short=EAST
+Indian/Comoro.generic.short=EAT
+Indian/Comoro.standard.short=EAT
+Indian/Kerguelen.daylight.short=TFST
+Indian/Kerguelen.generic.short=TFT
+Indian/Kerguelen.standard.short=TFT
+Indian/Mahe.daylight.short=SCST
+Indian/Mahe.generic.short=SCT
+Indian/Mahe.standard.short=SCT
+Indian/Maldives.daylight.short=MVST
+Indian/Maldives.generic.short=MVT
+Indian/Maldives.standard.short=MVT
+Indian/Mauritius.daylight.short=MUST
+Indian/Mauritius.generic.short=MUT
+Indian/Mauritius.standard.short=MUT
+Indian/Mayotte.daylight.short=EAST
+Indian/Mayotte.generic.short=EAT
+Indian/Mayotte.standard.short=EAT
+Indian/Reunion.daylight.short=REST
+Indian/Reunion.generic.short=RET
+Indian/Reunion.standard.short=RET
+Iran.daylight.short=IRDT
+Iran.generic.short=IRT
+Iran.standard.short=IRST
+Israel.daylight.short=IDT
+Israel.generic.short=IT
+Israel.standard.short=IST
+IST.daylight.short=IDT
+IST.generic.short=IT
+IST.standard.short=IST
+Jamaica.daylight.short=EDT
+Jamaica.generic.short=ET
+Jamaica.standard.short=EST
+Japan.daylight.short=JDT
+Japan.generic.short=JT
+Japan.standard.short=JST
+JST.daylight.short=JDT
+JST.generic.short=JT
+JST.standard.short=JST
+Kwajalein.daylight.short=MHST
+Kwajalein.generic.short=MHT
+Kwajalein.standard.short=MHT
+Libya.daylight.short=EEST
+Libya.generic.short=EET
+Libya.standard.short=EET
+MET.daylight.short=MEST
+MET.generic.short=MET
+MET.standard.short=MET
+Mexico/BajaNorte.daylight.short=PDT
+Mexico/BajaNorte.generic.short=PT
+Mexico/BajaNorte.standard.short=PST
+Mexico/BajaSur.daylight.short=MDT
+Mexico/BajaSur.generic.short=MT
+Mexico/BajaSur.standard.short=MST
+Mexico/General.daylight.short=CDT
+Mexico/General.generic.short=CT
+Mexico/General.standard.short=CST
+MIT.daylight.short=WSDT
+MIT.generic.short=WST
+MIT.standard.short=WST
+MST7MDT.daylight.short=MDT
+MST7MDT.generic.short=MT
+MST7MDT.standard.short=MST
+MST.daylight.short=MDT
+MST.generic.short=MT
+MST.standard.short=MST
+Navajo.daylight.short=MDT
+Navajo.generic.short=MT
+Navajo.standard.short=MST
+NET.daylight.short=AMST
+NET.generic.short=AMT
+NET.standard.short=AMT
+NST.daylight.short=NZDT
+NST.generic.short=NZT
+NST.standard.short=NZST
+NZ-CHAT.daylight.short=CHADT
+NZ-CHAT.generic.short=CHAT
+NZ-CHAT.standard.short=CHAST
+NZ.daylight.short=NZDT
+NZ.generic.short=NZT
+NZ.standard.short=NZST
+Pacific/Apia.daylight.short=WSDT
+Pacific/Apia.generic.short=WST
+Pacific/Apia.standard.short=WST
+Pacific/Auckland.daylight.short=NZDT
+Pacific/Auckland.generic.short=NZT
+Pacific/Auckland.standard.short=NZST
+Pacific/Chatham.daylight.short=CHADT
+Pacific/Chatham.generic.short=CHAT
+Pacific/Chatham.standard.short=CHAST
+Pacific/Chuuk.daylight.short=CHUST
+Pacific/Chuuk.generic.short=CHUT
+Pacific/Chuuk.standard.short=CHUT
+Pacific/Easter.daylight.short=EASST
+Pacific/Easter.generic.short=EAST
+Pacific/Easter.standard.short=EAST
+Pacific/Efate.daylight.short=VUST
+Pacific/Efate.generic.short=VUT
+Pacific/Efate.standard.short=VUT
+Pacific/Enderbury.daylight.short=PHOST
+Pacific/Enderbury.generic.short=PHOT
+Pacific/Enderbury.standard.short=PHOT
+Pacific/Fakaofo.daylight.short=TKST
+Pacific/Fakaofo.generic.short=TKT
+Pacific/Fakaofo.standard.short=TKT
+Pacific/Fiji.daylight.short=FJST
+Pacific/Fiji.generic.short=FJT
+Pacific/Fiji.standard.short=FJT
+Pacific/Funafuti.daylight.short=TVST
+Pacific/Funafuti.generic.short=TVT
+Pacific/Funafuti.standard.short=TVT
+Pacific/Galapagos.daylight.short=GALST
+Pacific/Galapagos.generic.short=GALT
+Pacific/Galapagos.standard.short=GALT
+Pacific/Gambier.daylight.short=GAMST
+Pacific/Gambier.generic.short=GAMT
+Pacific/Gambier.standard.short=GAMT
+Pacific/Guadalcanal.daylight.short=SBST
+Pacific/Guadalcanal.generic.short=SBT
+Pacific/Guadalcanal.standard.short=SBT
+Pacific/Guam.daylight.short=ChDT
+Pacific/Guam.generic.short=ChT
+Pacific/Guam.standard.short=ChST
+Pacific/Honolulu.daylight.short=HDT
+Pacific/Honolulu.generic.short=HT
+Pacific/Honolulu.standard.short=HST
+Pacific/Johnston.daylight.short=HDT
+Pacific/Johnston.generic.short=HT
+Pacific/Johnston.standard.short=HST
+Pacific/Kiritimati.daylight.short=LINST
+Pacific/Kiritimati.generic.short=LINT
+Pacific/Kiritimati.standard.short=LINT
+Pacific/Kosrae.daylight.short=KOSST
+Pacific/Kosrae.generic.short=KOST
+Pacific/Kosrae.standard.short=KOST
+Pacific/Kwajalein.daylight.short=MHST
+Pacific/Kwajalein.generic.short=MHT
+Pacific/Kwajalein.standard.short=MHT
+Pacific/Majuro.daylight.short=MHST
+Pacific/Majuro.generic.short=MHT
+Pacific/Majuro.standard.short=MHT
+Pacific/Marquesas.daylight.short=MARST
+Pacific/Marquesas.generic.short=MART
+Pacific/Marquesas.standard.short=MART
+Pacific/Midway.daylight.short=SDT
+Pacific/Midway.generic.short=ST
+Pacific/Midway.standard.short=SST
+Pacific/Nauru.daylight.short=NRST
+Pacific/Nauru.generic.short=NRT
+Pacific/Nauru.standard.short=NRT
+Pacific/Niue.daylight.short=NUST
+Pacific/Niue.generic.short=NUT
+Pacific/Niue.standard.short=NUT
+Pacific/Norfolk.daylight.short=NFST
+Pacific/Norfolk.generic.short=NFT
+Pacific/Norfolk.standard.short=NFT
+Pacific/Noumea.daylight.short=NCST
+Pacific/Noumea.generic.short=NCT
+Pacific/Noumea.standard.short=NCT
+Pacific/Pago_Pago.daylight.short=SDT
+Pacific/Pago_Pago.generic.short=ST
+Pacific/Pago_Pago.standard.short=SST
+Pacific/Palau.daylight.short=PWST
+Pacific/Palau.generic.short=PWT
+Pacific/Palau.standard.short=PWT
+Pacific/Pitcairn.daylight.short=PDT
+Pacific/Pitcairn.generic.short=PT
+Pacific/Pitcairn.standard.short=PST
+Pacific/Pohnpei.daylight.short=PONST
+Pacific/Pohnpei.generic.short=PONT
+Pacific/Pohnpei.standard.short=PONT
+Pacific/Ponape.daylight.short=PONST
+Pacific/Ponape.generic.short=PONT
+Pacific/Ponape.standard.short=PONT
+Pacific/Port_Moresby.daylight.short=PGST
+Pacific/Port_Moresby.generic.short=PGT
+Pacific/Port_Moresby.standard.short=PGT
+Pacific/Rarotonga.daylight.short=CKHST
+Pacific/Rarotonga.generic.short=CKT
+Pacific/Rarotonga.standard.short=CKT
+Pacific/Saipan.daylight.short=ChDT
+Pacific/Saipan.generic.short=ChT
+Pacific/Saipan.standard.short=ChST
+Pacific/Samoa.daylight.short=SDT
+Pacific/Samoa.generic.short=ST
+Pacific/Samoa.standard.short=SST
+Pacific/Tahiti.daylight.short=TAHST
+Pacific/Tahiti.generic.short=TAHT
+Pacific/Tahiti.standard.short=TAHT
+Pacific/Tarawa.daylight.short=GILST
+Pacific/Tarawa.generic.short=GILT
+Pacific/Tarawa.standard.short=GILT
+Pacific/Tongatapu.daylight.short=TOST
+Pacific/Tongatapu.generic.short=TOT
+Pacific/Tongatapu.standard.short=TOT
+Pacific/Truk.daylight.short=CHUST
+Pacific/Truk.generic.short=CHUT
+Pacific/Truk.standard.short=CHUT
+Pacific/Wake.daylight.short=WAKST
+Pacific/Wake.generic.short=WAKT
+Pacific/Wake.standard.short=WAKT
+Pacific/Wallis.daylight.short=WFST
+Pacific/Wallis.generic.short=WFT
+Pacific/Wallis.standard.short=WFT
+Pacific/Yap.daylight.short=CHUST
+Pacific/Yap.generic.short=CHUT
+Pacific/Yap.standard.short=CHUT
+PLT.daylight.short=PKST
+PLT.generic.short=PKT
+PLT.standard.short=PKT
+PNT.daylight.short=MDT
+PNT.generic.short=MT
+PNT.standard.short=MST
+Poland.daylight.short=CEST
+Poland.generic.short=CET
+Poland.standard.short=CET
+Portugal.daylight.short=WEST
+Portugal.generic.short=WET
+Portugal.standard.short=WET
+PRC.daylight.short=CDT
+PRC.generic.short=CT
+PRC.standard.short=CST
+PRT.daylight.short=ADT
+PRT.generic.short=AT
+PRT.standard.short=AST
+PST8PDT.daylight.short=PDT
+PST8PDT.generic.short=PT
+PST8PDT.standard.short=PST
+PST.daylight.short=PDT
+PST.generic.short=PT
+PST.standard.short=PST
+ROK.daylight.short=KDT
+ROK.generic.short=KT
+ROK.standard.short=KST
+Singapore.daylight.short=SGST
+Singapore.generic.short=SGT
+Singapore.standard.short=SGT
+SST.daylight.short=SBST
+SST.generic.short=SBT
+SST.standard.short=SBT
+SystemV/AST4ADT.daylight.short=ADT
+SystemV/AST4ADT.generic.short=AT
+SystemV/AST4ADT.standard.short=AST
+SystemV/AST4.daylight.short=ADT
+SystemV/AST4.generic.short=AT
+SystemV/AST4.standard.short=AST
+SystemV/CST6CDT.daylight.short=CDT
+SystemV/CST6CDT.generic.short=CT
+SystemV/CST6CDT.standard.short=CST
+SystemV/CST6.daylight.short=CDT
+SystemV/CST6.generic.short=CT
+SystemV/CST6.standard.short=CST
+SystemV/EST5.daylight.short=EDT
+SystemV/EST5EDT.daylight.short=EDT
+SystemV/EST5EDT.generic.short=ET
+SystemV/EST5EDT.standard.short=EST
+SystemV/EST5.generic.short=ET
+SystemV/EST5.standard.short=EST
+SystemV/HST10.daylight.short=HDT
+SystemV/HST10.generic.short=HT
+SystemV/HST10.standard.short=HST
+SystemV/MST7.daylight.short=MDT
+SystemV/MST7.generic.short=MT
+SystemV/MST7MDT.daylight.short=MDT
+SystemV/MST7MDT.generic.short=MT
+SystemV/MST7MDT.standard.short=MST
+SystemV/MST7.standard.short=MST
+SystemV/PST8.daylight.short=PDT
+SystemV/PST8.generic.short=PT
+SystemV/PST8PDT.daylight.short=PDT
+SystemV/PST8PDT.generic.short=PT
+SystemV/PST8PDT.standard.short=PST
+SystemV/PST8.standard.short=PST
+SystemV/YST9.daylight.short=AKDT
+SystemV/YST9.generic.short=AKT
+SystemV/YST9.standard.short=AKST
+SystemV/YST9YDT.daylight.short=AKDT
+SystemV/YST9YDT.generic.short=AKT
+SystemV/YST9YDT.standard.short=AKST
+Turkey.daylight.short=EEST
+Turkey.generic.short=EET
+Turkey.standard.short=EET
+UCT.daylight.short=UTC
+UCT.generic.short=UTC
+UCT.standard.short=UTC
+Universal.daylight.short=UTC
+Universal.generic.short=UTC
+Universal.standard.short=UTC
+US/Alaska.daylight.short=AKDT
+US/Alaska.generic.short=AKT
+US/Alaska.standard.short=AKST
+US/Aleutian.daylight.short=HADT
+US/Aleutian.generic.short=HAT
+US/Aleutian.standard.short=HAST
+US/Arizona.daylight.short=MDT
+US/Arizona.generic.short=MT
+US/Arizona.standard.short=MST
+US/Central.daylight.short=CDT
+US/Central.generic.short=CT
+US/Central.standard.short=CST
+US/Eastern.daylight.short=EDT
+US/Eastern.generic.short=ET
+US/Eastern.standard.short=EST
+US/East-Indiana.daylight.short=EDT
+US/East-Indiana.generic.short=ET
+US/East-Indiana.standard.short=EST
+US/Hawaii.daylight.short=HDT
+US/Hawaii.generic.short=HT
+US/Hawaii.standard.short=HST
+US/Indiana-Starke.daylight.short=CDT
+US/Indiana-Starke.generic.short=CT
+US/Indiana-Starke.standard.short=CST
+US/Michigan.daylight.short=EDT
+US/Michigan.generic.short=ET
+US/Michigan.standard.short=EST
+US/Mountain.daylight.short=MDT
+US/Mountain.generic.short=MT
+US/Mountain.standard.short=MST
+US/Pacific.daylight.short=PDT
+US/Pacific.generic.short=PT
+US/Pacific-New.daylight.short=PDT
+US/Pacific-New.generic.short=PT
+US/Pacific-New.standard.short=PST
+US/Pacific.standard.short=PST
+US/Samoa.daylight.short=SDT
+US/Samoa.generic.short=ST
+US/Samoa.standard.short=SST
+UTC.daylight.short=UTC
+UTC.generic.short=UTC
+UTC.standard.short=UTC
+VST.daylight.short=ICST
+VST.generic.short=ICT
+VST.standard.short=ICT
+WET.daylight.short=WEST
+WET.generic.short=WET
+WET.standard.short=WET
+W-SU.daylight.short=MSD
+W-SU.generic.short=MT
+W-SU.standard.short=MSK
+Zulu.daylight.short=UTC
+Zulu.generic.short=UTC
+Zulu.standard.short=UTC
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_zh_TW.properties Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,651 @@
+ACT.daylight.long=\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u5317\u90E8\u5404\u5730\u5340)
+ACT.generic.long=\u6FB3\u5927\u5229\u4E9E\u4E2D\u90E8\u6642\u9593 (\u5317\u65B9\u5340\u57DF)
+ACT.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u5317\u90E8\u5404\u5730\u5340)
+AET.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+AET.generic.long=\u6771\u90E8\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+AET.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+AGT.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+ART.generic.long=\u6771\u6B50\u6642\u9593
+AST.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593
+Africa/Abidjan.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Africa/Accra.generic.long=\u8FE6\u7D0D\u6642\u9593
+Africa/Addis_Ababa.generic.long=\u6771\u975E\u6642\u9593
+Africa/Algiers.generic.long=\u4E2D\u6B50\u6642\u9593
+Africa/Asmara.generic.long=\u6771\u975E\u6642\u9593
+Africa/Asmera.generic.long=\u6771\u975E\u6642\u9593
+Africa/Bamako.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Africa/Bangui.generic.long=\u897F\u975E\u6642\u9593
+Africa/Banjul.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Africa/Bissau.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Africa/Blantyre.generic.long=\u4E2D\u975E\u6642\u9593
+Africa/Brazzaville.generic.long=\u897F\u975E\u6642\u9593
+Africa/Bujumbura.generic.long=\u4E2D\u975E\u6642\u9593
+Africa/Cairo.generic.long=\u6771\u6B50\u6642\u9593
+Africa/Casablanca.generic.long=\u897F\u6B50\u6642\u9593
+Africa/Ceuta.generic.long=\u4E2D\u6B50\u6642\u9593
+Africa/Conakry.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Africa/Dakar.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Africa/Dar_es_Salaam.generic.long=\u6771\u975E\u6642\u9593
+Africa/Djibouti.generic.long=\u6771\u975E\u6642\u9593
+Africa/Douala.generic.long=\u897F\u975E\u6642\u9593
+Africa/El_Aaiun.generic.long=\u897F\u6B50\u6642\u9593
+Africa/Freetown.generic.long=\u7345\u5B50\u5C71\u6642\u9593
+Africa/Gaborone.generic.long=\u4E2D\u975E\u6642\u9593
+Africa/Harare.generic.long=\u4E2D\u975E\u6642\u9593
+Africa/Johannesburg.generic.long=\u5357\u975E\u6642\u9593
+Africa/Juba.generic.long=\u6771\u975E\u6642\u9593
+Africa/Kampala.generic.long=\u6771\u975E\u6642\u9593
+Africa/Khartoum.generic.long=\u6771\u975E\u6642\u9593
+Africa/Kigali.generic.long=\u4E2D\u975E\u6642\u9593
+Africa/Kinshasa.generic.long=\u897F\u975E\u6642\u9593
+Africa/Lagos.generic.long=\u897F\u975E\u6642\u9593
+Africa/Libreville.generic.long=\u897F\u975E\u6642\u9593
+Africa/Lome.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Africa/Luanda.generic.long=\u897F\u975E\u6642\u9593
+Africa/Lubumbashi.generic.long=\u4E2D\u975E\u6642\u9593
+Africa/Lusaka.generic.long=\u4E2D\u975E\u6642\u9593
+Africa/Malabo.generic.long=\u897F\u975E\u6642\u9593
+Africa/Maputo.generic.long=\u4E2D\u975E\u6642\u9593
+Africa/Maseru.generic.long=\u5357\u975E\u6642\u9593
+Africa/Mbabane.generic.long=\u5357\u975E\u6642\u9593
+Africa/Mogadishu.generic.long=\u6771\u975E\u6642\u9593
+Africa/Monrovia.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Africa/Nairobi.generic.long=\u6771\u975E\u6642\u9593
+Africa/Ndjamena.generic.long=\u897F\u975E\u6642\u9593
+Africa/Niamey.generic.long=\u897F\u975E\u6642\u9593
+Africa/Nouakchott.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Africa/Ouagadougou.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Africa/Porto-Novo.generic.long=\u897F\u975E\u6642\u9593
+Africa/Sao_Tome.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Africa/Timbuktu.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Africa/Tripoli.generic.long=\u6771\u6b50\u6642\u9593
+Africa/Tunis.generic.long=\u4E2D\u6B50\u6642\u9593
+Africa/Windhoek.generic.long=\u897F\u975E\u6642\u9593
+America/Adak.generic.long=\u590F\u5A01\u5937-\u963F\u7559\u7533\u6642\u9593
+America/Anchorage.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593
+America/Anguilla.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Antigua.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Araguaina.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593
+America/Argentina/Buenos_Aires.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Argentina/Catamarca.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Argentina/ComodRivadavia.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Argentina/Cordoba.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Argentina/Jujuy.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Argentina/La_Rioja.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Argentina/Mendoza.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Argentina/Rio_Gallegos.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Argentina/Salta.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Argentina/San_Juan.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Argentina/San_Luis.generic.long=\u963f\u6839\u5ef7\u6642\u9593
+America/Argentina/Tucuman.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Argentina/Ushuaia.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Aruba.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Asuncion.generic.long=\u5DF4\u62C9\u572D\u6642\u9593
+America/Atikokan.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Atka.generic.long=\u590F\u5A01\u5937-\u963F\u7559\u7533\u6642\u9593
+America/Bahia.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593
+America/Bahia_Banderas.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Barbados.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Belem.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593
+America/Belize.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Blanc-Sablon.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Boa_Vista.generic.long=\u4E9E\u99AC\u905C\u6642\u9593
+America/Bogota.generic.long=\u54E5\u502B\u6BD4\u4E9E\u6642\u9593
+America/Boise.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Buenos_Aires.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Cambridge_Bay.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Campo_Grande.generic.long=\u4E9E\u99AC\u905C\u6642\u9593
+America/Cancun.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Caracas.generic.long=\u59D4\u5167\u745E\u62C9\u6642\u9593
+America/Catamarca.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Cayenne.generic.long=\u6CD5\u5C6C\u572D\u4E9E\u90A3\u6642\u9593
+America/Cayman.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Chicago.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Chihuahua.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Coral_Harbour.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Cordoba.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Costa_Rica.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Creston.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Cuiaba.generic.long=\u4E9E\u99AC\u905C\u6642\u9593
+America/Curacao.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Danmarkshavn.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+America/Dawson.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+America/Dawson_Creek.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Denver.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Detroit.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Dominica.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Edmonton.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Eirunepe.generic.long=Acre \u6642\u9593
+America/El_Salvador.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Ensenada.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+America/Fort_Wayne.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Fortaleza.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593
+America/Glace_Bay.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Godthab.generic.long=\u897F\u683C\u9675\u862D\u6642\u9593
+America/Goose_Bay.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Grand_Turk.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Grenada.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Guadeloupe.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Guatemala.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Guayaquil.generic.long=\u5384\u74DC\u591A\u723E\u6642\u9593
+America/Guyana.generic.long=\u84CB\u4E9E\u90A3\u6642\u9593
+America/Halifax.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Havana.generic.long=\u53E4\u5DF4\u6642\u9593
+America/Hermosillo.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Indiana/Indianapolis.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Indiana/Knox.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Indiana/Marengo.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Indiana/Petersburg.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Indiana/Tell_City.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Indiana/Vevay.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Indiana/Vincennes.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Indiana/Winamac.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Indianapolis.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Inuvik.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Iqaluit.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Jamaica.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Jujuy.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Juneau.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593
+America/Kentucky/Louisville.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Kentucky/Monticello.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Knox_IN.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Kralendijk.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/La_Paz.generic.long=\u73BB\u5229\u7DAD\u4E9E\u6642\u9593
+America/Lima.generic.long=\u7955\u9B6F\u6642\u9593
+America/Los_Angeles.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+America/Louisville.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Lower_Princes.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Maceio.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593
+America/Managua.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Manaus.generic.long=\u4E9E\u99AC\u905C\u6642\u9593
+America/Marigot.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Martinique.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Matamoros.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Mazatlan.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Mendoza.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Menominee.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Merida.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Metlakatla.daylight.long=\u6885\u7279\u62C9\u5361\u7279\u62C9\u65E5\u5149\u7BC0\u7D04\u6642\u9593
+America/Metlakatla.generic.long=\u6885\u7279\u62C9\u5361\u7279\u62C9\u6642\u9593
+America/Metlakatla.standard.long=\u6885\u7279\u62C9\u5361\u7279\u62C9\u6A19\u6E96\u6642\u9593
+America/Mexico_City.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Miquelon.generic.long=\u8056\u5F7C\u5FB7\u8207\u5BC6\u555F\u5D19\u6642\u9593
+America/Moncton.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Monterrey.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Montevideo.generic.long=\u70CF\u62C9\u572D\u6642\u9593
+America/Montreal.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Montserrat.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Nassau.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/New_York.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Nipigon.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Nome.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593
+America/Noronha.generic.long=\u8CBB\u723E\u5357\u591A-\u8FEA\u8AFE\u7F85\u5C3C\u4E9E\u6642\u9593
+America/North_Dakota/Beulah.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/North_Dakota/Center.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/North_Dakota/New_Salem.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Ojinaga.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Panama.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Pangnirtung.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Paramaribo.generic.long=\u8607\u5229\u5357\u6642\u9593
+America/Phoenix.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Port-au-Prince.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Port_of_Spain.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Porto_Acre.generic.long=Acre \u6642\u9593
+America/Porto_Velho.generic.long=\u4E9E\u99AC\u905C\u6642\u9593
+America/Puerto_Rico.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Rainy_River.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Rankin_Inlet.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Recife.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593
+America/Regina.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Resolute.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Rio_Branco.generic.long=Acre \u6642\u9593
+America/Rosario.generic.long=\u963F\u6839\u5EF7\u6642\u9593
+America/Santa_Isabel.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+America/Santarem.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593
+America/Santiago.generic.long=\u667A\u5229\u6642\u9593
+America/Santo_Domingo.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Sao_Paulo.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593
+America/Scoresbysund.generic.long=\u6771\u683C\u9675\u862D\u6642\u9593
+America/Shiprock.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+America/Sitka.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593
+America/St_Barthelemy.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/St_Johns.generic.long=\u7D10\u82AC\u862D\u6642\u9593
+America/St_Kitts.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/St_Lucia.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/St_Thomas.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/St_Vincent.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Swift_Current.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Tegucigalpa.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Thule.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Thunder_Bay.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Tijuana.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+America/Toronto.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+America/Tortola.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Vancouver.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+America/Virgin.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+America/Whitehorse.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+America/Winnipeg.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+America/Yakutat.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593
+America/Yellowknife.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+Antarctica/Casey.daylight.long=\u897F\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)
+Antarctica/Casey.generic.long=\u897F\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)
+Antarctica/Casey.standard.long=\u897F\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)
+Antarctica/Davis.generic.long=\u81FA\u7DAD\u65AF\u6642\u9593
+Antarctica/DumontDUrville.generic.long=Dumont-d'Urville \u6642\u9593
+Antarctica/Macquarie.daylight.long=\u9EA5\u5938\u5229\u5CF6\u590F\u4EE4\u6642\u9593
+Antarctica/Macquarie.generic.long=\u9EA5\u5938\u5229\u5CF6\u6642\u9593
+Antarctica/Macquarie.standard.long=\u9EA5\u5938\u5229\u5CF6\u6642\u9593
+Antarctica/Mawson.generic.long=\u83AB\u68EE\u6642\u9593
+Antarctica/McMurdo.generic.long=\u7D10\u897F\u862D\u6642\u9593
+Antarctica/Palmer.generic.long=\u667A\u5229\u6642\u9593
+Antarctica/Rothera.generic.long=\u7F85\u897F\u62C9\u6642\u9593
+Antarctica/South_Pole.generic.long=\u7D10\u897F\u862D\u6642\u9593
+Antarctica/Syowa.generic.long=\u5915\u6B50\u74E6 (Syowa) \u6642\u9593
+Antarctica/Vostok.generic.long=\u4F5B\u65AF\u6258 (Vostok) \u6642\u9593
+Arctic/Longyearbyen.generic.long=\u4E2D\u6B50\u6642\u9593
+Asia/Aden.generic.long=\u963F\u62C9\u4F2F\u6642\u9593
+Asia/Almaty.generic.long=\u963F\u62C9\u6728\u5716\u6642\u9593
+Asia/Amman.generic.long=\u963f\u62c9\u4f2f\u6642\u9593
+Asia/Anadyr.generic.long=\u963F\u90A3\u5E95\u6CB3\u6642\u9593
+Asia/Aqtau.generic.long=\u963F\u514B\u5957\u6642\u9593
+Asia/Aqtobe.generic.long=\u963F\u514B\u6258\u5225\u6642\u9593
+Asia/Ashgabat.generic.long=\u571F\u5EAB\u66FC\u6642\u9593
+Asia/Ashkhabad.generic.long=\u571F\u5EAB\u66FC\u6642\u9593
+Asia/Baghdad.generic.long=\u963F\u62C9\u4F2F\u6642\u9593
+Asia/Bahrain.generic.long=\u963F\u62C9\u4F2F\u6642\u9593
+Asia/Baku.generic.long=\u4E9E\u585E\u62DC\u7136\u6642\u9593
+Asia/Bangkok.generic.long=\u5370\u5EA6\u652F\u90A3\u6642\u9593
+Asia/Beirut.generic.long=\u6771\u6B50\u6642\u9593
+Asia/Bishkek.generic.long=\u5409\u723E\u5409\u65AF\u6642\u9593
+Asia/Brunei.generic.long=\u6C76\u840A\u6642\u9593
+Asia/Calcutta.generic.long=\u5370\u5EA6\u6642\u9593
+Asia/Choibalsan.generic.long=\u5DE7\u5DF4\u5C71 (Choibalsan) \u6642\u9593
+Asia/Chongqing.generic.long=\u4E2D\u570B\u6642\u9593
+Asia/Chungking.generic.long=\u4E2D\u570B\u6642\u9593
+Asia/Colombo.generic.long=\u5370\u5EA6\u6642\u9593
+Asia/Dacca.generic.long=\u5B5F\u52A0\u62C9\u6642\u9593
+Asia/Damascus.generic.long=\u6771\u6B50\u6642\u9593
+Asia/Dhaka.generic.long=\u5B5F\u52A0\u62C9\u6642\u9593
+Asia/Dili.generic.long=\u6771\u5E1D\u6C76\u6642\u9593
+Asia/Dubai.generic.long=\u6CE2\u65AF\u7063\u6642\u9593
+Asia/Dushanbe.generic.long=\u5854\u5409\u514B\u6642\u9593
+Asia/Gaza.generic.long=\u6771\u6B50\u6642\u9593
+Asia/Harbin.generic.long=\u4E2D\u570B\u6642\u9593
+Asia/Hebron.generic.long=\u6771\u6B50\u6642\u9593
+Asia/Ho_Chi_Minh.generic.long=\u5370\u5EA6\u652F\u90A3\u6642\u9593
+Asia/Hong_Kong.generic.long=\u9999\u6E2F\u6642\u9593
+Asia/Hovd.generic.long=\u4FAF\u5FB7 (Hovd) \u6642\u9593
+Asia/Irkutsk.generic.long=\u4F0A\u723E\u5EAB\u6B21\u514B\u6642\u9593
+Asia/Istanbul.generic.long=\u6771\u6B50\u6642\u9593
+Asia/Jakarta.generic.long=\u897F\u5370\u5C3C\u6642\u9593
+Asia/Jayapura.generic.long=\u6771\u5370\u5EA6\u5C3C\u897F\u4E9E\u6642\u9593
+Asia/Jerusalem.generic.long=\u4EE5\u8272\u5217\u6642\u9593
+Asia/Kabul.generic.long=\u963F\u5BCC\u6C57\u6642\u9593
+Asia/Kamchatka.generic.long=Petropavlovsk-Kamchatski \u6642\u9593
+Asia/Karachi.generic.long=\u5DF4\u57FA\u65AF\u5766\u6642\u9593
+Asia/Kashgar.generic.long=\u4E2D\u570B\u6642\u9593
+Asia/Kathmandu.generic.long=\u5C3C\u6CCA\u723E\u6642\u9593
+Asia/Katmandu.generic.long=\u5C3C\u6CCA\u723E\u6642\u9593
+Asia/Khandyga.daylight.long=\u6F22\u5730\u52A0 (Khandyga) \u590F\u4EE4\u6642\u9593
+Asia/Khandyga.generic.long=\u6F22\u5730\u52A0 (Khandyga) \u6642\u9593
+Asia/Khandyga.standard.long=\u6F22\u5730\u52A0 (Khandyga) \u6642\u9593
+Asia/Kolkata.generic.long=\u5370\u5EA6\u6642\u9593
+Asia/Krasnoyarsk.generic.long=\u514B\u62C9\u65AF\u8AFE\u4E9E\u723E\u65AF\u514B\u6642\u9593
+Asia/Kuala_Lumpur.generic.long=\u99AC\u4F86\u897F\u4E9E\u6642\u9593
+Asia/Kuching.generic.long=\u99AC\u4F86\u897F\u4E9E\u6642\u9593
+Asia/Kuwait.generic.long=\u963F\u62C9\u4F2F\u6642\u9593
+Asia/Macao.generic.long=\u4E2D\u570B\u6642\u9593
+Asia/Macau.generic.long=\u4E2D\u570B\u6642\u9593
+Asia/Magadan.generic.long=\u99AC\u52A0\u4E39\u6642\u9593
+Asia/Makassar.generic.long=\u4E2D\u5370\u5EA6\u5C3C\u897F\u4E9E\u6642\u9593
+Asia/Manila.generic.long=\u83F2\u5F8B\u8CD3\u6642\u9593
+Asia/Muscat.generic.long=\u6CE2\u65AF\u7063\u6642\u9593
+Asia/Nicosia.generic.long=\u6771\u6B50\u6642\u9593
+Asia/Novokuznetsk.generic.long=\u65B0\u897F\u4F2F\u5229\u4E9E\u6642\u9593
+Asia/Novosibirsk.generic.long=\u65B0\u897F\u4F2F\u5229\u4E9E\u6642\u9593
+Asia/Omsk.generic.long=\u6B50\u59C6\u65AF\u514B (Omsk) \u6642\u9593
+Asia/Oral.generic.long=\u6B50\u4F5B\u6642\u9593
+Asia/Phnom_Penh.generic.long=\u5370\u5EA6\u652F\u90A3\u6642\u9593
+Asia/Pontianak.generic.long=\u897F\u5370\u5C3C\u6642\u9593
+Asia/Pyongyang.generic.long=\u97D3\u570B\u6642\u9593
+Asia/Qatar.generic.long=\u963F\u62C9\u4F2F\u6642\u9593
+Asia/Qyzylorda.generic.long=\u514B\u5B5C\u6D1B\u723E\u9054\u6642\u9593
+Asia/Rangoon.generic.long=\u7DEC\u7538\u6642\u9593
+Asia/Saigon.generic.long=\u5370\u5EA6\u652F\u90A3\u6642\u9593
+Asia/Sakhalin.generic.long=\u5EAB\u9801\u5CF6\u6642\u9593
+Asia/Samarkand.generic.long=\u70CF\u8332\u5225\u514B\u65AF\u5766\u6642\u9593
+Asia/Seoul.generic.long=\u97D3\u570B\u6642\u9593
+Asia/Shanghai.generic.long=\u4E2D\u570B\u6642\u9593
+Asia/Singapore.generic.long=\u65B0\u52A0\u5761\u6642\u9593
+Asia/Taipei.generic.long=\u53f0\u7063\u6642\u9593
+Asia/Tashkent.generic.long=\u70CF\u8332\u5225\u514B\u65AF\u5766\u6642\u9593
+Asia/Tbilisi.generic.long=\u55AC\u6CBB\u4E9E\u6642\u9593
+Asia/Tehran.generic.long=\u4F0A\u6717\u6642\u9593
+Asia/Tel_Aviv.generic.long=\u4EE5\u8272\u5217\u6642\u9593
+Asia/Thimbu.generic.long=\u4E0D\u4E39\u6642\u9593
+Asia/Thimphu.generic.long=\u4E0D\u4E39\u6642\u9593
+Asia/Tokyo.generic.long=\u65E5\u672C\u6642\u9593
+Asia/Ujung_Pandang.generic.long=\u4E2D\u5370\u5EA6\u5C3C\u897F\u4E9E\u6642\u9593
+Asia/Ulaanbaatar.generic.long=\u5EAB\u502B\u6642\u9593
+Asia/Ulan_Bator.generic.long=\u5EAB\u502B\u6642\u9593
+Asia/Urumqi.generic.long=\u4E2D\u570B\u6642\u9593
+Asia/Ust-Nera.daylight.long=\u70CF\u65AF\u5167\u62C9 (Ust-Nera) \u590F\u4EE4\u6642\u9593
+Asia/Ust-Nera.generic.long=\u70CF\u65AF\u5167\u62C9 (Ust-Nera) \u6642\u9593
+Asia/Ust-Nera.standard.long=\u70CF\u65AF\u5167\u62C9 (Ust-Nera) \u6642\u9593
+Asia/Vientiane.generic.long=\u5370\u5EA6\u652F\u90A3\u6642\u9593
+Asia/Vladivostok.generic.long=\u6D77\u53C3\u5D34\u6642\u9593
+Asia/Yakutsk.generic.long=\u4E9E\u5EAB\u6B21\u514B\u6642\u9593
+Asia/Yekaterinburg.generic.long=\u8449\u5361\u6377\u7433\u5821\u6642\u9593
+Asia/Yerevan.generic.long=\u4E9E\u7F8E\u5C3C\u4E9E\u6642\u9593
+Atlantic/Azores.generic.long=\u4E9E\u901F\u723E\u7FA4\u5CF6\u6642\u9593
+Atlantic/Bermuda.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+Atlantic/Canary.generic.long=\u897F\u6B50\u6642\u9593
+Atlantic/Cape_Verde.generic.long=\u4F5B\u5FB7\u89D2\u6642\u9593
+Atlantic/Faeroe.generic.long=\u897F\u6B50\u6642\u9593
+Atlantic/Faroe.generic.long=\u897F\u6B50\u6642\u9593
+Atlantic/Jan_Mayen.generic.long=\u4E2D\u6B50\u6642\u9593
+Atlantic/Madeira.generic.long=\u897F\u6B50\u6642\u9593
+Atlantic/Reykjavik.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Atlantic/South_Georgia.generic.long=\u5357\u55AC\u6CBB\u4E9E\u6642\u9593
+Atlantic/St_Helena.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Atlantic/Stanley.generic.long=\u798F\u514B\u862D\u7FA4\u5CF6\u6642\u9593
+Australia/ACT.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/ACT.generic.long=\u6771\u90E8\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/ACT.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Adelaide.daylight.long=\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340)
+Australia/Adelaide.generic.long=\u4E2D\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8)
+Australia/Adelaide.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8)
+Australia/Brisbane.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u6606\u58EB\u862D)
+Australia/Brisbane.generic.long=\u6771\u90E8\u6642\u9593 (\u6606\u58EB\u862D)
+Australia/Brisbane.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u6606\u58EB\u862D)
+Australia/Broken_Hill.daylight.long=\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340/\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Broken_Hill.generic.long=\u4E2D\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8/\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Broken_Hill.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340/\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Canberra.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Canberra.generic.long=\u6771\u90E8\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Canberra.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Currie.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Currie.generic.long=\u6771\u90E8\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Currie.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Darwin.daylight.long=\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u5317\u90E8\u5404\u5730\u5340)
+Australia/Darwin.generic.long=\u6FB3\u5927\u5229\u4E9E\u4E2D\u90E8\u6642\u9593 (\u5317\u65B9\u5340\u57DF)
+Australia/Darwin.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u5317\u90E8\u5404\u5730\u5340)
+Australia/Eucla.daylight.long=\u4E2D\u897F\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)
+Australia/Eucla.generic.long=\u4E2D\u897F\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)
+Australia/Eucla.standard.long=\u4E2D\u897F\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)
+Australia/Hobart.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u5854\u65AF\u6885\u5C3C\u4E9E\u5CF6)
+Australia/Hobart.generic.long=\u6FB3\u5927\u5229\u4E9E\u6771\u90E8\u6642\u9593 (\u5854\u65AF\u99AC\u5C3C\u4E9E\u5CF6)
+Australia/Hobart.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u5854\u65AF\u6885\u5C3C\u4E9E\u5CF6)
+Australia/LHI.generic.long=\u8C6A\u52F3\u7235\u5CF6\u6642\u9593
+Australia/Lindeman.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u6606\u58EB\u862D)
+Australia/Lindeman.generic.long=\u6771\u90E8\u6642\u9593 (\u6606\u58EB\u862D)
+Australia/Lindeman.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u6606\u58EB\u862D)
+Australia/Lord_Howe.generic.long=\u8C6A\u52F3\u7235\u5CF6\u6642\u9593
+Australia/Melbourne.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E\u90A6)
+Australia/Melbourne.generic.long=\u6771\u90E8\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E)
+Australia/Melbourne.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E\u90A6)
+Australia/NSW.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/NSW.generic.long=\u6771\u90E8\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/NSW.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/North.daylight.long=\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u5317\u90E8\u5404\u5730\u5340)
+Australia/North.generic.long=\u6FB3\u5927\u5229\u4E9E\u4E2D\u90E8\u6642\u9593 (\u5317\u65B9\u5340\u57DF)
+Australia/North.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u5317\u90E8\u5404\u5730\u5340)
+Australia/Perth.daylight.long=\u897F\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)
+Australia/Perth.generic.long=\u897F\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)
+Australia/Perth.standard.long=\u897F\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)
+Australia/Queensland.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u6606\u58EB\u862D)
+Australia/Queensland.generic.long=\u6771\u90E8\u6642\u9593 (\u6606\u58EB\u862D)
+Australia/Queensland.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u6606\u58EB\u862D)
+Australia/South.daylight.long=\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340)
+Australia/South.generic.long=\u4E2D\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8)
+Australia/South.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8)
+Australia/Sydney.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Sydney.generic.long=\u6771\u90E8\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Sydney.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Tasmania.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u5854\u65AF\u6885\u5C3C\u4E9E\u5CF6)
+Australia/Tasmania.generic.long=\u6FB3\u5927\u5229\u4E9E\u6771\u90E8\u6642\u9593 (\u5854\u65AF\u99AC\u5C3C\u4E9E\u5CF6)
+Australia/Tasmania.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u5854\u65AF\u6885\u5C3C\u4E9E\u5CF6)
+Australia/Victoria.daylight.long=\u6771\u90E8\u590F\u4EE4\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E\u90A6)
+Australia/Victoria.generic.long=\u6771\u90E8\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E)
+Australia/Victoria.standard.long=\u6771\u90E8\u6A19\u6E96\u6642\u9593 (\u7DAD\u591A\u5229\u4E9E\u90A6)
+Australia/West.daylight.long=\u897F\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)
+Australia/West.generic.long=\u897F\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)
+Australia/West.standard.long=\u897F\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E)
+Australia/Yancowinna.daylight.long=\u4E2D\u90E8\u590F\u4EE4\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340/\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Yancowinna.generic.long=\u4E2D\u90E8\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u90E8/\u65B0\u5357\u5A01\u723E\u65AF)
+Australia/Yancowinna.standard.long=\u4E2D\u90E8\u6A19\u6E96\u6642\u9593 (\u6FB3\u5927\u5229\u4E9E\u5357\u5340/\u65B0\u5357\u5A01\u723E\u65AF)
+BET.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593
+BST.generic.long=\u5B5F\u52A0\u62C9\u6642\u9593
+Brazil/Acre.generic.long=Acre \u6642\u9593
+Brazil/DeNoronha.generic.long=\u8CBB\u723E\u5357\u591A-\u8FEA\u8AFE\u7F85\u5C3C\u4E9E\u6642\u9593
+Brazil/East.generic.long=\u5DF4\u897F\u5229\u4E9E\u6642\u9593
+Brazil/West.generic.long=\u4E9E\u99AC\u905C\u6642\u9593
+CAT.generic.long=\u4E2D\u975E\u6642\u9593
+CET.generic.long=\u4e2d\u6b50\u6642\u9593
+CNT.generic.long=\u7D10\u82AC\u862D\u6642\u9593
+CST.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+CST6CDT.generic.long=\u7f8e\u570b\u4e2d\u90e8\u6642\u9593
+CTT.generic.long=\u4E2D\u570B\u6642\u9593
+Canada/Atlantic.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+Canada/Central.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+Canada/East-Saskatchewan.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+Canada/Eastern.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+Canada/Mountain.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+Canada/Newfoundland.generic.long=\u7D10\u82AC\u862D\u6642\u9593
+Canada/Pacific.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+Canada/Saskatchewan.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+Canada/Yukon.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+Chile/Continental.generic.long=\u667A\u5229\u6642\u9593
+Chile/EasterIsland.generic.long=\u5FA9\u6D3B\u5CF6\u6642\u9593
+Cuba.generic.long=\u53E4\u5DF4\u6642\u9593
+EAT.generic.long=\u6771\u975E\u6642\u9593
+ECT.generic.long=\u4E2D\u6B50\u6642\u9593
+EET.generic.long=\u6771\u6b50\u6642\u9593
+EST.generic.long=\u7f8e\u570b\u6771\u90e8\u6642\u9593
+EST5EDT.generic.long=\u7f8e\u570b\u6771\u90e8\u6642\u9593
+Egypt.generic.long=\u6771\u6B50\u6642\u9593
+Eire.generic.long=\u611B\u723E\u862D\u6587\u6642\u9593
+Etc/Greenwich.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Etc/UCT.generic.long=\u5354\u8ABF\u4E16\u754C\u6642\u9593
+Etc/UTC.generic.long=\u5354\u8ABF\u4E16\u754C\u6642\u9593
+Etc/Universal.generic.long=\u5354\u8ABF\u4E16\u754C\u6642\u9593
+Etc/Zulu.generic.long=\u5354\u8ABF\u4E16\u754C\u6642\u9593
+Europe/Amsterdam.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Andorra.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Athens.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Belfast.generic.long=\u82F1\u570B\u6642\u9593
+Europe/Belgrade.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Berlin.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Bratislava.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Brussels.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Bucharest.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Budapest.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Busingen.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Chisinau.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Copenhagen.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Dublin.generic.long=\u611B\u723E\u862D\u6587\u6642\u9593
+Europe/Gibraltar.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Guernsey.generic.long=\u82F1\u570B\u6642\u9593
+Europe/Helsinki.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Isle_of_Man.generic.long=\u82F1\u570B\u6642\u9593
+Europe/Istanbul.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Jersey.generic.long=\u82F1\u570B\u6642\u9593
+Europe/Kaliningrad.daylight.long=\u6771\u6B50\u5167\u9678\u590F\u4EE4\u6642\u9593
+Europe/Kaliningrad.generic.long=\u6771\u6B50\u5167\u9678\u6642\u9593
+Europe/Kaliningrad.standard.long=\u6771\u6B50\u5167\u9678\u6642\u9593
+Europe/Kiev.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Lisbon.generic.long=\u897F\u6B50\u6642\u9593
+Europe/Ljubljana.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/London.generic.long=\u82F1\u570B\u6642\u9593
+Europe/Luxembourg.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Madrid.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Malta.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Mariehamn.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Minsk.daylight.long=\u6771\u6B50\u5167\u9678\u590F\u4EE4\u6642\u9593
+Europe/Minsk.generic.long=\u6771\u6B50\u5167\u9678\u6642\u9593
+Europe/Minsk.standard.long=\u6771\u6B50\u5167\u9678\u6642\u9593
+Europe/Monaco.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Moscow.generic.long=\u83AB\u65AF\u79D1\u6642\u9593
+Europe/Nicosia.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Oslo.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Paris.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Podgorica.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Prague.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Riga.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Rome.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Samara.generic.long=\u6C99\u99AC\u62C9\u6642\u9593
+Europe/San_Marino.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Sarajevo.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Simferopol.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Skopje.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Sofia.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Stockholm.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Tallinn.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Tirane.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Tiraspol.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Uzhgorod.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Vaduz.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Vatican.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Vienna.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Vilnius.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Volgograd.generic.long=\u4F0F\u723E\u52A0\u683C\u52D2\u6642\u9593
+Europe/Warsaw.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Zagreb.generic.long=\u4E2D\u6B50\u6642\u9593
+Europe/Zaporozhye.generic.long=\u6771\u6B50\u6642\u9593
+Europe/Zurich.generic.long=\u4E2D\u6B50\u6642\u9593
+GB-Eire.generic.long=\u82F1\u570B\u6642\u9593
+GB.generic.long=\u82F1\u570B\u6642\u9593
+GMT.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Greenwich.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+HST.generic.long=\u590f\u5a01\u5937\u6642\u9593
+Hongkong.generic.long=\u9999\u6E2F\u6642\u9593
+IET.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+IST.generic.long=\u5370\u5EA6\u6642\u9593
+Iceland.generic.long=\u683C\u6797\u5A01\u6CBB\u6642\u9593
+Indian/Antananarivo.generic.long=\u6771\u975E\u6642\u9593
+Indian/Chagos.generic.long=\u82F1\u5C6C\u5370\u5EA6\u6D0B\u5730\u5340
+Indian/Christmas.generic.long=\u8056\u8A95\u5CF6\u6642\u9593
+Indian/Cocos.generic.long=\u53EF\u53EF\u65AF\u7FA4\u5CF6\u6642\u9593
+Indian/Comoro.generic.long=\u6771\u975E\u6642\u9593
+Indian/Kerguelen.generic.long=\u6CD5\u570B\u5357\u534A\u7403\u53CA\u5357\u6975\u5C6C\u5730\u6642\u9593
+Indian/Mahe.generic.long=\u585E\u5E2D\u723E\u7FA4\u5CF6\u6642\u9593
+Indian/Maldives.generic.long=\u99AC\u723E\u5730\u592B\u6642\u9593
+Indian/Mauritius.generic.long=\u6469\u91CC\u897F\u65AF\u6642\u9593
+Indian/Mayotte.generic.long=\u6771\u975E\u6642\u9593
+Indian/Reunion.generic.long=\u7559\u5C3C\u65FA\u5CF6\u6642\u9593
+Iran.generic.long=\u4F0A\u6717\u6642\u9593
+Israel.generic.long=\u4EE5\u8272\u5217\u6642\u9593
+JST.generic.long=\u65E5\u672C\u6642\u9593
+Jamaica.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+Japan.generic.long=\u65E5\u672C\u6642\u9593
+Kwajalein.generic.long=\u99AC\u7D39\u723E\u7FA4\u5CF6\u6642\u9593
+Libya.generic.long=\u6771\u6b50\u6642\u9593
+MET.generic.long=MET
+MIT.generic.long=\u897F\u85A9\u6469\u4E9E\u6642\u9593
+MST.generic.long=\u7f8e\u570b\u5c71\u5340\u6642\u9593
+MST7MDT.generic.long=\u7f8e\u570b\u5c71\u5340\u6642\u9593
+Mexico/BajaNorte.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+Mexico/BajaSur.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+Mexico/General.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+NET.generic.long=\u4E9E\u7F8E\u5C3C\u4E9E\u6642\u9593
+NST.generic.long=\u7D10\u897F\u862D\u6642\u9593
+NZ-CHAT.generic.long=\u67E5\u5766\u6642\u9593
+NZ.generic.long=\u7D10\u897F\u862D\u6642\u9593
+Navajo.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+PLT.generic.long=\u5DF4\u57FA\u65AF\u5766\u6642\u9593
+PNT.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+PRC.generic.long=\u4E2D\u570B\u6642\u9593
+PRT.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+PST.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+PST8PDT.generic.long=\u592a\u5e73\u6d0b\u6642\u9593
+Pacific/Apia.generic.long=\u897F\u85A9\u6469\u4E9E\u6642\u9593
+Pacific/Auckland.generic.long=\u7D10\u897F\u862D\u6642\u9593
+Pacific/Chatham.generic.long=\u67E5\u5766\u6642\u9593
+Pacific/Chuuk.daylight.long=\u695A\u514B\u590F\u4EE4\u6642\u9593
+Pacific/Chuuk.generic.long=\u695A\u514B\u6642\u9593
+Pacific/Chuuk.standard.long=\u695A\u514B\u6642\u9593
+Pacific/Easter.generic.long=\u5FA9\u6D3B\u5CF6\u6642\u9593
+Pacific/Efate.generic.long=\u74E6\u5974\u963F\u5716\u6642\u9593
+Pacific/Enderbury.generic.long=\u83F2\u5C3C\u514B\u65AF\u7FA4\u5CF6\u6642\u9593
+Pacific/Fakaofo.generic.long=\u6258\u514B\u52DE\u7FA4\u5CF6\u6642\u9593
+Pacific/Fiji.generic.long=\u6590\u6FDF\u6642\u9593
+Pacific/Funafuti.generic.long=\u5410\u74E6\u9B6F\u6642\u9593
+Pacific/Galapagos.generic.long=\u52A0\u62C9\u5DF4\u54E5\u6642\u9593
+Pacific/Gambier.generic.long=\u7518\u6BD4\u723E\u6642\u9593
+Pacific/Guadalcanal.generic.long=\u6240\u7F85\u9580\u7FA4\u5CF6\u6642\u9593
+Pacific/Guam.generic.long=\u67E5\u83AB\u7F85\u6642\u9593
+Pacific/Honolulu.generic.long=\u590F\u5A01\u5937\u6642\u9593
+Pacific/Johnston.generic.long=\u590F\u5A01\u5937\u6642\u9593
+Pacific/Kiritimati.generic.long=\u5217\u5DBC\u7FA4\u5CF6\u6642\u9593
+Pacific/Kosrae.generic.long=Kosrae \u6642\u9593
+Pacific/Kwajalein.generic.long=\u99AC\u7D39\u723E\u7FA4\u5CF6\u6642\u9593
+Pacific/Majuro.generic.long=\u99AC\u7D39\u723E\u7FA4\u5CF6\u6642\u9593
+Pacific/Marquesas.generic.long=\u99AC\u514B\u85A9\u65AF\u6642\u9593
+Pacific/Midway.generic.long=\u85A9\u6469\u4E9E\u6642\u9593
+Pacific/Nauru.generic.long=\u8AFE\u9B6F\u6642\u9593
+Pacific/Niue.generic.long=\u7D10\u5A01\u5CF6\u6642\u9593
+Pacific/Norfolk.generic.long=\u8AFE\u798F\u514B\u6642\u9593
+Pacific/Noumea.generic.long=\u65B0\u52A0\u52D2\u591A\u5C3C\u4E9E\u6642\u9593
+Pacific/Pago_Pago.generic.long=\u85A9\u6469\u4E9E\u6642\u9593
+Pacific/Palau.generic.long=\u5E1B\u7409\u6642\u9593
+Pacific/Pitcairn.generic.long=\u76AE\u7279\u5EB7\u6642\u9593
+Pacific/Pohnpei.daylight.long=\u6CE2\u7D0D\u4F69\u590F\u4EE4\u6642\u9593
+Pacific/Pohnpei.generic.long=\u6CE2\u7D0D\u4F69\u5CF6\u6642\u9593
+Pacific/Pohnpei.standard.long=\u6CE2\u7D0D\u4F69\u6642\u9593
+Pacific/Ponape.daylight.long=\u6CE2\u7D0D\u4F69\u590F\u4EE4\u6642\u9593
+Pacific/Ponape.generic.long=\u6CE2\u7D0D\u4F69\u5CF6\u6642\u9593
+Pacific/Ponape.standard.long=\u6CE2\u7D0D\u4F69\u6642\u9593
+Pacific/Port_Moresby.generic.long=\u5DF4\u5E03\u4E9E\u65B0\u5E7E\u5167\u4E9E\u6642\u9593
+Pacific/Rarotonga.generic.long=\u5EAB\u514B\u7FA4\u5CF6\u6642\u9593
+Pacific/Saipan.generic.long=\u67E5\u83AB\u7F85\u6642\u9593
+Pacific/Samoa.generic.long=\u85A9\u6469\u4E9E\u6642\u9593
+Pacific/Tahiti.generic.long=\u5927\u6EAA\u5730\u6642\u9593
+Pacific/Tarawa.generic.long=\u5409\u4F2F\u7279\u7FA4\u5CF6\u6642\u9593
+Pacific/Tongatapu.generic.long=\u6771\u52A0\u6642\u9593
+Pacific/Truk.daylight.long=\u695A\u514B\u590F\u4EE4\u6642\u9593
+Pacific/Truk.generic.long=\u695A\u514B\u6642\u9593
+Pacific/Truk.standard.long=\u695A\u514B\u6642\u9593
+Pacific/Wake.generic.long=\u5A01\u514B\u6642\u9593
+Pacific/Wallis.generic.long=\u74E6\u5229\u65AF\u53CA\u798F\u675C\u7D0D\u7FA4\u5CF6\u6642\u9593
+Pacific/Yap.daylight.long=\u695A\u514B\u590F\u4EE4\u6642\u9593
+Pacific/Yap.generic.long=\u695A\u514B\u6642\u9593
+Pacific/Yap.standard.long=\u695A\u514B\u6642\u9593
+Poland.generic.long=\u4E2D\u6B50\u6642\u9593
+Portugal.generic.long=\u897F\u6B50\u6642\u9593
+ROK.generic.long=\u97D3\u570B\u6642\u9593
+SST.generic.long=\u6240\u7F85\u9580\u7FA4\u5CF6\u6642\u9593
+Singapore.generic.long=\u65B0\u52A0\u5761\u6642\u9593
+SystemV/AST4.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+SystemV/AST4ADT.generic.long=\u5927\u897F\u6D0B\u6642\u9593
+SystemV/CST6.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+SystemV/CST6CDT.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+SystemV/EST5.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+SystemV/EST5EDT.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+SystemV/HST10.generic.long=\u590F\u5A01\u5937\u6642\u9593
+SystemV/MST7.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+SystemV/MST7MDT.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+SystemV/PST8.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+SystemV/PST8PDT.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+SystemV/YST9.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593
+SystemV/YST9YDT.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593
+Turkey.generic.long=\u6771\u6B50\u6642\u9593
+UCT.generic.long=\u5354\u8ABF\u4E16\u754C\u6642\u9593
+US/Alaska.generic.long=\u963F\u62C9\u65AF\u52A0\u6642\u9593
+US/Aleutian.generic.long=\u590F\u5A01\u5937-\u963F\u7559\u7533\u6642\u9593
+US/Arizona.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+US/Central.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+US/East-Indiana.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+US/Eastern.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+US/Hawaii.generic.long=\u590F\u5A01\u5937\u6642\u9593
+US/Indiana-Starke.generic.long=\u7F8E\u570B\u4E2D\u90E8\u6642\u9593
+US/Michigan.generic.long=\u7F8E\u570B\u6771\u90E8\u6642\u9593
+US/Mountain.generic.long=\u7F8E\u570B\u5C71\u5340\u6642\u9593
+US/Pacific-New.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+US/Pacific.generic.long=\u592A\u5E73\u6D0B\u6642\u9593
+US/Samoa.generic.long=\u85A9\u6469\u4E9E\u6642\u9593
+UTC.generic.long=\u5354\u8ABF\u4E16\u754C\u6642\u9593
+Universal.generic.long=\u5354\u8ABF\u4E16\u754C\u6642\u9593
+VST.generic.long=\u5370\u5EA6\u652F\u90A3\u6642\u9593
+W-SU.generic.long=\u83AB\u65AF\u79D1\u6642\u9593
+WET.generic.long=\u897f\u6b50\u6642\u9593
+Zulu.generic.long=\u5354\u8ABF\u4E16\u754C\u6642\u9593
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/util/resources/TimeZone/TimeZoneNames/TimeZoneNames_zh_TW_short.properties Wed Jul 05 19:27:58 2017 +0200
@@ -0,0 +1,1743 @@
+ACT.daylight.short=CST
+ACT.generic.short=CT
+ACT.standard.short=CST
+AET.daylight.short=EST
+AET.generic.short=ET
+AET.standard.short=EST
+Africa/Abidjan.daylight.short=GMT
+Africa/Abidjan.generic.short=GMT
+Africa/Abidjan.standard.short=GMT
+Africa/Accra.daylight.short=GHST
+Africa/Accra.generic.short=GMT
+Africa/Accra.standard.short=GMT
+Africa/Addis_Ababa.daylight.short=EAST
+Africa/Addis_Ababa.generic.short=EAT
+Africa/Addis_Ababa.standard.short=EAT
+Africa/Algiers.daylight.short=CEST
+Africa/Algiers.generic.short=CET
+Africa/Algiers.standard.short=CET
+Africa/Asmara.daylight.short=EAST
+Africa/Asmara.generic.short=EAT
+Africa/Asmara.standard.short=EAT
+Africa/Asmera.daylight.short=EAST
+Africa/Asmera.generic.short=EAT
+Africa/Asmera.standard.short=EAT
+Africa/Bamako.daylight.short=GMT
+Africa/Bamako.generic.short=GMT
+Africa/Bamako.standard.short=GMT
+Africa/Bangui.daylight.short=WAST
+Africa/Bangui.generic.short=WAT
+Africa/Bangui.standard.short=WAT
+Africa/Banjul.daylight.short=GMT
+Africa/Banjul.generic.short=GMT
+Africa/Banjul.standard.short=GMT
+Africa/Bissau.daylight.short=GMT
+Africa/Bissau.generic.short=GMT
+Africa/Bissau.standard.short=GMT
+Africa/Blantyre.daylight.short=CAST
+Africa/Blantyre.generic.short=CAT
+Africa/Blantyre.standard.short=CAT
+Africa/Brazzaville.daylight.short=WAST
+Africa/Brazzaville.generic.short=WAT
+Africa/Brazzaville.standard.short=WAT
+Africa/Bujumbura.daylight.short=CAST
+Africa/Bujumbura.generic.short=CAT
+Africa/Bujumbura.standard.short=CAT
+Africa/Cairo.daylight.short=EEST
+Africa/Cairo.generic.short=EET
+Africa/Cairo.standard.short=EET
+Africa/Casablanca.daylight.short=WEST
+Africa/Casablanca.generic.short=WET
+Africa/Casablanca.standard.short=WET
+Africa/Ceuta.daylight.short=CEST
+Africa/Ceuta.generic.short=CET
+Africa/Ceuta.standard.short=CET
+Africa/Conakry.daylight.short=GMT
+Africa/Conakry.generic.short=GMT
+Africa/Conakry.standard.short=GMT
+Africa/Dakar.daylight.short=GMT
+Africa/Dakar.generic.short=GMT
+Africa/Dakar.standard.short=GMT
+Africa/Dar_es_Salaam.daylight.short=EAST
+Africa/Dar_es_Salaam.generic.short=EAT
+Africa/Dar_es_Salaam.standard.short=EAT
+Africa/Djibouti.daylight.short=EAST
+Africa/Djibouti.generic.short=EAT
+Africa/Djibouti.standard.short=EAT
+Africa/Douala.daylight.short=WAST
+Africa/Douala.generic.short=WAT
+Africa/Douala.standard.short=WAT
+Africa/El_Aaiun.daylight.short=WEST
+Africa/El_Aaiun.generic.short=WET
+Africa/El_Aaiun.standard.short=WET
+Africa/Freetown.daylight.short=SLST
+Africa/Freetown.generic.short=SLT
+Africa/Freetown.standard.short=GMT
+Africa/Gaborone.daylight.short=CAST
+Africa/Gaborone.generic.short=CAT
+Africa/Gaborone.standard.short=CAT
+Africa/Harare.daylight.short=CAST
+Africa/Harare.generic.short=CAT
+Africa/Harare.standard.short=CAT
+Africa/Johannesburg.daylight.short=SAST
+Africa/Johannesburg.generic.short=SAT
+Africa/Johannesburg.standard.short=SAST
+Africa/Juba.daylight.short=EAST
+Africa/Juba.generic.short=EAT
+Africa/Juba.standard.short=EAT
+Africa/Kampala.daylight.short=EAST
+Africa/Kampala.generic.short=EAT
+Africa/Kampala.standard.short=EAT
+Africa/Khartoum.daylight.short=EAST
+Africa/Khartoum.generic.short=EAT
+Africa/Khartoum.standard.short=EAT
+Africa/Kigali.daylight.short=CAST
+Africa/Kigali.generic.short=CAT
+Africa/Kigali.standard.short=CAT
+Africa/Kinshasa.daylight.short=WAST
+Africa/Kinshasa.generic.short=WAT
+Africa/Kinshasa.standard.short=WAT
+Africa/Lagos.daylight.short=WAST
+Africa/Lagos.generic.short=WAT
+Africa/Lagos.standard.short=WAT
+Africa/Libreville.daylight.short=WAST
+Africa/Libreville.generic.short=WAT
+Africa/Libreville.standard.short=WAT
+Africa/Lome.daylight.short=GMT
+Africa/Lome.generic.short=GMT
+Africa/Lome.standard.short=GMT
+Africa/Luanda.daylight.short=WAST
+Africa/Luanda.generic.short=WAT
+Africa/Luanda.standard.short=WAT
+Africa/Lubumbashi.daylight.short=CAST
+Africa/Lubumbashi.generic.short=CAT
+Africa/Lubumbashi.standard.short=CAT
+Africa/Lusaka.daylight.short=CAST
+Africa/Lusaka.generic.short=CAT
+Africa/Lusaka.standard.short=CAT
+Africa/Malabo.daylight.short=WAST
+Africa/Malabo.generic.short=WAT
+Africa/Malabo.standard.short=WAT
+Africa/Maputo.daylight.short=CAST
+Africa/Maputo.generic.short=CAT
+Africa/Maputo.standard.short=CAT
+Africa/Maseru.daylight.short=SAST
+Africa/Maseru.generic.short=SAT
+Africa/Maseru.standard.short=SAST
+Africa/Mbabane.daylight.short=SAST
+Africa/Mbabane.generic.short=SAT
+Africa/Mbabane.standard.short=SAST
+Africa/Mogadishu.daylight.short=EAST
+Africa/Mogadishu.generic.short=EAT
+Africa/Mogadishu.standard.short=EAT
+Africa/Monrovia.daylight.short=GMT
+Africa/Monrovia.generic.short=GMT
+Africa/Monrovia.standard.short=GMT
+Africa/Nairobi.daylight.short=EAST
+Africa/Nairobi.generic.short=EAT
+Africa/Nairobi.standard.short=EAT
+Africa/Ndjamena.daylight.short=WAST
+Africa/Ndjamena.generic.short=WAT
+Africa/Ndjamena.standard.short=WAT
+Africa/Niamey.daylight.short=WAST
+Africa/Niamey.generic.short=WAT
+Africa/Niamey.standard.short=WAT
+Africa/Nouakchott.daylight.short=GMT
+Africa/Nouakchott.generic.short=GMT
+Africa/Nouakchott.standard.short=GMT
+Africa/Ouagadougou.daylight.short=GMT
+Africa/Ouagadougou.generic.short=GMT
+Africa/Ouagadougou.standard.short=GMT
+Africa/Porto-Novo.daylight.short=WAST
+Africa/Porto-Novo.generic.short=WAT
+Africa/Porto-Novo.standard.short=WAT
+Africa/Sao_Tome.daylight.short=GMT
+Africa/Sao_Tome.generic.short=GMT
+Africa/Sao_Tome.standard.short=GMT
+Africa/Timbuktu.daylight.short=GMT
+Africa/Timbuktu.generic.short=GMT
+Africa/Timbuktu.standard.short=GMT
+Africa/Tripoli.daylight.short=EEST
+Africa/Tripoli.generic.short=EET
+Africa/Tripoli.standard.short=EET
+Africa/Tunis.daylight.short=CEST
+Africa/Tunis.generic.short=CET
+Africa/Tunis.standard.short=CET
+Africa/Windhoek.daylight.short=WAST
+Africa/Windhoek.generic.short=WAT
+Africa/Windhoek.standard.short=WAT
+AGT.daylight.short=ARST
+AGT.generic.short=ART
+AGT.standard.short=ART
+America/Adak.daylight.short=HADT
+America/Adak.generic.short=HAT
+America/Adak.standard.short=HAST
+America/Anchorage.daylight.short=AKDT
+America/Anchorage.generic.short=AKT
+America/Anchorage.standard.short=AKST
+America/Anguilla.daylight.short=ADT
+America/Anguilla.generic.short=AT
+America/Anguilla.standard.short=AST
+America/Antigua.daylight.short=ADT
+America/Antigua.generic.short=AT
+America/Antigua.standard.short=AST
+America/Araguaina.daylight.short=BRST
+America/Araguaina.generic.short=BRT
+America/Araguaina.standard.short=BRT
+America/Argentina/Buenos_Aires.daylight.short=ARST
+America/Argentina/Buenos_Aires.generic.short=ART
+America/Argentina/Buenos_Aires.standard.short=ART
+America/Argentina/Catamarca.daylight.short=ARST
+America/Argentina/Catamarca.generic.short=ART
+America/Argentina/Catamarca.standard.short=ART
+America/Argentina/ComodRivadavia.daylight.short=ARST
+America/Argentina/ComodRivadavia.generic.short=ART
+America/Argentina/ComodRivadavia.standard.short=ART
+America/Argentina/Cordoba.daylight.short=ARST
+America/Argentina/Cordoba.generic.short=ART
+America/Argentina/Cordoba.standard.short=ART
+America/Argentina/Jujuy.daylight.short=ARST
+America/Argentina/Jujuy.generic.short=ART
+America/Argentina/Jujuy.standard.short=ART
+America/Argentina/La_Rioja.daylight.short=ARST
+America/Argentina/La_Rioja.generic.short=ART
+America/Argentina/La_Rioja.standard.short=ART
+America/Argentina/Mendoza.daylight.short=ARST
+America/Argentina/Mendoza.generic.short=ART
+America/Argentina/Mendoza.standard.short=ART
+America/Argentina/Rio_Gallegos.daylight.short=ARST
+America/Argentina/Rio_Gallegos.generic.short=ART
+America/Argentina/Rio_Gallegos.standard.short=ART
+America/Argentina/Salta.daylight.short=ARST
+America/Argentina/Salta.generic.short=ART
+America/Argentina/Salta.standard.short=ART
+America/Argentina/San_Juan.daylight.short=ARST
+America/Argentina/San_Juan.generic.short=ART
+America/Argentina/San_Juan.standard.short=ART
+America/Argentina/San_Luis.daylight.short=ARST
+America/Argentina/San_Luis.generic.short=ART
+America/Argentina/San_Luis.standard.short=ART
+America/Argentina/Tucuman.daylight.short=ARST
+America/Argentina/Tucuman.generic.short=ART
+America/Argentina/Tucuman.standard.short=ART
+America/Argentina/Ushuaia.daylight.short=ARST
+America/Argentina/Ushuaia.generic.short=ART
+America/Argentina/Ushuaia.standard.short=ART
+America/Aruba.daylight.short=ADT
+America/Aruba.generic.short=AT
+America/Aruba.standard.short=AST
+America/Asuncion.daylight.short=PYST
+America/Asuncion.generic.short=PYT
+America/Asuncion.standard.short=PYT
+America/Atikokan.daylight.short=EDT
+America/Atikokan.generic.short=ET
+America/Atikokan.standard.short=EST
+America/Atka.daylight.short=HADT
+America/Atka.generic.short=HAT
+America/Atka.standard.short=HAST
+America/Bahia_Banderas.daylight.short=CDT
+America/Bahia_Banderas.generic.short=CT
+America/Bahia_Banderas.standard.short=CST
+America/Bahia.daylight.short=BRST
+America/Bahia.generic.short=BRT
+America/Bahia.standard.short=BRT
+America/Barbados.daylight.short=ADT
+America/Barbados.generic.short=AT
+America/Barbados.standard.short=AST
+America/Belem.daylight.short=BRST
+America/Belem.generic.short=BRT
+America/Belem.standard.short=BRT
+America/Belize.daylight.short=CDT
+America/Belize.generic.short=CT
+America/Belize.standard.short=CST
+America/Blanc-Sablon.daylight.short=ADT
+America/Blanc-Sablon.generic.short=AT
+America/Blanc-Sablon.standard.short=AST
+America/Boa_Vista.daylight.short=AMST
+America/Boa_Vista.generic.short=AMT
+America/Boa_Vista.standard.short=AMT
+America/Bogota.daylight.short=COST
+America/Bogota.generic.short=COT
+America/Bogota.standard.short=COT
+America/Boise.daylight.short=MDT
+America/Boise.generic.short=MT
+America/Boise.standard.short=MST
+America/Buenos_Aires.daylight.short=ARST
+America/Buenos_Aires.generic.short=ART
+America/Buenos_Aires.standard.short=ART
+America/Cambridge_Bay.daylight.short=MDT
+America/Cambridge_Bay.generic.short=MT
+America/Cambridge_Bay.standard.short=MST
+America/Campo_Grande.daylight.short=AMST
+America/Campo_Grande.generic.short=AMT
+America/Campo_Grande.standard.short=AMT
+America/Cancun.daylight.short=CDT
+America/Cancun.generic.short=CT
+America/Cancun.standard.short=CST
+America/Caracas.daylight.short=VEST
+America/Caracas.generic.short=VET
+America/Caracas.standard.short=VET
+America/Catamarca.daylight.short=ARST
+America/Catamarca.generic.short=ART
+America/Catamarca.standard.short=ART
+America/Cayenne.daylight.short=GFST
+America/Cayenne.generic.short=GFT
+America/Cayenne.standard.short=GFT
+America/Cayman.daylight.short=EDT
+America/Cayman.generic.short=ET
+America/Cayman.standard.short=EST
+America/Chicago.daylight.short=CDT
+America/Chicago.generic.short=CT
+America/Chicago.standard.short=CST
+America/Chihuahua.daylight.short=MDT
+America/Chihuahua.generic.short=MT
+America/Chihuahua.standard.short=MST
+America/Coral_Harbour.daylight.short=EDT
+America/Coral_Harbour.generic.short=ET
+America/Coral_Harbour.standard.short=EST
+America/Cordoba.daylight.short=ARST
+America/Cordoba.generic.short=ART
+America/Cordoba.standard.short=ART
+America/Costa_Rica.daylight.short=CDT
+America/Costa_Rica.generic.short=CT
+America/Costa_Rica.standard.short=CST
+America/Creston.daylight.short=MDT
+America/Creston.generic.short=MT
+America/Creston.standard.short=MST
+America/Cuiaba.daylight.short=AMST
+America/Cuiaba.generic.short=AMT
+America/Cuiaba.standard.short=AMT
+America/Curacao.daylight.short=ADT
+America/Curacao.generic.short=AT
+America/Curacao.standard.short=AST
+America/Danmarkshavn.daylight.short=GMT
+America/Danmarkshavn.generic.short=GMT
+America/Danmarkshavn.standard.short=GMT
+America/Dawson_Creek.daylight.short=MDT
+America/Dawson_Creek.generic.short=MT
+America/Dawson_Creek.standard.short=MST
+America/Dawson.daylight.short=PDT
+America/Dawson.generic.short=PT
+America/Dawson.standard.short=PST
+America/Denver.daylight.short=MDT
+America/Denver.generic.short=MT
+America/Denver.standard.short=MST
+America/Detroit.daylight.short=EDT
+America/Detroit.generic.short=ET
+America/Detroit.standard.short=EST
+America/Dominica.daylight.short=ADT
+America/Dominica.generic.short=AT
+America/Dominica.standard.short=AST
+America/Edmonton.daylight.short=MDT
+America/Edmonton.generic.short=MT
+America/Edmonton.standard.short=MST
+America/Eirunepe.daylight.short=ACST
+America/Eirunepe.generic.short=ACT
+America/Eirunepe.standard.short=ACT
+America/El_Salvador.daylight.short=CDT
+America/El_Salvador.generic.short=CT
+America/El_Salvador.standard.short=CST
+America/Ensenada.daylight.short=PDT
+America/Ensenada.generic.short=PT
+America/Ensenada.standard.short=PST
+America/Fortaleza.daylight.short=BRST
+America/Fortaleza.generic.short=BRT
+America/Fortaleza.standard.short=BRT
+America/Fort_Wayne.daylight.short=EDT
+America/Fort_Wayne.generic.short=ET
+America/Fort_Wayne.standard.short=EST
+America/Glace_Bay.daylight.short=ADT
+America/Glace_Bay.generic.short=AT
+America/Glace_Bay.standard.short=AST
+America/Godthab.daylight.short=WGST
+America/Godthab.generic.short=WGT
+America/Godthab.standard.short=WGT
+America/Goose_Bay.daylight.short=ADT
+America/Goose_Bay.generic.short=AT
+America/Goose_Bay.standard.short=AST
+America/Grand_Turk.daylight.short=EDT
+America/Grand_Turk.generic.short=ET
+America/Grand_Turk.standard.short=EST
+America/Grenada.daylight.short=ADT
+America/Grenada.generic.short=AT
+America/Grenada.standard.short=AST
+America/Guadeloupe.daylight.short=ADT
+America/Guadeloupe.generic.short=AT
+America/Guadeloupe.standard.short=AST
+America/Guatemala.daylight.short=CDT
+America/Guatemala.generic.short=CT
+America/Guatemala.standard.short=CST
+America/Guayaquil.daylight.short=ECST
+America/Guayaquil.generic.short=ECT
+America/Guayaquil.standard.short=ECT
+America/Guyana.daylight.short=GYST
+America/Guyana.generic.short=GYT
+America/Guyana.standard.short=GYT
+America/Halifax.daylight.short=ADT
+America/Halifax.generic.short=AT
+America/Halifax.standard.short=AST
+America/Havana.daylight.short=CDT
+America/Havana.generic.short=CT
+America/Havana.standard.short=CST
+America/Hermosillo.daylight.short=MDT
+America/Hermosillo.generic.short=MT
+America/Hermosillo.standard.short=MST
+America/Indiana/Indianapolis.daylight.short=EDT
+America/Indiana/Indianapolis.generic.short=ET
+America/Indiana/Indianapolis.standard.short=EST
+America/Indiana/Knox.daylight.short=CDT
+America/Indiana/Knox.generic.short=CT
+America/Indiana/Knox.standard.short=CST
+America/Indiana/Marengo.daylight.short=EDT
+America/Indiana/Marengo.generic.short=ET
+America/Indiana/Marengo.standard.short=EST
+America/Indiana/Petersburg.daylight.short=EDT
+America/Indiana/Petersburg.generic.short=ET
+America/Indiana/Petersburg.standard.short=EST
+America/Indianapolis.daylight.short=EDT
+America/Indianapolis.generic.short=ET
+America/Indianapolis.standard.short=EST
+America/Indiana/Tell_City.daylight.short=CDT
+America/Indiana/Tell_City.generic.short=CT
+America/Indiana/Tell_City.standard.short=CST
+America/Indiana/Vevay.daylight.short=EDT
+America/Indiana/Vevay.generic.short=ET
+America/Indiana/Vevay.standard.short=EST
+America/Indiana/Vincennes.daylight.short=EDT
+America/Indiana/Vincennes.generic.short=ET
+America/Indiana/Vincennes.standard.short=EST
+America/Indiana/Winamac.daylight.short=EDT
+America/Indiana/Winamac.generic.short=ET
+America/Indiana/Winamac.standard.short=EST
+America/Inuvik.daylight.short=MDT
+America/Inuvik.generic.short=MT
+America/Inuvik.standard.short=MST
+America/Iqaluit.daylight.short=EDT
+America/Iqaluit.generic.short=ET
+America/Iqaluit.standard.short=EST
+America/Jamaica.daylight.short=EDT
+America/Jamaica.generic.short=ET
+America/Jamaica.standard.short=EST
+America/Jujuy.daylight.short=ARST
+America/Jujuy.generic.short=ART
+America/Jujuy.standard.short=ART
+America/Juneau.daylight.short=AKDT
+America/Juneau.generic.short=AKT
+America/Juneau.standard.short=AKST
+America/Kentucky/Louisville.daylight.short=EDT
+America/Kentucky/Louisville.generic.short=ET
+America/Kentucky/Louisville.standard.short=EST
+America/Kentucky/Monticello.daylight.short=EDT
+America/Kentucky/Monticello.generic.short=ET
+America/Kentucky/Monticello.standard.short=EST
+America/Knox_IN.daylight.short=CDT
+America/Knox_IN.generic.short=CT
+America/Knox_IN.standard.short=CST
+America/Kralendijk.daylight.short=ADT
+America/Kralendijk.generic.short=AT
+America/Kralendijk.standard.short=AST
+America/La_Paz.daylight.short=BOST
+America/La_Paz.generic.short=BOT
+America/La_Paz.standard.short=BOT
+America/Lima.daylight.short=PEST
+America/Lima.generic.short=PET
+America/Lima.standard.short=PET
+America/Los_Angeles.daylight.short=PDT
+America/Los_Angeles.generic.short=PT
+America/Los_Angeles.standard.short=PST
+America/Louisville.daylight.short=EDT
+America/Louisville.generic.short=ET
+America/Louisville.standard.short=EST
+America/Lower_Princes.daylight.short=ADT
+America/Lower_Princes.generic.short=AT
+America/Lower_Princes.standard.short=AST
+America/Maceio.daylight.short=BRST
+America/Maceio.generic.short=BRT
+America/Maceio.standard.short=BRT
+America/Managua.daylight.short=CDT
+America/Managua.generic.short=CT
+America/Managua.standard.short=CST
+America/Manaus.daylight.short=AMST
+America/Manaus.generic.short=AMT
+America/Manaus.standard.short=AMT
+America/Marigot.daylight.short=ADT
+America/Marigot.generic.short=AT
+America/Marigot.standard.short=AST
+America/Martinique.daylight.short=ADT
+America/Martinique.generic.short=AT
+America/Martinique.standard.short=AST
+America/Matamoros.daylight.short=CDT
+America/Matamoros.generic.short=CT
+America/Matamoros.standard.short=CST
+America/Mazatlan.daylight.short=MDT
+America/Mazatlan.generic.short=MT
+America/Mazatlan.standard.short=MST
+America/Mendoza.daylight.short=ARST
+America/Mendoza.generic.short=ART
+America/Mendoza.standard.short=ART
+America/Menominee.daylight.short=CDT
+America/Menominee.generic.short=CT
+America/Menominee.standard.short=CST
+America/Merida.daylight.short=CDT
+America/Merida.generic.short=CT
+America/Merida.standard.short=CST
+America/Metlakatla.daylight.short=MeDT
+America/Metlakatla.generic.short=MeT
+America/Metlakatla.standard.short=MeST
+America/Mexico_City.daylight.short=CDT
+America/Mexico_City.generic.short=CT
+America/Mexico_City.standard.short=CST
+America/Miquelon.daylight.short=PMDT
+America/Miquelon.generic.short=PMT
+America/Miquelon.standard.short=PMST
+America/Moncton.daylight.short=ADT
+America/Moncton.generic.short=AT
+America/Moncton.standard.short=AST
+America/Monterrey.daylight.short=CDT
+America/Monterrey.generic.short=CT
+America/Monterrey.standard.short=CST
+America/Montevideo.daylight.short=UYST
+America/Montevideo.generic.short=UYT
+America/Montevideo.standard.short=UYT
+America/Montreal.daylight.short=EDT
+America/Montreal.generic.short=ET
+America/Montreal.standard.short=EST
+America/Montserrat.daylight.short=ADT
+America/Montserrat.generic.short=AT
+America/Montserrat.standard.short=AST
+America/Nassau.daylight.short=EDT
+America/Nassau.generic.short=ET
+America/Nassau.standard.short=EST
+America/New_York.daylight.short=EDT
+America/New_York.generic.short=ET
+America/New_York.standard.short=EST
+America/Nipigon.daylight.short=EDT
+America/Nipigon.generic.short=ET
+America/Nipigon.standard.short=EST
+America/Nome.daylight.short=AKDT
+America/Nome.generic.short=AKT
+America/Nome.standard.short=AKST
+America/Noronha.daylight.short=FNST
+America/Noronha.generic.short=FNT
+America/Noronha.standard.short=FNT
+America/North_Dakota/Beulah.daylight.short=CDT
+America/North_Dakota/Beulah.generic.short=CT
+America/North_Dakota/Beulah.standard.short=CST
+America/North_Dakota/Center.daylight.short=CDT
+America/North_Dakota/Center.generic.short=CT
+America/North_Dakota/Center.standard.short=CST
+America/North_Dakota/New_Salem.daylight.short=CDT
+America/North_Dakota/New_Salem.generic.short=CT
+America/North_Dakota/New_Salem.standard.short=CST
+America/Ojinaga.daylight.short=MDT
+America/Ojinaga.generic.short=MT
+America/Ojinaga.standard.short=MST
+America/Panama.daylight.short=EDT
+America/Panama.generic.short=ET
+America/Panama.standard.short=EST
+America/Pangnirtung.daylight.short=EDT
+America/Pangnirtung.generic.short=ET
+America/Pangnirtung.standard.short=EST
+America/Paramaribo.daylight.short=SRST
+America/Paramaribo.generic.short=SRT
+America/Paramaribo.standard.short=SRT
+America/Phoenix.daylight.short=MDT
+America/Phoenix.generic.short=MT
+America/Phoenix.standard.short=MST
+America/Port-au-Prince.daylight.short=EDT
+America/Port-au-Prince.generic.short=ET
+America/Port-au-Prince.standard.short=EST
+America/Porto_Acre.daylight.short=ACST
+America/Porto_Acre.generic.short=ACT
+America/Porto_Acre.standard.short=ACT
+America/Port_of_Spain.daylight.short=ADT
+America/Port_of_Spain.generic.short=AT
+America/Port_of_Spain.standard.short=AST
+America/Porto_Velho.daylight.short=AMST
+America/Porto_Velho.generic.short=AMT
+America/Porto_Velho.standard.short=AMT
+America/Puerto_Rico.daylight.short=ADT
+America/Puerto_Rico.generic.short=AT
+America/Puerto_Rico.standard.short=AST
+America/Rainy_River.daylight.short=CDT
+America/Rainy_River.generic.short=CT
+America/Rainy_River.standard.short=CST
+America/Rankin_Inlet.daylight.short=CDT
+America/Rankin_Inlet.generic.short=CT
+America/Rankin_Inlet.standard.short=CST
+America/Recife.daylight.short=BRST
+America/Recife.generic.short=BRT
+America/Recife.standard.short=BRT
+America/Regina.daylight.short=CDT
+America/Regina.generic.short=CT
+America/Regina.standard.short=CST
+America/Resolute.daylight.short=CDT
+America/Resolute.generic.short=CT
+America/Resolute.standard.short=CST
+America/Rio_Branco.daylight.short=ACST
+America/Rio_Branco.generic.short=ACT
+America/Rio_Branco.standard.short=ACT
+America/Rosario.daylight.short=ARST
+America/Rosario.generic.short=ART
+America/Rosario.standard.short=ART
+America/Santa_Isabel.daylight.short=PDT
+America/Santa_Isabel.generic.short=PT
+America/Santa_Isabel.standard.short=PST
+America/Santarem.daylight.short=BRST
+America/Santarem.generic.short=BRT
+America/Santarem.standard.short=BRT
+America/Santiago.daylight.short=CLST
+America/Santiago.generic.short=CLT
+America/Santiago.standard.short=CLT
+America/Santo_Domingo.daylight.short=ADT
+America/Santo_Domingo.generic.short=AT
+America/Santo_Domingo.standard.short=AST
+America/Sao_Paulo.daylight.short=BRST
+America/Sao_Paulo.generic.short=BRT
+America/Sao_Paulo.standard.short=BRT
+America/Scoresbysund.daylight.short=EGST
+America/Scoresbysund.generic.short=EGT
+America/Scoresbysund.standard.short=EGT
+America/Shiprock.daylight.short=MDT
+America/Shiprock.generic.short=MT
+America/Shiprock.standard.short=MST
+America/Sitka.daylight.short=AKDT
+America/Sitka.generic.short=AKT
+America/Sitka.standard.short=AKST
+America/St_Barthelemy.daylight.short=ADT
+America/St_Barthelemy.generic.short=AT
+America/St_Barthelemy.standard.short=AST
+America/St_Johns.daylight.short=NDT
+America/St_Johns.generic.short=NT
+America/St_Johns.standard.short=NST
+America/St_Kitts.daylight.short=ADT
+America/St_Kitts.generic.short=AT
+America/St_Kitts.standard.short=AST
+America/St_Lucia.daylight.short=ADT
+America/St_Lucia.generic.short=AT
+America/St_Lucia.standard.short=AST
+America/St_Thomas.daylight.short=ADT
+America/St_Thomas.generic.short=AT
+America/St_Thomas.standard.short=AST
+America/St_Vincent.daylight.short=ADT
+America/St_Vincent.generic.short=AT
+America/St_Vincent.standard.short=AST
+America/Swift_Current.daylight.short=CDT
+America/Swift_Current.generic.short=CT
+America/Swift_Current.standard.short=CST
+America/Tegucigalpa.daylight.short=CDT
+America/Tegucigalpa.generic.short=CT
+America/Tegucigalpa.standard.short=CST
+America/Thule.daylight.short=ADT
+America/Thule.generic.short=AT
+America/Thule.standard.short=AST
+America/Thunder_Bay.daylight.short=EDT
+America/Thunder_Bay.generic.short=ET
+America/Thunder_Bay.standard.short=EST
+America/Tijuana.daylight.short=PDT
+America/Tijuana.generic.short=PT
+America/Tijuana.standard.short=PST
+America/Toronto.daylight.short=EDT
+America/Toronto.generic.short=ET
+America/Toronto.standard.short=EST
+America/Tortola.daylight.short=ADT
+America/Tortola.generic.short=AT
+America/Tortola.standard.short=AST
+America/Vancouver.daylight.short=PDT
+America/Vancouver.generic.short=PT
+America/Vancouver.standard.short=PST
+America/Virgin.daylight.short=ADT
+America/Virgin.generic.short=AT
+America/Virgin.standard.short=AST
+America/Whitehorse.daylight.short=PDT
+America/Whitehorse.generic.short=PT
+America/Whitehorse.standard.short=PST
+America/Winnipeg.daylight.short=CDT
+America/Winnipeg.generic.short=CT
+America/Winnipeg.standard.short=CST
+America/Yakutat.daylight.short=AKDT
+America/Yakutat.generic.short=AKT
+America/Yakutat.standard.short=AKST
+America/Yellowknife.daylight.short=MDT
+America/Yellowknife.generic.short=MT
+America/Yellowknife.standard.short=MST
+Antarctica/Casey.daylight.short=WST
+Antarctica/Casey.generic.short=WT
+Antarctica/Casey.standard.short=WST
+Antarctica/Davis.daylight.short=DAVST
+Antarctica/Davis.generic.short=DAVT
+Antarctica/Davis.standard.short=DAVT
+Antarctica/DumontDUrville.daylight.short=DDUST
+Antarctica/DumontDUrville.generic.short=DDUT
+Antarctica/DumontDUrville.standard.short=DDUT
+Antarctica/Macquarie.daylight.short=MIST
+Antarctica/Macquarie.generic.short=MIST
+Antarctica/Macquarie.standard.short=MIST
+Antarctica/Mawson.daylight.short=MAWST
+Antarctica/Mawson.generic.short=MAWT
+Antarctica/Mawson.standard.short=MAWT
+Antarctica/McMurdo.daylight.short=NZDT
+Antarctica/McMurdo.generic.short=NZT
+Antarctica/McMurdo.standard.short=NZST
+Antarctica/Palmer.daylight.short=CLST
+Antarctica/Palmer.generic.short=CLT
+Antarctica/Palmer.standard.short=CLT
+Antarctica/Rothera.daylight.short=ROTST
+Antarctica/Rothera.generic.short=ROTT
+Antarctica/Rothera.standard.short=ROTT
+Antarctica/South_Pole.daylight.short=NZDT
+Antarctica/South_Pole.generic.short=NZT
+Antarctica/South_Pole.standard.short=NZST
+Antarctica/Syowa.daylight.short=SYOST
+Antarctica/Syowa.generic.short=SYOT
+Antarctica/Syowa.standard.short=SYOT
+Antarctica/Vostok.daylight.short=VOSST
+Antarctica/Vostok.generic.short=VOST
+Antarctica/Vostok.standard.short=VOST
+Arctic/Longyearbyen.daylight.short=CEST
+Arctic/Longyearbyen.generic.short=CET
+Arctic/Longyearbyen.standard.short=CET
+ART.daylight.short=EEST
+ART.generic.short=EET
+ART.standard.short=EET
+Asia/Aden.daylight.short=ADT
+Asia/Aden.generic.short=AT
+Asia/Aden.standard.short=AST
+Asia/Almaty.daylight.short=ALMST
+Asia/Almaty.generic.short=ALMT
+Asia/Almaty.standard.short=ALMT
+Asia/Amman.daylight.short=ADT
+Asia/Amman.generic.short=AT
+Asia/Amman.standard.short=AST
+Asia/Anadyr.daylight.short=ANAST
+Asia/Anadyr.generic.short=ANAT
+Asia/Anadyr.standard.short=ANAT
+Asia/Aqtau.daylight.short=AQTST
+Asia/Aqtau.generic.short=AQTT
+Asia/Aqtau.standard.short=AQTT
+Asia/Aqtobe.daylight.short=AQTST
+Asia/Aqtobe.generic.short=AQTT
+Asia/Aqtobe.standard.short=AQTT
+Asia/Ashgabat.daylight.short=TMST
+Asia/Ashgabat.generic.short=TMT
+Asia/Ashgabat.standard.short=TMT
+Asia/Ashkhabad.daylight.short=TMST
+Asia/Ashkhabad.generic.short=TMT
+Asia/Ashkhabad.standard.short=TMT
+Asia/Baghdad.daylight.short=ADT
+Asia/Baghdad.generic.short=AT
+Asia/Baghdad.standard.short=AST
+Asia/Bahrain.daylight.short=ADT
+Asia/Bahrain.generic.short=AT
+Asia/Bahrain.standard.short=AST
+Asia/Baku.daylight.short=AZST
+Asia/Baku.generic.short=AZT
+Asia/Baku.standard.short=AZT
+Asia/Bangkok.daylight.short=ICST
+Asia/Bangkok.generic.short=ICT
+Asia/Bangkok.standard.short=ICT
+Asia/Beirut.daylight.short=EEST
+Asia/Beirut.generic.short=EET
+Asia/Beirut.standard.short=EET
+Asia/Bishkek.daylight.short=KGST
+Asia/Bishkek.generic.short=KGT
+Asia/Bishkek.standard.short=KGT
+Asia/Brunei.daylight.short=BNST
+Asia/Brunei.generic.short=BNT
+Asia/Brunei.standard.short=BNT
+Asia/Calcutta.daylight.short=IDT
+Asia/Calcutta.generic.short=IT
+Asia/Calcutta.standard.short=IST
+Asia/Choibalsan.daylight.short=CHOST
+Asia/Choibalsan.generic.short=CHOT
+Asia/Choibalsan.standard.short=CHOT
+Asia/Chongqing.daylight.short=CDT
+Asia/Chongqing.generic.short=CT
+Asia/Chongqing.standard.short=CST
+Asia/Chungking.daylight.short=CDT
+Asia/Chungking.generic.short=CT
+Asia/Chungking.standard.short=CST
+Asia/Colombo.daylight.short=IDT
+Asia/Colombo.generic.short=IT
+Asia/Colombo.standard.short=IST
+Asia/Dacca.daylight.short=BDST
+Asia/Dacca.generic.short=BDT
+Asia/Dacca.standard.short=BDT
+Asia/Damascus.daylight.short=EEST
+Asia/Damascus.generic.short=EET
+Asia/Damascus.standard.short=EET
+Asia/Dhaka.daylight.short=BDST
+Asia/Dhaka.generic.short=BDT
+Asia/Dhaka.standard.short=BDT
+Asia/Dili.daylight.short=TLST
+Asia/Dili.generic.short=TLT
+Asia/Dili.standard.short=TLT
+Asia/Dubai.daylight.short=GDT
+Asia/Dubai.generic.short=GT
+Asia/Dubai.standard.short=GST
+Asia/Dushanbe.daylight.short=TJST
+Asia/Dushanbe.generic.short=TJT
+Asia/Dushanbe.standard.short=TJT
+Asia/Gaza.daylight.short=EEST
+Asia/Gaza.generic.short=EET
+Asia/Gaza.standard.short=EET
+Asia/Harbin.daylight.short=CDT
+Asia/Harbin.generic.short=CT
+Asia/Harbin.standard.short=CST
+Asia/Hebron.daylight.short=EEST
+Asia/Hebron.generic.short=EET
+Asia/Hebron.standard.short=EET
+Asia/Ho_Chi_Minh.daylight.short=ICST
+Asia/Ho_Chi_Minh.generic.short=ICT
+Asia/Ho_Chi_Minh.standard.short=ICT
+Asia/Hong_Kong.daylight.short=HKST
+Asia/Hong_Kong.generic.short=HKT
+Asia/Hong_Kong.standard.short=HKT
+Asia/Hovd.daylight.short=HOVST
+Asia/Hovd.generic.short=HOVT
+Asia/Hovd.standard.short=HOVT
+Asia/Irkutsk.daylight.short=IRKST
+Asia/Irkutsk.generic.short=IRKT
+Asia/Irkutsk.standard.short=IRKT
+Asia/Istanbul.daylight.short=EEST
+Asia/Istanbul.generic.short=EET
+Asia/Istanbul.standard.short=EET
+Asia/Jakarta.daylight.short=WIST
+Asia/Jakarta.generic.short=WIB
+Asia/Jakarta.standard.short=WIB
+Asia/Jayapura.daylight.short=EIST
+Asia/Jayapura.generic.short=WIT
+Asia/Jayapura.standard.short=WIT
+Asia/Jerusalem.daylight.short=IDT
+Asia/Jerusalem.generic.short=IT
+Asia/Jerusalem.standard.short=IST
+Asia/Kabul.daylight.short=AFST
+Asia/Kabul.generic.short=AFT
+Asia/Kabul.standard.short=AFT
+Asia/Kamchatka.daylight.short=PETST
+Asia/Kamchatka.generic.short=PETT
+Asia/Kamchatka.standard.short=PETT
+Asia/Karachi.daylight.short=PKST
+Asia/Karachi.generic.short=PKT
+Asia/Karachi.standard.short=PKT
+Asia/Kashgar.daylight.short=CDT
+Asia/Kashgar.generic.short=CT
+Asia/Kashgar.standard.short=CST
+Asia/Kathmandu.daylight.short=NPST
+Asia/Kathmandu.generic.short=NPT
+Asia/Kathmandu.standard.short=NPT
+Asia/Katmandu.daylight.short=NPST
+Asia/Katmandu.generic.short=NPT
+Asia/Katmandu.standard.short=NPT
+Asia/Khandyga.daylight.short=YAKST
+Asia/Khandyga.generic.short=YAKT
+Asia/Khandyga.standard.short=YAKT
+Asia/Kolkata.daylight.short=IDT
+Asia/Kolkata.generic.short=IT
+Asia/Kolkata.standard.short=IST
+Asia/Krasnoyarsk.daylight.short=KRAST
+Asia/Krasnoyarsk.generic.short=KRAT
+Asia/Krasnoyarsk.standard.short=KRAT
+Asia/Kuala_Lumpur.daylight.short=MYST
+Asia/Kuala_Lumpur.generic.short=MYT
+Asia/Kuala_Lumpur.standard.short=MYT
+Asia/Kuching.daylight.short=MYST
+Asia/Kuching.generic.short=MYT
+Asia/Kuching.standard.short=MYT
+Asia/Kuwait.daylight.short=ADT
+Asia/Kuwait.generic.short=AT
+Asia/Kuwait.standard.short=AST
+Asia/Macao.daylight.short=CDT
+Asia/Macao.generic.short=CT
+Asia/Macao.standard.short=CST
+Asia/Macau.daylight.short=CDT
+Asia/Macau.generic.short=CT
+Asia/Macau.standard.short=CST
+Asia/Magadan.daylight.short=MAGST
+Asia/Magadan.generic.short=MAGT
+Asia/Magadan.standard.short=MAGT
+Asia/Makassar.daylight.short=CIST
+Asia/Makassar.generic.short=WITA
+Asia/Makassar.standard.short=WITA
+Asia/Manila.daylight.short=PHST
+Asia/Manila.generic.short=PHT
+Asia/Manila.standard.short=PHT
+Asia/Muscat.daylight.short=GDT
+Asia/Muscat.generic.short=GT
+Asia/Muscat.standard.short=GST
+Asia/Nicosia.daylight.short=EEST
+Asia/Nicosia.generic.short=EET
+Asia/Nicosia.standard.short=EET
+Asia/Novokuznetsk.daylight.short=NOVST
+Asia/Novokuznetsk.generic.short=NOVT
+Asia/Novokuznetsk.standard.short=NOVT
+Asia/Novosibirsk.daylight.short=NOVST
+Asia/Novosibirsk.generic.short=NOVT
+Asia/Novosibirsk.standard.short=NOVT
+Asia/Omsk.daylight.short=OMSST
+Asia/Omsk.generic.short=OMST
+Asia/Omsk.standard.short=OMST
+Asia/Oral.daylight.short=ORAST
+Asia/Oral.generic.short=ORAT
+Asia/Oral.standard.short=ORAT
+Asia/Phnom_Penh.daylight.short=ICST
+Asia/Phnom_Penh.generic.short=ICT
+Asia/Phnom_Penh.standard.short=ICT
+Asia/Pontianak.daylight.short=WIST
+Asia/Pontianak.generic.short=WIB
+Asia/Pontianak.standard.short=WIB
+Asia/Pyongyang.daylight.short=KDT
+Asia/Pyongyang.generic.short=KT
+Asia/Pyongyang.standard.short=KST
+Asia/Qatar.daylight.short=ADT
+Asia/Qatar.generic.short=AT
+Asia/Qatar.standard.short=AST
+Asia/Qyzylorda.daylight.short=QYZST
+Asia/Qyzylorda.generic.short=QYZT
+Asia/Qyzylorda.standard.short=QYZT
+Asia/Rangoon.daylight.short=MMST
+Asia/Rangoon.generic.short=MMT
+Asia/Rangoon.standard.short=MMT
+Asia/Saigon.daylight.short=ICST
+Asia/Saigon.generic.short=ICT
+Asia/Saigon.standard.short=ICT
+Asia/Sakhalin.daylight.short=SAKST
+Asia/Sakhalin.generic.short=SAKT
+Asia/Sakhalin.standard.short=SAKT
+Asia/Samarkand.daylight.short=UZST
+Asia/Samarkand.generic.short=UZT
+Asia/Samarkand.standard.short=UZT
+Asia/Seoul.daylight.short=KDT
+Asia/Seoul.generic.short=KT
+Asia/Seoul.standard.short=KST
+Asia/Shanghai.daylight.short=CDT
+Asia/Shanghai.generic.short=CT
+Asia/Shanghai.standard.short=CST
+Asia/Singapore.daylight.short=SGST
+Asia/Singapore.generic.short=SGT
+Asia/Singapore.standard.short=SGT
+Asia/Taipei.daylight.short=TDT
+Asia/Taipei.generic.short=TT
+Asia/Taipei.standard.short=TST
+Asia/Tashkent.daylight.short=UZST
+Asia/Tashkent.generic.short=UZT
+Asia/Tashkent.standard.short=UZT
+Asia/Tbilisi.daylight.short=GEST
+Asia/Tbilisi.generic.short=GET
+Asia/Tbilisi.standard.short=GET
+Asia/Tehran.daylight.short=IRDT
+Asia/Tehran.generic.short=IRT
+Asia/Tehran.standard.short=IRST
+Asia/Tel_Aviv.daylight.short=IDT
+Asia/Tel_Aviv.generic.short=IT
+Asia/Tel_Aviv.standard.short=IST
+Asia/Thimbu.daylight.short=BTST
+Asia/Thimbu.generic.short=BTT
+Asia/Thimbu.standard.short=BTT
+Asia/Thimphu.daylight.short=BTST
+Asia/Thimphu.generic.short=BTT
+Asia/Thimphu.standard.short=BTT
+Asia/Tokyo.daylight.short=JDT
+Asia/Tokyo.generic.short=JT
+Asia/Tokyo.standard.short=JST
+Asia/Ujung_Pandang.daylight.short=CIST
+Asia/Ujung_Pandang.generic.short=WITA
+Asia/Ujung_Pandang.standard.short=WITA
+Asia/Ulaanbaatar.daylight.short=ULAST
+Asia/Ulaanbaatar.generic.short=ULAT
+Asia/Ulaanbaatar.standard.short=ULAT
+Asia/Ulan_Bator.daylight.short=ULAST
+Asia/Ulan_Bator.generic.short=ULAT
+Asia/Ulan_Bator.standard.short=ULAT
+Asia/Urumqi.daylight.short=CDT
+Asia/Urumqi.generic.short=CT
+Asia/Urumqi.standard.short=CST
+Asia/Ust-Nera.daylight.short=VLAST
+Asia/Ust-Nera.generic.short=VLAT
+Asia/Ust-Nera.standard.short=VLAT
+Asia/Vientiane.daylight.short=ICST
+Asia/Vientiane.generic.short=ICT
+Asia/Vientiane.standard.short=ICT
+Asia/Vladivostok.daylight.short=VLAST
+Asia/Vladivostok.generic.short=VLAT
+Asia/Vladivostok.standard.short=VLAT
+Asia/Yakutsk.daylight.short=YAKST
+Asia/Yakutsk.generic.short=YAKT
+Asia/Yakutsk.standard.short=YAKT
+Asia/Yekaterinburg.daylight.short=YEKST
+Asia/Yekaterinburg.generic.short=YEKT
+Asia/Yekaterinburg.standard.short=YEKT
+Asia/Yerevan.daylight.short=AMST
+Asia/Yerevan.generic.short=AMT
+Asia/Yerevan.standard.short=AMT
+AST.daylight.short=AKDT
+AST.generic.short=AKT
+AST.standard.short=AKST
+Atlantic/Azores.daylight.short=AZOST
+Atlantic/Azores.generic.short=AZOT
+Atlantic/Azores.standard.short=AZOT
+Atlantic/Bermuda.daylight.short=ADT
+Atlantic/Bermuda.generic.short=AT
+Atlantic/Bermuda.standard.short=AST
+Atlantic/Canary.daylight.short=WEST
+Atlantic/Canary.generic.short=WET
+Atlantic/Canary.standard.short=WET
+Atlantic/Cape_Verde.daylight.short=CVST
+Atlantic/Cape_Verde.generic.short=CVT
+Atlantic/Cape_Verde.standard.short=CVT
+Atlantic/Faeroe.daylight.short=WEST
+Atlantic/Faeroe.generic.short=WET
+Atlantic/Faeroe.standard.short=WET
+Atlantic/Faroe.daylight.short=WEST
+Atlantic/Faroe.generic.short=WET
+Atlantic/Faroe.standard.short=WET
+Atlantic/Jan_Mayen.daylight.short=CEST
+Atlantic/Jan_Mayen.generic.short=CET
+Atlantic/Jan_Mayen.standard.short=CET
+Atlantic/Madeira.daylight.short=WEST
+Atlantic/Madeira.generic.short=WET
+Atlantic/Madeira.standard.short=WET
+Atlantic/Reykjavik.daylight.short=GMT
+Atlantic/Reykjavik.generic.short=GMT
+Atlantic/Reykjavik.standard.short=GMT
+Atlantic/South_Georgia.daylight.short=GDT
+Atlantic/South_Georgia.generic.short=GT
+Atlantic/South_Georgia.standard.short=GST
+Atlantic/Stanley.daylight.short=FKST
+Atlantic/Stanley.generic.short=FKT
+Atlantic/Stanley.standard.short=FKT
+Atlantic/St_Helena.daylight.short=GMT
+Atlantic/St_Helena.generic.short=GMT
+Atlantic/St_Helena.standard.short=GMT
+Australia/ACT.daylight.short=EST
+Australia/ACT.generic.short=ET
+Australia/ACT.standard.short=EST
+Australia/Adelaide.daylight.short=CST
+Australia/Adelaide.generic.short=CT
+Australia/Adelaide.standard.short=CST
+Australia/Brisbane.daylight.short=EST
+Australia/Brisbane.generic.short=ET
+Australia/Brisbane.standard.short=EST
+Australia/Broken_Hill.daylight.short=CST
+Australia/Broken_Hill.generic.short=CT
+Australia/Broken_Hill.standard.short=CST
+Australia/Canberra.daylight.short=EST
+Australia/Canberra.generic.short=ET
+Australia/Canberra.standard.short=EST
+Australia/Currie.daylight.short=EST
+Australia/Currie.generic.short=ET
+Australia/Currie.standard.short=EST
+Australia/Darwin.daylight.short=CST
+Australia/Darwin.generic.short=CT
+Australia/Darwin.standard.short=CST
+Australia/Eucla.daylight.short=CWST
+Australia/Eucla.generic.short=CWT
+Australia/Eucla.standard.short=CWST
+Australia/Hobart.daylight.short=EST
+Australia/Hobart.generic.short=ET
+Australia/Hobart.standard.short=EST
+Australia/LHI.daylight.short=LHST
+Australia/LHI.generic.short=LHT
+Australia/LHI.standard.short=LHST
+Australia/Lindeman.daylight.short=EST
+Australia/Lindeman.generic.short=ET
+Australia/Lindeman.standard.short=EST
+Australia/Lord_Howe.daylight.short=LHST
+Australia/Lord_Howe.generic.short=LHT
+Australia/Lord_Howe.standard.short=LHST
+Australia/Melbourne.daylight.short=EST
+Australia/Melbourne.generic.short=ET
+Australia/Melbourne.standard.short=EST
+Australia/North.daylight.short=CST
+Australia/North.generic.short=CT
+Australia/North.standard.short=CST
+Australia/NSW.daylight.short=EST
+Australia/NSW.generic.short=ET
+Australia/NSW.standard.short=EST
+Australia/Perth.daylight.short=WST
+Australia/Perth.generic.short=WT
+Australia/Perth.standard.short=WST
+Australia/Queensland.daylight.short=EST
+Australia/Queensland.generic.short=ET
+Australia/Queensland.standard.short=EST
+Australia/South.daylight.short=CST
+Australia/South.generic.short=CT
+Australia/South.standard.short=CST
+Australia/Sydney.daylight.short=EST
+Australia/Sydney.generic.short=ET
+Australia/Sydney.standard.short=EST
+Australia/Tasmania.daylight.short=EST
+Australia/Tasmania.generic.short=ET
+Australia/Tasmania.standard.short=EST
+Australia/Victoria.daylight.short=EST
+Australia/Victoria.generic.short=ET
+Australia/Victoria.standard.short=EST
+Australia/West.daylight.short=WST
+Australia/West.generic.short=WT
+Australia/West.standard.short=WST
+Australia/Yancowinna.daylight.short=CST
+Australia/Yancowinna.generic.short=CT
+Australia/Yancowinna.standard.short=CST
+BET.daylight.short=BRST
+BET.generic.short=BRT
+BET.standard.short=BRT
+Brazil/Acre.daylight.short=ACST
+Brazil/Acre.generic.short=ACT
+Brazil/Acre.standard.short=ACT
+Brazil/DeNoronha.daylight.short=FNST
+Brazil/DeNoronha.generic.short=FNT
+Brazil/DeNoronha.standard.short=FNT
+Brazil/East.daylight.short=BRST
+Brazil/East.generic.short=BRT
+Brazil/East.standard.short=BRT
+Brazil/West.daylight.short=AMST
+Brazil/West.generic.short=AMT
+Brazil/West.standard.short=AMT
+BST.daylight.short=BDST
+BST.generic.short=BDT
+BST.standard.short=BDT
+Canada/Atlantic.daylight.short=ADT
+Canada/Atlantic.generic.short=AT
+Canada/Atlantic.standard.short=AST
+Canada/Central.daylight.short=CDT
+Canada/Central.generic.short=CT
+Canada/Central.standard.short=CST
+Canada/Eastern.daylight.short=EDT
+Canada/Eastern.generic.short=ET
+Canada/Eastern.standard.short=EST
+Canada/East-Saskatchewan.daylight.short=CDT
+Canada/East-Saskatchewan.generic.short=CT
+Canada/East-Saskatchewan.standard.short=CST
+Canada/Mountain.daylight.short=MDT
+Canada/Mountain.generic.short=MT
+Canada/Mountain.standard.short=MST
+Canada/Newfoundland.daylight.short=NDT
+Canada/Newfoundland.generic.short=NT
+Canada/Newfoundland.standard.short=NST
+Canada/Pacific.daylight.short=PDT
+Canada/Pacific.generic.short=PT
+Canada/Pacific.standard.short=PST
+Canada/Saskatchewan.daylight.short=CDT
+Canada/Saskatchewan.generic.short=CT
+Canada/Saskatchewan.standard.short=CST
+Canada/Yukon.daylight.short=PDT
+Canada/Yukon.generic.short=PT
+Canada/Yukon.standard.short=PST
+CAT.daylight.short=CAST
+CAT.generic.short=CAT
+CAT.standard.short=CAT
+CET.daylight.short=CEST
+CET.generic.short=CET
+CET.standard.short=CET
+Chile/Continental.daylight.short=CLST
+Chile/Continental.generic.short=CLT
+Chile/Continental.standard.short=CLT
+Chile/EasterIsland.daylight.short=EASST
+Chile/EasterIsland.generic.short=EAST
+Chile/EasterIsland.standard.short=EAST
+CNT.daylight.short=NDT
+CNT.generic.short=NT
+CNT.standard.short=NST
+CST6CDT.daylight.short=CDT
+CST6CDT.generic.short=CT
+CST6CDT.standard.short=CST
+CST.daylight.short=CDT
+CST.generic.short=CT
+CST.standard.short=CST
+CTT.daylight.short=CDT
+CTT.generic.short=CT
+CTT.standard.short=CST
+Cuba.daylight.short=CDT
+Cuba.generic.short=CT
+Cuba.standard.short=CST
+EAT.daylight.short=EAST
+EAT.generic.short=EAT
+EAT.standard.short=EAT
+ECT.daylight.short=CEST
+ECT.generic.short=CET
+ECT.standard.short=CET
+EET.daylight.short=EEST
+EET.generic.short=EET
+EET.standard.short=EET
+Egypt.daylight.short=EEST
+Egypt.generic.short=EET
+Egypt.standard.short=EET
+Eire.daylight.short=IST
+Eire.generic.short=IT
+Eire.standard.short=GMT
+EST5EDT.daylight.short=EDT
+EST5EDT.generic.short=ET
+EST5EDT.standard.short=EST
+EST.daylight.short=EDT
+EST.generic.short=ET
+EST.standard.short=EST
+Etc/Greenwich.daylight.short=GMT
+Etc/Greenwich.generic.short=GMT
+Etc/Greenwich.standard.short=GMT
+Etc/UCT.daylight.short=UTC
+Etc/UCT.generic.short=UTC
+Etc/UCT.standard.short=UTC
+Etc/Universal.daylight.short=UTC
+Etc/Universal.generic.short=UTC
+Etc/Universal.standard.short=UTC
+Etc/UTC.daylight.short=UTC
+Etc/UTC.generic.short=UTC
+Etc/UTC.standard.short=UTC
+Etc/Zulu.daylight.short=UTC
+Etc/Zulu.generic.short=UTC
+Etc/Zulu.standard.short=UTC
+Europe/Amsterdam.daylight.short=CEST
+Europe/Amsterdam.generic.short=CET
+Europe/Amsterdam.standard.short=CET
+Europe/Andorra.daylight.short=CEST
+Europe/Andorra.generic.short=CET
+Europe/Andorra.standard.short=CET
+Europe/Athens.daylight.short=EEST
+Europe/Athens.generic.short=EET
+Europe/Athens.standard.short=EET
+Europe/Belfast.daylight.short=BST
+Europe/Belfast.generic.short=BT
+Europe/Belfast.standard.short=GMT
+Europe/Belgrade.daylight.short=CEST
+Europe/Belgrade.generic.short=CET
+Europe/Belgrade.standard.short=CET
+Europe/Berlin.daylight.short=CEST
+Europe/Berlin.generic.short=CET
+Europe/Berlin.standard.short=CET
+Europe/Bratislava.daylight.short=CEST
+Europe/Bratislava.generic.short=CET
+Europe/Bratislava.standard.short=CET
+Europe/Brussels.daylight.short=CEST
+Europe/Brussels.generic.short=CET
+Europe/Brussels.standard.short=CET
+Europe/Bucharest.daylight.short=EEST
+Europe/Bucharest.generic.short=EET
+Europe/Bucharest.standard.short=EET
+Europe/Budapest.daylight.short=CEST
+Europe/Budapest.generic.short=CET
+Europe/Budapest.standard.short=CET
+Europe/Busingen.daylight.short=CEST
+Europe/Busingen.generic.short=CET
+Europe/Busingen.standard.short=CET
+Europe/Chisinau.daylight.short=EEST
+Europe/Chisinau.generic.short=EET
+Europe/Chisinau.standard.short=EET
+Europe/Copenhagen.daylight.short=CEST
+Europe/Copenhagen.generic.short=CET
+Europe/Copenhagen.standard.short=CET
+Europe/Dublin.daylight.short=IST
+Europe/Dublin.generic.short=IT
+Europe/Dublin.standard.short=GMT
+Europe/Gibraltar.daylight.short=CEST
+Europe/Gibraltar.generic.short=CET
+Europe/Gibraltar.standard.short=CET
+Europe/Guernsey.daylight.short=BST
+Europe/Guernsey.generic.short=BT
+Europe/Guernsey.standard.short=GMT
+Europe/Helsinki.daylight.short=EEST
+Europe/Helsinki.generic.short=EET
+Europe/Helsinki.standard.short=EET
+Europe/Isle_of_Man.daylight.short=BST
+Europe/Isle_of_Man.generic.short=BT
+Europe/Isle_of_Man.standard.short=GMT
+Europe/Istanbul.daylight.short=EEST
+Europe/Istanbul.generic.short=EET
+Europe/Istanbul.standard.short=EET
+Europe/Jersey.daylight.short=BST
+Europe/Jersey.generic.short=BT
+Europe/Jersey.standard.short=GMT
+Europe/Kaliningrad.daylight.short=FEST
+Europe/Kaliningrad.generic.short=FET
+Europe/Kaliningrad.standard.short=FET
+Europe/Kiev.daylight.short=EEST
+Europe/Kiev.generic.short=EET
+Europe/Kiev.standard.short=EET
+Europe/Lisbon.daylight.short=WEST
+Europe/Lisbon.generic.short=WET
+Europe/Lisbon.standard.short=WET
+Europe/Ljubljana.daylight.short=CEST
+Europe/Ljubljana.generic.short=CET
+Europe/Ljubljana.standard.short=CET
+Europe/London.daylight.short=BST
+Europe/London.generic.short=BT
+Europe/London.standard.short=GMT
+Europe/Luxembourg.daylight.short=CEST
+Europe/Luxembourg.generic.short=CET
+Europe/Luxembourg.standard.short=CET
+Europe/Madrid.daylight.short=CEST
+Europe/Madrid.generic.short=CET
+Europe/Madrid.standard.short=CET
+Europe/Malta.daylight.short=CEST
+Europe/Malta.generic.short=CET
+Europe/Malta.standard.short=CET
+Europe/Mariehamn.daylight.short=EEST
+Europe/Mariehamn.generic.short=EET
+Europe/Mariehamn.standard.short=EET
+Europe/Minsk.daylight.short=FEST
+Europe/Minsk.generic.short=FET
+Europe/Minsk.standard.short=FET
+Europe/Monaco.daylight.short=CEST
+Europe/Monaco.generic.short=CET
+Europe/Monaco.standard.short=CET
+Europe/Moscow.daylight.short=MSD
+Europe/Moscow.generic.short=MT
+Europe/Moscow.standard.short=MSK
+Europe/Nicosia.daylight.short=EEST
+Europe/Nicosia.generic.short=EET
+Europe/Nicosia.standard.short=EET
+Europe/Oslo.daylight.short=CEST
+Europe/Oslo.generic.short=CET
+Europe/Oslo.standard.short=CET
+Europe/Paris.daylight.short=CEST
+Europe/Paris.generic.short=CET
+Europe/Paris.standard.short=CET
+Europe/Podgorica.daylight.short=CEST
+Europe/Podgorica.generic.short=CET
+Europe/Podgorica.standard.short=CET
+Europe/Prague.daylight.short=CEST
+Europe/Prague.generic.short=CET
+Europe/Prague.standard.short=CET
+Europe/Riga.daylight.short=EEST
+Europe/Riga.generic.short=EET
+Europe/Riga.standard.short=EET
+Europe/Rome.daylight.short=CEST
+Europe/Rome.generic.short=CET
+Europe/Rome.standard.short=CET
+Europe/Samara.daylight.short=SAMST
+Europe/Samara.generic.short=SAMT
+Europe/Samara.standard.short=SAMT
+Europe/San_Marino.daylight.short=CEST
+Europe/San_Marino.generic.short=CET
+Europe/San_Marino.standard.short=CET
+Europe/Sarajevo.daylight.short=CEST
+Europe/Sarajevo.generic.short=CET
+Europe/Sarajevo.standard.short=CET
+Europe/Simferopol.daylight.short=EEST
+Europe/Simferopol.generic.short=EET
+Europe/Simferopol.standard.short=EET
+Europe/Skopje.daylight.short=CEST
+Europe/Skopje.generic.short=CET
+Europe/Skopje.standard.short=CET
+Europe/Sofia.daylight.short=EEST
+Europe/Sofia.generic.short=EET
+Europe/Sofia.standard.short=EET
+Europe/Stockholm.daylight.short=CEST
+Europe/Stockholm.generic.short=CET
+Europe/Stockholm.standard.short=CET
+Europe/Tallinn.daylight.short=EEST
+Europe/Tallinn.generic.short=EET
+Europe/Tallinn.standard.short=EET
+Europe/Tirane.daylight.short=CEST
+Europe/Tirane.generic.short=CET
+Europe/Tirane.standard.short=CET
+Europe/Tiraspol.daylight.short=EEST
+Europe/Tiraspol.generic.short=EET
+Europe/Tiraspol.standard.short=EET
+Europe/Uzhgorod.daylight.short=EEST
+Europe/Uzhgorod.generic.short=EET
+Europe/Uzhgorod.standard.short=EET
+Europe/Vaduz.daylight.short=CEST
+Europe/Vaduz.generic.short=CET
+Europe/Vaduz.standard.short=CET
+Europe/Vatican.daylight.short=CEST
+Europe/Vatican.generic.short=CET
+Europe/Vatican.standard.short=CET
+Europe/Vienna.daylight.short=CEST
+Europe/Vienna.generic.short=CET
+Europe/Vienna.standard.short=CET
+Europe/Vilnius.daylight.short=EEST
+Europe/Vilnius.generic.short=EET
+Europe/Vilnius.standard.short=EET
+Europe/Volgograd.daylight.short=VOLST
+Europe/Volgograd.generic.short=VOLT
+Europe/Volgograd.standard.short=VOLT
+Europe/Warsaw.daylight.short=CEST
+Europe/Warsaw.generic.short=CET
+Europe/Warsaw.standard.short=CET
+Europe/Zagreb.daylight.short=CEST
+Europe/Zagreb.generic.short=CET
+Europe/Zagreb.standard.short=CET
+Europe/Zaporozhye.daylight.short=EEST
+Europe/Zaporozhye.generic.short=EET
+Europe/Zaporozhye.standard.short=EET
+Europe/Zurich.daylight.short=CEST
+Europe/Zurich.generic.short=CET
+Europe/Zurich.standard.short=CET
+GB.daylight.short=BST
+GB-Eire.daylight.short=BST
+GB-Eire.generic.short=BT
+GB-Eire.standard.short=GMT
+GB.generic.short=BT
+GB.standard.short=GMT
+GMT.daylight.short=GMT
+GMT.generic.short=GMT
+GMT.standard.short=GMT
+Greenwich.daylight.short=GMT
+Greenwich.generic.short=GMT
+Greenwich.standard.short=GMT
+Hongkong.daylight.short=HKST
+Hongkong.generic.short=HKT
+Hongkong.standard.short=HKT
+HST.daylight.short=HDT
+HST.generic.short=HT
+HST.standard.short=HST
+Iceland.daylight.short=GMT
+Iceland.generic.short=GMT
+Iceland.standard.short=GMT
+IET.daylight.short=EDT
+IET.generic.short=ET
+IET.standard.short=EST
+Indian/Antananarivo.daylight.short=EAST
+Indian/Antananarivo.generic.short=EAT
+Indian/Antananarivo.standard.short=EAT
+Indian/Chagos.daylight.short=IOST
+Indian/Chagos.generic.short=IOT
+Indian/Chagos.standard.short=IOT
+Indian/Christmas.daylight.short=CXST
+Indian/Christmas.generic.short=CIT
+Indian/Christmas.standard.short=CXT
+Indian/Cocos.daylight.short=CCST
+Indian/Cocos.generic.short=CCT
+Indian/Cocos.standard.short=CCT
+Indian/Comoro.daylight.short=EAST
+Indian/Comoro.generic.short=EAT
+Indian/Comoro.standard.short=EAT
+Indian/Kerguelen.daylight.short=TFST
+Indian/Kerguelen.generic.short=TFT
+Indian/Kerguelen.standard.short=TFT
+Indian/Mahe.daylight.short=SCST
+Indian/Mahe.generic.short=SCT
+Indian/Mahe.standard.short=SCT
+Indian/Maldives.daylight.short=MVST
+Indian/Maldives.generic.short=MVT
+Indian/Maldives.standard.short=MVT
+Indian/Mauritius.daylight.short=MUST
+Indian/Mauritius.generic.short=MUT
+Indian/Mauritius.standard.short=MUT
+Indian/Mayotte.daylight.short=EAST
+Indian/Mayotte.generic.short=EAT
+Indian/Mayotte.standard.short=EAT
+Indian/Reunion.daylight.short=REST
+Indian/Reunion.generic.short=RET
+Indian/Reunion.standard.short=RET
+Iran.daylight.short=IRDT
+Iran.generic.short=IRT
+Iran.standard.short=IRST
+Israel.daylight.short=IDT
+Israel.generic.short=IT
+Israel.standard.short=IST
+IST.daylight.short=IDT
+IST.generic.short=IT
+IST.standard.short=IST
+Jamaica.daylight.short=EDT
+Jamaica.generic.short=ET
+Jamaica.standard.short=EST
+Japan.daylight.short=JDT
+Japan.generic.short=JT
+Japan.standard.short=JST
+JST.daylight.short=JDT
+JST.generic.short=JT
+JST.standard.short=JST
+Kwajalein.daylight.short=MHST
+Kwajalein.generic.short=MHT
+Kwajalein.standard.short=MHT
+Libya.daylight.short=EEST
+Libya.generic.short=EET
+Libya.standard.short=EET
+MET.daylight.short=MEST
+MET.generic.short=MET
+MET.standard.short=MET
+Mexico/BajaNorte.daylight.short=PDT
+Mexico/BajaNorte.generic.short=PT
+Mexico/BajaNorte.standard.short=PST
+Mexico/BajaSur.daylight.short=MDT
+Mexico/BajaSur.generic.short=MT
+Mexico/BajaSur.standard.short=MST
+Mexico/General.daylight.short=CDT
+Mexico/General.generic.short=CT
+Mexico/General.standard.short=CST
+MIT.daylight.short=WSDT
+MIT.generic.short=WST
+MIT.standard.short=WST
+MST7MDT.daylight.short=MDT
+MST7MDT.generic.short=MT
+MST7MDT.standard.short=MST
+MST.daylight.short=MDT
+MST.generic.short=MT
+MST.standard.short=MST
+Navajo.daylight.short=MDT
+Navajo.generic.short=MT
+Navajo.standard.short=MST
+NET.daylight.short=AMST
+NET.generic.short=AMT
+NET.standard.short=AMT
+NST.daylight.short=NZDT
+NST.generic.short=NZT
+NST.standard.short=NZST
+NZ-CHAT.daylight.short=CHADT
+NZ-CHAT.generic.short=CHAT
+NZ-CHAT.standard.short=CHAST
+NZ.daylight.short=NZDT
+NZ.generic.short=NZT
+NZ.standard.short=NZST
+Pacific/Apia.daylight.short=WSDT
+Pacific/Apia.generic.short=WST
+Pacific/Apia.standard.short=WST
+Pacific/Auckland.daylight.short=NZDT
+Pacific/Auckland.generic.short=NZT
+Pacific/Auckland.standard.short=NZST
+Pacific/Chatham.daylight.short=CHADT
+Pacific/Chatham.generic.short=CHAT
+Pacific/Chatham.standard.short=CHAST
+Pacific/Chuuk.daylight.short=CHUST
+Pacific/Chuuk.generic.short=CHUT
+Pacific/Chuuk.standard.short=CHUT
+Pacific/Easter.daylight.short=EASST
+Pacific/Easter.generic.short=EAST
+Pacific/Easter.standard.short=EAST
+Pacific/Efate.daylight.short=VUST
+Pacific/Efate.generic.short=VUT
+Pacific/Efate.standard.short=VUT
+Pacific/Enderbury.daylight.short=PHOST
+Pacific/Enderbury.generic.short=PHOT
+Pacific/Enderbury.standard.short=PHOT
+Pacific/Fakaofo.daylight.short=TKST
+Pacific/Fakaofo.generic.short=TKT
+Pacific/Fakaofo.standard.short=TKT
+Pacific/Fiji.daylight.short=FJST
+Pacific/Fiji.generic.short=FJT
+Pacific/Fiji.standard.short=FJT
+Pacific/Funafuti.daylight.short=TVST
+Pacific/Funafuti.generic.short=TVT
+Pacific/Funafuti.standard.short=TVT
+Pacific/Galapagos.daylight.short=GALST
+Pacific/Galapagos.generic.short=GALT
+Pacific/Galapagos.standard.short=GALT
+Pacific/Gambier.daylight.short=GAMST
+Pacific/Gambier.generic.short=GAMT
+Pacific/Gambier.standard.short=GAMT
+Pacific/Guadalcanal.daylight.short=SBST
+Pacific/Guadalcanal.generic.short=SBT
+Pacific/Guadalcanal.standard.short=SBT
+Pacific/Guam.daylight.short=ChDT
+Pacific/Guam.generic.short=ChT
+Pacific/Guam.standard.short=ChST
+Pacific/Honolulu.daylight.short=HDT
+Pacific/Honolulu.generic.short=HT
+Pacific/Honolulu.standard.short=HST
+Pacific/Johnston.daylight.short=HDT
+Pacific/Johnston.generic.short=HT
+Pacific/Johnston.standard.short=HST
+Pacific/Kiritimati.daylight.short=LINST
+Pacific/Kiritimati.generic.short=LINT
+Pacific/Kiritimati.standard.short=LINT
+Pacific/Kosrae.daylight.short=KOSST
+Pacific/Kosrae.generic.short=KOST
+Pacific/Kosrae.standard.short=KOST
+Pacific/Kwajalein.daylight.short=MHST
+Pacific/Kwajalein.generic.short=MHT
+Pacific/Kwajalein.standard.short=MHT
+Pacific/Majuro.daylight.short=MHST
+Pacific/Majuro.generic.short=MHT
+Pacific/Majuro.standard.short=MHT
+Pacific/Marquesas.daylight.short=MARST
+Pacific/Marquesas.generic.short=MART
+Pacific/Marquesas.standard.short=MART
+Pacific/Midway.daylight.short=SDT
+Pacific/Midway.generic.short=ST
+Pacific/Midway.standard.short=SST
+Pacific/Nauru.daylight.short=NRST
+Pacific/Nauru.generic.short=NRT
+Pacific/Nauru.standard.short=NRT
+Pacific/Niue.daylight.short=NUST
+Pacific/Niue.generic.short=NUT
+Pacific/Niue.standard.short=NUT
+Pacific/Norfolk.daylight.short=NFST
+Pacific/Norfolk.generic.short=NFT
+Pacific/Norfolk.standard.short=NFT
+Pacific/Noumea.daylight.short=NCST
+Pacific/Noumea.generic.short=NCT
+Pacific/Noumea.standard.short=NCT
+Pacific/Pago_Pago.daylight.short=SDT
+Pacific/Pago_Pago.generic.short=ST
+Pacific/Pago_Pago.standard.short=SST
+Pacific/Palau.daylight.short=PWST
+Pacific/Palau.generic.short=PWT
+Pacific/Palau.standard.short=PWT
+Pacific/Pitcairn.daylight.short=PDT
+Pacific/Pitcairn.generic.short=PT
+Pacific/Pitcairn.standard.short=PST
+Pacific/Pohnpei.daylight.short=PONST
+Pacific/Pohnpei.generic.short=PONT
+Pacific/Pohnpei.standard.short=PONT
+Pacific/Ponape.daylight.short=PONST
+Pacific/Ponape.generic.short=PONT
+Pacific/Ponape.standard.short=PONT
+Pacific/Port_Moresby.daylight.short=PGST
+Pacific/Port_Moresby.generic.short=PGT
+Pacific/Port_Moresby.standard.short=PGT
+Pacific/Rarotonga.daylight.short=CKHST
+Pacific/Rarotonga.generic.short=CKT
+Pacific/Rarotonga.standard.short=CKT
+Pacific/Saipan.daylight.short=ChDT
+Pacific/Saipan.generic.short=ChT
+Pacific/Saipan.standard.short=ChST
+Pacific/Samoa.daylight.short=SDT
+Pacific/Samoa.generic.short=ST
+Pacific/Samoa.standard.short=SST
+Pacific/Tahiti.daylight.short=TAHST
+Pacific/Tahiti.generic.short=TAHT
+Pacific/Tahiti.standard.short=TAHT
+Pacific/Tarawa.daylight.short=GILST
+Pacific/Tarawa.generic.short=GILT
+Pacific/Tarawa.standard.short=GILT
+Pacific/Tongatapu.daylight.short=TOST
+Pacific/Tongatapu.generic.short=TOT
+Pacific/Tongatapu.standard.short=TOT
+Pacific/Truk.daylight.short=CHUST
+Pacific/Truk.generic.short=CHUT
+Pacific/Truk.standard.short=CHUT
+Pacific/Wake.daylight.short=WAKST
+Pacific/Wake.generic.short=WAKT
+Pacific/Wake.standard.short=WAKT
+Pacific/Wallis.daylight.short=WFST
+Pacific/Wallis.generic.short=WFT
+Pacific/Wallis.standard.short=WFT
+Pacific/Yap.daylight.short=CHUST
+Pacific/Yap.generic.short=CHUT
+Pacific/Yap.standard.short=CHUT
+PLT.daylight.short=PKST
+PLT.generic.short=PKT
+PLT.standard.short=PKT
+PNT.daylight.short=MDT
+PNT.generic.short=MT
+PNT.standard.short=MST
+Poland.daylight.short=CEST
+Poland.generic.short=CET
+Poland.standard.short=CET
+Portugal.daylight.short=WEST
+Portugal.generic.short=WET
+Portugal.standard.short=WET
+PRC.daylight.short=CDT
+PRC.generic.short=CT
+PRC.standard.short=CST
+PRT.daylight.short=ADT
+PRT.generic.short=AT
+PRT.standard.short=AST
+PST8PDT.daylight.short=PDT
+PST8PDT.generic.short=PT
+PST8PDT.standard.short=PST
+PST.daylight.short=PDT
+PST.generic.short=PT
+PST.standard.short=PST
+ROK.daylight.short=KDT
+ROK.generic.short=KT
+ROK.standard.short=KST
+Singapore.daylight.short=SGST
+Singapore.generic.short=SGT
+Singapore.standard.short=SGT
+SST.daylight.short=SBST
+SST.generic.short=SBT
+SST.standard.short=SBT
+SystemV/AST4ADT.daylight.short=ADT
+SystemV/AST4ADT.generic.short=AT
+SystemV/AST4ADT.standard.short=AST
+SystemV/AST4.daylight.short=ADT
+SystemV/AST4.generic.short=AT
+SystemV/AST4.standard.short=AST
+SystemV/CST6CDT.daylight.short=CDT
+SystemV/CST6CDT.generic.short=CT
+SystemV/CST6CDT.standard.short=CST
+SystemV/CST6.daylight.short=CDT
+SystemV/CST6.generic.short=CT
+SystemV/CST6.standard.short=CST
+SystemV/EST5.daylight.short=EDT
+SystemV/EST5EDT.daylight.short=EDT
+SystemV/EST5EDT.generic.short=ET
+SystemV/EST5EDT.standard.short=EST
+SystemV/EST5.generic.short=ET
+SystemV/EST5.standard.short=EST
+SystemV/HST10.daylight.short=HDT
+SystemV/HST10.generic.short=HT
+SystemV/HST10.standard.short=HST
+SystemV/MST7.daylight.short=MDT
+SystemV/MST7.generic.short=MT
+SystemV/MST7MDT.daylight.short=MDT
+SystemV/MST7MDT.generic.short=MT
+SystemV/MST7MDT.standard.short=MST
+SystemV/MST7.standard.short=MST
+SystemV/PST8.daylight.short=PDT
+SystemV/PST8.generic.short=PT
+SystemV/PST8PDT.daylight.short=PDT
+SystemV/PST8PDT.generic.short=PT
+SystemV/PST8PDT.standard.short=PST
+SystemV/PST8.standard.short=PST
+SystemV/YST9.daylight.short=AKDT
+SystemV/YST9.generic.short=AKT
+SystemV/YST9.standard.short=AKST
+SystemV/YST9YDT.daylight.short=AKDT
+SystemV/YST9YDT.generic.short=AKT
+SystemV/YST9YDT.standard.short=AKST
+Turkey.daylight.short=EEST
+Turkey.generic.short=EET
+Turkey.standard.short=EET
+UCT.daylight.short=UTC
+UCT.generic.short=UTC
+UCT.standard.short=UTC
+Universal.daylight.short=UTC
+Universal.generic.short=UTC
+Universal.standard.short=UTC
+US/Alaska.daylight.short=AKDT
+US/Alaska.generic.short=AKT
+US/Alaska.standard.short=AKST
+US/Aleutian.daylight.short=HADT
+US/Aleutian.generic.short=HAT
+US/Aleutian.standard.short=HAST
+US/Arizona.daylight.short=MDT
+US/Arizona.generic.short=MT
+US/Arizona.standard.short=MST
+US/Central.daylight.short=CDT
+US/Central.generic.short=CT
+US/Central.standard.short=CST
+US/Eastern.daylight.short=EDT
+US/Eastern.generic.short=ET
+US/Eastern.standard.short=EST
+US/East-Indiana.daylight.short=EDT
+US/East-Indiana.generic.short=ET
+US/East-Indiana.standard.short=EST
+US/Hawaii.daylight.short=HDT
+US/Hawaii.generic.short=HT
+US/Hawaii.standard.short=HST
+US/Indiana-Starke.daylight.short=CDT
+US/Indiana-Starke.generic.short=CT
+US/Indiana-Starke.standard.short=CST
+US/Michigan.daylight.short=EDT
+US/Michigan.generic.short=ET
+US/Michigan.standard.short=EST
+US/Mountain.daylight.short=MDT
+US/Mountain.generic.short=MT
+US/Mountain.standard.short=MST
+US/Pacific.daylight.short=PDT
+US/Pacific.generic.short=PT
+US/Pacific-New.daylight.short=PDT
+US/Pacific-New.generic.short=PT
+US/Pacific-New.standard.short=PST
+US/Pacific.standard.short=PST
+US/Samoa.daylight.short=SDT
+US/Samoa.generic.short=ST
+US/Samoa.standard.short=SST
+UTC.daylight.short=UTC
+UTC.generic.short=UTC
+UTC.standard.short=UTC
+VST.daylight.short=ICST
+VST.generic.short=ICT
+VST.standard.short=ICT
+WET.daylight.short=WEST
+WET.generic.short=WET
+WET.standard.short=WET
+W-SU.daylight.short=MSD
+W-SU.generic.short=MT
+W-SU.standard.short=MSK
+Zulu.daylight.short=UTC
+Zulu.generic.short=UTC
+Zulu.standard.short=UTC
--- a/jdk/test/tools/jar/UpdateManifest.java Mon Jan 27 21:01:55 2014 -0800
+++ b/jdk/test/tools/jar/UpdateManifest.java Wed Jul 05 19:27:58 2017 +0200
@@ -39,6 +39,8 @@
static PrintStream err = System.err;
static boolean debug = true;
+ static final Logger JAR_LOGGER = Logger.getLogger("java.util.jar");
+
public static void realMain(String[] args) throws Throwable {
if (args.length == 0) {
debug = false;
@@ -47,7 +49,7 @@
out = new PrintStream(new FileOutputStream(tmp));
err = out;
// Attributes.read() can log a message we don't care to see.
- Logger.getLogger("java.util.jar").setLevel(Level.OFF);
+ JAR_LOGGER.setLevel(Level.OFF);
}
try { testManifestExistence(); } catch (Throwable t) { unexpected(t); }
--- a/make/common/NativeCompilation.gmk Mon Jan 27 21:01:55 2014 -0800
+++ b/make/common/NativeCompilation.gmk Wed Jul 05 19:27:58 2017 +0200
@@ -186,7 +186,7 @@
$1_BASENAME:=$(LIBRARY_PREFIX)$$($1_LIBRARY)$(SHARED_LIBRARY_SUFFIX)
$1_TARGET:=$$($1_OUTPUT_DIR)/$$($1_BASENAME)
-
+ $1_NOSUFFIX:=$(LIBRARY_PREFIX)$$($1_LIBRARY)
endif
ifneq (,$$($1_STATIC_LIBRARY))
@@ -208,6 +208,7 @@
$1_BASENAME:=$(LIBRARY_PREFIX)$$($1_STATIC_LIBRARY)$(STATIC_LIBRARY_SUFFIX)
$1_TARGET:=$$($1_OUTPUT_DIR)/$$($1_BASENAME)
+ $1_NOSUFFIX:=$(LIBRARY_PREFIX)$$($1_STATIC_LIBRARY)
endif
ifneq (,$$($1_PROGRAM))
@@ -225,7 +226,7 @@
$1_BASENAME:=$$($1_PROGRAM)$(EXE_SUFFIX)
$1_TARGET:=$$($1_OUTPUT_DIR)/$$($1_BASENAME)
-
+ $1_NOSUFFIX:=$$($1_PROGRAM)
endif
ifeq (,$$($1_TARGET))
@@ -413,7 +414,78 @@
$1_EXTRA_LDFLAGS += $(call SET_SHARED_LIBRARY_MAPFILE,$$($1_REAL_MAPFILE))
endif
+ # Need to make sure TARGET is first on list
$1 := $$($1_TARGET)
+ ifeq ($$($1_STATIC_LIBRARY),)
+ ifneq ($$($1_DEBUG_SYMBOLS),)
+ ifeq ($(ENABLE_DEBUG_SYMBOLS), true)
+ ifneq ($(OPENJDK_TARGET_OS), macosx) # no MacOS X support yet
+ ifneq ($$($1_OUTPUT_DIR),$$($1_OBJECT_DIR))
+ # The dependency on TARGET is needed on windows for debuginfo files
+ # to be rebuilt properly.
+ $$($1_OUTPUT_DIR)/% : $$($1_OBJECT_DIR)/% $$($1_TARGET)
+ $(CP) $$< $$@
+ endif
+
+ # Generate debuginfo files.
+ ifeq ($(OPENJDK_TARGET_OS), windows)
+ $1_EXTRA_LDFLAGS += "-pdb:$$($1_OBJECT_DIR)/$$($1_NOSUFFIX).pdb" \
+ "-map:$$($1_OBJECT_DIR)/$$($1_NOSUFFIX).map"
+ $1_DEBUGINFO_FILES := $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).pdb \
+ $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).map
+
+ # This dependency dance ensures that windows debug info files get rebuilt
+ # properly if deleted.
+ $$($1_TARGET): $$($1_DEBUGINFO_FILES)
+ $$($1_DEBUGINFO_FILES): $$($1_EXPECTED_OBJS)
+
+ else ifeq ($(OPENJDK_TARGET_OS), solaris)
+ $1_DEBUGINFO_FILES := $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).debuginfo
+ # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
+ # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
+ # empty section headers until a fixed $(OBJCOPY) is available.
+ # An empty section header has sh_addr == 0 and sh_size == 0.
+ # This problem has only been seen on Solaris X64, but we call this tool
+ # on all Solaris builds just in case.
+ #
+ # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
+ # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
+ $$($1_DEBUGINFO_FILES): $$($1_TARGET) \
+ $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
+ $(RM) $$@
+ $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
+ $(OBJCOPY) --only-keep-debug $$< $$@
+ $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
+ $(TOUCH) $$@
+
+ else ifeq ($(OPENJDK_TARGET_OS), linux)
+ $1_DEBUGINFO_FILES := $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).debuginfo
+ $$($1_DEBUGINFO_FILES): $$($1_TARGET)
+ $(RM) $$@
+ $(OBJCOPY) --only-keep-debug $$< $$@
+ $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
+ $(TOUCH) $$@
+
+ endif # No MacOS X support
+
+ ifeq ($(ZIP_DEBUGINFO_FILES), true)
+ $1_DEBUGINFO_ZIP := $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).diz
+ $1 += $$(subst $$($1_OBJECT_DIR),$$($1_OUTPUT_DIR),$$($1_DEBUGINFO_ZIP))
+
+ # The dependency on TARGET is needed on windows for debuginfo files
+ # to be rebuilt properly.
+ $$($1_DEBUGINFO_ZIP): $$($1_DEBUGINFO_FILES) $$($1_TARGET)
+ $(CD) $$($1_OBJECT_DIR) \
+ && $(ZIP) -q $$@ $$($1_DEBUGINFO_FILES)
+
+ else
+ $1 += $$(subst $$($1_OBJECT_DIR),$$($1_OUTPUT_DIR),$$($1_DEBUGINFO_FILES))
+ endif
+ endif
+ endif # !MacOS X
+ endif # $1_DEBUG_SYMBOLS
+ endif # !STATIC_LIBRARY
+
ifneq (,$$($1_LIBRARY))
# Generating a dynamic library.
$1_EXTRA_LDFLAGS+=$$(call SET_SHARED_LIBRARY_NAME,$$($1_BASENAME))
@@ -423,77 +495,16 @@
$1_EXTRA_LDFLAGS_SUFFIX += $(GLOBAL_LDFLAGS_SUFFIX)
- ifneq (,$$($1_DEBUG_SYMBOLS))
- ifeq ($(ENABLE_DEBUG_SYMBOLS), true)
- ifeq ($(OPENJDK_TARGET_OS), windows)
- $1_EXTRA_LDFLAGS+="-pdb:$$($1_OBJECT_DIR)/$$($1_LIBRARY).pdb" \
- "-map:$$($1_OBJECT_DIR)/$$($1_LIBRARY).map"
- endif
-
- ifneq ($$($1_OUTPUT_DIR),$$($1_OBJECT_DIR))
- $$($1_OUTPUT_DIR)/% : $$($1_OBJECT_DIR)/%
- $(CP) $$< $$@
- endif
-
- ifneq ($(OPENJDK_TARGET_OS), macosx) # OBJCOPY is not used on MacOS X
- ifneq ($(OPENJDK_TARGET_OS), windows) # nor on Windows
- ifeq ($(OPENJDK_TARGET_OS), solaris)
- # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
- # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
- # empty section headers until a fixed $(OBJCOPY) is available.
- # An empty section header has sh_addr == 0 and sh_size == 0.
- # This problem has only been seen on Solaris X64, but we call this tool
- # on all Solaris builds just in case.
- #
- # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
- # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET) \
- $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
- $(RM) $$@
- $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
- $(OBJCOPY) --only-keep-debug $$< $$@
- $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
- else # not solaris
- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET)
- $(RM) $$@
- $(OBJCOPY) --only-keep-debug $$< $$@
- $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
- endif # Touch to not retrigger rule on rebuild
- $(TOUCH) $$@
- endif # !windows
- endif # !macosx
-
- ifeq ($(ZIP_DEBUGINFO_FILES), true)
-ifneq ($(OPENJDK_TARGET_OS), macosx) # no MacOS X support yet
- $1 += $$($1_OUTPUT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).diz
-
- ifeq ($(OPENJDK_TARGET_OS), windows)
- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).diz : $$($1_TARGET)
- $(CD) $$($1_OBJECT_DIR) \
- && $(ZIP) -q $$@ $$($1_LIBRARY).map $$($1_LIBRARY).pdb
- else
- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).diz : $$($1_TARGET) \
- $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo
- $(CD) $$($1_OBJECT_DIR) \
- && $(ZIP) -q $$@ $$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo
- endif
-endif # no MacOS X support yet
- else
- ifeq ($(OPENJDK_TARGET_OS), windows)
- $1 += $$($1_OUTPUT_DIR)/$$($1_LIBRARY).map \
- $$($1_OUTPUT_DIR)/$$($1_LIBRARY).pdb
- else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
- $1 += $$($1_OUTPUT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo
- endif
- endif
- endif
- endif
-
$$($1_TARGET) : $$($1_EXPECTED_OBJS) $$($1_RES) $$($1_REAL_MAPFILE)
$$(call LINKING_MSG,$$($1_BASENAME))
$$($1_LD) $$($1_LDFLAGS) $$($1_EXTRA_LDFLAGS) $(LD_OUT_OPTION)$$@ \
$$($1_EXPECTED_OBJS) $$($1_RES) $$($1_LDFLAGS_SUFFIX) \
$$($1_EXTRA_LDFLAGS_SUFFIX)
+ # Touch target to make sure it has a later time stamp than the debug
+ # symbol files to avoid unnecessary relinking on rebuild.
+ ifeq ($(OPENJDK_TARGET_OS), windows)
+ $(TOUCH) $$@
+ endif
endif
@@ -507,72 +518,6 @@
ifneq (,$$($1_PROGRAM))
# A executable binary has been specified, setup the target for it.
- ifneq (,$$($1_DEBUG_SYMBOLS))
- ifeq ($(ENABLE_DEBUG_SYMBOLS), true)
- ifeq ($(OPENJDK_TARGET_OS), windows)
- $1_EXTRA_LDFLAGS+="-pdb:$$($1_OBJECT_DIR)/$$($1_PROGRAM).pdb" \
- "-map:$$($1_OBJECT_DIR)/$$($1_PROGRAM).map"
- endif
-
- ifneq ($$($1_OUTPUT_DIR),$$($1_OBJECT_DIR))
- $$($1_OUTPUT_DIR)/% : $$($1_OBJECT_DIR)/%
- $(CP) $$< $$@
- endif
-
- ifneq ($(OPENJDK_TARGET_OS), macosx) # OBJCOPY is not used on MacOS X
- ifneq ($(OPENJDK_TARGET_OS), windows) # nor on Windows
- ifeq ($(OPENJDK_TARGET_OS), solaris)
- # gobjcopy crashes on "empty" section headers with the SHF_ALLOC flag set.
- # Use $(FIX_EMPTY_SEC_HDR_FLAGS) to clear the SHF_ALLOC flag (if set) from
- # empty section headers until a fixed $(OBJCOPY) is available.
- # An empty section header has sh_addr == 0 and sh_size == 0.
- # This problem has only been seen on Solaris X64, but we call this tool
- # on all Solaris builds just in case.
- #
- # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
- # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
- $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET) \
- $(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
- $(RM) $$@
- $(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
- $(OBJCOPY) --only-keep-debug $$< $$@
- $(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
- else # not solaris
- $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET)
- $(RM) $$@
- $(OBJCOPY) --only-keep-debug $$< $$@
- $(CD) $$(@D) && $(OBJCOPY) --add-gnu-debuglink=$$(@F) $$<
- endif
- $(TOUCH) $$@
- endif # !windows
- endif # !macosx
-
- ifeq ($(ZIP_DEBUGINFO_FILES), true)
-ifneq ($(OPENJDK_TARGET_OS), macosx) # no MacOS X support yet
- $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).diz
-
- ifeq ($(OPENJDK_TARGET_OS), windows)
- $$($1_OBJECT_DIR)/$$($1_PROGRAM).diz : $$($1_TARGET)
- $(CD) $$($1_OBJECT_DIR) \
- && $(ZIP) -q $$@ $$($1_PROGRAM).map $$($1_PROGRAM).pdb
- else
- $$($1_OBJECT_DIR)/$$(PROGRAM_PREFIX)$$($1_PROGRAM).diz : $$($1_TARGET) \
- $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo
- $(CD) $$($1_OBJECT_DIR) \
- && $(ZIP) -q $$@ $$($1_PROGRAM).debuginfo
- endif
-endif # no MacOS X support yet
- else
- ifeq ($(OPENJDK_TARGET_OS), windows)
- $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).map \
- $$($1_OUTPUT_DIR)/$$($1_PROGRAM).pdb
- else ifneq ($(OPENJDK_TARGET_OS), macosx) # MacOS X does not use .debuginfo files
- $1 += $$($1_OUTPUT_DIR)/$$($1_PROGRAM).debuginfo
- endif
- endif
- endif
- endif
-
$1_EXTRA_LDFLAGS_SUFFIX += $(GLOBAL_LDFLAGS_SUFFIX)
$$($1_TARGET) : $$($1_EXPECTED_OBJS) $$($1_RES) $$($1_GEN_MANIFEST)
@@ -590,5 +535,11 @@
$(CODESIGN) -s openjdk_codesign $$@
endif
endif
+ # Touch target to make sure it has a later time stamp than the debug
+ # symbol files to avoid unnecessary relinking on rebuild.
+ ifeq ($(OPENJDK_TARGET_OS), windows)
+ $(TOUCH) $$@
+ endif
+
endif
endef
--- a/make/scripts/hgforest.sh Mon Jan 27 21:01:55 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,144 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2009, 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.
-#
-# 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.
-#
-
-# Shell script for a fast parallel forest command
-command="$1"
-pull_extra_base="$2"
-
-tmp=/tmp/forest.$$
-rm -f -r ${tmp}
-mkdir -p ${tmp}
-
-# Remove tmp area on A. B. Normal termination
-trap 'rm -f -r ${tmp}' KILL
-trap 'rm -f -r ${tmp}' EXIT
-
-# Only look in specific locations for possible forests (avoids long searches)
-pull_default=""
-repos=""
-repos_extra=""
-if [ "${command}" = "clone" -o "${command}" = "fclone" ] ; then
- subrepos="corba jaxp jaxws langtools jdk hotspot nashorn"
- if [ -f .hg/hgrc ] ; then
- pull_default=`hg paths default`
- if [ "${pull_default}" = "" ] ; then
- echo "ERROR: Need initial clone with 'hg paths default' defined"
- exit 1
- fi
- fi
- if [ "${pull_default}" = "" ] ; then
- echo "ERROR: Need initial repository to use this script"
- exit 1
- fi
- for i in ${subrepos} ; do
- if [ ! -f ${i}/.hg/hgrc ] ; then
- repos="${repos} ${i}"
- fi
- done
- if [ "${pull_extra_base}" != "" ] ; then
- subrepos_extra="jdk/src/closed jdk/make/closed jdk/test/closed hotspot/make/closed hotspot/src/closed hotspot/test/closed deploy install sponsors pubs"
- pull_default_tail=`echo ${pull_default} | sed -e 's@^.*://[^/]*/\(.*\)@\1@'`
- pull_extra="${pull_extra_base}/${pull_default_tail}"
- for i in ${subrepos_extra} ; do
- if [ ! -f ${i}/.hg/hgrc ] ; then
- repos_extra="${repos_extra} ${i}"
- fi
- done
- fi
- at_a_time=2
- # Any repos to deal with?
- if [ "${repos}" = "" -a "${repos_extra}" = "" ] ; then
- echo "No repositories to clone."
- exit
- fi
-else
- hgdirs=`ls -d ./.hg ./*/.hg ./*/*/.hg ./*/*/*/.hg ./*/*/*/*/.hg 2>/dev/null`
- # Derive repository names from the .hg directory locations
- for i in ${hgdirs} ; do
- repos="${repos} `echo ${i} | sed -e 's@/.hg$@@'`"
- done
- at_a_time=8
- # Any repos to deal with?
- if [ "${repos}" = "" ] ; then
- echo "No repositories to process."
- exit
- fi
-fi
-
-# Echo out what repositories we will clone
-echo "# Repos: ${repos} ${repos_extra}"
-
-# Run the supplied command on all repos in parallel, save output until end
-n=0
-for i in ${repos} ; do
- echo "Starting on ${i}"
- n=`expr ${n} '+' 1`
- (
- (
- if [ "${command}" = "clone" -o "${command}" = "fclone" ] ; then
- pull_newrepo="`echo ${pull_default}/${i} | sed -e 's@\([^:]/\)//*@\1@g'`"
- cline="hg clone ${pull_newrepo} ${i}"
- echo "# ${cline}"
- ( eval "${cline}" )
- else
- cline="hg $*"
- echo "# cd ${i} && ${cline}"
- ( cd ${i} && eval "${cline}" )
- fi
- echo "# exit code $?"
- ) > ${tmp}/repo.${n} 2>&1 ; cat ${tmp}/repo.${n} ) &
- if [ `expr ${n} '%' ${at_a_time}` -eq 0 ] ; then
- sleep 5
- fi
-done
-# Wait for all hg commands to complete
-wait
-
-if [ "${repos_extra}" != "" ] ; then
- for i in ${repos_extra} ; do
- echo "Starting on ${i}"
- n=`expr ${n} '+' 1`
- (
- (
- pull_newextrarepo="`echo ${pull_extra}/${i} | sed -e 's@\([^:]/\)//*@\1@g'`"
- cline="hg clone ${pull_newextrarepo} ${i}"
- echo "# ${cline}"
- ( eval "${cline}" )
- echo "# exit code $?"
- ) > ${tmp}/repo.${n} 2>&1 ; cat ${tmp}/repo.${n} ) &
- if [ `expr ${n} '%' ${at_a_time}` -eq 0 ] ; then
- sleep 5
- fi
- done
- # Wait for all hg commands to complete
- wait
-fi
-
-# Cleanup
-rm -f -r ${tmp}
-
-# Terminate with exit 0 all the time (hard to know when to say "failed")
-exit 0
-
--- a/make/scripts/webrev.ksh Mon Jan 27 21:01:55 2014 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2783 +0,0 @@
-#!/bin/ksh -p
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
-# Use is subject to license terms.
-#
-# This script takes a file list and a workspace and builds a set of html files
-# suitable for doing a code review of source changes via a web page.
-# Documentation is available via 'webrev -h'.
-#
-
-WEBREV_UPDATED=25.1-hg+openjdk.java.net
-
-HTML='<?xml version="1.0"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">\n'
-
-FRAMEHTML='<?xml version="1.0"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">\n'
-
-STDHEAD='<meta charset="utf-8">
-<meta http-equiv="cache-control" content="no-cache" />
-<meta http-equiv="Pragma" content="no-cache" />
-<meta http-equiv="Expires" content="-1" />
-<!--
- Note to customizers: the body of the webrev is IDed as SUNWwebrev
- to allow easy overriding by users of webrev via the userContent.css
- mechanism available in some browsers.
-
- For example, to have all "removed" information be red instead of
- brown, set a rule in your userContent.css file like:
-
- body#SUNWwebrev span.removed { color: red ! important; }
--->
-<style type="text/css" media="screen">
-body {
- background-color: #eeeeee;
-}
-hr {
- border: none 0;
- border-top: 1px solid #aaa;
- height: 1px;
-}
-div.summary {
- font-size: .8em;
- border-bottom: 1px solid #aaa;
- padding-left: 1em;
- padding-right: 1em;
-}
-div.summary h2 {
- margin-bottom: 0.3em;
-}
-div.summary table th {
- text-align: right;
- vertical-align: top;
- white-space: nowrap;
-}
-span.lineschanged {
- font-size: 0.7em;
-}
-span.oldmarker {
- color: red;
- font-size: large;
- font-weight: bold;
-}
-span.newmarker {
- color: green;
- font-size: large;
- font-weight: bold;
-}
-span.removed {
- color: brown;
-}
-span.changed {
- color: blue;
-}
-span.new {
- color: blue;
- font-weight: bold;
-}
-a.print { font-size: x-small; }
-
-</style>
-
-<style type="text/css" media="print">
-pre { font-size: 0.8em; font-family: courier, monospace; }
-span.removed { color: #444; font-style: italic }
-span.changed { font-weight: bold; }
-span.new { font-weight: bold; }
-span.newmarker { font-size: 1.2em; font-weight: bold; }
-span.oldmarker { font-size: 1.2em; font-weight: bold; }
-a.print {display: none}
-hr { border: none 0; border-top: 1px solid #aaa; height: 1px; }
-</style>
-'
-
-#
-# UDiffs need a slightly different CSS rule for 'new' items (we don't
-# want them to be bolded as we do in cdiffs or sdiffs).
-#
-UDIFFCSS='
-<style type="text/css" media="screen">
-span.new {
- color: blue;
- font-weight: normal;
-}
-</style>
-'
-
-#
-# input_cmd | html_quote | output_cmd
-# or
-# html_quote filename | output_cmd
-#
-# Make a piece of source code safe for display in an HTML <pre> block.
-#
-html_quote()
-{
- sed -e "s/&/\&/g" -e "s/&#\([x]*[0-9A-Fa-f]\{2,5\}\);/\&#\1;/g" -e "s/</\</g" -e "s/>/\>/g" "$@" | expand
-}
-
-#
-# input_cmd | html_quote | output_cmd
-# or
-# html_dequote filename | output_cmd
-#
-# Replace HTML entities with literals
-#
-html_dequote()
-{
- sed -e "s/"/\"/g" -e "s/'/\'/g" -e "s/&/\&/g" -e "s/</<'/g" -e "s/>/>/g" "$@" | expand
-}
-
-#
-# input_cmd | bug2url | output_cmd
-#
-# Scan for bugids and insert <a> links to the relevent bug database.
-#
-bug2url()
-{
- sed -e 's|[0-9]\{5,\}|<a href=\"'$BUGURL$IDPREFIX'&\">&</a>|g'
-}
-
-#
-# strip_unchanged <infile> | output_cmd
-#
-# Removes chunks of sdiff documents that have not changed. This makes it
-# easier for a code reviewer to find the bits that have changed.
-#
-# Deleted lines of text are replaced by a horizontal rule. Some
-# identical lines are retained before and after the changed lines to
-# provide some context. The number of these lines is controlled by the
-# variable C in the $AWK script below.
-#
-# The script detects changed lines as any line that has a "<span class="
-# string embedded (unchanged lines have no particular class and are not
-# part of a <span>). Blank lines (without a sequence number) are also
-# detected since they flag lines that have been inserted or deleted.
-#
-strip_unchanged()
-{
- $AWK '
- BEGIN { C = c = 20 }
- NF == 0 || /span class=/ {
- if (c > C) {
- c -= C
- inx = 0
- if (c > C) {
- print "\n</pre><hr></hr><pre>"
- inx = c % C
- c = C
- }
-
- for (i = 0; i < c; i++)
- print ln[(inx + i) % C]
- }
- c = 0;
- print
- next
- }
- { if (c >= C) {
- ln[c % C] = $0
- c++;
- next;
- }
- c++;
- print
- }
- END { if (c > (C * 2)) print "\n</pre><hr></hr>" }
-
- ' $1
-}
-
-#
-# sdiff_to_html
-#
-# This function takes two files as arguments, obtains their diff, and
-# processes the diff output to present the files as an HTML document with
-# the files displayed side-by-side, differences shown in color. It also
-# takes a delta comment, rendered as an HTML snippet, as the third
-# argument. The function takes two files as arguments, then the name of
-# file, the path, and the comment. The HTML will be delivered on stdout,
-# e.g.
-#
-# $ sdiff_to_html old/usr/src/tools/scripts/webrev.sh \
-# new/usr/src/tools/scripts/webrev.sh \
-# webrev.sh usr/src/tools/scripts \
-# '<a href="https://bugs.openjdk.java.net/browse/JDK-1234567">
-# JDK-1234567</a> my bugid' > <file>.html
-#
-# framed_sdiff() is then called which creates $2.frames.html
-# in the webrev tree.
-#
-# FYI: This function is rather unusual in its use of awk. The initial
-# diff run produces conventional diff output showing changed lines mixed
-# with editing codes. The changed lines are ignored - we're interested in
-# the editing codes, e.g.
-#
-# 8c8
-# 57a61
-# 63c66,76
-# 68,93d80
-# 106d90
-# 108,110d91
-#
-# These editing codes are parsed by the awk script and used to generate
-# another awk script that generates HTML, e.g the above lines would turn
-# into something like this:
-#
-# BEGIN { printf "<pre>\n" }
-# function sp(n) {for (i=0;i<n;i++)printf "\n"}
-# function wl(n) {printf "<font color=%s>%4d %s </font>\n", n, NR, $0}
-# NR==8 {wl("#7A7ADD");next}
-# NR==54 {wl("#7A7ADD");sp(3);next}
-# NR==56 {wl("#7A7ADD");next}
-# NR==57 {wl("black");printf "\n"; next}
-# : :
-#
-# This script is then run on the original source file to generate the
-# HTML that corresponds to the source file.
-#
-# The two HTML files are then combined into a single piece of HTML that
-# uses an HTML table construct to present the files side by side. You'll
-# notice that the changes are color-coded:
-#
-# black - unchanged lines
-# blue - changed lines
-# bold blue - new lines
-# brown - deleted lines
-#
-# Blank lines are inserted in each file to keep unchanged lines in sync
-# (side-by-side). This format is familiar to users of sdiff(1) or
-# Teamware's filemerge tool.
-#
-sdiff_to_html()
-{
- diff -b $1 $2 > /tmp/$$.diffs
-
- TNAME=$3
- TPATH=$4
- COMMENT=$5
-
- #
- # Now we have the diffs, generate the HTML for the old file.
- #
- $AWK '
- BEGIN {
- printf "function sp(n) {for (i=0;i<n;i++)printf \"\\n\"}\n"
- printf "function removed() "
- printf "{printf \"<span class=\\\"removed\\\">%%4d %%s</span>\\n\", NR, $0}\n"
- printf "function changed() "
- printf "{printf \"<span class=\\\"changed\\\">%%4d %%s</span>\\n\", NR, $0}\n"
- printf "function bl() {printf \"%%4d %%s\\n\", NR, $0}\n"
-}
- /^</ {next}
- /^>/ {next}
- /^---/ {next}
-
- {
- split($1, a, /[cad]/) ;
- if (index($1, "a")) {
- if (a[1] == 0) {
- n = split(a[2], r, /,/);
- if (n == 1)
- printf "BEGIN\t\t{sp(1)}\n"
- else
- printf "BEGIN\t\t{sp(%d)}\n",\
- (r[2] - r[1]) + 1
- next
- }
-
- printf "NR==%s\t\t{", a[1]
- n = split(a[2], r, /,/);
- s = r[1];
- if (n == 1)
- printf "bl();printf \"\\n\"; next}\n"
- else {
- n = r[2] - r[1]
- printf "bl();sp(%d);next}\n",\
- (r[2] - r[1]) + 1
- }
- next
- }
- if (index($1, "d")) {
- n = split(a[1], r, /,/);
- n1 = r[1]
- n2 = r[2]
- if (n == 1)
- printf "NR==%s\t\t{removed(); next}\n" , n1
- else
- printf "NR==%s,NR==%s\t{removed(); next}\n" , n1, n2
- next
- }
- if (index($1, "c")) {
- n = split(a[1], r, /,/);
- n1 = r[1]
- n2 = r[2]
- final = n2
- d1 = 0
- if (n == 1)
- printf "NR==%s\t\t{changed();" , n1
- else {
- d1 = n2 - n1
- printf "NR==%s,NR==%s\t{changed();" , n1, n2
- }
- m = split(a[2], r, /,/);
- n1 = r[1]
- n2 = r[2]
- if (m > 1) {
- d2 = n2 - n1
- if (d2 > d1) {
- if (n > 1) printf "if (NR==%d)", final
- printf "sp(%d);", d2 - d1
- }
- }
- printf "next}\n" ;
-
- next
- }
- }
-
- END { printf "{printf \"%%4d %%s\\n\", NR, $0 }\n" }
- ' /tmp/$$.diffs > /tmp/$$.file1
-
- #
- # Now generate the HTML for the new file
- #
- $AWK '
- BEGIN {
- printf "function sp(n) {for (i=0;i<n;i++)printf \"\\n\"}\n"
- printf "function new() "
- printf "{printf \"<span class=\\\"new\\\">%%4d %%s</span>\\n\", NR, $0}\n"
- printf "function changed() "
- printf "{printf \"<span class=\\\"changed\\\">%%4d %%s</span>\\n\", NR, $0}\n"
- printf "function bl() {printf \"%%4d %%s\\n\", NR, $0}\n"
- }
-
- /^</ {next}
- /^>/ {next}
- /^---/ {next}
-
- {
- split($1, a, /[cad]/) ;
- if (index($1, "d")) {
- if (a[2] == 0) {
- n = split(a[1], r, /,/);
- if (n == 1)
- printf "BEGIN\t\t{sp(1)}\n"
- else
- printf "BEGIN\t\t{sp(%d)}\n",\
- (r[2] - r[1]) + 1
- next
- }
-
- printf "NR==%s\t\t{", a[2]
- n = split(a[1], r, /,/);
- s = r[1];
- if (n == 1)
- printf "bl();printf \"\\n\"; next}\n"
- else {
- n = r[2] - r[1]
- printf "bl();sp(%d);next}\n",\
- (r[2] - r[1]) + 1
- }
- next
- }
- if (index($1, "a")) {
- n = split(a[2], r, /,/);
- n1 = r[1]
- n2 = r[2]
- if (n == 1)
- printf "NR==%s\t\t{new() ; next}\n" , n1
- else
- printf "NR==%s,NR==%s\t{new() ; next}\n" , n1, n2
- next
- }
- if (index($1, "c")) {
- n = split(a[2], r, /,/);
- n1 = r[1]
- n2 = r[2]
- final = n2
- d2 = 0;
- if (n == 1) {
- final = n1
- printf "NR==%s\t\t{changed();" , n1
- } else {
- d2 = n2 - n1
- printf "NR==%s,NR==%s\t{changed();" , n1, n2
- }
- m = split(a[1], r, /,/);
- n1 = r[1]
- n2 = r[2]
- if (m > 1) {
- d1 = n2 - n1
- if (d1 > d2) {
- if (n > 1) printf "if (NR==%d)", final
- printf "sp(%d);", d1 - d2
- }
- }
- printf "next}\n" ;
- next
- }
- }
- END { printf "{printf \"%%4d %%s\\n\", NR, $0 }\n" }
- ' /tmp/$$.diffs > /tmp/$$.file2
-
- #
- # Post-process the HTML files by running them back through $AWK
- #
- html_quote < $1 | $AWK -f /tmp/$$.file1 > /tmp/$$.file1.html
-
- html_quote < $2 | $AWK -f /tmp/$$.file2 > /tmp/$$.file2.html
-
- #
- # Now combine into a valid HTML file and side-by-side into a table
- #
- print "$HTML<head>$STDHEAD"
- print "<title>$WNAME Sdiff $TPATH </title>"
- print "</head><body id=\"SUNWwebrev\">"
- print "<h2>$TPATH/$TNAME</h2>"
- print "<a class=\"print\" href=\"javascript:print()\">Print this page</a>"
- print "<pre>$COMMENT</pre>\n"
- print "<table><tr valign=\"top\">"
- print "<td><pre>"
-
- strip_unchanged /tmp/$$.file1.html
-
- print "</pre></td><td><pre>"
-
- strip_unchanged /tmp/$$.file2.html
-
- print "</pre></td>"
- print "</tr></table>"
- print "</body></html>"
-
- framed_sdiff $TNAME $TPATH /tmp/$$.file1.html /tmp/$$.file2.html \
- "$COMMENT"
-}
-
-
-#
-# framed_sdiff <filename> <filepath> <lhsfile> <rhsfile> <comment>
-#
-# Expects lefthand and righthand side html files created by sdiff_to_html.
-# We use insert_anchors() to augment those with HTML navigation anchors,
-# and then emit the main frame. Content is placed into:
-#
-# $WDIR/DIR/$TNAME.lhs.html
-# $WDIR/DIR/$TNAME.rhs.html
-# $WDIR/DIR/$TNAME.frames.html
-#
-# NOTE: We rely on standard usage of $WDIR and $DIR.
-#
-function framed_sdiff
-{
- typeset TNAME=$1
- typeset TPATH=$2
- typeset lhsfile=$3
- typeset rhsfile=$4
- typeset comments=$5
- typeset RTOP
-
- # Enable html files to access WDIR via a relative path.
- RTOP=$(relative_dir $TPATH $WDIR)
-
- # Make the rhs/lhs files and output the frameset file.
- print "$HTML<head>$STDHEAD" > $WDIR/$DIR/$TNAME.lhs.html
-
- cat >> $WDIR/$DIR/$TNAME.lhs.html <<-EOF
- <script type="text/javascript" src="$RTOP/ancnav.js"></script>
- </head>
- <body id="SUNWwebrev" onkeypress="keypress(event);">
- <a name="0"></a>
- <pre>$comments</pre><hr></hr>
- EOF
-
- cp $WDIR/$DIR/$TNAME.lhs.html $WDIR/$DIR/$TNAME.rhs.html
-
- insert_anchors $lhsfile >> $WDIR/$DIR/$TNAME.lhs.html
- insert_anchors $rhsfile >> $WDIR/$DIR/$TNAME.rhs.html
-
- close='</body></html>'
-
- print $close >> $WDIR/$DIR/$TNAME.lhs.html
- print $close >> $WDIR/$DIR/$TNAME.rhs.html
-
- print "$FRAMEHTML<head>$STDHEAD" > $WDIR/$DIR/$TNAME.frames.html
- print "<title>$WNAME Framed-Sdiff " \
- "$TPATH/$TNAME</title> </head>" >> $WDIR/$DIR/$TNAME.frames.html
- cat >> $WDIR/$DIR/$TNAME.frames.html <<-EOF
- <frameset rows="*,60">
- <frameset cols="50%,50%">
- <frame src="$TNAME.lhs.html" scrolling="auto" name="lhs" />
- <frame src="$TNAME.rhs.html" scrolling="auto" name="rhs" />
- </frameset>
- <frame src="$RTOP/ancnav.html" scrolling="no" marginwidth="0"
- marginheight="0" name="nav" />
- <noframes>
- <body id="SUNWwebrev">
- Alas 'frames' webrev requires that your browser supports frames
- and has the feature enabled.
- </body>
- </noframes>
- </frameset>
- </html>
- EOF
-}
-
-
-#
-# fix_postscript
-#
-# Merge codereview output files to a single conforming postscript file, by:
-# - removing all extraneous headers/trailers
-# - making the page numbers right
-# - removing pages devoid of contents which confuse some
-# postscript readers.
-#
-# From Casper.
-#
-function fix_postscript
-{
- infile=$1
-
- cat > /tmp/$$.crmerge.pl << \EOF
-
- print scalar(<>); # %!PS-Adobe---
- print "%%Orientation: Landscape\n";
-
- $pno = 0;
- $doprint = 1;
-
- $page = "";
-
- while (<>) {
- next if (/^%%Pages:\s*\d+/);
-
- if (/^%%Page:/) {
- if ($pno == 0 || $page =~ /\)S/) {
- # Header or single page containing text
- print "%%Page: ? $pno\n" if ($pno > 0);
- print $page;
- $pno++;
- } else {
- # Empty page, skip it.
- }
- $page = "";
- $doprint = 1;
- next;
- }
-
- # Skip from %%Trailer of one document to Endprolog
- # %%Page of the next
- $doprint = 0 if (/^%%Trailer/);
- $page .= $_ if ($doprint);
- }
-
- if ($page =~ /\)S/) {
- print "%%Page: ? $pno\n";
- print $page;
- } else {
- $pno--;
- }
- print "%%Trailer\n%%Pages: $pno\n";
-EOF
-
- $PERL /tmp/$$.crmerge.pl < $infile
-}
-
-
-#
-# input_cmd | insert_anchors | output_cmd
-#
-# Flag blocks of difference with sequentially numbered invisible
-# anchors. These are used to drive the frames version of the
-# sdiffs output.
-#
-# NOTE: Anchor zero flags the top of the file irrespective of changes,
-# an additional anchor is also appended to flag the bottom.
-#
-# The script detects changed lines as any line that has a "<span
-# class=" string embedded (unchanged lines have no class set and are
-# not part of a <span>. Blank lines (without a sequence number)
-# are also detected since they flag lines that have been inserted or
-# deleted.
-#
-function insert_anchors
-{
- $AWK '
- function ia() {
- # This should be able to be a singleton <a /> but that
- # seems to trigger a bug in firefox a:hover rule processing
- printf "<a name=\"%d\" id=\"anc%d\"></a>", anc, anc++;
- }
-
- BEGIN {
- anc=1;
- inblock=1;
- printf "<pre>\n";
- }
- NF == 0 || /^<span class=/ {
- if (inblock == 0) {
- ia();
- inblock=1;
- }
- print;
- next;
- }
- {
- inblock=0;
- print;
- }
- END {
- ia();
-
- printf "<b style=\"font-size: large; color: red\">";
- printf "--- EOF ---</b>"
- for(i=0;i<8;i++) printf "\n\n\n\n\n\n\n\n\n\n";
- printf "</pre>"
- printf "<form name=\"eof\">";
- printf "<input name=\"value\" value=\"%d\" type=\"hidden\" />",
- anc - 1;
- printf "</form>";
- }
- ' $1
-}
-
-
-#
-# relative_dir
-#
-# Print a relative return path from $1 to $2. For example if
-# $1=/tmp/myreview/raw_files/usr/src/tools/scripts and $2=/tmp/myreview,
-# this function would print "../../../../".
-#
-# In the event that $1 is not in $2 a warning is printed to stderr,
-# and $2 is returned-- the result of this is that the resulting webrev
-# is not relocatable.
-#
-function relative_dir
-{
- d1=$1
- d2=$2
- if [[ "$d1" == "." ]]; then
- print "."
- else
- typeset cur="${d1##$d2?(/)}"
- typeset ret=""
- if [[ $d2 == $cur ]]; then # Should never happen.
- # Should never happen.
- print -u2 "\nWARNING: relative_dir: \"$1\" not relative "
- print -u2 "to \"$2\". Check input paths. Framed webrev "
- print -u2 "will not be relocatable!"
- print $2
- return
- fi
-
- while [[ -n ${cur} ]];
- do
- cur=${cur%%*(/)*([!/])}
- if [[ -z $ret ]]; then
- ret=".."
- else
- ret="../$ret"
- fi
- done
- print $ret
- fi
-}
-
-
-#
-# frame_nav_js
-#
-# Emit javascript for frame navigation
-#
-function frame_nav_js
-{
-cat << \EOF
-var myInt;
-var scrolling=0;
-var sfactor = 3;
-var scount=10;
-
-function scrollByPix() {
- if (scount<=0) {
- sfactor*=1.2;
- scount=10;
- }
- parent.lhs.scrollBy(0,sfactor);
- parent.rhs.scrollBy(0,sfactor);
- scount--;
-}
-
-function scrollToAnc(num) {
-
- // Update the value of the anchor in the form which we use as
- // storage for this value. setAncValue() will take care of
- // correcting for overflow and underflow of the value and return
- // us the new value.
- num = setAncValue(num);
-
- // Set location and scroll back a little to expose previous
- // lines.
- //
- // Note that this could be improved: it is possible although
- // complex to compute the x and y position of an anchor, and to
- // scroll to that location directly.
- //
- parent.lhs.location.replace(parent.lhs.location.pathname + "#" + num);
- parent.rhs.location.replace(parent.rhs.location.pathname + "#" + num);
-
- parent.lhs.scrollBy(0,-30);
- parent.rhs.scrollBy(0,-30);
-}
-
-function getAncValue()
-{
- return (parseInt(parent.nav.document.diff.real.value));
-}
-
-function setAncValue(val)
-{
- if (val <= 0) {
- val = 0;
- parent.nav.document.diff.real.value = val;
- parent.nav.document.diff.display.value = "BOF";
- return (val);
- }
-
- //
- // The way we compute the max anchor value is to stash it
- // inline in the left and right hand side pages-- it's the same
- // on each side, so we pluck from the left.
- //
- maxval = parent.lhs.document.eof.value.value;
- if (val < maxval) {
- parent.nav.document.diff.real.value = val;
- parent.nav.document.diff.display.value = val.toString();
- return (val);
- }
-
- // this must be: val >= maxval
- val = maxval;
- parent.nav.document.diff.real.value = val;
- parent.nav.document.diff.display.value = "EOF";
- return (val);
-}
-
-function stopScroll() {
- if (scrolling==1) {
- clearInterval(myInt);
- scrolling=0;
- }
-}
-
-function startScroll() {
- stopScroll();
- scrolling=1;
- myInt=setInterval("scrollByPix()",10);
-}
-
-function handlePress(b) {
-
- switch (b) {
- case 1 :
- scrollToAnc(-1);
- break;
- case 2 :
- scrollToAnc(getAncValue() - 1);
- break;
- case 3 :
- sfactor=-3;
- startScroll();
- break;
- case 4 :
- sfactor=3;
- startScroll();
- break;
- case 5 :
- scrollToAnc(getAncValue() + 1);
- break;
- case 6 :
- scrollToAnc(999999);
- break;
- }
-}
-
-function handleRelease(b) {
- stopScroll();
-}
-
-function keypress(ev) {
- var keynum;
- var keychar;
-
- if (window.event) { // IE
- keynum = ev.keyCode;
- } else if (ev.which) { // non-IE
- keynum = ev.which;
- }
-
- keychar = String.fromCharCode(keynum);
-
- if (keychar == "k") {
- handlePress(2);
- return (0);
- } else if (keychar == "j" || keychar == " ") {
- handlePress(5);
- return (0);
- }
- return (1);
-}
-
-function ValidateDiffNum(){
- val = parent.nav.document.diff.display.value;
- if (val == "EOF") {
- scrollToAnc(999999);
- return;
- }
-
- if (val == "BOF") {
- scrollToAnc(0);
- return;
- }
-
- i=parseInt(val);
- if (isNaN(i)) {
- parent.nav.document.diff.display.value = getAncValue();
- } else {
- scrollToAnc(i);
- }
- return false;
-}
-
-EOF
-}
-
-#
-# frame_navigation
-#
-# Output anchor navigation file for framed sdiffs.
-#
-function frame_navigation
-{
- print "$HTML<head>$STDHEAD"
-
- cat << \EOF
-<title>Anchor Navigation</title>
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta http-equiv="Content-Type" content="text/html" />
-
-<style type="text/css">
- div.button td { padding-left: 5px; padding-right: 5px;
- background-color: #eee; text-align: center;
- border: 1px #444 outset; cursor: pointer; }
- div.button a { font-weight: bold; color: black }
- div.button td:hover { background: #ffcc99; }
-</style>
-EOF
-
- print "<script type=\"text/javascript\" src=\"ancnav.js\"></script>"
-
- cat << \EOF
-</head>
-<body id="SUNWwebrev" bgcolor="#eeeeee" onload="document.diff.real.focus();"
- onkeypress="keypress(event);">
- <noscript lang="javascript">
- <center>
- <p><big>Framed Navigation controls require Javascript</big><br />
- Either this browser is incompatable or javascript is not enabled</p>
- </center>
- </noscript>
- <table width="100%" border="0" align="center">
- <tr>
- <td valign="middle" width="25%">Diff navigation:
- Use 'j' and 'k' for next and previous diffs; or use buttons
- at right</td>
- <td align="center" valign="top" width="50%">
- <div class="button">
- <table border="0" align="center">
- <tr>
- <td>
- <a onMouseDown="handlePress(1);return true;"
- onMouseUp="handleRelease(1);return true;"
- onMouseOut="handleRelease(1);return true;"
- onClick="return false;"
- title="Go to Beginning Of file">BOF</a></td>
- <td>
- <a onMouseDown="handlePress(3);return true;"
- onMouseUp="handleRelease(3);return true;"
- onMouseOut="handleRelease(3);return true;"
- title="Scroll Up: Press and Hold to accelerate"
- onClick="return false;">Scroll Up</a></td>
- <td>
- <a onMouseDown="handlePress(2);return true;"
- onMouseUp="handleRelease(2);return true;"
- onMouseOut="handleRelease(2);return true;"
- title="Go to previous Diff"
- onClick="return false;">Prev Diff</a>
- </td></tr>
-
- <tr>
- <td>
- <a onMouseDown="handlePress(6);return true;"
- onMouseUp="handleRelease(6);return true;"
- onMouseOut="handleRelease(6);return true;"
- onClick="return false;"
- title="Go to End Of File">EOF</a></td>
- <td>
- <a onMouseDown="handlePress(4);return true;"
- onMouseUp="handleRelease(4);return true;"
- onMouseOut="handleRelease(4);return true;"
- title="Scroll Down: Press and Hold to accelerate"
- onClick="return false;">Scroll Down</a></td>
- <td>
- <a onMouseDown="handlePress(5);return true;"
- onMouseUp="handleRelease(5);return true;"
- onMouseOut="handleRelease(5);return true;"
- title="Go to next Diff"
- onClick="return false;">Next Diff</a></td>
- </tr>
- </table>
- </div>
- </td>
- <th valign="middle" width="25%">
- <form action="" name="diff" onsubmit="return ValidateDiffNum();">
- <input name="display" value="BOF" size="8" type="text" />
- <input name="real" value="0" size="8" type="hidden" />
- </form>
- </th>
- </tr>
- </table>
- </body>
-</html>
-EOF
-}
-
-
-
-#
-# diff_to_html <filename> <filepath> { U | C } <comment>
-#
-# Processes the output of diff to produce an HTML file representing either
-# context or unified diffs.
-#
-diff_to_html()
-{
- TNAME=$1
- TPATH=$2
- DIFFTYPE=$3
- COMMENT=$4
-
- print "$HTML<head>$STDHEAD"
- print "<title>$WNAME ${DIFFTYPE}diff $TPATH</title>"
-
- if [[ $DIFFTYPE == "U" ]]; then
- print "$UDIFFCSS"
- fi
-
- cat <<-EOF
- </head>
- <body id="SUNWwebrev">
- <h2>$TPATH</h2>
- <a class="print" href="javascript:print()">Print this page</a>
- <pre>$COMMENT</pre>
- <pre>
-EOF
-
- html_quote | $AWK '
- /^--- new/ { next }
- /^\+\+\+ new/ { next }
- /^--- old/ { next }
- /^\*\*\* old/ { next }
- /^\*\*\*\*/ { next }
- /^-------/ { printf "<center><h1>%s</h1></center>\n", $0; next }
- /^\@\@.*\@\@$/ { printf "</pre><hr /><pre>\n";
- printf "<span class=\"newmarker\">%s</span>\n", $0;
- next}
-
- /^\*\*\*/ { printf "<hr /><span class=\"oldmarker\">%s</span>\n", $0;
- next}
- /^---/ { printf "<span class=\"newmarker\">%s</span>\n", $0;
- next}
- /^\+/ {printf "<span class=\"new\">%s</span>\n", $0; next}
- /^!/ {printf "<span class=\"changed\">%s</span>\n", $0; next}
- /^-/ {printf "<span class=\"removed\">%s</span>\n", $0; next}
- {printf "%s\n", $0; next}
- '
-
- print "</pre></body></html>\n"
-}
-
-
-#
-# source_to_html { new | old } <filename>
-#
-# Process a plain vanilla source file to transform it into an HTML file.
-#
-source_to_html()
-{
- WHICH=$1
- TNAME=$2
-
- print "$HTML<head>$STDHEAD"
- print "<title>$WHICH $TNAME</title>"
- print "<body id=\"SUNWwebrev\">"
- print "<pre>"
- html_quote | $AWK '{line += 1 ; printf "%4d %s\n", line, $0 }'
- print "</pre></body></html>"
-}
-
-comments_from_mercurial()
-{
- fmt=$1
- pfile=$PWS/$2
- cfile=$CWS/$3
-
- logdir=`dirname $cfile`
- logf=`basename $cfile`
- if [ -d $logdir ]; then
- ( cd $logdir;
- active=`hg status $logf 2>/dev/null`
- # If the output from 'hg status' is not empty, it means the file
- # hasn't been committed, so don't fetch comments.
- if [[ -z $active ]] ; then
- if [[ -n $ALL_CREV ]]; then
- rev_opt=
- for rev in $ALL_CREV; do
- rev_opt="$rev_opt --rev $rev"
- done
- comm=`hg log $rev_opt --follow --template 'rev {rev} : {desc}\n' $logf`
- elif [[ -n $FIRST_CREV ]]; then
- comm=`hg log --rev $FIRST_CREV:tip --follow --template 'rev {rev} : {desc}\n' $logf`
- else
- comm=`hg log -l1 --follow --template 'rev {rev} : {desc}\n' $logf`
- fi
- else
- comm=""
- fi
- if [[ $fmt == "text" ]]; then
- print "$comm"
- return
- fi
-
- print "$comm" | html_quote | bug2url
- )
- fi
-}
-
-
-#
-# getcomments {text|html} filepath parentpath
-#
-# Fetch the comments depending on what SCM mode we're in.
-#
-getcomments()
-{
- typeset fmt=$1
- typeset p=$2
- typeset pp=$3
-
- comments_from_mercurial $fmt $pp $p
-}
-
-#
-# printCI <total-changed> <inserted> <deleted> <modified> <unchanged>
-#
-# Print out Code Inspection figures similar to sccs-prt(1) format.
-#
-function printCI
-{
- integer tot=$1 ins=$2 del=$3 mod=$4 unc=$5
- typeset str
- if (( tot == 1 )); then
- str="line"
- else
- str="lines"
- fi
- printf '%d %s changed: %d ins; %d del; %d mod; %d unchg' \
- $tot $str $ins $del $mod $unc
-}
-
-
-#
-# difflines <oldfile> <newfile>
-#
-# Calculate and emit number of added, removed, modified and unchanged lines,
-# and total lines changed, the sum of added + removed + modified.
-#
-function difflines
-{
- integer tot mod del ins unc err
- typeset filename
-
- eval $( diff -e $1 $2 | $AWK '
- # Change range of lines: N,Nc
- /^[0-9]*,[0-9]*c$/ {
- n=split(substr($1,1,length($1)-1), counts, ",");
- if (n != 2) {
- error=2
- exit;
- }
- #
- # 3,5c means lines 3 , 4 and 5 are changed, a total of 3 lines.
- # following would be 5 - 3 = 2! Hence +1 for correction.
- #
- r=(counts[2]-counts[1])+1;
-
- #
- # Now count replacement lines: each represents a change instead
- # of a delete, so increment c and decrement r.
- #
- while (getline != /^\.$/) {
- c++;
- r--;
- }
- #
- # If there were more replacement lines than original lines,
- # then r will be negative; in this case there are no deletions,
- # but there are r changes that should be counted as adds, and
- # since r is negative, subtract it from a and add it to c.
- #
- if (r < 0) {
- a-=r;
- c+=r;
- }
-
- #
- # If there were more original lines than replacement lines, then
- # r will be positive; in this case, increment d by that much.
- #
- if (r > 0) {
- d+=r;
- }
- next;
- }
-
- # Change lines: Nc
- /^[0-9].*c$/ {
- # The first line is a replacement; any more are additions.
- if (getline != /^\.$/) {
- c++;
- while (getline != /^\.$/) a++;
- }
- next;
- }
-
- # Add lines: both Na and N,Na
- /^[0-9].*a$/ {
- while (getline != /^\.$/) a++;
- next;
- }
-
- # Delete range of lines: N,Nd
- /^[0-9]*,[0-9]*d$/ {
- n=split(substr($1,1,length($1)-1), counts, ",");
- if (n != 2) {
- error=2
- exit;
- }
- #
- # 3,5d means lines 3 , 4 and 5 are deleted, a total of 3 lines.
- # following would be 5 - 3 = 2! Hence +1 for correction.
- #
- r=(counts[2]-counts[1])+1;
- d+=r;
- next;
- }
-
- # Delete line: Nd. For example 10d says line 10 is deleted.
- /^[0-9]*d$/ {d++; next}
-
- # Should not get here!
- {
- error=1;
- exit;
- }
-
- # Finish off - print results
- END {
- printf("tot=%d;mod=%d;del=%d;ins=%d;err=%d\n",
- (c+d+a), c, d, a, error);
- }' )
-
- # End of $AWK, Check to see if any trouble occurred.
- if (( $? > 0 || err > 0 )); then
- print "Unexpected Error occurred reading" \
- "\`diff -e $1 $2\`: \$?=$?, err=" $err
- return
- fi
-
- # Accumulate totals
- (( TOTL += tot ))
- (( TMOD += mod ))
- (( TDEL += del ))
- (( TINS += ins ))
- # Calculate unchanged lines
- unc=`wc -l < $1`
- if (( unc > 0 )); then
- (( unc -= del + mod ))
- (( TUNC += unc ))
- fi
- # print summary
- print "<span class=\"lineschanged\">\c"
- printCI $tot $ins $del $mod $unc
- print "</span>"
-}
-
-function outgoing_from_mercurial_forest
-{
- hg foutgoing --template 'rev: {rev}\n' $OUTPWS | $FILTER | $AWK '
- BEGIN {ntree=0}
- /^comparing/ {next}
- /^no changes/ {next}
- /^searching/ {next}
- /^\[.*\]$/ {tree=substr($1,2,length($1)-2);
- trees[ntree++] = tree;
- revs[tree]=-1;
- next}
- /^rev:/ {rev=$2+0;
- if (revs[tree] == -1 || rev < revs[tree])
- { revs[tree] = rev; };
- next;}
- END {for (tree in trees)
- { rev=revs[trees[tree]];
- if (rev > 0)
- {printf("%s %d\n",trees[tree],rev-1)}
- }}' | while read LINE
- do
- set - $LINE
- TREE=$1
- REV=$2
- A=`hg -R $CWS/$TREE log --rev $REV --template '{node}'`
- FSTAT_OPT="--rev $A"
- print "Revision: $A $REV" >> $FLIST
- treestatus $TREE
- done
-}
-
-function flist_from_mercurial_forest
-{
- rm -f $FLIST
- if [ -z "$Nflag" ]; then
- print " File list from hg foutgoing $PWS ..."
- outgoing_from_mercurial_forest
- HG_LIST_FROM_COMMIT=1
- fi
- if [ ! -f $FLIST ]; then
- # hg commit hasn't been run see what is lying around
- print "\n No outgoing, perhaps you haven't commited."
- print " File list from hg fstatus -mard ...\c"
- FSTAT_OPT=
- fstatus
- HG_LIST_FROM_COMMIT=
- fi
- print " Done."
-}
-
-#
-# Used when dealing with the result of 'hg foutgoing'
-# When now go down the tree and generate the change list
-#
-function treestatus
-{
- TREE=$1
- HGCMD="hg -R $CWS/$TREE status $FSTAT_OPT"
-
- $HGCMD -mdn 2>/dev/null | $FILTER | while read F
- do
- echo $TREE/$F
- done >> $FLIST
-
- # Then all the added files
- # But some of these could have been "moved" or renamed ones or copied ones
- # so let's make sure we get the proper info
- # hg status -aC will produce something like:
- # A subdir/File3
- # A subdir/File4
- # File4
- # A subdir/File5
- # The first and last are simple addition while the middle one
- # is a move/rename or a copy. We can't distinguish from a rename vs a copy
- # without also getting the status of removed files. The middle case above
- # is a rename if File4 is also shown a being removed. If File4 is not a
- # removed file, then the middle case is a copy from File4 to subdir/File4
- # FIXME - we're not distinguishing copy from rename
- $HGCMD -aC | $FILTER | while read LINE; do
- ldone=""
- while [ -z "$ldone" ]; do
- ldone="1"
- set - $LINE
- if [ $# -eq 2 -a "$1" == "A" ]; then
- AFILE=$2
- if read LINE2; then
- set - $LINE2
- if [ $# -eq 1 ]; then
- echo $TREE/$AFILE $TREE/$1 >>$FLIST
- elif [ $# -eq 2 ]; then
- echo $TREE/$AFILE >>$FLIST
- LINE=$LINE2
- ldone=""
- fi
- else
- echo $TREE/$AFILE >>$FLIST
- fi
- fi
- done
- done
- $HGCMD -rn | $FILTER | while read RFILE; do
- grep "$TREE/$RFILE" $FLIST >/dev/null
- if [ $? -eq 1 ]; then
- echo $TREE/$RFILE >>$FLIST
- fi
- done
-}
-
-function fstatus
-{
- #
- # forest extension is still being changed. For instance the output
- # of fstatus used to no prepend the tree path to filenames, but
- # this has changed recently. AWK code below does try to handle both
- # cases
- #
- hg fstatus -mdn $FSTAT_OPT 2>/dev/null | $FILTER | $AWK '
- /^\[.*\]$/ {tree=substr($1,2,length($1)-2); next}
- $1 != "" {n=index($1,tree);
- if (n == 0)
- { printf("%s/%s\n",tree,$1)}
- else
- { printf("%s\n",$1)}}' >> $FLIST
-
- #
- # There is a bug in the output of fstatus -aC on recent versions: it
- # inserts a space between the name of the tree and the filename of the
- # old file. e.g.:
- #
- # $ hg fstatus -aC
- # [.]
- #
- # [MyWS]
- # A MyWS/subdir/File2
- # MyWS/ File2
- #
- # [MyWS2]
- #
-
- hg fstatus -aC $FSTAT_OPT 2>/dev/null | $FILTER | $AWK '
- /^\[.*\]$/ {tree=substr($1,2,length($1)-2); next}
- /^A .*/ {n=index($2,tree);
- if (n == 0)
- { printf("A %s/%s\n",tree,$2)}
- else
- { printf("A %s\n",$2)};
- next}
- /^ / {n=index($1,tree);
- if (n == 0)
- { printf("%s/%s\n",tree,$1)}
- else
- { if (NF == 2)
- printf("%s/%s\n",tree,$2)
- else
- printf("%s\n",$1)
- };
- next}
- ' | while read LINE; do
- ldone=""
- while [ -z "$ldone" ]; do
- ldone="1"
- set - $LINE
- if [ $# -eq 2 -a "$1" == "A" ]; then
- AFILE=$2
- if read LINE2; then
- set - $LINE2
- if [ $# -eq 1 ]; then
- echo $AFILE $1 >>$FLIST
- elif [ $# -eq 2 ]; then
- echo $AFILE >>$FLIST
- LINE=$LINE2
- ldone=""
- fi
- else
- echo $AFILE >>$FLIST
- fi
- fi
- done
- done
- hg fstatus -rn $FSTAT_OPT 2>/dev/null | $FILTER | $AWK '
- /^\[.*\]$/ {tree=substr($1,2,length($1)-2); next}
- $1 != "" {n=index($1,tree);
- if (n == 0)
- { printf("%s/%s\n",tree,$1)}
- else
- { printf("%s\n",$1)}}' | while read RFILE; do
- grep "$RFILE" $FLIST >/dev/null
- if [ $? -eq 1 ]; then
- echo $RFILE >>$FLIST
- fi
- done
-}
-
-#
-# flist_from_mercurial $PWS
-#
-# Only local file based repositories are supported at present
-# since even though we can determine the list from the parent finding
-# the changes is harder.
-#
-# We first look for any outgoing files, this is for when the user has
-# run hg commit. If we don't find any then we look with hg status.
-#
-# We need at least one of default-push or default paths set in .hg/hgrc
-# If neither are set we don't know who to compare with.
-
-function flist_from_mercurial
-{
-# if [ "${PWS##ssh://}" != "$PWS" -o \
-# "${PWS##http://}" != "$PWS" -o \
-# "${PWS##https://}" != "$PWS" ]; then
-# print "Remote Mercurial repositories not currently supported."
-# print "Set default and/or default-push to a local repository"
-# exit
-# fi
- if [[ -n $forestflag ]]; then
- HG_LIST_FROM_COMMIT=
- flist_from_mercurial_forest
- else
- STATUS_REV=
- if [[ -n $rflag ]]; then
- STATUS_REV="--rev $PARENT_REV"
- elif [[ -n $OUTREV ]]; then
- STATUS_REV="--rev $OUTREV"
- else
- # hg commit hasn't been run see what is lying around
- print "\n No outgoing, perhaps you haven't commited."
- fi
- # First let's list all the modified or deleted files
-
- hg status $STATUS_REV -mdn | $FILTER > $FLIST
-
- # Then all the added files
- # But some of these could have been "moved" or renamed ones
- # so let's make sure we get the proper info
- # hg status -aC will produce something like:
- # A subdir/File3
- # A subdir/File4
- # File4
- # A subdir/File5
- # The first and last are simple addition while the middle one
- # is a move/rename or a copy. We can't distinguish from a rename vs a copy
- # without also getting the status of removed files. The middle case above
- # is a rename if File4 is also shown a being removed. If File4 is not a
- # removed file, then the middle case is a copy from File4 to subdir/File4
- # FIXME - we're not distinguishing copy from rename
-
- hg status $STATUS_REV -aC | $FILTER >$FLIST.temp
- while read LINE; do
- ldone=""
- while [ -z "$ldone" ]; do
- ldone="1"
- set - $LINE
- if [ $# -eq 2 -a "$1" == "A" ]; then
- AFILE=$2
- if read LINE2; then
- set - $LINE2
- if [ $# -eq 1 ]; then
- echo $AFILE $1 >>$FLIST
- elif [ $# -eq 2 ]; then
- echo $AFILE >>$FLIST
- LINE=$LINE2
- ldone=""
- fi
- else
- echo $AFILE >>$FLIST
- fi
- fi
- done
- done < $FLIST.temp
- hg status $STATUS_REV -rn | $FILTER > $FLIST.temp
- while read RFILE; do
- grep "$RFILE" $FLIST >/dev/null
- if [ $? -eq 1 ]; then
- echo $RFILE >>$FLIST
- fi
- done < $FLIST.temp
- rm -f $FLIST.temp
- fi
-}
-
-function env_from_flist
-{
- [[ -r $FLIST ]] || return
-
- #
- # Use "eval" to set env variables that are listed in the file
- # list. Then copy those into our local versions of those
- # variables if they have not been set already.
- #
- eval `sed -e "s/#.*$//" $FLIST | grep = `
-
- [[ -z $codemgr_ws && -n $CODEMGR_WS ]] && codemgr_ws=$CODEMGR_WS
-
- #
- # Check to see if CODEMGR_PARENT is set in the flist file.
- #
- [[ -z $codemgr_parent && -n $CODEMGR_PARENT ]] && \
- codemgr_parent=$CODEMGR_PARENT
-}
-
-#
-# detect_scm
-#
-# We dynamically test the SCM type; this allows future extensions to
-# new SCM types
-#
-function detect_scm
-{
- if hg root >/dev/null ; then
- print "mercurial"
- else
- print "unknown"
- fi
-}
-
-function look_for_prog
-{
- typeset path
- typeset ppath
- typeset progname=$1
-
- DEVTOOLS=
- OS=`uname`
- if [[ "$OS" == "SunOS" ]]; then
- DEVTOOLS="/java/devtools/`uname -p`/bin"
- elif [[ "$OS" == "Linux" ]]; then
- DEVTOOLS="/java/devtools/linux/bin"
- fi
-
- ppath=$PATH
- ppath=$ppath:/usr/sfw/bin:/usr/bin:/usr/sbin
- ppath=$ppath:/opt/teamware/bin:/opt/onbld/bin
- ppath=$ppath:/opt/onbld/bin/`uname -p`
- ppath=$ppath:/java/devtools/share/bin:$DEVTOOLS
-
- PATH=$ppath prog=`whence $progname`
- if [[ -n $prog ]]; then
- print $prog
- fi
-}
-
-#
-# Find the parent for $1
-#
-function find_outrev
-{
- crev=$1
- prev=`hg log -r $crev --template '{parents}\n'`
- if [[ -z "$prev" ]]
- then
- # No specific parent means previous changeset is parent
- prev=`expr $crev - 1`
- else
- # Format is either of the following two:
- # 546:7df6fcf1183b
- # 548:16f1915bb5cd 547:ffaa4e775815
- prev=`echo $prev | sed -e 's/\([0-9]*\):.*/\1/'`
- fi
- print $prev
-}
-
-function extract_ssh_infos
-{
- CMD=$1
- if expr "$CMD" : 'ssh://[^/]*@' >/dev/null; then
- ssh_user=`echo $CMD | sed -e 's/ssh:\/\/\(.*\)@.*/\1/'`
- ssh_host=`echo $CMD | sed -e 's/ssh:\/\/.*@\([^/]*\)\/.*/\1/'`
- ssh_dir=`echo $CMD | sed -e 's/ssh:\/\/.*@[^/]*\/\(.*\)/\1/'`
- else
- ssh_user=
- ssh_host=`echo $CMD | sed -e 's/ssh:\/\/\([^/]*\)\/.*/\1/'`
- ssh_dir=`echo $CMD | sed -e 's/ssh:\/\/[^/]*\/\(.*\)/\1/'`
- fi
-
-}
-
-function build_old_new_mercurial
-{
- olddir=$1
- newdir=$2
- DIR=$3
- F=$4
- #
- # new version of the file.
- #
- rm -rf $newdir/$DIR/$F
- if [ -f $F ]; then
- cp $F $newdir/$DIR/$F
- fi
-
- #
- # Old version of the file.
- #
- rm -rf $olddir/$DIR/$F
-
- if [ -n "$PWS" ]; then
- if expr "$PWS" : 'ssh://' >/dev/null
- then
- extract_ssh_infos $PWS
- if [ -n "$ssh_user" ]; then
- parent="ssh -l $ssh_user $ssh_host hg -R $ssh_dir --cwd $ssh_dir"
- else
- parent="ssh $ssh_host hg -R $ssh_dir --cwd $ssh_dir"
- fi
- else
- parent="hg -R $PWS --cwd $PWS"
- fi
- else
- parent=""
- fi
-
- if [ -z "$rename" ]; then
- if [ -n "$rflag" ]; then
- parentrev=$PARENT_REV
- elif [ "$HG_LIST_FROM_COMMIT" -eq 1 ]; then
- parentrev=$OUTREV
- else
- if [[ -n $HG_BRANCH ]]; then
- parentrev=$HG_BRANCH
- else
- parentrev="tip"
- fi
- fi
-
- if [ -n "$parentrev" ]; then
- if [ -z "$parent" ]; then
- hg cat --rev $parentrev --output $olddir/$DIR/$F $F 2>/dev/null
- else
- # when specifying a workspace we have to provide
- # the full path
- $parent cat --rev $parentrev --output $olddir/$DIR/$F $DIR/$F 2>/dev/null
- fi
- fi
- else
- # It's a rename (or a move), or a copy, so let's make sure we move
- # to the right directory first, then restore it once done
- current_dir=`pwd`
- hg_root=`hg root`
- cd $CWS
- if [ -n "$rflag" ]; then
- parentrev=$PARENT_REV
- elif [ "$HG_LIST_FROM_COMMIT" -eq 1 ]; then
- parentrev=$OUTREV
- fi
- if [ -z "$parentrev" ]; then
- parentrev=`hg log -l1 $PDIR/$PF | $AWK -F: '/changeset/ {print $2}'`
- fi
- if [ -n "$parentrev" ]; then
- mkdir -p $olddir/$PDIR
- if [ -z "$parent" ]; then
- hg cat -R $hg_root --rev $parentrev --output $olddir/$PDIR/$PF $PDIR/$PF 2>/dev/null
- else
- $parent cat --rev $parentrev --output $olddir/$PDIR/$PF $PDIR/$PF 2>/dev/null
- fi
- fi
- cd $current_dir
- fi
-}
-
-function build_old_new
-{
- if [[ $SCM_MODE == "mercurial" ]]; then
- build_old_new_mercurial $@
- fi
-}
-
-
-#
-# Usage message.
-#
-function usage
-{
- print "Usage:\twebrev [options]
- webrev [options] ( <file> | - )
-
-Options:
- -v: Print the version of this tool.
- -b: Do not ignore changes in the amount of white space.
- -c <CR#>: Include link to CR (aka bugid) in the main page.
- -i <filename>: Include <filename> in the index.html file.
- -o <outdir>: Output webrev to specified directory.
- -p <compare-against>: Use specified parent wkspc or basis for comparison
- -u <username>: Use that username instead of 'guessing' one.
- -m: Forces the use of Mercurial
-
-Mercurial only options:
- -r rev: Compare against a specified revision
- -N: Skip 'hg outgoing', use only 'hg status'
- -f: Use the forest extension
-
-Arguments:
- <file>: Optional file containing list of files to include in webrev
- -: read list of files to include in webrev from standard input
-
-Environment:
- WDIR: Control the output directory.
- WEBREV_BUGURL: Control the URL prefix for bugids.
-
-"
-
- exit 2
-}
-
-#
-#
-# Main program starts here
-#
-#
-LANG="C"
-LC_ALL="C"
-export LANG LC_ALL
-trap "rm -f /tmp/$$.* ; exit" 0 1 2 3 15
-
-set +o noclobber
-
-[[ -z $WDIFF ]] && WDIFF=`look_for_prog wdiff`
-[[ -z $CODEREVIEW ]] && CODEREVIEW=`look_for_prog codereview`
-[[ -z $PS2PDF ]] && PS2PDF=`look_for_prog ps2pdf`
-[[ -z $PERL ]] && PERL=`look_for_prog perl`
-[[ -z $SCCS ]] && SCCS=`look_for_prog sccs`
-[[ -z $AWK ]] && AWK=`look_for_prog nawk`
-[[ -z $AWK ]] && AWK=`look_for_prog gawk`
-[[ -z $AWK ]] && AWK=`look_for_prog awk`
-[[ -z $JAR ]] && JAR=`look_for_prog jar`
-[[ -z $ZIP ]] && ZIP=`look_for_prog zip`
-[[ -z $GETENT ]] && GETENT=`look_for_prog getent`
-[[ -z $WGET ]] && WGET=`look_for_prog wget`
-
-if uname | grep CYGWIN >/dev/null
-then
- ISWIN=1
- # Under windows mercurial outputs '\' instead of '/'
- FILTER="tr '\\\\' '/'"
-else
- FILTER="cat"
-fi
-
-if [[ ! -x $PERL ]]; then
- print -u2 "Error: No perl interpreter found. Exiting."
- exit 1
-fi
-
-#
-# These aren't fatal, but we want to note them to the user.
-#
-# [[ ! -x $CODEREVIEW ]] && print -u2 "WARNING: codereview(1) not found."
-# [[ ! -x $PS2PDF ]] && print -u2 "WARNING: ps2pdf(1) not found."
-# [[ ! -x $WDIFF ]] && print -u2 "WARNING: wdiff not found."
-
-# Declare global total counters.
-integer TOTL TINS TDEL TMOD TUNC
-
-flist_mode=
-flist_file=
-bflag=
-iflag=
-oflag=
-pflag=
-uflag=
-Oflag=
-rflag=
-Nflag=
-forestflag=
-while getopts "c:i:o:p:r:u:mONvfb" opt
-do
- case $opt in
- b) bflag=1;;
-
- i) iflag=1
- INCLUDE_FILE=$OPTARG;;
-
- o) oflag=1
- WDIR=$OPTARG;;
-
- p) pflag=1
- codemgr_parent=$OPTARG;;
-
- u) uflag=1
- username=$OPTARG;;
-
- c) if [[ -z $CRID ]]; then
- CRID=$OPTARG
- else
- CRID="$CRID $OPTARG"
- fi;;
-
- m) SCM_MODE="mercurial";;
-
- O) Oflag=1;; # ignored (bugs are now all visible at bugs.openjdk.java.net)
-
- N) Nflag=1;;
-
- f) forestflag=1;;
-
- r) rflag=1
- PARENT_REV=$OPTARG;;
-
- v) print "$0 version: $WEBREV_UPDATED";;
-
-
- ?) usage;;
- esac
-done
-
-FLIST=/tmp/$$.flist
-HG_LIST_FROM_COMMIT=
-
-if [[ -n $forestflag && -n $rflag ]]; then
- print "The -r <rev> flag is incompatible with the use of forests"
- exit 2
-fi
-
-#
-# If this manually set as the parent, and it appears to be an earlier webrev,
-# then note that fact and set the parent to the raw_files/new subdirectory.
-#
-if [[ -n $pflag && -d $codemgr_parent/raw_files/new ]]; then
- parent_webrev="$codemgr_parent"
- codemgr_parent="$codemgr_parent/raw_files/new"
-fi
-
-shift $(($OPTIND - 1))
-
-if [[ $1 == "-" ]]; then
- cat > $FLIST
- flist_mode="stdin"
- flist_done=1
- shift
-elif [[ -n $1 ]]; then
- if [[ ! -r $1 ]]; then
- print -u2 "$1: no such file or not readable"
- usage
- fi
- cat $1 > $FLIST
- flist_mode="file"
- flist_file=$1
- flist_done=1
- shift
-else
- flist_mode="auto"
-fi
-
-#
-# Before we go on to further consider -l and -w, work out which SCM we think
-# is in use.
-#
-if [[ -z $SCM_MODE ]]; then
- SCM_MODE=`detect_scm $FLIST`
-fi
-if [[ $SCM_MODE == "unknown" ]]; then
- print -u2 "Unable to determine SCM type currently in use."
- print -u2 "For mercurial: webrev runs 'hg root'."
- exit 1
-fi
-
-print -u2 " SCM detected: $SCM_MODE"
-
-
-if [[ $SCM_MODE == "mercurial" ]]; then
- #
- # determine Workspace and parent workspace paths
- #
- CWS=`hg root | $FILTER`
- if [[ -n $pflag && -z "$PWS" ]]; then
- OUTPWS=$codemgr_parent
- # Let's try to expand it if it's an alias defined in [paths]
- tmp=`hg path $OUTPWS 2>/dev/null | $FILTER`
- if [[ -n $tmp ]]; then
- OUTPWS="$tmp"
- fi
- if [[ -n $rflag ]]; then
- if expr "$codemgr_parent" : 'ssh://.*' >/dev/null; then
- PWS=$codemgr_parent
- else
- PWS=`hg -R "$codemgr_parent" root 2>/dev/null | $FILTER`
- fi
- fi
- fi
- #
- # OUTPWS is the parent repository to use when using 'hg outgoing'
- #
- if [[ -z $Nflag ]]; then
- if [[ -n $forestflag ]]; then
- #
- # for forest we have to rely on properly set default and
- # default-push because they can be different from the top one.
- # unless of course it was explicitly specified with -p
- if [[ -z $pflag ]]; then
- OUTPWS=
- fi
- else
- #
- # Unfortunately mercurial is bugged and doesn't handle
- # aliases correctly in 'hg path default'
- # So let's do it ourselves. Sigh...
- if [[ -z "$OUTPWS" ]]; then
- OUTPWS=`grep default-push $CWS/.hg/hgrc | $AWK '{print $3}' | $FILTER`
- fi
- # Still empty, means no default-push
- if [[ -z "$OUTPWS" ]]; then
- OUTPWS=`grep 'default =' $CWS/.hg/hgrc | $AWK '{print $3}' | $FILTER`
- fi
- # Let's try to expand it if it's an alias defined in [paths]
- tmp=`hg path $OUTPWS 2>/dev/null | $FILTER`
- if [[ -n $tmp ]]; then
- OUTPWS="$tmp"
- fi
- fi
- fi
- #
- # OUTPWS may contain username:password, let's make sure we remove the
- # sensitive information before we print out anything in the HTML
- #
- OUTPWS2=$OUTPWS
- if [[ -n $OUTPWS ]]; then
- if [[ `expr "$OUTPWS" : '.*://[^/]*@.*'` -gt 0 ]]; then
- # Remove everything between '://' and '@'
- OUTPWS2=`echo $OUTPWS | sed -e 's/\(.*:\/\/\).*@\(.*\)/\1\2/'`
- fi
- fi
-
- if [[ -z $HG_BRANCH ]]; then
- HG_BRANCH=`hg branch`
- if [ "$HG_BRANCH" == "default" ]; then
- #
- # 'default' means no particular branch, so let's cancel that
- #
- HG_BRANCH=
- fi
- fi
-
- if [[ -z $forestflag ]]; then
- if [[ -z $Nflag ]]; then
- #
- # If no "-N", always do "hg outgoing" against parent
- # repository to determine list of outgoing revisions.
- #
- ALL_CREV=`hg outgoing -q --template '{rev}\n' $OUTPWS | sort -n`
- if [[ -n $ALL_CREV ]]; then
- FIRST_CREV=`echo "$ALL_CREV" | head -1`
- #
- # If no "-r", choose revision to compare against by
- # finding the latest revision not in the outgoing list.
- #
- if [[ -z $rflag ]]; then
- OUTREV=`find_outrev "$FIRST_CREV"`
- if [[ -n $OUTREV ]]; then
- HG_LIST_FROM_COMMIT=1
- fi
- fi
- fi
- elif [[ -n $rflag ]]; then
- #
- # If skipping "hg outgoing" but still comparing against a
- # specific revision (not the tip), set revision for comment
- # accumulation.
- #
- FIRST_CREV=`hg log --rev $PARENT_REV --template '{rev}'`
- FIRST_CREV=`expr $FIRST_CREV + 1`
- fi
- fi
- #Let's check if a merge is needed, if so, issue a warning
- PREV=`hg parent | grep '^tag:.*tip$'`
- if [[ -z $PREV ]]; then
- print "WARNING: parent rev is not tip. Maybe an update or merge is needed"
- fi
-fi
-
-if [[ $flist_mode == "stdin" ]]; then
- print -u2 " File list from: standard input"
-elif [[ $flist_mode == "file" ]]; then
- print -u2 " File list from: $flist_file"
-fi
-
-if [[ $# -gt 0 ]]; then
- print -u2 "WARNING: unused arguments: $*"
-fi
-
-if [[ $SCM_MODE == "mercurial" ]]; then
- if [[ -z $flist_done ]]; then
- flist_from_mercurial $PWS
- fi
-fi
-
-#
-# If the user didn't specify a -i option, check to see if there is a
-# webrev-info file in the workspace directory.
-#
-if [[ -z $iflag && -r "$CWS/webrev-info" ]]; then
- iflag=1
- INCLUDE_FILE="$CWS/webrev-info"
-fi
-
-if [[ -n $iflag ]]; then
- if [[ ! -r $INCLUDE_FILE ]]; then
- print -u2 "include file '$INCLUDE_FILE' does not exist or is" \
- "not readable."
- exit 1
- else
- #
- # $INCLUDE_FILE may be a relative path, and the script alters
- # PWD, so we just stash a copy in /tmp.
- #
- cp $INCLUDE_FILE /tmp/$$.include
- fi
-fi
-
-#
-# Output directory.
-#
-if [[ -z $WDIR ]]; then
- WDIR=$CWS/webrev
-else
- # If the output directory doesn't end with '/webrev' or '/webrev/'
- # then add '/webrev'. This is for backward compatibility
- if ! expr $WDIR : '.*/webrev/\?$' >/dev/null
- then
- WDIR=$WDIR/webrev
- fi
-fi
-# WDIR=${WDIR:-$CWS/webrev}
-
-#
-# Name of the webrev, derived from the workspace name; in the
-# future this could potentially be an option.
-#
-# Let's keep what's after the last '/'
-WNAME=${CWS##*/}
-
-#
-# If WDIR doesn't start with '/' or 'x:' prepend the current dir
-#
-if [ ${WDIR%%/*} ]; then
- if [[ -n $ISWIN ]]; then
- if [ ${WDIR%%[A-Za-z]:*} ]; then
- WDIR=$PWD/$WDIR
- fi
- else
- WDIR=$PWD/$WDIR
- fi
-fi
-
-if [[ ! -d $WDIR ]]; then
- mkdir -p $WDIR
- [[ $? != 0 ]] && exit 1
-fi
-
-#
-# Summarize what we're going to do.
-#
-print " Workspace: $CWS"
-if [[ -n $parent_webrev ]]; then
- print "Compare against: webrev at $parent_webrev"
-elif [[ -n $OUTPWS2 ]]; then
- print "Compare against: $OUTPWS2"
-fi
-if [[ -n $HG_BRANCH ]]; then
- print " Branch: $HG_BRANCH"
-fi
-if [[ -n $rflag ]]; then
- print "Compare against version: $PARENT_REV"
-fi
-[[ -n $INCLUDE_FILE ]] && print " Including: $INCLUDE_FILE"
-print " Output to: $WDIR"
-
-#
-# Save the file list in the webrev dir
-#
-[[ ! $FLIST -ef $WDIR/file.list ]] && cp $FLIST $WDIR/file.list
-
-#
-# Bug IDs will be replaced by a URL. Order of precedence
-# is: default location, $WEBREV_BUGURL
-#
-BUGURL='https://bugs.openjdk.java.net/browse/'
-[[ -n $WEBREV_BUGURL ]] && BUGURL="$WEBREV_BUGURL"
-IDPREFIX='JDK-'
-
-
-rm -f $WDIR/$WNAME.patch
-rm -f $WDIR/$WNAME.changeset
-rm -f $WDIR/$WNAME.ps
-rm -f $WDIR/$WNAME.pdf
-
-touch $WDIR/$WNAME.patch
-
-print " Output Files:"
-
-#
-# Clean up the file list: Remove comments, blank lines and env variables.
-#
-sed -e "s/#.*$//" -e "/=/d" -e "/^[ ]*$/d" $FLIST > /tmp/$$.flist.clean
-FLIST=/tmp/$$.flist.clean
-
-#
-# Clean up residual raw files
-#
-if [ -d $WDIR/raw_files ]; then
- rm -rf $WDIR/raw_files 2>/dev/null
-fi
-
-#
-# Should we ignore changes in white spaces when generating diffs?
-#
-if [[ -n $bflag ]]; then
- DIFFOPTS="-t"
-else
- DIFFOPTS="-bt"
-fi
-#
-# First pass through the files: generate the per-file webrev HTML-files.
-#
-while read LINE
-do
- set - $LINE
- P=$1
-
- if [[ $1 == "Revision:" ]]; then
- OUTREV=$2
- continue
- fi
- #
- # Normally, each line in the file list is just a pathname of a
- # file that has been modified or created in the child. A file
- # that is renamed in the child workspace has two names on the
- # line: new name followed by the old name.
- #
- oldname=""
- oldpath=""
- rename=
- if [[ $# -eq 2 ]]; then
- PP=$2 # old filename
- oldname=" (was $PP)"
- oldpath="$PP"
- rename=1
- PDIR=${PP%/*}
- if [[ $PDIR == $PP ]]; then
- PDIR="." # File at root of workspace
- fi
-
- PF=${PP##*/}
-
- DIR=${P%/*}
- if [[ $DIR == $P ]]; then
- DIR="." # File at root of workspace
- fi
-
- F=${P##*/}
- else
- DIR=${P%/*}
- if [[ "$DIR" == "$P" ]]; then
- DIR="." # File at root of workspace
- fi
-
- F=${P##*/}
-
- PP=$P
- PDIR=$DIR
- PF=$F
- fi
-
- # Make the webrev directory if necessary as it may have been
- # removed because it was empty
- if [ ! -d $CWS/$DIR ]; then
- mkdir -p $CWS/$DIR
- fi
-
- COMM=`getcomments html $P $PP`
-
- print "\t$P$oldname\n\t\t\c"
-
- # Make the webrev mirror directory if necessary
- mkdir -p $WDIR/$DIR
-
- # cd to the directory so the names are short
- cd $CWS/$DIR
-
- #
- # We stash old and new files into parallel directories in /tmp
- # and do our diffs there. This makes it possible to generate
- # clean looking diffs which don't have absolute paths present.
- #
- olddir=$WDIR/raw_files/old
- newdir=$WDIR/raw_files/new
- mkdir -p $olddir
- mkdir -p $newdir
- mkdir -p $olddir/$PDIR
- mkdir -p $newdir/$DIR
-
- build_old_new $olddir $newdir $DIR $F
-
- if [[ ! -f $F && ! -f $olddir/$DIR/$F ]]; then
- print "*** Error: file not in parent or child"
- continue
- fi
-
- cd $WDIR/raw_files
- ofile=old/$PDIR/$PF
- nfile=new/$DIR/$F
-
- mv_but_nodiff=
- cmp $ofile $nfile > /dev/null 2>&1
- if [[ $? == 0 && $rename == 1 ]]; then
- mv_but_nodiff=1
- fi
-
- #
- # Cleaning up
- #
- rm -f $WDIR/$DIR/$F.cdiff.html
- rm -f $WDIR/$DIR/$F.udiff.html
- rm -f $WDIR/$DIR/$F.wdiff.html
- rm -f $WDIR/$DIR/$F.sdiff.html
- rm -f $WDIR/$DIR/$F-.html
- rm -f $WDIR/$DIR/$F.html
-
- its_a_jar=
- if expr $F : '.*\.jar' \| $F : '.*\.zip' >/dev/null; then
- its_a_jar=1
- # It's a JAR or ZIP file, let's do it differently
- if [[ -z $JAR ]]; then
- print "No access to jar, so can't produce diffs for jar or zip files"
- else
- if [ -f $ofile ]; then
- $JAR -tvf $ofile >"$ofile".lst
- fi
- if [ -f $nfile ]; then
- $JAR -tvf $nfile >"$nfile".lst
- fi
-
- if [[ -f $ofile && -f $nfile && -z $mv_but_nodiff ]]; then
-
- ${CDIFFCMD:-diff -bt -C 5} $ofile.lst $nfile.lst > $WDIR/$DIR/$F.cdiff
- diff_to_html $F $DIR/$F "C" "$COMM" < $WDIR/$DIR/$F.cdiff \
- > $WDIR/$DIR/$F.cdiff.html
- print " cdiffs\c"
-
- ${UDIFFCMD:-diff -bt -U 5} $ofile.lst $nfile.lst > $WDIR/$DIR/$F.udiff
- diff_to_html $F $DIR/$F "U" "$COMM" < $WDIR/$DIR/$F.udiff \
- > $WDIR/$DIR/$F.udiff.html
-
- print " udiffs\c"
-
- if [[ -x $WDIFF ]]; then
- $WDIFF -c "$COMM" \
- -t "$WNAME Wdiff $DIR/$F" $ofile.lst $nfile.lst > \
- $WDIR/$DIR/$F.wdiff.html 2>/dev/null
- if [[ $? -eq 0 ]]; then
- print " wdiffs\c"
- else
- print " wdiffs[fail]\c"
- fi
- fi
-
- sdiff_to_html $ofile $nfile $F $DIR "$COMM" \
- > $WDIR/$DIR/$F.sdiff.html
- print " sdiffs\c"
-
- print " frames\c"
-
- rm -f $WDIR/$DIR/$F.cdiff $WDIR/$DIR/$F.udiff
-
- difflines $ofile.lst $nfile.lst > $WDIR/$DIR/$F.count
-
- elif [[ -f $ofile && -f $nfile && -n $mv_but_nodiff ]]; then
- # renamed file: may also have differences
- difflines $ofile.lst $nfile.lst > $WDIR/$DIR/$F.count
- elif [[ -f $nfile ]]; then
- # new file: count added lines
- difflines /dev/null $nfile.lst > $WDIR/$DIR/$F.count
- elif [[ -f $ofile ]]; then
- # old file: count deleted lines
- difflines $ofile.lst /dev/null > $WDIR/$DIR/$F.count
- fi
- fi
- else
-
- #
- # If we have old and new versions of the file then run the
- # appropriate diffs. This is complicated by a couple of factors:
- #
- # - renames must be handled specially: we emit a 'remove'
- # diff and an 'add' diff
- # - new files and deleted files must be handled specially
- # - Solaris patch(1m) can't cope with file creation
- # (and hence renames) as of this writing.
- # - To make matters worse, gnu patch doesn't interpret the
- # output of Solaris diff properly when it comes to
- # adds and deletes. We need to do some "cleansing"
- # transformations:
- # [to add a file] @@ -1,0 +X,Y @@ --> @@ -0,0 +X,Y @@
- # [to del a file] @@ -X,Y +1,0 @@ --> @@ -X,Y +0,0 @@
- #
- cleanse_rmfile="sed 's/^\(@@ [0-9+,-]*\) [0-9+,-]* @@$/\1 +0,0 @@/'"
- cleanse_newfile="sed 's/^@@ [0-9+,-]* \([0-9+,-]* @@\)$/@@ -0,0 \1/'"
-
- if [[ ! "$HG_LIST_FROM_COMMIT" -eq 1 || ! $flist_mode == "auto" ]];
- then
- # Only need to generate a patch file here if there are no commits in outgoing
- # or if we've specified a file list
- rm -f $WDIR/$DIR/$F.patch
- if [[ -z $rename ]]; then
- if [ ! -f $ofile ]; then
- diff -u /dev/null $nfile | sh -c "$cleanse_newfile" \
- > $WDIR/$DIR/$F.patch
- elif [ ! -f $nfile ]; then
- diff -u $ofile /dev/null | sh -c "$cleanse_rmfile" \
- > $WDIR/$DIR/$F.patch
- else
- diff -u $ofile $nfile > $WDIR/$DIR/$F.patch
- fi
- else
- diff -u $ofile /dev/null | sh -c "$cleanse_rmfile" \
- > $WDIR/$DIR/$F.patch
-
- diff -u /dev/null $nfile | sh -c "$cleanse_newfile" \
- >> $WDIR/$DIR/$F.patch
-
- fi
-
-
- #
- # Tack the patch we just made onto the accumulated patch for the
- # whole wad.
- #
- cat $WDIR/$DIR/$F.patch >> $WDIR/$WNAME.patch
- fi
-
- print " patch\c"
-
- if [[ -f $ofile && -f $nfile && -z $mv_but_nodiff ]]; then
-
- ${CDIFFCMD:-diff -bt -C 5} $ofile $nfile > $WDIR/$DIR/$F.cdiff
- diff_to_html $F $DIR/$F "C" "$COMM" < $WDIR/$DIR/$F.cdiff \
- > $WDIR/$DIR/$F.cdiff.html
- print " cdiffs\c"
-
- ${UDIFFCMD:-diff -bt -U 5} $ofile $nfile > $WDIR/$DIR/$F.udiff
- diff_to_html $F $DIR/$F "U" "$COMM" < $WDIR/$DIR/$F.udiff \
- > $WDIR/$DIR/$F.udiff.html
-
- print " udiffs\c"
-
- if [[ -x $WDIFF ]]; then
- $WDIFF -c "$COMM" \
- -t "$WNAME Wdiff $DIR/$F" $ofile $nfile > \
- $WDIR/$DIR/$F.wdiff.html 2>/dev/null
- if [[ $? -eq 0 ]]; then
- print " wdiffs\c"
- else
- print " wdiffs[fail]\c"
- fi
- fi
-
- sdiff_to_html $ofile $nfile $F $DIR "$COMM" \
- > $WDIR/$DIR/$F.sdiff.html
- print " sdiffs\c"
-
- print " frames\c"
-
- rm -f $WDIR/$DIR/$F.cdiff $WDIR/$DIR/$F.udiff
-
- difflines $ofile $nfile > $WDIR/$DIR/$F.count
-
- elif [[ -f $ofile && -f $nfile && -n $mv_but_nodiff ]]; then
- # renamed file: may also have differences
- difflines $ofile $nfile > $WDIR/$DIR/$F.count
- elif [[ -f $nfile ]]; then
- # new file: count added lines
- difflines /dev/null $nfile > $WDIR/$DIR/$F.count
- elif [[ -f $ofile ]]; then
- # old file: count deleted lines
- difflines $ofile /dev/null > $WDIR/$DIR/$F.count
- fi
- fi
- #
- # Now we generate the postscript for this file. We generate diffs
- # only in the event that there is delta, or the file is new (it seems
- # tree-killing to print out the contents of deleted files).
- #
- if [[ -f $nfile ]]; then
- ocr=$ofile
- [[ ! -f $ofile ]] && ocr=/dev/null
-
- if [[ -z $mv_but_nodiff ]]; then
- textcomm=`getcomments text $P $PP`
- if [[ -x $CODEREVIEW ]]; then
- $CODEREVIEW -y "$textcomm" \
- -e $ocr $nfile \
- > /tmp/$$.psfile 2>/dev/null &&
- cat /tmp/$$.psfile >> $WDIR/$WNAME.ps
- if [[ $? -eq 0 ]]; then
- print " ps\c"
- else
- print " ps[fail]\c"
- fi
- fi
- fi
- fi
-
- if [[ -f $ofile && -z $mv_but_nodiff ]]; then
- if [[ -n $its_a_jar ]]; then
- source_to_html Old $P < $ofile.lst > $WDIR/$DIR/$F-.html
- else
- source_to_html Old $P < $ofile > $WDIR/$DIR/$F-.html
- fi
- print " old\c"
- fi
-
- if [[ -f $nfile ]]; then
- if [[ -n $its_a_jar ]]; then
- source_to_html New $P < $nfile.lst > $WDIR/$DIR/$F.html
- else
- source_to_html New $P < $nfile > $WDIR/$DIR/$F.html
- fi
- print " new\c"
- fi
-
- print
-done < $FLIST
-
-# Create the new style mercurial patch here using hg export -r [all-revs] -g -o $CHANGESETPATH
-if [[ $SCM_MODE == "mercurial" ]]; then
- if [[ "$HG_LIST_FROM_COMMIT" -eq 1 && $flist_mode == "auto" ]]; then
- EXPORTCHANGESET="$WNAME.changeset"
- CHANGESETPATH=${WDIR}/${EXPORTCHANGESET}
- rm -f $CHANGESETPATH
- touch $CHANGESETPATH
- if [[ -n $ALL_CREV ]]; then
- rev_opt=
- for rev in $ALL_CREV; do
- rev_opt="$rev_opt --rev $rev"
- done
- elif [[ -n $FIRST_CREV ]]; then
- rev_opt="--rev $FIRST_CREV"
- fi
-
- if [[ -n $rev_opt ]]; then
- (cd $CWS;hg export -g $rev_opt -o $CHANGESETPATH)
- echo "Created changeset: $CHANGESETPATH" 1>&2
- # Use it in place of the jdk.patch created above
- rm -f $WDIR/$WNAME.patch
- fi
- set +x
- fi
-fi
-
-frame_nav_js > $WDIR/ancnav.js
-frame_navigation > $WDIR/ancnav.html
-
-if [[ -f $WDIR/$WNAME.ps && -x $CODEREVIEW && -x $PS2PDF ]]; then
- print " Generating PDF: \c"
- fix_postscript $WDIR/$WNAME.ps | $PS2PDF - > $WDIR/$WNAME.pdf
- print "Done."
-fi
-
-# Now build the index.html file that contains
-# links to the source files and their diffs.
-
-cd $CWS
-
-# Save total changed lines for Code Inspection.
-print "$TOTL" > $WDIR/TotalChangedLines
-
-print " index.html: \c"
-INDEXFILE=$WDIR/index.html
-exec 3<&1 # duplicate stdout to FD3.
-exec 1<&- # Close stdout.
-exec > $INDEXFILE # Open stdout to index file.
-
-print "$HTML<head>"
-print "<meta name=\"scm\" content=\"$SCM_MODE\" />"
-print "$STDHEAD"
-print "<title>$WNAME</title>"
-print "</head>"
-print "<body id=\"SUNWwebrev\">"
-print "<div class=\"summary\">"
-print "<h2>Code Review for $WNAME</h2>"
-
-print "<table>"
-
-if [[ -z $uflag ]]; then
- if [[ $SCM_MODE == "mercurial" ]]; then
- #
- # Let's try to extract the user name from the .hgrc file
- #
- username=`grep '^username' $HOME/.hgrc | sed 's/^username[ ]*=[ ]*\(.*\)/\1/'`
- fi
-
- if [[ -z $username ]]; then
- #
- # Figure out the username and gcos name. To maintain compatibility
- # with passwd(4), we must support '&' substitutions.
- #
- username=`id | cut -d '(' -f 2 | cut -d ')' -f 1`
- if [[ -x $GETENT ]]; then
- realname=`$GETENT passwd $username | cut -d':' -f 5 | cut -d ',' -f 1`
- fi
- userupper=`print "$username" | sed 's/\<./\u&/g'`
- realname=`print $realname | sed s/\&/$userupper/`
- fi
-fi
-
-date="on `date`"
-
-if [[ -n "$username" && -n "$realname" ]]; then
- print "<tr><th>Prepared by:</th>"
- print "<td>$realname ($username) $date</td></tr>"
-elif [[ -n "$username" ]]; then
- print "<tr><th>Prepared by:</th><td>$username $date</td></tr>"
-fi
-
-print "<tr><th>Workspace:</th><td>$CWS</td></tr>"
-if [[ -n $parent_webrev ]]; then
- print "<tr><th>Compare against:</th><td>"
- print "webrev at $parent_webrev"
-else
- if [[ -n $OUTPWS2 ]]; then
- print "<tr><th>Compare against:</th><td>"
- print "$OUTPWS2"
- fi
-fi
-print "</td></tr>"
-if [[ -n $rflag ]]; then
- print "<tr><th>Compare against version:</th><td>$PARENT_REV</td></tr>"
-elif [[ -n $OUTREV ]]; then
- if [[ -z $forestflag ]]; then
- print "<tr><th>Compare against version:</th><td>$OUTREV</td></tr>"
- fi
-fi
-if [[ -n $HG_BRANCH ]]; then
- print "<tr><th>Branch:</th><td>$HG_BRANCH</td></tr>"
-fi
-
-print "<tr><th>Summary of changes:</th><td>"
-printCI $TOTL $TINS $TDEL $TMOD $TUNC
-print "</td></tr>"
-
-if [[ -f $WDIR/$WNAME.patch ]]; then
- print "<tr><th>Patch of changes:</th><td>"
- print "<a href=\"$WNAME.patch\">$WNAME.patch</a></td></tr>"
-elif [[ -f $CHANGESETPATH ]]; then
- print "<tr><th>Changeset:</th><td>"
- print "<a href=\"$EXPORTCHANGESET\">$EXPORTCHANGESET</a></td></tr>"
-fi
-
-if [[ -f $WDIR/$WNAME.pdf ]]; then
- print "<tr><th>Printable review:</th><td>"
- print "<a href=\"$WNAME.pdf\">$WNAME.pdf</a></td></tr>"
-fi
-
-if [[ -n "$iflag" ]]; then
- print "<tr><th>Author comments:</th><td><div>"
- cat /tmp/$$.include
- print "</div></td></tr>"
-fi
-# Add links to referenced CRs, if any
-# URL has a <title> like:
-# <title>[#JDK-8024688] b106-lambda: j.u.Map.merge doesn't work as specified if contains key:null pair - Java Bug System</title>
-# we format this to:
-# JDK-8024688: b106-lambda: j.u.Map.merge doesn't work as specified if contains key:null pair
-if [[ -n $CRID ]]; then
- for id in $CRID
- do
- #add "JDK-" to raw bug id for openjdk.java.net links.
- id=`echo ${id} | sed 's/^\([0-9]\{5,\}\)$/JDK-\1/'`
-
- print "<tr><th>Bug id:</th><td>"
- url="${BUGURL}${id}"
-
- if [[ -n $WGET ]]; then
- msg=`$WGET --timeout=10 --tries=1 -q $url -O - | grep '<title>' | sed 's/<title>\[#\(.*\)\] \(.*\) - Java Bug System<\/title>/\1 : \2/' | html_dequote | html_quote`
- fi
- if [[ -z $msg ]]; then
- msg="${id}"
- fi
-
- print "<a href=\"$url\">$msg</a>"
-
- print "</td></tr>"
- done
-fi
-print "<tr><th>Legend:</th><td>"
-print "<b>Modified file</b><br><font color=red><b>Deleted file</b></font><br><font color=green><b>New file</b></font></td></tr>"
-print "</table>"
-print "</div>"
-
-#
-# Second pass through the files: generate the rest of the index file
-#
-while read LINE
-do
- set - $LINE
- if [[ $1 == "Revision:" ]]; then
- FIRST_CREV=`expr $3 + 1`
- continue
- fi
- P=$1
-
- if [[ $# == 2 ]]; then
- PP=$2
- oldname=" <i>(was $PP)</i>"
-
- else
- PP=$P
- oldname=""
- fi
-
- DIR=${P%/*}
- if [[ $DIR == $P ]]; then
- DIR="." # File at root of workspace
- fi
-
- # Avoid processing the same file twice.
- # It's possible for renamed files to
- # appear twice in the file list
-
- F=$WDIR/$P
-
- print "<p><code>"
-
- # If there's a diffs file, make diffs links
-
- NODIFFS=
- if [[ -f $F.cdiff.html ]]; then
- print "<a href=\"$P.cdiff.html\">Cdiffs</a>"
- print "<a href=\"$P.udiff.html\">Udiffs</a>"
-
- if [[ -f $F.wdiff.html && -x $WDIFF ]]; then
- print "<a href=\"$P.wdiff.html\">Wdiffs</a>"
- fi
-
- print "<a href=\"$P.sdiff.html\">Sdiffs</a>"
-
- print "<a href=\"$P.frames.html\">Frames</a>"
- else
- NODIFFS=1
- print " ------ ------ ------"
-
- if [[ -x $WDIFF ]]; then
- print " ------"
- fi
-
- print " ------"
- fi
-
- # If there's an old file, make the link
-
- NOOLD=
- if [[ -f $F-.html ]]; then
- print "<a href=\"$P-.html\">Old</a>"
- else
- NOOLD=1
- print " ---"
- fi
-
- # If there's an new file, make the link
-
- NONEW=
- if [[ -f $F.html ]]; then
- print "<a href=\"$P.html\">New</a>"
- else
- NONEW=1
- print " ---"
- fi
-
- if [[ -f $F.patch ]]; then
- print "<a href=\"$P.patch\">Patch</a>"
- else
- print " -----"
- fi
-
- if [[ -f $WDIR/raw_files/new/$P ]]; then
- print "<a href=\"raw_files/new/$P\">Raw</a>"
- else
- print " ---"
- fi
- print "</code>"
- if [[ -n $NODIFFS && -z $oldname ]]; then
- if [[ -n $NOOLD ]]; then
- print "<font color=green><b>$P</b></font>"
- elif [[ -n $NONEW ]]; then
- print "<font color=red><b>$P</b></font>"
- fi
- else
- print "<b>$P</b> $oldname"
- fi
-
- print "</p><blockquote>\c"
- # Insert delta comments if any
- comments=`getcomments html $P $PP`
- if [ -n "$comments" ]; then
- print "<pre>$comments</pre>"
- fi
-
- # Add additional comments comment
-
- print "<!-- Add comments to explain changes in $P here -->"
-
- # Add count of changes.
-
- if [[ -f $F.count ]]; then
- cat $F.count
- rm $F.count
- fi
- print "</blockquote>"
-done < $FLIST
-
-print
-print
-print "<hr />"
-print "<p style=\"font-size: small\">"
-print "This code review page was prepared using <b>$0</b>"
-print "(vers $WEBREV_UPDATED)."
-print "</body>"
-print "</html>"
-
-if [[ -n $ZIP ]]; then
- # Let's generate a zip file for convenience
- cd $WDIR/..
- if [ -f webrev.zip ]; then
- rm webrev.zip
- fi
- $ZIP -r webrev webrev >/dev/null 2>&1
-fi
-
-exec 1<&- # Close FD 1.
-exec 1<&3 # dup FD 3 to restore stdout.
-exec 3<&- # close FD 3.
-
-print "Done."
-print "Output to: $WDIR"