--- a/.hgtags-top-repo Mon Jan 12 12:24:03 2015 -0800
+++ b/.hgtags-top-repo Wed Jul 05 20:14:02 2017 +0200
@@ -287,3 +287,4 @@
f7c11da0b0481d49cc7a65a453336c108191e821 jdk9-b42
02ee8c65622e8bd97496d584e22fc7dcf0edc4ae jdk9-b43
8994f5d87b3bb5e8d317d4e8ccb326da1a73684a jdk9-b44
+3dd628fde2086218d548841022ee8436b6b88185 jdk9-b45
--- a/Makefile Mon Jan 12 12:24:03 2015 -0800
+++ b/Makefile Wed Jul 05 20:14:02 2017 +0200
@@ -54,8 +54,11 @@
# Duplication of global targets, needed before ParseConfAndSpec in case we have
# no configurations.
help:
- # If CONF is not set, look for all available configurations
- CONF?=
+ # If both CONF and SPEC are unset, look for all available configurations by
+ # setting CONF to the empty string.
+ ifeq ($(SPEC), )
+ CONF?=
+ endif
endif
# ... and then we can include our helper functions
--- a/common/autoconf/generated-configure.sh Mon Jan 12 12:24:03 2015 -0800
+++ b/common/autoconf/generated-configure.sh Wed Jul 05 20:14:02 2017 +0200
@@ -4329,7 +4329,7 @@
#CUSTOM_AUTOCONF_INCLUDE
# Do not change or remove the following line, it is needed for consistency checks:
-DATE_WHEN_GENERATED=1418395009
+DATE_WHEN_GENERATED=1420811523
###############################################################################
#
@@ -27408,8 +27408,8 @@
# The trailing space for everyone except PATH is no typo, but is needed due
# to trailing \ in the Windows paths. These will be stripped later.
$ECHO "$WINPATH_BASH -c 'echo VS_PATH="'\"$PATH\" > set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
- $ECHO "$WINPATH_BASH -c 'echo VS_INCLUDE="'\"$INCLUDE \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
- $ECHO "$WINPATH_BASH -c 'echo VS_LIB="'\"$LIB \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
+ $ECHO "$WINPATH_BASH -c 'echo VS_INCLUDE="'\"$INCLUDE\;$include \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
+ $ECHO "$WINPATH_BASH -c 'echo VS_LIB="'\"$LIB\;$lib \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
$ECHO "$WINPATH_BASH -c 'echo VCINSTALLDIR="'\"$VCINSTALLDIR \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
$ECHO "$WINPATH_BASH -c 'echo WindowsSdkDir="'\"$WindowsSdkDir \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
$ECHO "$WINPATH_BASH -c 'echo WINDOWSSDKDIR="'\"$WINDOWSSDKDIR \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
--- a/common/autoconf/spec.gmk.in Mon Jan 12 12:24:03 2015 -0800
+++ b/common/autoconf/spec.gmk.in Wed Jul 05 20:14:02 2017 +0200
@@ -690,10 +690,15 @@
# Images directory definitions
JDK_IMAGE_SUBDIR:=jdk
JRE_IMAGE_SUBDIR:=jre
+
# Colon left out to be able to override output dir for bootcycle-images
JDK_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_IMAGE_SUBDIR)
JRE_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_IMAGE_SUBDIR)
+# Test image, as above
+TEST_IMAGE_SUBDIR:=test
+TEST_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(TEST_IMAGE_SUBDIR)
+
# Macosx bundles directory definitions
JDK_BUNDLE_SUBDIR=jdk-bundle/jdk$(JDK_VERSION).jdk/Contents
JRE_BUNDLE_SUBDIR=jre-bundle/jre$(JDK_VERSION).jre/Contents
--- a/common/autoconf/toolchain_windows.m4 Mon Jan 12 12:24:03 2015 -0800
+++ b/common/autoconf/toolchain_windows.m4 Wed Jul 05 20:14:02 2017 +0200
@@ -173,8 +173,8 @@
# The trailing space for everyone except PATH is no typo, but is needed due
# to trailing \ in the Windows paths. These will be stripped later.
$ECHO "$WINPATH_BASH -c 'echo VS_PATH="'\"$PATH\" > set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
- $ECHO "$WINPATH_BASH -c 'echo VS_INCLUDE="'\"$INCLUDE \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
- $ECHO "$WINPATH_BASH -c 'echo VS_LIB="'\"$LIB \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
+ $ECHO "$WINPATH_BASH -c 'echo VS_INCLUDE="'\"$INCLUDE\;$include \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
+ $ECHO "$WINPATH_BASH -c 'echo VS_LIB="'\"$LIB\;$lib \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
$ECHO "$WINPATH_BASH -c 'echo VCINSTALLDIR="'\"$VCINSTALLDIR \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
$ECHO "$WINPATH_BASH -c 'echo WindowsSdkDir="'\"$WindowsSdkDir \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
$ECHO "$WINPATH_BASH -c 'echo WINDOWSSDKDIR="'\"$WINDOWSSDKDIR \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
--- a/common/bin/unshuffle_list.txt Mon Jan 12 12:24:03 2015 -0800
+++ b/common/bin/unshuffle_list.txt Wed Jul 05 20:14:02 2017 +0200
@@ -26,10 +26,8 @@
corba/src/java.corba/share/classes/com/sun/tools/corba/se/idl : corba/src/share/classes/com/sun/tools/corba/se/idl
corba/src/java.corba/share/classes/javax/activity : corba/src/share/classes/javax/activity
corba/src/java.corba/share/classes/javax/rmi : corba/src/share/classes/javax/rmi
-corba/src/java.corba/share/classes/javax/transaction : corba/src/share/classes/javax/transaction
corba/src/java.corba/share/classes/org/omg : corba/src/share/classes/org/omg
corba/src/java.corba/share/classes/sun/corba : corba/src/share/classes/sun/corba
-corba/src/java.sql/share/classes/javax/transaction/xa : corba/src/share/classes/javax/transaction/xa
corba/src/jdk.rmic/share/classes/sun/rmi/rmic/iiop : corba/src/share/classes/sun/rmi/rmic/iiop
jaxp/src/java.xml/share/classes/com/sun/java_cup/internal/runtime : jaxp/src/com/sun/java_cup/internal/runtime
jaxp/src/java.xml/share/classes/com/sun/org/apache/bcel/internal : jaxp/src/com/sun/org/apache/bcel/internal
@@ -66,8 +64,8 @@
jaxws/src/java.xml.bind/share/classes/com/sun/xml/internal/org : jaxws/src/share/jaxws_classes/com/sun/xml/internal/org
jaxws/src/java.xml.bind/share/classes/com/sun/xml/internal/txw2 : jaxws/src/share/jaxws_classes/com/sun/xml/internal/txw2
jaxws/src/java.xml.bind/share/classes/javax/xml/bind : jaxws/src/share/jaxws_classes/javax/xml/bind
-jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging : jaxws/src/share/jaxws_classes/com/sun/xml/internal/messaging
-jaxws/src/java.xml.soap/share/classes/javax/xml/soap : jaxws/src/share/jaxws_classes/javax/xml/soap
+jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging : jaxws/src/share/jaxws_classes/com/sun/xml/internal/messaging
+jaxws/src/java.xml.ws/share/classes/javax/xml/soap : jaxws/src/share/jaxws_classes/javax/xml/soap
jaxws/src/java.xml.ws/share/classes/com/oracle/webservices/internal : jaxws/src/share/jaxws_classes/com/oracle/webservices/internal
jaxws/src/java.xml.ws/share/classes/com/oracle/xmlns/internal : jaxws/src/share/jaxws_classes/com/oracle/xmlns/internal
jaxws/src/java.xml.ws/share/classes/com/sun/org/glassfish : jaxws/src/share/jaxws_classes/com/sun/org/glassfish
@@ -1245,6 +1243,8 @@
jdk/src/java.sql.rowset/share/classes/javax/sql/rowset : jdk/src/share/classes/javax/sql/rowset
jdk/src/java.sql/share/classes/java/sql : jdk/src/share/classes/java/sql
jdk/src/java.sql/share/classes/javax/sql : jdk/src/share/classes/javax/sql
+jdk/src/java.sql/share/classes/javax/transaction/xa : corba/src/share/classes/javax/transaction/xa
+jdk/src/java.transaction/share/classes/javax/transaction : corba/src/share/classes/javax/transaction
jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security : jdk/src/share/classes/com/sun/org/apache/xml/internal/security
jdk/src/java.xml.crypto/share/classes/javax/xml/crypto : jdk/src/share/classes/javax/xml/crypto
jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal : jdk/src/share/classes/org/jcp/xml/dsig/internal
--- a/corba/.hgtags Mon Jan 12 12:24:03 2015 -0800
+++ b/corba/.hgtags Wed Jul 05 20:14:02 2017 +0200
@@ -287,3 +287,4 @@
078bb11af876fe528d4b516f33ad4dd9bb60549e jdk9-b42
9645e35616b60c5c07b4fdf11a132afc8081dfa8 jdk9-b43
1f57bd728c9e6865ccb9d43ccd80a1c11230a32f jdk9-b44
+9e3f2bed80c0e5a84a256ce41f1d10c5ade48466 jdk9-b45
--- a/corba/src/java.corba/share/classes/javax/transaction/InvalidTransactionException.java Mon Jan 12 12:24:03 2015 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
- * 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.
- */
-/*
- * Licensed Materials - Property of IBM
- * RMI-IIOP v1.0
- * Copyright IBM Corp. 1998 1999 All Rights Reserved
- *
- */
-
-package javax.transaction;
-
-/**
- * This exception indicates that the request carried an invalid transaction
- * context. For example, this exception could be raised if an error
- * occured when trying to register a resource.
- */
-public class InvalidTransactionException extends java.rmi.RemoteException
-{
- public InvalidTransactionException()
- {
- super();
- }
-
- public InvalidTransactionException(String msg)
- {
- super(msg);
- }
-}
--- a/corba/src/java.corba/share/classes/javax/transaction/TransactionRequiredException.java Mon Jan 12 12:24:03 2015 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
- * 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.
- */
-/*
- * Licensed Materials - Property of IBM
- * RMI-IIOP v1.0
- * Copyright IBM Corp. 1998 1999 All Rights Reserved
- *
- */
-
-package javax.transaction;
-
-/**
- * This exception indicates that a request carried a null transaction context,
- * but the target object requires an activate transaction.
- */
-public class TransactionRequiredException extends java.rmi.RemoteException
-{
- public TransactionRequiredException()
- {
- super();
- }
-
- public TransactionRequiredException(String msg)
- {
- super(msg);
- }
-}
--- a/corba/src/java.corba/share/classes/javax/transaction/TransactionRolledbackException.java Mon Jan 12 12:24:03 2015 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
- * 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.
- */
-/*
- * Licensed Materials - Property of IBM
- * RMI-IIOP v1.0
- * Copyright IBM Corp. 1998 1999 All Rights Reserved
- *
- */
-
-package javax.transaction;
-
-/**
- * This exception indicates that the transaction associated with processing
- * of the request has been rolled back, or marked to roll back. Thus the
- * requested operation either could not be performed or was not performed
- * because further computation on behalf of the transaction would be
- * fruitless
- */
-public class TransactionRolledbackException extends java.rmi.RemoteException
-{
- public TransactionRolledbackException()
- {
- super();
- }
-
- public TransactionRolledbackException(String msg)
- {
- super(msg);
- }
-}
--- a/corba/src/java.corba/share/classes/javax/transaction/package.html Mon Jan 12 12:24:03 2015 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<!--
-Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
-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.
--->
-
-</head>
-<body bgcolor="white">
-
-Contains three exceptions thrown by the ORB machinery during unmarshalling.
-<p>
-@since 1.3
-</body>
-</html>
--- a/corba/src/java.sql/share/classes/javax/transaction/xa/XAException.java Mon Jan 12 12:24:03 2015 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,201 +0,0 @@
-/*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
- * 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 javax.transaction.xa;
-
-/**
- * The XAException is thrown by the Resource Manager (RM) to inform the
- * Transaction Manager of an error encountered by the involved transaction.
- *
- */
-public class XAException extends java.lang.Exception {
-
- /**
- * The error code with which to create the SystemException.
- *
- * @serial The error code for the exception
- */
-
- public int errorCode;
-
- /**
- * Create an XAException.
- */
- public XAException()
- {
- super();
- }
-
- /**
- * Create an XAException with a given string.
- *
- * @param s The <code>String</code> object containing the exception
- * message.
- */
- public XAException(String s)
- {
- super(s);
- }
-
- /**
- * Create an XAException with a given error code.
- *
- * @param errcode The error code identifying the exception.
- */
- public XAException(int errcode)
- {
- super();
- errorCode = errcode;
- }
-
- /**
- * The inclusive lower bound of the rollback codes.
- */
- public final static int XA_RBBASE = 100;
-
- /**
- * Indicates that the rollback was caused by an unspecified reason.
- */
- public final static int XA_RBROLLBACK = XA_RBBASE;
-
- /**
- * Indicates that the rollback was caused by a communication failure.
- */
- public final static int XA_RBCOMMFAIL = XA_RBBASE + 1;
-
- /**
- * A deadlock was detected.
- */
- public final static int XA_RBDEADLOCK = XA_RBBASE + 2;
-
- /**
- * A condition that violates the integrity of the resource was detected.
- */
- public final static int XA_RBINTEGRITY = XA_RBBASE + 3;
-
- /**
- * The resource manager rolled back the transaction branch for a reason
- * not on this list.
- */
- public final static int XA_RBOTHER = XA_RBBASE + 4;
-
- /**
- * A protocol error occurred in the resource manager.
- */
- public final static int XA_RBPROTO = XA_RBBASE + 5;
-
- /**
- * A transaction branch took too long.
- */
- public final static int XA_RBTIMEOUT = XA_RBBASE + 6;
-
- /**
- * May retry the transaction branch.
- */
- public final static int XA_RBTRANSIENT = XA_RBBASE + 7;
-
- /**
- * The inclusive upper bound of the rollback error code.
- */
- public final static int XA_RBEND = XA_RBTRANSIENT;
-
- /**
- * Resumption must occur where the suspension occurred.
- */
- public final static int XA_NOMIGRATE = 9;
-
- /**
- * The transaction branch may have been heuristically completed.
- */
- public final static int XA_HEURHAZ = 8;
-
- /**
- * The transaction branch has been heuristically committed.
- */
- public final static int XA_HEURCOM = 7;
-
- /**
- * The transaction branch has been heuristically rolled back.
- */
- public final static int XA_HEURRB = 6;
-
- /**
- * The transaction branch has been heuristically committed and
- * rolled back.
- */
- public final static int XA_HEURMIX = 5;
-
- /**
- * Routine returned with no effect and may be reissued.
- */
- public final static int XA_RETRY = 4;
-
- /**
- * The transaction branch was read-only and has been committed.
- */
- public final static int XA_RDONLY = 3;
-
- /**
- * There is an asynchronous operation already outstanding.
- */
- public final static int XAER_ASYNC = -2;
-
- /**
- * A resource manager error has occurred in the transaction branch.
- */
- public final static int XAER_RMERR = -3;
-
- /**
- * The XID is not valid.
- */
- public final static int XAER_NOTA = -4;
-
- /**
- * Invalid arguments were given.
- */
- public final static int XAER_INVAL = -5;
-
- /**
- * Routine was invoked in an inproper context.
- */
- public final static int XAER_PROTO = -6;
-
- /**
- * Resource manager is unavailable.
- */
- public final static int XAER_RMFAIL = -7;
-
- /**
- * The XID already exists.
- */
- public final static int XAER_DUPID = -8;
-
- /**
- * The resource manager is doing work outside a global transaction.
- */
- public final static int XAER_OUTSIDE = -9;
-
-
-}
--- a/corba/src/java.sql/share/classes/javax/transaction/xa/XAResource.java Mon Jan 12 12:24:03 2015 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,314 +0,0 @@
-/*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
- * 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 javax.transaction.xa;
-
-/** <p>The XAResource interface is a Java mapping of the industry standard
- * XA interface based on the X/Open CAE Specification (Distributed
- * Transaction Processing: The XA Specification).
- *
- * <p>The XA interface defines the contract between a Resource Manager
- * and a Transaction Manager in a distributed transaction processing
- * (DTP) environment. A JDBC driver or a JMS provider implements
- * this interface to support the association between a global transaction
- * and a database or message service connection.
- *
- * <p>The XAResource interface can be supported by any transactional
- * resource that is intended to be used by application programs in an
- * environment where transactions are controlled by an external
- * transaction manager. An example of such a resource is a database
- * management system. An application may access data through multiple
- * database connections. Each database connection is enlisted with
- * the transaction manager as a transactional resource. The transaction
- * manager obtains an XAResource for each connection participating
- * in a global transaction. The transaction manager uses the
- * <code>start</code> method
- * to associate the global transaction with the resource, and it uses the
- * <code>end</code> method to disassociate the transaction from
- * the resource. The resource
- * manager is responsible for associating the global transaction to all
- * work performed on its data between the start and end method invocations.
- *
- * <p>At transaction commit time, the resource managers are informed by
- * the transaction manager to prepare, commit, or rollback a transaction
- * according to the two-phase commit protocol.</p>
- *
- */
-
-public interface XAResource
-{
- /** Commits the global transaction specified by xid.
- *
- * @param xid A global transaction identifier
- *
- * @param onePhase If true, the resource manager should use a one-phase
- * commit protocol to commit the work done on behalf of xid.
- *
- * @exception XAException An error has occurred. Possible XAExceptions
- * are XA_HEURHAZ, XA_HEURCOM, XA_HEURRB, XA_HEURMIX, XAER_RMERR,
- * XAER_RMFAIL, XAER_NOTA, XAER_INVAL, or XAER_PROTO.
- *
- * <P>If the resource manager did not commit the transaction and the
- * paramether onePhase is set to true, the resource manager may throw
- * one of the XA_RB* exceptions. Upon return, the resource manager has
- * rolled back the branch's work and has released all held resources.
- */
-
- void commit(Xid xid, boolean onePhase) throws XAException;
-
-
- /** Ends the work performed on behalf of a transaction branch.
- * The resource manager disassociates the XA resource from the
- * transaction branch specified and lets the transaction
- * complete.
- *
- * <p>If TMSUSPEND is specified in the flags, the transaction branch
- * is temporarily suspended in an incomplete state. The transaction
- * context is in a suspended state and must be resumed via the
- * <code>start</code> method with TMRESUME specified.</p>
- *
- * <p>If TMFAIL is specified, the portion of work has failed.
- * The resource manager may mark the transaction as rollback-only</p>
- *
- * <p>If TMSUCCESS is specified, the portion of work has completed
- * successfully.</p>
- *
- * @param xid A global transaction identifier that is the same as
- * the identifier used previously in the <code>start</code> method.
- *
- * @param flags One of TMSUCCESS, TMFAIL, or TMSUSPEND.
- *
- * @exception XAException An error has occurred. Possible XAException
- * values are XAER_RMERR, XAER_RMFAILED, XAER_NOTA, XAER_INVAL,
- * XAER_PROTO, or XA_RB*.
- */
-
- void end(Xid xid, int flags) throws XAException;
-
-
- /** Tells the resource manager to forget about a heuristically
- * completed transaction branch.
- *
- * @param xid A global transaction identifier.
- *
- * @exception XAException An error has occurred. Possible exception
- * values are XAER_RMERR, XAER_RMFAIL, XAER_NOTA, XAER_INVAL, or
- * XAER_PROTO.
- */
-
- void forget(Xid xid) throws XAException;
-
- /** Obtains the current transaction timeout value set for this
- * XAResource instance. If <CODE>XAResource.setTransactionTimeout</CODE>
- * was not used prior to invoking this method, the return value
- * is the default timeout set for the resource manager; otherwise,
- * the value used in the previous <CODE>setTransactionTimeout</CODE>
- * call is returned.
- *
- * @return the transaction timeout value in seconds.
- *
- * @exception XAException An error has occurred. Possible exception
- * values are XAER_RMERR and XAER_RMFAIL.
- */
- int getTransactionTimeout() throws XAException;
-
- /** This method is called to determine if the resource manager
- * instance represented by the target object is the same as the
- * resouce manager instance represented by the parameter <i>xares</i>.
- *
- * @param xares An XAResource object whose resource manager instance
- * is to be compared with the resource manager instance of the
- * target object.
- *
- * @return <i>true</i> if it's the same RM instance; otherwise
- * <i>false</i>.
- *
- * @exception XAException An error has occurred. Possible exception
- * values are XAER_RMERR and XAER_RMFAIL.
- *
- */
- boolean isSameRM(XAResource xares) throws XAException;
-
- /** Ask the resource manager to prepare for a transaction commit
- * of the transaction specified in xid.
- *
- * @param xid A global transaction identifier.
- *
- * @exception XAException An error has occurred. Possible exception
- * values are: XA_RB*, XAER_RMERR, XAER_RMFAIL, XAER_NOTA, XAER_INVAL,
- * or XAER_PROTO.
- *
- * @return A value indicating the resource manager's vote on the
- * outcome of the transaction. The possible values are: XA_RDONLY
- * or XA_OK. If the resource manager wants to roll back the
- * transaction, it should do so by raising an appropriate XAException
- * in the prepare method.
- */
-
- int prepare(Xid xid) throws XAException;
-
-
- /** Obtains a list of prepared transaction branches from a resource
- * manager. The transaction manager calls this method during recovery
- * to obtain the list of transaction branches that are currently in
- * prepared or heuristically completed states.
- *
- * @param flag One of TMSTARTRSCAN, TMENDRSCAN, TMNOFLAGS. TMNOFLAGS
- * must be used when no other flags are set in the parameter.
- *
- * @exception XAException An error has occurred. Possible values are
- * XAER_RMERR, XAER_RMFAIL, XAER_INVAL, and XAER_PROTO.
- *
- * @return The resource manager returns zero or more XIDs of the
- * transaction branches that are currently in a prepared or
- * heuristically completed state. If an error occurs during the
- * operation, the resource manager should throw the appropriate
- * XAException.
- *
- */
-
- Xid[] recover(int flag) throws XAException;
-
-
- /** Informs the resource manager to roll back work done on behalf
- * of a transaction branch.
- *
- * @param xid A global transaction identifier.
- *
- * @exception XAException An error has occurred.
- */
-
- void rollback(Xid xid) throws XAException;
-
-
- /** <P>Sets the current transaction timeout value for this <CODE>XAResource</CODE>
- * instance. Once set, this timeout value is effective until
- * <code>setTransactionTimeout</code> is invoked again with a different
- * value. To reset the timeout value to the default value used by the resource
- * manager, set the value to zero.
- *
- * If the timeout operation is performed successfully, the method returns
- * <i>true</i>; otherwise <i>false</i>. If a resource manager does not
- * support explicitly setting the transaction timeout value, this method
- * returns <i>false</i>.
- *
- * @param seconds The transaction timeout value in seconds.
- *
- * @return <i>true</i> if the transaction timeout value is set successfully;
- * otherwise <i>false</i>.
- *
- * @exception XAException An error has occurred. Possible exception values
- * are XAER_RMERR, XAER_RMFAIL, or XAER_INVAL.
- */
- boolean setTransactionTimeout(int seconds) throws XAException;
-
-
- /** Starts work on behalf of a transaction branch specified in
- * <code>xid</code>.
- *
- * If TMJOIN is specified, the start applies to joining a transaction
- * previously seen by the resource manager. If TMRESUME is specified,
- * the start applies to resuming a suspended transaction specified in the
- * parameter <code>xid</code>.
- *
- * If neither TMJOIN nor TMRESUME is specified and the transaction
- * specified by <code>xid</code> has previously been seen by the resource
- * manager, the resource manager throws the XAException exception with
- * XAER_DUPID error code.
- *
- * @param xid A global transaction identifier to be associated
- * with the resource.
- *
- * @param flags One of TMNOFLAGS, TMJOIN, or TMRESUME.
- *
- * @exception XAException An error has occurred. Possible exceptions
- * are XA_RB*, XAER_RMERR, XAER_RMFAIL, XAER_DUPID, XAER_OUTSIDE,
- * XAER_NOTA, XAER_INVAL, or XAER_PROTO.
- *
- */
- void start(Xid xid, int flags) throws XAException;
-
-
- /**
- * Ends a recovery scan.
- */
- public final static int TMENDRSCAN = 0x00800000;
-
- /**
- * Disassociates the caller and marks the transaction branch
- * rollback-only.
- */
- public final static int TMFAIL = 0x20000000;
-
- /**
- * Caller is joining existing transaction branch.
- */
- public final static int TMJOIN = 0x00200000;
-
- /**
- * Use TMNOFLAGS to indicate no flags value is selected.
- */
- public final static int TMNOFLAGS = 0x00000000;
-
- /**
- * Caller is using one-phase optimization.
- */
- public final static int TMONEPHASE = 0x40000000;
-
- /**
- * Caller is resuming association with a suspended
- * transaction branch.
- */
- public final static int TMRESUME = 0x08000000;
-
- /**
- * Starts a recovery scan.
- */
- public final static int TMSTARTRSCAN = 0x01000000;
-
-
- /**
- * Disassociates caller from a transaction branch.
- */
- public final static int TMSUCCESS = 0x04000000;
-
-
- /**
- * Caller is suspending (not ending) its association with
- * a transaction branch.
- */
- public final static int TMSUSPEND = 0x02000000;
-
- /**
- * The transaction branch has been read-only and has been committed.
- */
- public final static int XA_RDONLY = 0x00000003;
-
- /**
- * The transaction work has been prepared normally.
- */
- public final static int XA_OK = 0;
-
-}
--- a/corba/src/java.sql/share/classes/javax/transaction/xa/Xid.java Mon Jan 12 12:24:03 2015 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved.
- * 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 javax.transaction.xa;
-
-/**
- * The Xid interface is a Java mapping of the X/Open transaction identifier
- * XID structure. This interface specifies three accessor methods to
- * retrieve a global transaction format ID, global transaction ID,
- * and branch qualifier. The Xid interface is used by the transaction
- * manager and the resource managers. This interface is not visible to
- * the application programs.
- */
-public interface Xid {
-
- /**
- * Maximum number of bytes returned by getGtrid.
- */
- final static int MAXGTRIDSIZE = 64;
-
- /**
- * Maximum number of bytes returned by getBqual.
- */
- final static int MAXBQUALSIZE = 64;
-
- /**
- * Obtain the format identifier part of the XID.
- *
- * @return Format identifier. O means the OSI CCR format.
- */
- int getFormatId();
-
- /**
- * Obtain the global transaction identifier part of XID as an array
- * of bytes.
- *
- * @return Global transaction identifier.
- */
- byte[] getGlobalTransactionId();
-
- /**
- * Obtain the transaction branch identifier part of XID as an array
- * of bytes.
- *
- * @return Global transaction identifier.
- */
- byte[] getBranchQualifier();
-}
--- a/corba/src/java.sql/share/classes/javax/transaction/xa/package.html Mon Jan 12 12:24:03 2015 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<!--
-Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
-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.
--->
-
-</head>
-<body bgcolor="white">
-
-Provides the API that defines the contract between the transaction
-manager and the resource manager, which allows the transaction
-manager to enlist and delist resource objects (supplied by the
-resource manager driver) in JTA transactions. The driver vendor
-for a specific resource manager provides the implementation of
-this API.
-<p>
-@since 1.4
-</body>
-</html>
--- a/hotspot/.hgtags Mon Jan 12 12:24:03 2015 -0800
+++ b/hotspot/.hgtags Wed Jul 05 20:14:02 2017 +0200
@@ -447,3 +447,4 @@
38cb4fbd47e3472bd1b5ebac83bda96fe4869c4f jdk9-b42
65a9747147b8090037541040ba67156ec914db6a jdk9-b43
43a44b56dca61a4d766a20f0528fdd8b5ceff873 jdk9-b44
+5dc8184af1e2bb30b0103113d1f1a58a21a80c37 jdk9-b45
--- a/jaxp/.hgtags Mon Jan 12 12:24:03 2015 -0800
+++ b/jaxp/.hgtags Wed Jul 05 20:14:02 2017 +0200
@@ -287,3 +287,4 @@
47b0d3fa4118b9d56870cf4004987438c501f5c0 jdk9-b42
40b242363040229a05224fbc5dc203a3f46a8f8f jdk9-b43
0cb0844b58924d6086d2850c22087d06679d5eef jdk9-b44
+0dab3e848229127c7aca4c58b98e2d90ba70372f jdk9-b45
--- a/jdk/.hgtags Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/.hgtags Wed Jul 05 20:14:02 2017 +0200
@@ -287,3 +287,4 @@
6b2314173433467245261364a52fb8e347fe6342 jdk9-b42
8c6ad41974f9ab6c33d544b088648314963f2a50 jdk9-b43
8cc4dc300041eb70a7a40e4b2431a8f4d4965ea4 jdk9-b44
+9acaa4f57b0b9e3757a7b4576ca9418a75ea8287 jdk9-b45
--- a/jdk/make/lib/LibCommon.gmk Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/make/lib/LibCommon.gmk Wed Jul 05 20:14:02 2017 +0200
@@ -53,24 +53,21 @@
# Find the default set of src dirs for a native library.
# Param 1 - module name
# Param 2 - library name
-define FindSrcDirsForLib
+FindSrcDirsForLib = \
$(call uniq, $(wildcard \
$(JDK_TOPDIR)/src/$(strip $1)/$(OPENJDK_TARGET_OS)/native/lib$(strip $2) \
$(JDK_TOPDIR)/src/$(strip $1)/$(OPENJDK_TARGET_OS_TYPE)/native/lib$(strip $2) \
$(JDK_TOPDIR)/src/$(strip $1)/share/native/lib$(strip $2)))
-endef
################################################################################
# Find lib dir for module
# Param 1 - module name
ifeq ($(OPENJDK_TARGET_OS_TYPE), unix)
- define FindLibDirForModule
- $(SUPPORT_OUTPUTDIR)/modules_libs/$(strip $1)$(OPENJDK_TARGET_CPU_LIBDIR)
- endef
+ FindLibDirForModule = \
+ $(SUPPORT_OUTPUTDIR)/modules_libs/$(strip $1)$(OPENJDK_TARGET_CPU_LIBDIR)
else
- define FindLibDirForModule
- $(SUPPORT_OUTPUTDIR)/modules_libs/$(strip $1)
- endef
+ FindLibDirForModule = \
+ $(SUPPORT_OUTPUTDIR)/modules_libs/$(strip $1)
endif
################################################################################
@@ -78,11 +75,10 @@
# Param 1 - module name
# Param 2 - library name
# Param 3 - subdir for library
-define FindLib
-$(strip \
- $(call FindLibDirForModule, $(strip $1))$(strip $3)/$(LIBRARY_PREFIX)$(strip $2)$(SHARED_LIBRARY_SUFFIX) \
-)
-endef
+FindLib = \
+ $(call FindLibDirForModule, \
+ $(strip $1))$(strip $3)/$(LIBRARY_PREFIX)$(strip $2)$(SHARED_LIBRARY_SUFFIX)
+
################################################################################
# Define the header include flags needed to compile against it.
--- a/jdk/make/src/classes/build/tools/module/boot.modules Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/make/src/classes/build/tools/module/boot.modules Wed Jul 05 20:14:02 2017 +0200
@@ -17,10 +17,10 @@
java.smartcardio
java.sql
java.sql.rowset
+java.transaction
java.xml
java.xml.bind
java.xml.crypto
-java.xml.soap
java.xml.ws
jdk.charsets
jdk.deploy
--- a/jdk/src/java.base/share/classes/java/io/FilterOutputStream.java Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/src/java.base/share/classes/java/io/FilterOutputStream.java Wed Jul 05 20:14:02 2017 +0200
@@ -48,6 +48,8 @@
*/
protected OutputStream out;
+ private boolean closed;
+
/**
* Creates an output stream filter built on top of the specified
* underlying output stream.
@@ -144,9 +146,9 @@
* Closes this output stream and releases any system resources
* associated with the stream.
* <p>
- * The <code>close</code> method of <code>FilterOutputStream</code>
- * calls its <code>flush</code> method, and then calls the
- * <code>close</code> method of its underlying output stream.
+ * When not already closed, the {@code close} method of {@code
+ * FilterOutputStream} calls its {@code flush} method, and then
+ * calls the {@code close} method of its underlying output stream.
*
* @exception IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#flush()
@@ -154,6 +156,9 @@
*/
@SuppressWarnings("try")
public void close() throws IOException {
+ if (closed)
+ return;
+ closed = true;
try (OutputStream ostream = out) {
flush();
}
--- a/jdk/src/java.base/share/classes/java/lang/Deprecated.java Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/src/java.base/share/classes/java/lang/Deprecated.java Wed Jul 05 20:14:02 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -34,9 +34,13 @@
* or because a better alternative exists. Compilers warn when a
* deprecated program element is used or overridden in non-deprecated code.
*
+ * <p>Use of the @Deprecated annotation on a local variable
+ * declaration or on a parameter declaration or a package declaration
+ * has no effect.
+ *
* @author Neal Gafter
* @since 1.5
- * @jls 9.6.3.6 @Deprecated
+ * @jls 9.6.4.6 @Deprecated
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
--- a/jdk/src/java.base/share/classes/java/math/BigInteger.java Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/src/java.base/share/classes/java/math/BigInteger.java Wed Jul 05 20:14:02 2017 +0200
@@ -265,24 +265,41 @@
// Constructors
/**
- * Translates a byte array containing the two's-complement binary
- * representation of a BigInteger into a BigInteger. The input array is
+ * Translates a byte sub-array containing the two's-complement binary
+ * representation of a BigInteger into a BigInteger. The sub-array is
+ * specified via an offset into the array and a length. The sub-array is
* assumed to be in <i>big-endian</i> byte-order: the most significant
- * byte is in the zeroth element.
+ * byte is the element at index {@code off}. The {@code val} array is
+ * assumed to be unchanged for the duration of the constructor call.
*
- * @param val big-endian two's-complement binary representation of
- * BigInteger.
+ * An {@code IndexOutOfBoundsException} is thrown if the length of the array
+ * {@code val} is non-zero and either {@code off} is negative, {@code len}
+ * is negative, or {@code off+len} is greater than the length of
+ * {@code val}.
+ *
+ * @param val byte array containing a sub-array which is the big-endian
+ * two's-complement binary representation of a BigInteger.
+ * @param off the start offset of the binary representation.
+ * @param len the number of bytes to use.
* @throws NumberFormatException {@code val} is zero bytes long.
+ * @throws IndexOutOfBoundsException if the provided array offset and
+ * length would cause an index into the byte array to be
+ * negative or greater than or equal to the array length.
+ * @since 1.9
*/
- public BigInteger(byte[] val) {
- if (val.length == 0)
+ public BigInteger(byte[] val, int off, int len) {
+ if (val.length == 0) {
throw new NumberFormatException("Zero length BigInteger");
-
- if (val[0] < 0) {
- mag = makePositive(val);
+ } else if ((off < 0) || (off >= val.length) || (len < 0) ||
+ (len > val.length - off)) { // 0 <= off < val.length
+ throw new IndexOutOfBoundsException();
+ }
+
+ if (val[off] < 0) {
+ mag = makePositive(val, off, len);
signum = -1;
} else {
- mag = stripLeadingZeroBytes(val);
+ mag = stripLeadingZeroBytes(val, off, len);
signum = (mag.length == 0 ? 0 : 1);
}
if (mag.length >= MAX_MAG_LENGTH) {
@@ -291,10 +308,27 @@
}
/**
+ * Translates a byte array containing the two's-complement binary
+ * representation of a BigInteger into a BigInteger. The input array is
+ * assumed to be in <i>big-endian</i> byte-order: the most significant
+ * byte is in the zeroth element. The {@code val} array is assumed to be
+ * unchanged for the duration of the constructor call.
+ *
+ * @param val big-endian two's-complement binary representation of a
+ * BigInteger.
+ * @throws NumberFormatException {@code val} is zero bytes long.
+ */
+ public BigInteger(byte[] val) {
+ this(val, 0, val.length);
+ }
+
+ /**
* This private constructor translates an int array containing the
* two's-complement binary representation of a BigInteger into a
* BigInteger. The input array is assumed to be in <i>big-endian</i>
- * int-order: the most significant int is in the zeroth element.
+ * int-order: the most significant int is in the zeroth element. The
+ * {@code val} array is assumed to be unchanged for the duration of
+ * the constructor call.
*/
private BigInteger(int[] val) {
if (val.length == 0)
@@ -315,24 +349,44 @@
/**
* Translates the sign-magnitude representation of a BigInteger into a
* BigInteger. The sign is represented as an integer signum value: -1 for
- * negative, 0 for zero, or 1 for positive. The magnitude is a byte array
- * in <i>big-endian</i> byte-order: the most significant byte is in the
- * zeroth element. A zero-length magnitude array is permissible, and will
- * result in a BigInteger value of 0, whether signum is -1, 0 or 1.
+ * negative, 0 for zero, or 1 for positive. The magnitude is a sub-array of
+ * a byte array in <i>big-endian</i> byte-order: the most significant byte
+ * is the element at index {@code off}. A zero value of the length
+ * {@code len} is permissible, and will result in a BigInteger value of 0,
+ * whether signum is -1, 0 or 1. The {@code magnitude} array is assumed to
+ * be unchanged for the duration of the constructor call.
+ *
+ * An {@code IndexOutOfBoundsException} is thrown if the length of the array
+ * {@code magnitude} is non-zero and either {@code off} is negative,
+ * {@code len} is negative, or {@code off+len} is greater than the length of
+ * {@code magnitude}.
*
* @param signum signum of the number (-1 for negative, 0 for zero, 1
* for positive).
* @param magnitude big-endian binary representation of the magnitude of
* the number.
+ * @param off the start offset of the binary representation.
+ * @param len the number of bytes to use.
* @throws NumberFormatException {@code signum} is not one of the three
* legal values (-1, 0, and 1), or {@code signum} is 0 and
* {@code magnitude} contains one or more non-zero bytes.
+ * @throws IndexOutOfBoundsException if the provided array offset and
+ * length would cause an index into the byte array to be
+ * negative or greater than or equal to the array length.
+ * @since 1.9
*/
- public BigInteger(int signum, byte[] magnitude) {
- this.mag = stripLeadingZeroBytes(magnitude);
-
- if (signum < -1 || signum > 1)
+ public BigInteger(int signum, byte[] magnitude, int off, int len) {
+ if (signum < -1 || signum > 1) {
throw(new NumberFormatException("Invalid signum value"));
+ } else if ((off < 0) || (len < 0) ||
+ (len > 0 &&
+ ((off >= magnitude.length) ||
+ (len > magnitude.length - off)))) { // 0 <= off < magnitude.length
+ throw new IndexOutOfBoundsException();
+ }
+
+ // stripLeadingZeroBytes() returns a zero length array if len == 0
+ this.mag = stripLeadingZeroBytes(magnitude, off, len);
if (this.mag.length == 0) {
this.signum = 0;
@@ -347,10 +401,33 @@
}
/**
+ * Translates the sign-magnitude representation of a BigInteger into a
+ * BigInteger. The sign is represented as an integer signum value: -1 for
+ * negative, 0 for zero, or 1 for positive. The magnitude is a byte array
+ * in <i>big-endian</i> byte-order: the most significant byte is the
+ * zeroth element. A zero-length magnitude array is permissible, and will
+ * result in a BigInteger value of 0, whether signum is -1, 0 or 1. The
+ * {@code magnitude} array is assumed to be unchanged for the duration of
+ * the constructor call.
+ *
+ * @param signum signum of the number (-1 for negative, 0 for zero, 1
+ * for positive).
+ * @param magnitude big-endian binary representation of the magnitude of
+ * the number.
+ * @throws NumberFormatException {@code signum} is not one of the three
+ * legal values (-1, 0, and 1), or {@code signum} is 0 and
+ * {@code magnitude} contains one or more non-zero bytes.
+ */
+ public BigInteger(int signum, byte[] magnitude) {
+ this(signum, magnitude, 0, magnitude.length);
+ }
+
+ /**
* A constructor for internal use that translates the sign-magnitude
* representation of a BigInteger into a BigInteger. It checks the
* arguments and copies the magnitude so this constructor would be
- * safe for external use.
+ * safe for external use. The {@code magnitude} array is assumed to be
+ * unchanged for the duration of the constructor call.
*/
private BigInteger(int signum, int[] magnitude) {
this.mag = stripLeadingZeroInts(magnitude);
@@ -467,7 +544,9 @@
/*
* Constructs a new BigInteger using a char array with radix=10.
- * Sign is precalculated outside and not allowed in the val.
+ * Sign is precalculated outside and not allowed in the val. The {@code val}
+ * array is assumed to be unchanged for the duration of the constructor
+ * call.
*/
BigInteger(char[] val, int sign, int len) {
int cursor = 0, numDigits;
@@ -1035,11 +1114,12 @@
/**
* This private constructor is for internal use and assumes that its
- * arguments are correct.
+ * arguments are correct. The {@code magnitude} array is assumed to be
+ * unchanged for the duration of the constructor call.
*/
private BigInteger(byte[] magnitude, int signum) {
this.signum = (magnitude.length == 0 ? 0 : signum);
- this.mag = stripLeadingZeroBytes(magnitude);
+ this.mag = stripLeadingZeroBytes(magnitude, 0, magnitude.length);
if (mag.length >= MAX_MAG_LENGTH) {
checkRange();
}
@@ -3977,18 +4057,18 @@
/**
* Returns a copy of the input array stripped of any leading zero bytes.
*/
- private static int[] stripLeadingZeroBytes(byte a[]) {
- int byteLength = a.length;
+ private static int[] stripLeadingZeroBytes(byte a[], int off, int len) {
+ int indexBound = off + len;
int keep;
// Find first nonzero byte
- for (keep = 0; keep < byteLength && a[keep] == 0; keep++)
+ for (keep = off; keep < indexBound && a[keep] == 0; keep++)
;
// Allocate new array and copy relevant part of input array
- int intLength = ((byteLength - keep) + 3) >>> 2;
+ int intLength = ((indexBound - keep) + 3) >>> 2;
int[] result = new int[intLength];
- int b = byteLength - 1;
+ int b = indexBound - 1;
for (int i = intLength-1; i >= 0; i--) {
result[i] = a[b--] & 0xff;
int bytesRemaining = b - keep + 1;
@@ -4003,27 +4083,27 @@
* Takes an array a representing a negative 2's-complement number and
* returns the minimal (no leading zero bytes) unsigned whose value is -a.
*/
- private static int[] makePositive(byte a[]) {
+ private static int[] makePositive(byte a[], int off, int len) {
int keep, k;
- int byteLength = a.length;
+ int indexBound = off + len;
// Find first non-sign (0xff) byte of input
- for (keep=0; keep < byteLength && a[keep] == -1; keep++)
+ for (keep=off; keep < indexBound && a[keep] == -1; keep++)
;
/* Allocate output array. If all non-sign bytes are 0x00, we must
* allocate space for one extra output byte. */
- for (k=keep; k < byteLength && a[k] == 0; k++)
+ for (k=keep; k < indexBound && a[k] == 0; k++)
;
- int extraByte = (k == byteLength) ? 1 : 0;
- int intLength = ((byteLength - keep + extraByte) + 3) >>> 2;
+ int extraByte = (k == indexBound) ? 1 : 0;
+ int intLength = ((indexBound - keep + extraByte) + 3) >>> 2;
int result[] = new int[intLength];
/* Copy one's complement of input into output, leaving extra
* byte (if it exists) == 0x00 */
- int b = byteLength - 1;
+ int b = indexBound - 1;
for (int i = intLength-1; i >= 0; i--) {
result[i] = a[b--] & 0xff;
int numBytesToTransfer = Math.min(3, b-keep+1);
@@ -4248,7 +4328,7 @@
message = "BigInteger: Signum not present in stream";
throw new java.io.StreamCorruptedException(message);
}
- int[] mag = stripLeadingZeroBytes(magnitude);
+ int[] mag = stripLeadingZeroBytes(magnitude, 0, magnitude.length);
if ((mag.length == 0) != (sign == 0)) {
String message = "BigInteger: signum-magnitude mismatch";
if (fields.defaulted("magnitude"))
--- a/jdk/src/java.base/share/classes/java/util/Formatter.java Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/src/java.base/share/classes/java/util/Formatter.java Wed Jul 05 20:14:02 2017 +0200
@@ -3727,29 +3727,29 @@
exp = new StringBuilder("+00");
}
}
- return;
- }
- long adjusted = -(long) scale + (len - 1);
- if (form == BigDecimalLayoutForm.DECIMAL_FLOAT) {
+ } else if (form == BigDecimalLayoutForm.DECIMAL_FLOAT) {
// count of padding zeros
- int pad = scale - len;
- if (pad >= 0) {
+
+ if (scale >= len) {
// 0.xxx form
mant.append("0.");
dot = true;
- trailingZeros(mant, pad);
+ trailingZeros(mant, scale - len);
mant.append(coeff);
} else {
- if (-pad < len) {
+ if (scale > 0) {
// xx.xx form
- mant.append(coeff, 0, -pad);
+ int pad = len - scale;
+ mant.append(coeff, 0, pad);
mant.append('.');
dot = true;
- mant.append(coeff, -pad, -pad + scale);
- } else {
+ mant.append(coeff, pad, len);
+ } else { // scale < 0
// xx form
mant.append(coeff, 0, len);
- trailingZeros(mant, -scale);
+ if (intVal.signum() != 0) {
+ trailingZeros(mant, -scale);
+ }
this.scale = 0;
}
}
@@ -3762,6 +3762,7 @@
mant.append(coeff, 1, len);
}
exp = new StringBuilder();
+ long adjusted = -(long) scale + (len - 1);
if (adjusted != 0) {
long abs = Math.abs(adjusted);
// require sign
--- a/jdk/src/java.base/share/classes/javax/crypto/spec/RC5ParameterSpec.java Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/src/java.base/share/classes/javax/crypto/spec/RC5ParameterSpec.java Wed Jul 05 20:14:02 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,7 +29,7 @@
/**
* This class specifies the parameters used with the
- * <a href="http://www.ietf.org/rfc/rfc2040.txt"><i>RC5</i></a>
+ * <a href="http://tools.ietf.org/html/rfc2040"><i>RC5</i></a>
* algorithm.
*
* <p> The parameters consist of a version number, a rounds count, a word
@@ -37,7 +37,7 @@
*
* <p> This class can be used to initialize a <code>Cipher</code> object that
* implements the <i>RC5</i> algorithm as supplied by
- * <a href="http://www.rsasecurity.com">RSA Security Inc.</a>,
+ * <a href="http://www.rsa.com">RSA Security LLC</a>,
* or any parties authorized by RSA Security.
*
* @author Jan Luehe
--- a/jdk/src/java.base/windows/classes/sun/nio/ch/FileDispatcherImpl.java Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/src/java.base/windows/classes/sun/nio/ch/FileDispatcherImpl.java Wed Jul 05 20:14:02 2017 +0200
@@ -123,7 +123,7 @@
new PrivilegedAction<String>() {
@Override
public String run() {
- return System.getProperty("jdk.net.enableFastFileTransfer");
+ return System.getProperty("jdk.nio.enableFastFileTransfer");
}
});
boolean enable;
--- a/jdk/src/java.base/windows/native/libnet/NetworkInterface_winXP.c Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/src/java.base/windows/native/libnet/NetworkInterface_winXP.c Wed Jul 05 20:14:02 2017 +0200
@@ -81,9 +81,17 @@
DWORD ret, flags;
IP_ADAPTER_ADDRESSES *adapterInfo;
ULONG len;
+ char *error_msg_buf = NULL;
+ size_t error_msg_buf_size =
+ strlen("IP Helper Library GetAdaptersAddresses function failed"
+ " with error == ") + 10;
+ int _ret = 0;
+
+
adapterInfo = (IP_ADAPTER_ADDRESSES *)malloc (bufsize);
if (adapterInfo == NULL) {
- JNU_ThrowByName(env, "java/lang/OutOfMemoryError", "Native heap allocation failure");
+ JNU_ThrowByName(env, "java/lang/OutOfMemoryError",
+ "Native heap allocation failure");
return -1;
}
@@ -94,10 +102,12 @@
ret = GetAdaptersAddresses(AF_UNSPEC, flags, NULL, adapterInfo, &len);
if (ret == ERROR_BUFFER_OVERFLOW) {
- IP_ADAPTER_ADDRESSES * newAdapterInfo = (IP_ADAPTER_ADDRESSES *) realloc (adapterInfo, len);
+ IP_ADAPTER_ADDRESSES * newAdapterInfo =
+ (IP_ADAPTER_ADDRESSES *) realloc (adapterInfo, len);
if (newAdapterInfo == NULL) {
free(adapterInfo);
- JNU_ThrowByName(env, "java/lang/OutOfMemoryError", "Native heap allocation failure");
+ JNU_ThrowByName(env, "java/lang/OutOfMemoryError",
+ "Native heap allocation failure");
return -1;
}
@@ -109,8 +119,32 @@
if (ret != ERROR_SUCCESS) {
free (adapterInfo);
- JNU_ThrowByName(env, "java/lang/Error",
- "IP Helper Library GetAdaptersAddresses function failed");
+ if (ret == ERROR_INSUFFICIENT_BUFFER) {
+ JNU_ThrowByName(env, "java/lang/Error",
+ "IP Helper Library GetAdaptersAddresses function failed "
+ "with ERROR_INSUFFICIENT_BUFFER");
+ } else if (ret == ERROR_ADDRESS_NOT_ASSOCIATED ) {
+ JNU_ThrowByName(env, "java/lang/Error",
+ "IP Helper Library GetAdaptersAddresses function failed "
+ "with ERROR_ADDRESS_NOT_ASSOCIATED");
+ } else {
+ error_msg_buf = (char *)malloc(error_msg_buf_size);
+ if (error_msg_buf != NULL) {
+ memset(error_msg_buf, 0, error_msg_buf_size);
+ _ret = _snprintf_s(error_msg_buf, error_msg_buf_size,
+ _TRUNCATE, "IP Helper Library GetAdaptersAddresses "
+ "function failed with error == %d", ret);
+ if (_ret != -1) {
+ JNU_ThrowByName(env, "java/lang/Error", error_msg_buf);
+ } else {
+ JNU_ThrowByName(env, "java/lang/Error",
+ "IP Helper Library GetAdaptersAddresses function failure");
+ }
+ } else {
+ JNU_ThrowByName(env, "java/lang/Error",
+ "IP Helper Library GetAdaptersAddresses function failed");
+ }
+ }
return -1;
}
*adapters = adapterInfo;
@@ -126,9 +160,14 @@
DWORD flags, val;
IP_ADAPTER_ADDRESSES *adapterInfo, *ptr, *ret;
ULONG len;
+ char *error_msg_buf = NULL;
+ size_t error_msg_buf_size =
+ strlen("IP Helper Library GetAdaptersAddresses function failed with error == ") + 10;
+ int _ret = 0;
adapterInfo = (IP_ADAPTER_ADDRESSES *)malloc (bufsize);
if (adapterInfo == NULL) {
- JNU_ThrowByName(env, "java/lang/OutOfMemoryError", "Native heap allocation failure");
+ JNU_ThrowByName(env, "java/lang/OutOfMemoryError",
+ "Native heap allocation failure");
return NULL;
}
len = bufsize;
@@ -137,10 +176,12 @@
flags |= GAA_FLAG_INCLUDE_PREFIX;
val = GetAdaptersAddresses(AF_UNSPEC, flags, NULL, adapterInfo, &len);
if (val == ERROR_BUFFER_OVERFLOW) {
- IP_ADAPTER_ADDRESSES * newAdapterInfo = (IP_ADAPTER_ADDRESSES *) realloc (adapterInfo, len);
+ IP_ADAPTER_ADDRESSES * newAdapterInfo =
+ (IP_ADAPTER_ADDRESSES *) realloc (adapterInfo, len);
if (newAdapterInfo == NULL) {
free(adapterInfo);
- JNU_ThrowByName(env, "java/lang/OutOfMemoryError", "Native heap allocation failure");
+ JNU_ThrowByName(env, "java/lang/OutOfMemoryError",
+ "Native heap allocation failure");
return NULL;
}
@@ -152,10 +193,35 @@
if (val != ERROR_SUCCESS) {
free (adapterInfo);
- JNU_ThrowByName(env, "java/lang/Error",
- "IP Helper Library GetAdaptersAddresses function failed");
+ if (val == ERROR_INSUFFICIENT_BUFFER) {
+ JNU_ThrowByName(env, "java/lang/Error",
+ "IP Helper Library GetAdaptersAddresses function failed "
+ "with ERROR_INSUFFICIENT_BUFFER");
+ } else if (val == ERROR_ADDRESS_NOT_ASSOCIATED ) {
+ JNU_ThrowByName(env, "java/lang/Error",
+ "IP Helper Library GetAdaptersAddresses function failed "
+ "with ERROR_ADDRESS_NOT_ASSOCIATED");
+ } else {
+ error_msg_buf = (char *)malloc(error_msg_buf_size);
+ if (error_msg_buf != NULL) {
+ memset(error_msg_buf, 0, error_msg_buf_size);
+ _ret = _snprintf_s(error_msg_buf, error_msg_buf_size,
+ _TRUNCATE, "IP Helper Library GetAdaptersAddresses function failed "
+ "with error == %d", val);
+ if (_ret != -1) {
+ JNU_ThrowByName(env, "java/lang/Error", error_msg_buf);
+ } else {
+ JNU_ThrowByName(env, "java/lang/Error",
+ "IP Helper Library GetAdaptersAddresses function failure");
+ }
+ } else {
+ JNU_ThrowByName(env, "java/lang/Error",
+ "IP Helper Library GetAdaptersAddresses function failed");
+ }
+ }
return NULL;
}
+
ptr = adapterInfo;
ret = NULL;
while (ptr != NULL) {
@@ -168,7 +234,8 @@
ret = (IP_ADAPTER_ADDRESSES *) malloc(sizeof(IP_ADAPTER_ADDRESSES));
if (ret == NULL) {
free(adapterInfo);
- JNU_ThrowByName(env, "java/lang/OutOfMemoryError", "Native heap allocation failure");
+ JNU_ThrowByName(env, "java/lang/OutOfMemoryError",
+ "Native heap allocation failure");
return NULL;
}
--- a/jdk/src/java.scripting/share/classes/javax/script/ScriptEngineFactory.java Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/src/java.scripting/share/classes/javax/script/ScriptEngineFactory.java Wed Jul 05 20:14:02 2017 +0200
@@ -85,7 +85,7 @@
public List<String> getNames();
/**
- * Returns the name of the scripting langauge supported by this
+ * Returns the name of the scripting language supported by this
* <code>ScriptEngine</code>.
* @return The name of the supported language.
*/
@@ -104,14 +104,15 @@
* <ul>
* <li>ScriptEngine.ENGINE</li>
* <li>ScriptEngine.ENGINE_VERSION</li>
- * <li>ScriptEngine.NAME</li>
* <li>ScriptEngine.LANGUAGE</li>
* <li>ScriptEngine.LANGUAGE_VERSION</li>
+ * <li>ScriptEngine.NAME</li>
* </ul>
* <p>
* The values for these keys are the Strings returned by <code>getEngineName</code>,
- * <code>getEngineVersion</code>, <code>getName</code>, <code>getLanguageName</code> and
- * <code>getLanguageVersion</code> respectively.<br><br>
+ * <code>getEngineVersion</code>, <code>getLanguageName</code>,
+ * <code>getLanguageVersion</code> for the first four keys respectively. For NAME, one of the Strings
+ * returned by <code>getNames</code> is returned.<br><br>
* A reserved key, <code><b>THREADING</b></code>, whose value describes the behavior of the engine
* with respect to concurrent execution of scripts and maintenance of state is also defined.
* These values for the <code><b>THREADING</b></code> key are:<br><br>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.sql/share/classes/javax/transaction/xa/XAException.java Wed Jul 05 20:14:02 2017 +0200
@@ -0,0 +1,196 @@
+/*
+ * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * 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 javax.transaction.xa;
+
+/**
+ * The XAException is thrown by the Resource Manager (RM) to inform the
+ * Transaction Manager of an error encountered by the involved transaction.
+ *
+ */
+public class XAException extends Exception {
+ //private static final long serialVersionUID = -8249683284832867751L;
+
+ /**
+ * The error code with which to create the SystemException.
+ *
+ * @serial The error code for the exception
+ */
+ public int errorCode;
+
+ /**
+ * Create an XAException.
+ */
+ public XAException() {
+ super();
+ }
+
+ /**
+ * Create an XAException with a given string.
+ *
+ * @param s The <code>String</code> object containing the exception
+ * message.
+ */
+ public XAException(String s) {
+ super(s);
+ }
+
+ /**
+ * Create an XAException with a given error code.
+ *
+ * @param errcode The error code identifying the exception.
+ */
+ public XAException(int errcode) {
+ super();
+ errorCode = errcode;
+ }
+
+ /**
+ * The inclusive lower bound of the rollback codes.
+ */
+ public final static int XA_RBBASE = 100;
+
+ /**
+ * Indicates that the rollback was caused by an unspecified reason.
+ */
+ public final static int XA_RBROLLBACK = XA_RBBASE;
+
+ /**
+ * Indicates that the rollback was caused by a communication failure.
+ */
+ public final static int XA_RBCOMMFAIL = XA_RBBASE + 1;
+
+ /**
+ * A deadlock was detected.
+ */
+ public final static int XA_RBDEADLOCK = XA_RBBASE + 2;
+
+ /**
+ * A condition that violates the integrity of the resource was detected.
+ */
+ public final static int XA_RBINTEGRITY = XA_RBBASE + 3;
+
+ /**
+ * The resource manager rolled back the transaction branch for a reason
+ * not on this list.
+ */
+ public final static int XA_RBOTHER = XA_RBBASE + 4;
+
+ /**
+ * A protocol error occurred in the resource manager.
+ */
+ public final static int XA_RBPROTO = XA_RBBASE + 5;
+
+ /**
+ * A transaction branch took too long.
+ */
+ public final static int XA_RBTIMEOUT = XA_RBBASE + 6;
+
+ /**
+ * May retry the transaction branch.
+ */
+ public final static int XA_RBTRANSIENT = XA_RBBASE + 7;
+
+ /**
+ * The inclusive upper bound of the rollback error code.
+ */
+ public final static int XA_RBEND = XA_RBTRANSIENT;
+
+ /**
+ * Resumption must occur where the suspension occurred.
+ */
+ public final static int XA_NOMIGRATE = 9;
+
+ /**
+ * The transaction branch may have been heuristically completed.
+ */
+ public final static int XA_HEURHAZ = 8;
+
+ /**
+ * The transaction branch has been heuristically committed.
+ */
+ public final static int XA_HEURCOM = 7;
+
+ /**
+ * The transaction branch has been heuristically rolled back.
+ */
+ public final static int XA_HEURRB = 6;
+
+ /**
+ * The transaction branch has been heuristically committed and
+ * rolled back.
+ */
+ public final static int XA_HEURMIX = 5;
+
+ /**
+ * Routine returned with no effect and may be reissued.
+ */
+ public final static int XA_RETRY = 4;
+
+ /**
+ * The transaction branch was read-only and has been committed.
+ */
+ public final static int XA_RDONLY = 3;
+
+ /**
+ * There is an asynchronous operation already outstanding.
+ */
+ public final static int XAER_ASYNC = -2;
+
+ /**
+ * A resource manager error has occurred in the transaction branch.
+ */
+ public final static int XAER_RMERR = -3;
+
+ /**
+ * The XID is not valid.
+ */
+ public final static int XAER_NOTA = -4;
+
+ /**
+ * Invalid arguments were given.
+ */
+ public final static int XAER_INVAL = -5;
+
+ /**
+ * Routine was invoked in an inproper context.
+ */
+ public final static int XAER_PROTO = -6;
+
+ /**
+ * Resource manager is unavailable.
+ */
+ public final static int XAER_RMFAIL = -7;
+
+ /**
+ * The XID already exists.
+ */
+ public final static int XAER_DUPID = -8;
+
+ /**
+ * The resource manager is doing work outside a global transaction.
+ */
+ public final static int XAER_OUTSIDE = -9;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.sql/share/classes/javax/transaction/xa/XAResource.java Wed Jul 05 20:14:02 2017 +0200
@@ -0,0 +1,305 @@
+/*
+ * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * 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 javax.transaction.xa;
+
+/**
+ * The XAResource interface is a Java mapping of the industry standard
+ * XA interface based on the X/Open CAE Specification (Distributed
+ * Transaction Processing: The XA Specification).
+ *
+ * <p>The XA interface defines the contract between a Resource Manager
+ * and a Transaction Manager in a distributed transaction processing
+ * (DTP) environment. A JDBC driver or a JMS provider implements
+ * this interface to support the association between a global transaction
+ * and a database or message service connection.
+ *
+ * <p>The XAResource interface can be supported by any transactional
+ * resource that is intended to be used by application programs in an
+ * environment where transactions are controlled by an external
+ * transaction manager. An example of such a resource is a database
+ * management system. An application may access data through multiple
+ * database connections. Each database connection is enlisted with
+ * the transaction manager as a transactional resource. The transaction
+ * manager obtains an XAResource for each connection participating
+ * in a global transaction. The transaction manager uses the
+ * <code>start</code> method
+ * to associate the global transaction with the resource, and it uses the
+ * <code>end</code> method to disassociate the transaction from
+ * the resource. The resource
+ * manager is responsible for associating the global transaction to all
+ * work performed on its data between the start and end method invocations.
+ *
+ * <p>At transaction commit time, the resource managers are informed by
+ * the transaction manager to prepare, commit, or rollback a transaction
+ * according to the two-phase commit protocol.</p>
+ *
+ */
+public interface XAResource {
+
+ /**
+ * Commits the global transaction specified by xid.
+ *
+ * @param xid A global transaction identifier
+ *
+ * @param onePhase If true, the resource manager should use a one-phase
+ * commit protocol to commit the work done on behalf of xid.
+ *
+ * @exception XAException An error has occurred. Possible XAExceptions
+ * are XA_HEURHAZ, XA_HEURCOM, XA_HEURRB, XA_HEURMIX, XAER_RMERR,
+ * XAER_RMFAIL, XAER_NOTA, XAER_INVAL, or XAER_PROTO.
+ *
+ * <P>If the resource manager did not commit the transaction and the
+ * paramether onePhase is set to true, the resource manager may throw
+ * one of the XA_RB* exceptions. Upon return, the resource manager has
+ * rolled back the branch's work and has released all held resources.
+ */
+ void commit(Xid xid, boolean onePhase) throws XAException;
+
+ /**
+ * Ends the work performed on behalf of a transaction branch.
+ * The resource manager disassociates the XA resource from the
+ * transaction branch specified and lets the transaction
+ * complete.
+ *
+ * <p>If TMSUSPEND is specified in the flags, the transaction branch
+ * is temporarily suspended in an incomplete state. The transaction
+ * context is in a suspended state and must be resumed via the
+ * <code>start</code> method with TMRESUME specified.</p>
+ *
+ * <p>If TMFAIL is specified, the portion of work has failed.
+ * The resource manager may mark the transaction as rollback-only</p>
+ *
+ * <p>If TMSUCCESS is specified, the portion of work has completed
+ * successfully.</p>
+ *
+ * @param xid A global transaction identifier that is the same as
+ * the identifier used previously in the <code>start</code> method.
+ *
+ * @param flags One of TMSUCCESS, TMFAIL, or TMSUSPEND.
+ *
+ * @exception XAException An error has occurred. Possible XAException
+ * values are XAER_RMERR, XAER_RMFAILED, XAER_NOTA, XAER_INVAL,
+ * XAER_PROTO, or XA_RB*.
+ */
+ void end(Xid xid, int flags) throws XAException;
+
+ /**
+ * Tells the resource manager to forget about a heuristically
+ * completed transaction branch.
+ *
+ * @param xid A global transaction identifier.
+ *
+ * @exception XAException An error has occurred. Possible exception
+ * values are XAER_RMERR, XAER_RMFAIL, XAER_NOTA, XAER_INVAL, or
+ * XAER_PROTO.
+ */
+ void forget(Xid xid) throws XAException;
+
+ /**
+ * Obtains the current transaction timeout value set for this
+ * XAResource instance. If <CODE>XAResource.setTransactionTimeout</CODE>
+ * was not used prior to invoking this method, the return value
+ * is the default timeout set for the resource manager; otherwise,
+ * the value used in the previous <CODE>setTransactionTimeout</CODE>
+ * call is returned.
+ *
+ * @return the transaction timeout value in seconds.
+ *
+ * @exception XAException An error has occurred. Possible exception
+ * values are XAER_RMERR and XAER_RMFAIL.
+ */
+ int getTransactionTimeout() throws XAException;
+
+ /**
+ * This method is called to determine if the resource manager
+ * instance represented by the target object is the same as the
+ * resouce manager instance represented by the parameter <i>xares</i>.
+ *
+ * @param xares An XAResource object whose resource manager instance
+ * is to be compared with the resource manager instance of the
+ * target object.
+ *
+ * @return <i>true</i> if it's the same RM instance; otherwise
+ * <i>false</i>.
+ *
+ * @exception XAException An error has occurred. Possible exception
+ * values are XAER_RMERR and XAER_RMFAIL.
+ */
+ boolean isSameRM(XAResource xares) throws XAException;
+
+ /**
+ * Ask the resource manager to prepare for a transaction commit
+ * of the transaction specified in xid.
+ *
+ * @param xid A global transaction identifier.
+ *
+ * @exception XAException An error has occurred. Possible exception
+ * values are: XA_RB*, XAER_RMERR, XAER_RMFAIL, XAER_NOTA, XAER_INVAL,
+ * or XAER_PROTO.
+ *
+ * @return A value indicating the resource manager's vote on the
+ * outcome of the transaction. The possible values are: XA_RDONLY
+ * or XA_OK. If the resource manager wants to roll back the
+ * transaction, it should do so by raising an appropriate XAException
+ * in the prepare method.
+ */
+ int prepare(Xid xid) throws XAException;
+
+ /**
+ * Obtains a list of prepared transaction branches from a resource
+ * manager. The transaction manager calls this method during recovery
+ * to obtain the list of transaction branches that are currently in
+ * prepared or heuristically completed states.
+ *
+ * @param flag One of TMSTARTRSCAN, TMENDRSCAN, TMNOFLAGS. TMNOFLAGS
+ * must be used when no other flags are set in the parameter.
+ *
+ * @exception XAException An error has occurred. Possible values are
+ * XAER_RMERR, XAER_RMFAIL, XAER_INVAL, and XAER_PROTO.
+ *
+ * @return The resource manager returns zero or more XIDs of the
+ * transaction branches that are currently in a prepared or
+ * heuristically completed state. If an error occurs during the
+ * operation, the resource manager should throw the appropriate
+ * XAException.
+ */
+ Xid[] recover(int flag) throws XAException;
+
+ /**
+ * Informs the resource manager to roll back work done on behalf
+ * of a transaction branch.
+ *
+ * @param xid A global transaction identifier.
+ *
+ * @exception XAException An error has occurred.
+ */
+ void rollback(Xid xid) throws XAException;
+
+ /**
+ * Sets the current transaction timeout value for this <CODE>XAResource</CODE>
+ * instance. Once set, this timeout value is effective until
+ * <code>setTransactionTimeout</code> is invoked again with a different
+ * value. To reset the timeout value to the default value used by the resource
+ * manager, set the value to zero.
+ *
+ * If the timeout operation is performed successfully, the method returns
+ * <i>true</i>; otherwise <i>false</i>. If a resource manager does not
+ * support explicitly setting the transaction timeout value, this method
+ * returns <i>false</i>.
+ *
+ * @param seconds The transaction timeout value in seconds.
+ *
+ * @return <i>true</i> if the transaction timeout value is set successfully;
+ * otherwise <i>false</i>.
+ *
+ * @exception XAException An error has occurred. Possible exception values
+ * are XAER_RMERR, XAER_RMFAIL, or XAER_INVAL.
+ */
+ boolean setTransactionTimeout(int seconds) throws XAException;
+
+ /**
+ * Starts work on behalf of a transaction branch specified in
+ * <code>xid</code>.
+ *
+ * If TMJOIN is specified, the start applies to joining a transaction
+ * previously seen by the resource manager. If TMRESUME is specified,
+ * the start applies to resuming a suspended transaction specified in the
+ * parameter <code>xid</code>.
+ *
+ * If neither TMJOIN nor TMRESUME is specified and the transaction
+ * specified by <code>xid</code> has previously been seen by the resource
+ * manager, the resource manager throws the XAException exception with
+ * XAER_DUPID error code.
+ *
+ * @param xid A global transaction identifier to be associated
+ * with the resource.
+ *
+ * @param flags One of TMNOFLAGS, TMJOIN, or TMRESUME.
+ *
+ * @exception XAException An error has occurred. Possible exceptions
+ * are XA_RB*, XAER_RMERR, XAER_RMFAIL, XAER_DUPID, XAER_OUTSIDE,
+ * XAER_NOTA, XAER_INVAL, or XAER_PROTO.
+ */
+ void start(Xid xid, int flags) throws XAException;
+
+ /**
+ * Ends a recovery scan.
+ */
+ public final static int TMENDRSCAN = 0x00800000;
+
+ /**
+ * Disassociates the caller and marks the transaction branch
+ * rollback-only.
+ */
+ public final static int TMFAIL = 0x20000000;
+
+ /**
+ * Caller is joining existing transaction branch.
+ */
+ public final static int TMJOIN = 0x00200000;
+
+ /**
+ * Use TMNOFLAGS to indicate no flags value is selected.
+ */
+ public final static int TMNOFLAGS = 0x00000000;
+
+ /**
+ * Caller is using one-phase optimization.
+ */
+ public final static int TMONEPHASE = 0x40000000;
+
+ /**
+ * Caller is resuming association with a suspended
+ * transaction branch.
+ */
+ public final static int TMRESUME = 0x08000000;
+
+ /**
+ * Starts a recovery scan.
+ */
+ public final static int TMSTARTRSCAN = 0x01000000;
+
+ /**
+ * Disassociates caller from a transaction branch.
+ */
+ public final static int TMSUCCESS = 0x04000000;
+
+ /**
+ * Caller is suspending (not ending) its association with
+ * a transaction branch.
+ */
+ public final static int TMSUSPEND = 0x02000000;
+
+ /**
+ * The transaction branch has been read-only and has been committed.
+ */
+ public final static int XA_RDONLY = 0x00000003;
+
+ /**
+ * The transaction work has been prepared normally.
+ */
+ public final static int XA_OK = 0;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.sql/share/classes/javax/transaction/xa/Xid.java Wed Jul 05 20:14:02 2017 +0200
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved.
+ * 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 javax.transaction.xa;
+
+/**
+ * The Xid interface is a Java mapping of the X/Open transaction identifier
+ * XID structure. This interface specifies three accessor methods to
+ * retrieve a global transaction format ID, global transaction ID,
+ * and branch qualifier. The Xid interface is used by the transaction
+ * manager and the resource managers. This interface is not visible to
+ * the application programs.
+ */
+public interface Xid {
+
+ /**
+ * Maximum number of bytes returned by getGtrid.
+ */
+ final static int MAXGTRIDSIZE = 64;
+
+ /**
+ * Maximum number of bytes returned by getBqual.
+ */
+ final static int MAXBQUALSIZE = 64;
+
+ /**
+ * Obtain the format identifier part of the XID.
+ *
+ * @return Format identifier. O means the OSI CCR format.
+ */
+ int getFormatId();
+
+ /**
+ * Obtain the global transaction identifier part of XID as an array
+ * of bytes.
+ *
+ * @return Global transaction identifier.
+ */
+ byte[] getGlobalTransactionId();
+
+ /**
+ * Obtain the transaction branch identifier part of XID as an array
+ * of bytes.
+ *
+ * @return Global transaction identifier.
+ */
+ byte[] getBranchQualifier();
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.sql/share/classes/javax/transaction/xa/package.html Wed Jul 05 20:14:02 2017 +0200
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+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.
+-->
+
+</head>
+<body bgcolor="white">
+
+Provides the API that defines the contract between the transaction
+manager and the resource manager, which allows the transaction
+manager to enlist and delist resource objects (supplied by the
+resource manager driver) in JTA transactions. The driver vendor
+for a specific resource manager provides the implementation of
+this API.
+<p>
+@since 1.4
+</body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.transaction/share/classes/javax/transaction/InvalidTransactionException.java Wed Jul 05 20:14:02 2017 +0200
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
+ * 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.
+ */
+/*
+ * Licensed Materials - Property of IBM
+ * RMI-IIOP v1.0
+ * Copyright IBM Corp. 1998 1999 All Rights Reserved
+ *
+ */
+
+package javax.transaction;
+
+/**
+ * This exception indicates that the request carried an invalid transaction
+ * context. For example, this exception could be raised if an error
+ * occured when trying to register a resource.
+ */
+@SuppressWarnings("serial") // serialVersionUID intentionally omitted
+public class InvalidTransactionException extends java.rmi.RemoteException {
+
+ public InvalidTransactionException() {
+ super();
+ }
+
+ public InvalidTransactionException(String msg) {
+ super(msg);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.transaction/share/classes/javax/transaction/TransactionRequiredException.java Wed Jul 05 20:14:02 2017 +0200
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
+ * 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.
+ */
+/*
+ * Licensed Materials - Property of IBM
+ * RMI-IIOP v1.0
+ * Copyright IBM Corp. 1998 1999 All Rights Reserved
+ *
+ */
+
+package javax.transaction;
+
+/**
+ * This exception indicates that a request carried a null transaction context,
+ * but the target object requires an activate transaction.
+ */
+@SuppressWarnings("serial") // serialVersionUID intentionally omitted
+public class TransactionRequiredException extends java.rmi.RemoteException {
+
+ public TransactionRequiredException() {
+ super();
+ }
+
+ public TransactionRequiredException(String msg) {
+ super(msg);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.transaction/share/classes/javax/transaction/TransactionRolledbackException.java Wed Jul 05 20:14:02 2017 +0200
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
+ * 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.
+ */
+/*
+ * Licensed Materials - Property of IBM
+ * RMI-IIOP v1.0
+ * Copyright IBM Corp. 1998 1999 All Rights Reserved
+ *
+ */
+
+package javax.transaction;
+
+/**
+ * This exception indicates that the transaction associated with processing
+ * of the request has been rolled back, or marked to roll back. Thus the
+ * requested operation either could not be performed or was not performed
+ * because further computation on behalf of the transaction would be
+ * fruitless
+ */
+@SuppressWarnings("serial") // serialVersionUID intentionally omitted
+public class TransactionRolledbackException extends java.rmi.RemoteException {
+
+ public TransactionRolledbackException() {
+ super();
+ }
+
+ public TransactionRolledbackException(String msg) {
+ super(msg);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.transaction/share/classes/javax/transaction/package.html Wed Jul 05 20:14:02 2017 +0200
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
+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.
+-->
+
+</head>
+<body bgcolor="white">
+
+Contains three exceptions thrown by the ORB machinery during unmarshalling.
+<p>
+@since 1.3
+</body>
+</html>
--- a/jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java Wed Jul 05 20:14:02 2017 +0200
@@ -21,7 +21,7 @@
* under the License.
*/
/*
- * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
*/
/*
* $Id: DOMKeyValue.java 1333415 2012-05-03 12:03:51Z coheigea $
@@ -33,20 +33,19 @@
import javax.xml.crypto.dsig.*;
import javax.xml.crypto.dsig.keyinfo.KeyValue;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.security.AccessController;
+import java.io.IOException;
+import java.math.BigInteger;
import java.security.KeyException;
import java.security.KeyFactory;
import java.security.NoSuchAlgorithmException;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
import java.security.PublicKey;
import java.security.interfaces.DSAParams;
import java.security.interfaces.DSAPublicKey;
import java.security.interfaces.ECPublicKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.DSAPublicKeySpec;
+import java.security.spec.ECField;
+import java.security.spec.ECFieldFp;
import java.security.spec.ECParameterSpec;
import java.security.spec.ECPoint;
import java.security.spec.ECPublicKeySpec;
@@ -54,6 +53,7 @@
import java.security.spec.InvalidKeySpecException;
import java.security.spec.KeySpec;
import java.security.spec.RSAPublicKeySpec;
+import java.util.Arrays;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -325,55 +325,112 @@
private byte[] ecPublicKey;
private KeyFactory eckf;
private ECParameterSpec ecParams;
- private Method encodePoint, decodePoint, getCurveName,
- getECParameterSpec;
+
+ // The supported curve, secp256r1
+ private static final Curve SECP256R1;
+ static {
+ final String name, oid, sfield, a, b, x, y, n;
+ name = "secp256r1 [NIST P-256, X9.62 prime256v1]";
+ oid = "1.2.840.10045.3.1.7";
+ sfield =
+ "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF";
+ a =
+ "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC";
+ b =
+ "5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B";
+ x =
+ "6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296";
+ y =
+ "4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5";
+ n =
+ "FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551";
+ final int h = 1;
+
+ BigInteger p = bigInt(sfield);
+ ECField field = new ECFieldFp(p);
+ EllipticCurve curve = new EllipticCurve(field, bigInt(a),
+ bigInt(b));
+ ECPoint g = new ECPoint(bigInt(x), bigInt(y));
+ SECP256R1 = new Curve(name, oid, curve, g, bigInt(n), h);
+ }
EC(PublicKey key) throws KeyException {
super(key);
ECPublicKey ecKey = (ECPublicKey)key;
ECPoint ecPoint = ecKey.getW();
ecParams = ecKey.getParams();
- try {
- AccessController.doPrivileged(
- new PrivilegedExceptionAction<Void>() {
- public Void run() throws
- ClassNotFoundException, NoSuchMethodException
- {
- getMethods();
- return null;
- }
- }
- );
- } catch (PrivilegedActionException pae) {
- throw new KeyException("ECKeyValue not supported",
- pae.getException());
- }
- Object[] args = new Object[] { ecPoint, ecParams.getCurve() };
- try {
- ecPublicKey = (byte[])encodePoint.invoke(null, args);
- } catch (IllegalAccessException iae) {
- throw new KeyException(iae);
- } catch (InvocationTargetException ite) {
- throw new KeyException(ite);
- }
+ ecPublicKey = encodePoint(ecPoint, ecParams.getCurve());
}
EC(Element dmElem) throws MarshalException {
super(dmElem);
}
- void getMethods() throws ClassNotFoundException, NoSuchMethodException {
- Class<?> c = Class.forName("sun.security.util.ECParameters");
- Class<?>[] params = new Class<?>[] { ECPoint.class,
- EllipticCurve.class };
- encodePoint = c.getMethod("encodePoint", params);
- params = new Class<?>[] { ECParameterSpec.class };
- getCurveName = c.getMethod("getCurveName", params);
- params = new Class<?>[] { byte[].class, EllipticCurve.class };
- decodePoint = c.getMethod("decodePoint", params);
- c = Class.forName("sun.security.util.NamedCurve");
- params = new Class<?>[] { String.class };
- getECParameterSpec = c.getMethod("getECParameterSpec", params);
+ private static ECPoint decodePoint(byte[] data, EllipticCurve curve)
+ throws IOException {
+ if ((data.length == 0) || (data[0] != 4)) {
+ throw new IOException("Only uncompressed point format " +
+ "supported");
+ }
+ // Per ANSI X9.62, an encoded point is a 1 byte type followed by
+ // ceiling(log base 2 field-size / 8) bytes of x and the same of y.
+ int n = (data.length - 1) / 2;
+ if (n != ((curve.getField().getFieldSize() + 7) >> 3)) {
+ throw new IOException("Point does not match field size");
+ }
+
+ byte[] xb = Arrays.copyOfRange(data, 1, 1 + n);
+ byte[] yb = Arrays.copyOfRange(data, n + 1, n + 1 + n);
+
+ return new ECPoint(new BigInteger(1, xb), new BigInteger(1, yb));
+ }
+
+ private static byte[] encodePoint(ECPoint point, EllipticCurve curve) {
+ // get field size in bytes (rounding up)
+ int n = (curve.getField().getFieldSize() + 7) >> 3;
+ byte[] xb = trimZeroes(point.getAffineX().toByteArray());
+ byte[] yb = trimZeroes(point.getAffineY().toByteArray());
+ if ((xb.length > n) || (yb.length > n)) {
+ throw new RuntimeException("Point coordinates do not " +
+ "match field size");
+ }
+ byte[] b = new byte[1 + (n << 1)];
+ b[0] = 4; // uncompressed
+ System.arraycopy(xb, 0, b, n - xb.length + 1, xb.length);
+ System.arraycopy(yb, 0, b, b.length - yb.length, yb.length);
+ return b;
+ }
+
+ private static byte[] trimZeroes(byte[] b) {
+ int i = 0;
+ while ((i < b.length - 1) && (b[i] == 0)) {
+ i++;
+ }
+ if (i == 0) {
+ return b;
+ }
+ return Arrays.copyOfRange(b, i, b.length);
+ }
+
+ private static String getCurveOid(ECParameterSpec params) {
+ // Check that the params represent the secp256r1 curve
+ // If so, return the object identifier of the curve
+ int fieldSize = params.getCurve().getField().getFieldSize();
+ if (SECP256R1.getCurve().getField().getFieldSize() == fieldSize
+ && SECP256R1.getCurve().equals(params.getCurve())
+ && SECP256R1.getGenerator().equals(params.getGenerator())
+ && SECP256R1.getOrder().equals(params.getOrder())
+ && SECP256R1.getCofactor() == params.getCofactor()) {
+ return SECP256R1.getObjectId();
+ }
+ return null;
+ }
+
+ private static ECParameterSpec getECParameterSpec(String oid) {
+ if (oid.equals(SECP256R1.getObjectId())) {
+ return SECP256R1;
+ }
+ return null;
}
void marshalPublicKey(Node parent, Document doc, String dsPrefix,
@@ -391,14 +448,11 @@
XMLDSIG_11_XMLNS,
prefix);
Object[] args = new Object[] { ecParams };
- try {
- String oid = (String) getCurveName.invoke(null, args);
- DOMUtils.setAttribute(namedCurveElem, "URI", "urn:oid:" + oid);
- } catch (IllegalAccessException iae) {
- throw new MarshalException(iae);
- } catch (InvocationTargetException ite) {
- throw new MarshalException(ite);
+ String oid = getCurveOid(ecParams);
+ if (oid == null) {
+ throw new MarshalException("Invalid ECParameterSpec");
}
+ DOMUtils.setAttribute(namedCurveElem, "URI", "urn:oid:" + oid);
String qname = (prefix == null || prefix.length() == 0)
? "xmlns" : "xmlns:" + prefix;
namedCurveElem.setAttributeNS("http://www.w3.org/2000/xmlns/",
@@ -422,21 +476,6 @@
("unable to create EC KeyFactory: " + e.getMessage());
}
}
- try {
- AccessController.doPrivileged(
- new PrivilegedExceptionAction<Void>() {
- public Void run() throws
- ClassNotFoundException, NoSuchMethodException
- {
- getMethods();
- return null;
- }
- }
- );
- } catch (PrivilegedActionException pae) {
- throw new MarshalException("ECKeyValue not supported",
- pae.getException());
- }
ECParameterSpec ecParams = null;
Element curElem = DOMUtils.getFirstChildElement(kvtElem);
if (curElem.getLocalName().equals("ECParameters")) {
@@ -447,14 +486,9 @@
// strip off "urn:oid"
if (uri.startsWith("urn:oid:")) {
String oid = uri.substring(8);
- try {
- Object[] args = new Object[] { oid };
- ecParams = (ECParameterSpec)
- getECParameterSpec.invoke(null, args);
- } catch (IllegalAccessException iae) {
- throw new MarshalException(iae);
- } catch (InvocationTargetException ite) {
- throw new MarshalException(ite);
+ ecParams = getECParameterSpec(oid);
+ if (ecParams == null) {
+ throw new MarshalException("Invalid curve OID");
}
} else {
throw new MarshalException("Invalid NamedCurve URI");
@@ -464,24 +498,43 @@
}
curElem = DOMUtils.getNextSiblingElement(curElem, "PublicKey");
ECPoint ecPoint = null;
+
try {
- Object[] args = new Object[] { Base64.decode(curElem),
- ecParams.getCurve() };
- ecPoint = (ECPoint)decodePoint.invoke(null, args);
+ ecPoint = decodePoint(Base64.decode(curElem),
+ ecParams.getCurve());
} catch (Base64DecodingException bde) {
throw new MarshalException("Invalid EC PublicKey", bde);
- } catch (IllegalAccessException iae) {
- throw new MarshalException(iae);
- } catch (InvocationTargetException ite) {
- throw new MarshalException(ite);
+ } catch (IOException ioe) {
+ throw new MarshalException("Invalid EC Point", ioe);
}
-/*
- ecPoint = sun.security.util.ECParameters.decodePoint(
- Base64.decode(curElem), ecParams.getCurve());
-*/
+
ECPublicKeySpec spec = new ECPublicKeySpec(ecPoint, ecParams);
return generatePublicKey(eckf, spec);
}
+
+ static final class Curve extends ECParameterSpec {
+ private final String name;
+ private final String oid;
+
+ Curve(String name, String oid, EllipticCurve curve,
+ ECPoint g, BigInteger n, int h) {
+ super(curve, g, n, h);
+ this.name = name;
+ this.oid = oid;
+ }
+
+ private String getName() {
+ return name;
+ }
+
+ private String getObjectId() {
+ return oid;
+ }
+ }
+ }
+
+ private static BigInteger bigInt(String s) {
+ return new BigInteger(s, 16);
}
static final class Unknown extends DOMKeyValue {
--- a/jdk/test/ProblemList.txt Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/ProblemList.txt Wed Jul 05 20:14:02 2017 +0200
@@ -154,6 +154,9 @@
com/sun/management/OperatingSystemMXBean/GetSystemCpuLoad.java aix-all
javax/management/MBeanServer/OldMBeanServerTest.java aix-all
+# 8042215
+javax/management/remote/mandatory/notif/NotifReconnectDeadlockTest.java generic-all
+
############################################################################
# jdk_math
--- a/jdk/test/com/sun/corba/5036554/TestCorbaBug.sh Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/com/sun/corba/5036554/TestCorbaBug.sh Wed Jul 05 20:14:02 2017 +0200
@@ -75,13 +75,13 @@
mkdir bug
cp ${TESTSRC}${FS}bug.idl .
-${TESTJAVA}${FS}bin${FS}idlj bug.idl
+${COMPILEJAVA}${FS}bin${FS}idlj bug.idl
cp ${TESTSRC}${FS}JavaBug.java bug
chmod -fR 777 bug
-${TESTJAVA}${FS}bin${FS}javac -d . bug${FS}*.java
+${COMPILEJAVA}${FS}bin${FS}javac -d . bug${FS}*.java
${TESTJAVA}${FS}bin${FS}java ${TESTVMOPTS} -cp . bug/JavaBug > test.out 2>&1
--- a/jdk/test/com/sun/corba/cachedSocket/7056731.sh Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/com/sun/corba/cachedSocket/7056731.sh Wed Jul 05 20:14:02 2017 +0200
@@ -55,8 +55,8 @@
cp -r ${TESTSRC}${FS}*.java ${TESTSRC}${FS}Hello.idl .
echo "Testing...please wait"
-${TESTJAVA}${FS}bin${FS}idlj -fall Hello.idl
-${TESTJAVA}${FS}bin${FS}javac *.java HelloApp/*.java
+${COMPILEJAVA}${FS}bin${FS}idlj -fall Hello.idl
+${COMPILEJAVA}${FS}bin${FS}javac *.java HelloApp/*.java
echo "starting orbd"
${TESTJAVA}${FS}bin${FS}orbd -ORBInitialPort $PORT -ORBInitialHost localhost &
--- a/jdk/test/com/sun/crypto/provider/Cipher/DES/TestUtility.java Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/com/sun/crypto/provider/Cipher/DES/TestUtility.java Wed Jul 05 20:14:02 2017 +0200
@@ -27,39 +27,52 @@
public class TestUtility {
- private static final String digits = "0123456789abcdef";
+ private static final String DIGITS = "0123456789abcdef";
- public TestUtility() {
+ private TestUtility() {
}
public static String hexDump(byte[] bytes) {
- StringBuffer buf = new StringBuffer (bytes.length * 2);
- int i;
+ StringBuilder buf = new StringBuilder(bytes.length * 2);
+ int i;
- buf.append (" "); // four spaces
+ buf.append(" "); // four spaces
for (i = 0; i < bytes.length; i++) {
- buf.append (digits.charAt ((bytes[i] >> 4) & 0x0f));
- buf.append (digits.charAt (bytes[i] & 0x0f));
- if (((i + 1) % 32) == 0) {
- if ((i + 1) != bytes.length)
- buf.append ("\n "); // line after four words
- } else if (((i + 1) % 4) == 0)
- buf.append (' '); // space between words
+ buf.append(DIGITS.charAt(bytes[i] >> 4 & 0x0f));
+ buf.append(DIGITS.charAt(bytes[i] & 0x0f));
+ if ((i + 1) % 32 == 0) {
+ if (i + 1 != bytes.length) {
+ buf.append("\n "); // line after four words
+ }
+ } else if ((i + 1) % 4 == 0) {
+ buf.append(' '); // space between words
+ }
}
- return buf.toString ();
+ return buf.toString();
}
+ public static String hexDump(byte[] bytes, int index) {
+ StringBuilder buf = new StringBuilder(bytes.length * 2);
+ int i;
+
+ buf.append(" "); // four spaces
+ buf.append(DIGITS.charAt(bytes[index] >> 4 & 0x0f));
+ buf.append(DIGITS.charAt(bytes[index] & 0x0f));
+ return buf.toString();
+ }
public static boolean equalsBlock(byte[] b1, byte[] b2) {
- if (b1.length != b2.length)
+ if (b1.length != b2.length) {
return false;
+ }
- for (int i=0; i<b1.length; i++) {
- if (b1[i] != b2[i])
+ for (int i = 0; i < b1.length; i++) {
+ if (b1[i] != b2[i]) {
return false;
+ }
}
return true;
@@ -67,9 +80,10 @@
public static boolean equalsBlock(byte[] b1, byte[] b2, int len) {
- for (int i=0; i<len; i++) {
- if (b1[i] != b2[i])
+ for (int i = 0; i < len; i++) {
+ if (b1[i] != b2[i]) {
return false;
+ }
}
return true;
--- a/jdk/test/java/io/etc/FailingFlushAndClose.java Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/io/etc/FailingFlushAndClose.java Wed Jul 05 20:14:02 2017 +0200
@@ -25,7 +25,7 @@
/**
* @test
- * @bug 7015589
+ * @bug 7015589 8054565
* @summary Test that buffering streams are considered closed even when the
* close or flush from the underlying stream fails.
*/
@@ -165,7 +165,7 @@
}
}
- static void testFailingClose(InputStream in) throws IOException {
+ static InputStream testFailingClose(InputStream in) throws IOException {
System.out.println(in.getClass());
in.read(new byte[100]);
try {
@@ -176,9 +176,10 @@
in.read(new byte[100]);
fail("read did not fail");
} catch (IOException expected) { }
+ return in;
}
- static void testFailingClose(OutputStream out) throws IOException {
+ static OutputStream testFailingClose(OutputStream out) throws IOException {
System.out.println(out.getClass());
out.write(1);
try {
@@ -190,9 +191,10 @@
if (!(out instanceof BufferedOutputStream))
fail("write did not fail");
} catch (IOException expected) { }
+ return out;
}
- static void testFailingFlush(OutputStream out) throws IOException {
+ static OutputStream testFailingFlush(OutputStream out) throws IOException {
System.out.println(out.getClass());
out.write(1);
try {
@@ -206,9 +208,27 @@
fail("close did not fail");
} catch (IOException expected) { }
}
+ return out;
}
- static void testFailingClose(Reader r) throws IOException {
+ static void closeAgain(InputStream in) throws IOException {
+ // assert the given stream should already be closed.
+ try {
+ in.close();
+ } catch (IOException expected) {
+ fail("unexpected IOException from subsequent close");
+ }
+ }
+ static void closeAgain(OutputStream out) throws IOException {
+ // assert the given stream should already be closed.
+ try {
+ out.close();
+ } catch (IOException expected) {
+ fail("unexpected IOException from subsequent close");
+ }
+ }
+
+ static Reader testFailingClose(Reader r) throws IOException {
System.out.println(r.getClass());
r.read(new char[100]);
try {
@@ -219,9 +239,10 @@
r.read(new char[100]);
fail("read did not fail");
} catch (IOException expected) { }
+ return r;
}
- static void testFailingClose(Writer w) throws IOException {
+ static Writer testFailingClose(Writer w) throws IOException {
System.out.println(w.getClass());
w.write("message");
try {
@@ -232,9 +253,10 @@
w.write("another message");
fail("write did not fail");
} catch (IOException expected) { }
+ return w;
}
- static void testFailingFlush(Writer w) throws IOException {
+ static Writer testFailingFlush(Writer w) throws IOException {
System.out.println(w.getClass());
w.write("message");
try {
@@ -249,18 +271,38 @@
fail("close did not fail");
} catch (IOException expected) { }
}
+ return w;
+ }
+
+ static Reader closeAgain(Reader r) throws IOException {
+ // assert the given stream should already be closed.
+ try {
+ r.close();
+ } catch (IOException expected) {
+ fail("unexpected IOException from subsequent close");
+ }
+ return r;
+ }
+ static Writer closeAgain(Writer w) throws IOException {
+ // assert the given stream should already be closed.
+ try {
+ w.close();
+ } catch (IOException expected) {
+ fail("unexpected IOException from subsequent close");
+ }
+ return w;
}
public static void main(String[] args) throws IOException {
- testFailingClose(new BufferedInputStream(new FailingCloseInputStream()));
- testFailingClose(new BufferedOutputStream(new FailingCloseOutputStream()));
+ closeAgain(testFailingClose(new BufferedInputStream(new FailingCloseInputStream())));
+ closeAgain(testFailingClose(new BufferedOutputStream(new FailingCloseOutputStream())));
- testFailingClose(new BufferedReader(new FailingCloseReader()));
- testFailingClose(new BufferedWriter(new FailingCloseWriter()));
+ closeAgain(testFailingClose(new BufferedReader(new FailingCloseReader())));
+ closeAgain(testFailingClose(new BufferedWriter(new FailingCloseWriter())));
- testFailingFlush(new BufferedOutputStream(new FailingFlushOutputStream()));
- testFailingFlush(new BufferedWriter(new FailingFlushWriter()));
+ closeAgain(testFailingFlush(new BufferedOutputStream(new FailingFlushOutputStream())));
+ closeAgain(testFailingFlush(new BufferedWriter(new FailingFlushWriter())));
if (failed > 0)
throw new RuntimeException(failed + " test(s) failed - see log for details");
--- a/jdk/test/java/math/BigInteger/BigIntegerTest.java Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/math/BigInteger/BigIntegerTest.java Wed Jul 05 20:14:02 2017 +0200
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 4181191 4161971 4227146 4194389 4823171 4624738 4812225 4837946
+ * @bug 4181191 4161971 4227146 4194389 4823171 4624738 4812225 4837946 4026465
* @summary tests methods in BigInteger
* @run main/timeout=400 BigIntegerTest
* @author madbot
@@ -89,6 +89,120 @@
static Random rnd = new Random();
static boolean failure = false;
+ public static void constructor() {
+ int failCount = 0;
+
+ // --- guard condition tests for array indexing ---
+
+ int arrayLength = 23;
+ int halfLength = arrayLength/2;
+ byte[] array = new byte[arrayLength];
+ rnd.nextBytes(array);
+
+ int[][] offLen = new int[][] { // offset, length, num exceptions
+ {-1, arrayLength, 1}, // negative offset
+ {0, arrayLength, 0}, // OK
+ {1, arrayLength, 1}, // length overflow
+ {arrayLength - 1, 1, 0}, // OK
+ {arrayLength, 1, 1}, // offset overflow
+ {0, -1, 1}, // negative length
+ {halfLength, arrayLength - halfLength + 1, 1} // length overflow
+ };
+
+ // two's complement
+ for (int[] ol : offLen) {
+ int numExceptions = 0;
+ try {
+ BigInteger bi = new BigInteger(array, ol[0], ol[1]);
+ } catch (IndexOutOfBoundsException e) {
+ numExceptions++;
+ }
+ if (numExceptions != ol[2]) {
+ System.err.println("IndexOutOfBoundsException did not occur for "
+ + " two's complement constructor with parameters offset "
+ + ol[0] + " and length " + ol[1]);
+ failCount++;
+ }
+ }
+
+ // sign-magnitude
+ for (int[] ol : offLen) {
+ int numExceptions = 0;
+ try {
+ BigInteger bi = new BigInteger(1, array, ol[0], ol[1]);
+ } catch (IndexOutOfBoundsException e) {
+ numExceptions++;
+ }
+ if (numExceptions != ol[2]) {
+ System.err.println("IndexOutOfBoundsException did not occur for "
+ + " sign-magnitude constructor with parameters offset "
+ + ol[0] + " and length " + ol[1]);
+ failCount++;
+ }
+ }
+
+ // --- tests for creation of zero-valued BigIntegers ---
+
+ byte[] magZeroLength = new byte[0];
+ for (int signum = -1; signum <= 1; signum++) {
+ BigInteger bi = new BigInteger(signum, magZeroLength);
+ if (bi.compareTo(BigInteger.ZERO) != 0) {
+ System.err.println("A: Zero length BigInteger != 0 for signum " + signum);
+ failCount++;
+ }
+ }
+
+ for (int signum = -1; signum <= 1; signum++) {
+ BigInteger bi = new BigInteger(signum, magZeroLength, 0, 0);
+ if (bi.compareTo(BigInteger.ZERO) != 0) {
+ System.err.println("B: Zero length BigInteger != 0 for signum " + signum);
+ failCount++;
+ }
+ }
+
+ byte[] magNonZeroLength = new byte[42];
+ rnd.nextBytes(magNonZeroLength);
+ for (int signum = -1; signum <= 1; signum++) {
+ BigInteger bi = new BigInteger(signum, magNonZeroLength, 0, 0);
+ if (bi.compareTo(BigInteger.ZERO) != 0) {
+ System.err.println("C: Zero length BigInteger != 0 for signum " + signum);
+ failCount++;
+ }
+ }
+
+ // --- tests for accurate creation of non-zero BigIntegers ---
+
+ for (int i = 0; i < SIZE; i++) {
+ // create reference value via a different code path from those tested
+ BigInteger reference = new BigInteger(2 + rnd.nextInt(336), 4, rnd);
+
+ byte[] refArray = reference.toByteArray();
+ int refLen = refArray.length;
+ int factor = rnd.nextInt(5);
+ int objLen = refArray.length + factor*rnd.nextInt(refArray.length) + 1;
+ int offset = rnd.nextInt(objLen - refLen);
+ byte[] objArray = new byte[objLen];
+ System.arraycopy(refArray, 0, objArray, offset, refLen);
+
+ BigInteger twosComp = new BigInteger(objArray, offset, refLen);
+ if (twosComp.compareTo(reference) != 0) {
+ System.err.println("Two's-complement BigInteger not equal for offset " +
+ offset + " and length " + refLen);
+ failCount++;
+ }
+
+ boolean isNegative = rnd.nextBoolean();
+ BigInteger signMag = new BigInteger(isNegative ? -1 : 1, objArray, offset, refLen);
+ if (signMag.compareTo(isNegative ? reference.negate() : reference) != 0) {
+ System.err.println("Sign-magnitude BigInteger not equal for offset " +
+ offset + " and length " + refLen);
+ failCount++;
+ }
+ }
+
+ report("Constructor", failCount);
+ }
+
public static void pow(int order) {
int failCount1 = 0;
@@ -961,6 +1075,8 @@
if (args.length >3)
order4 = (int)((Integer.parseInt(args[3]))* 3.333);
+ constructor();
+
prime();
nextProbablePrime();
--- a/jdk/test/java/nio/channels/FileChannel/TransferToChannel.java Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/nio/channels/FileChannel/TransferToChannel.java Wed Jul 05 20:14:02 2017 +0200
@@ -25,7 +25,7 @@
* @bug 4652496
* @summary Test transferTo with different target channels
* @run main TransferToChannel
- * @run main/othervm -Djdk.net.enableFastFileTransfer TransferToChannel
+ * @run main/othervm -Djdk.nio.enableFastFileTransfer TransferToChannel
*/
import java.nio.channels.FileChannel;
--- a/jdk/test/java/rmi/activation/Activatable/checkActivateRef/group.security.policy Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/activation/Activatable/checkActivateRef/group.security.policy Wed Jul 05 20:14:02 2017 +0200
@@ -4,8 +4,8 @@
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
+ permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
- // test needs to communicate with the activation system
- permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
permission java.lang.RuntimePermission "getClassLoader";
};
--- a/jdk/test/java/rmi/activation/Activatable/checkAnnotations/group.security.policy Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/activation/Activatable/checkAnnotations/group.security.policy Wed Jul 05 20:14:02 2017 +0200
@@ -1,10 +1,9 @@
/*
- * security policy used by activation groups.
+ * security policy used by activation groups
*/
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
- // test needs to communicate with the activation system
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/Activatable/checkRegisterInLog/group.security.policy Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/activation/Activatable/checkRegisterInLog/group.security.policy Wed Jul 05 20:14:02 2017 +0200
@@ -4,10 +4,6 @@
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
- // allow remote objects to be exported on arbitrary ports.
- permission java.net.SocketPermission "*:1024-", "connect,accept";
-
- // allow exporting object with non-public remote interface
- permission java.rmi.RMIPermission "exportRemoteInterface.ActivateMe";
+ permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/Activatable/createPrivateActivable/group.security.policy Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/activation/Activatable/createPrivateActivable/group.security.policy Wed Jul 05 20:14:02 2017 +0200
@@ -1,13 +1,9 @@
/*
- * security policy used activation groups
+ * security policy used by activation groups
*/
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
- // test needs to communicate with the activation system
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
-
- // allow exporting object with non-public remote interface
- permission java.rmi.RMIPermission "exportRemoteInterface.ActivateMe";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/Activatable/downloadParameterClass/group.security.policy Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/activation/Activatable/downloadParameterClass/group.security.policy Wed Jul 05 20:14:02 2017 +0200
@@ -1,14 +1,15 @@
/*
- * security policy used exec'ed activation groups
+ * security policy used by activation groups
*/
grant {
+ permission java.io.FilePermission "..${/}..${/}test.props", "read";
+ permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
+
// need to load custom security manager and activation group from a new codebase
permission java.io.FilePermission ".${/}codebase1", "read,write,delete";
permission java.io.FilePermission ".${/}codebase1${/}-", "read,write";
permission java.io.FilePermission ".${/}codebase2", "read,write,delete";
permission java.io.FilePermission ".${/}codebase2${/}-", "read,write,delete";
-
- // allow remote objects to be exported on arbitrary ports.
- permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
};
--- a/jdk/test/java/rmi/activation/Activatable/elucidateNoSuchMethod/group.security.policy Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/activation/Activatable/elucidateNoSuchMethod/group.security.policy Wed Jul 05 20:14:02 2017 +0200
@@ -1,12 +1,13 @@
/*
- * security policy used activation groups
+ * security policy used by activation groups
*/
grant {
+ permission java.io.FilePermission "..${/}..${/}test.props", "read";
+ permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
+
// Needed because of bug#: 4182104
permission java.lang.RuntimePermission "modifyThreadGroup";
permission java.lang.RuntimePermission "modifyThread";
-
- // allow remote objects to be exported on arbitrary ports.
- permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
};
--- a/jdk/test/java/rmi/activation/Activatable/extLoadedImpl/group.security.policy Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/activation/Activatable/extLoadedImpl/group.security.policy Wed Jul 05 20:14:02 2017 +0200
@@ -1,8 +1,9 @@
/*
- * security policy used exec'ed activation groups
+ * security policy used by activation groups
*/
grant {
- // allow remote objects to be exported on arbitrary ports.
+ permission java.io.FilePermission "..${/}..${/}test.props", "read";
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/Activatable/forceLogSnapshot/group.security.policy Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/activation/Activatable/forceLogSnapshot/group.security.policy Wed Jul 05 20:14:02 2017 +0200
@@ -3,9 +3,7 @@
*/
grant {
- // allow remote objects to be exported on arbitrary ports.
+ permission java.io.FilePermission "..${/}..${/}test.props", "read";
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
-
- // allow exporting object with non-public remote interface
- permission java.rmi.RMIPermission "exportRemoteInterface.ActivateMe";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/Activatable/inactiveGroup/group.security.policy Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/activation/Activatable/inactiveGroup/group.security.policy Wed Jul 05 20:14:02 2017 +0200
@@ -4,10 +4,6 @@
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
- // allow remote objects to be exported on arbitrary ports.
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
-
- // allow exporting object with non-public remote interface
- permission java.rmi.RMIPermission "exportRemoteInterface.ActivateMe";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/Activatable/nestedActivate/group.security.policy Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/activation/Activatable/nestedActivate/group.security.policy Wed Jul 05 20:14:02 2017 +0200
@@ -1,13 +1,9 @@
/*
- * security policy used by test activation groups
+ * security policy used by activation groups
*/
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
- // allow remote objects to be exported on arbitrary ports.
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
-
- // allow exporting of non-public remote interface
- permission java.rmi.RMIPermission "exportRemoteInterface.ActivateMe";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/Activatable/nonExistentActivatable/group.security.policy Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/activation/Activatable/nonExistentActivatable/group.security.policy Wed Jul 05 20:14:02 2017 +0200
@@ -4,7 +4,6 @@
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
- // allow remote objects to be exported on arbitrary ports.
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/Activatable/restartCrashedService/group.security.policy Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/activation/Activatable/restartCrashedService/group.security.policy Wed Jul 05 20:14:02 2017 +0200
@@ -1,8 +1,9 @@
/*
- * security policy used by test activation groups
+ * security policy used by activation groups
*/
grant {
- // test needs to communicate with the activation system
+ permission java.io.FilePermission "..${/}..${/}test.props", "read";
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/Activatable/restartLatecomer/group.security.policy Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/activation/Activatable/restartLatecomer/group.security.policy Wed Jul 05 20:14:02 2017 +0200
@@ -3,6 +3,7 @@
*/
grant {
- // allow remote objects to be exported on arbitrary ports.
+ permission java.io.FilePermission "..${/}..${/}test.props", "read";
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/Activatable/restartService/group.security.policy Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/activation/Activatable/restartService/group.security.policy Wed Jul 05 20:14:02 2017 +0200
@@ -3,6 +3,7 @@
*/
grant {
- // allow remote objects to be exported on arbitrary ports.
+ permission java.io.FilePermission "..${/}..${/}test.props", "read";
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/Activatable/shutdownGracefully/group.security.policy Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/activation/Activatable/shutdownGracefully/group.security.policy Wed Jul 05 20:14:02 2017 +0200
@@ -1,10 +1,9 @@
/*
- * security policy used activation groups
+ * security policy used by activation groups
*/
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
- // test needs to communicate with the activation system
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/Activatable/unregisterInactive/group.security.policy Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/activation/Activatable/unregisterInactive/group.security.policy Wed Jul 05 20:14:02 2017 +0200
@@ -4,7 +4,6 @@
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
- // allow remote objects to be exported on arbitrary ports.
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/ActivateFailedException/activateFails/group.security.policy Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/activation/ActivateFailedException/activateFails/group.security.policy Wed Jul 05 20:14:02 2017 +0200
@@ -1,8 +1,9 @@
/*
- * security policy used activation groups
+ * security policy used by activation groups
*/
grant {
- // test needs to communicate with the activation system
+ permission java.io.FilePermission "..${/}..${/}test.props", "read";
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/group.security.policy Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/group.security.policy Wed Jul 05 20:14:02 2017 +0200
@@ -1,10 +1,11 @@
/*
- * security policy used by downloaded activation group
+ * security policy used by activation groups
*/
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
+ permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.server";
- permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
};
--- a/jdk/test/java/rmi/activation/ActivationSystem/modifyDescriptor/group.security.policy Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/activation/ActivationSystem/modifyDescriptor/group.security.policy Wed Jul 05 20:14:02 2017 +0200
@@ -4,10 +4,6 @@
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
- // accomodate property used by this test.
- permission java.util.PropertyPermission "test.message", "read";
-
- // test needs to communicate with the activation system
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/group.security.policy Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/group.security.policy Wed Jul 05 20:14:02 2017 +0200
@@ -1,13 +1,11 @@
/*
- * security policy used by activation groups.
+ * security policy used by activation groups
*/
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
- // give the group permission to create a class that the main test process can not create
- permission java.lang.RuntimePermission "accessClassInPackage.sun.security.provider";
+ permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
- // test needs to communicate with the activation system
- permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.lang.RuntimePermission "accessClassInPackage.sun.security.provider";
};
--- a/jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/group.security.policy Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/group.security.policy Wed Jul 05 20:14:02 2017 +0200
@@ -4,8 +4,6 @@
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
- // test needs to communicate with the activation system
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
- permission java.util.PropertyPermission "unregisterGroup.port", "read";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/activation/CommandEnvironment/group.security.policy Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/activation/CommandEnvironment/group.security.policy Wed Jul 05 20:14:02 2017 +0200
@@ -1,8 +1,9 @@
/*
- * security policy used by activation groups.
+ * security policy used by activation groups
*/
grant {
- // test needs to communicate with the activation system
+ permission java.io.FilePermission "..${/}..${/}test.props", "read";
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/group.security.policy Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/group.security.policy Wed Jul 05 20:14:02 2017 +0200
@@ -1,11 +1,9 @@
/*
- * security policy used by the rmid process exec'ed by a running
- * instance of the test.
+ * security policy used by activation groups
*/
grant {
permission java.io.FilePermission "..${/}..${/}test.props", "read";
-
- // test needs to communicate with the activation system
permission java.net.SocketPermission "*:1024-", "connect,accept,listen";
+ permission java.util.PropertyPermission "test.*", "read";
};
--- a/jdk/test/java/rmi/server/RemoteServer/setLogPermission/SetLogPermission.java Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/server/RemoteServer/setLogPermission/SetLogPermission.java Wed Jul 05 20:14:02 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,7 +27,7 @@
* The RemoteServer.setLog method requires
* java.util.log.LoggingPermission("control").
* @author Ann Wollrath
- * @run main/othervm/policy=java.policy SetLogPermission
+ * @run main/othervm/policy=security.policy SetLogPermission
*/
import java.rmi.server.RemoteServer;
--- a/jdk/test/java/rmi/server/RemoteServer/setLogPermission/java.policy Mon Jan 12 12:24:03 2015 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-grant {
- permission java.util.logging.LoggingPermission "control";
-};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/rmi/server/RemoteServer/setLogPermission/security.policy Wed Jul 05 20:14:02 2017 +0200
@@ -0,0 +1,3 @@
+grant {
+ permission java.util.logging.LoggingPermission "control";
+};
--- a/jdk/test/java/rmi/testlibrary/ActivationLibrary.java Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/testlibrary/ActivationLibrary.java Wed Jul 05 20:14:02 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -40,20 +40,6 @@
* objects.
*/
public class ActivationLibrary {
- /** time safeDestroy should wait before failing on shutdown rmid */
- private static final int SAFE_WAIT_TIME;
- static {
- int slopFactor = 1;
- try {
- slopFactor = Integer.valueOf(
- TestLibrary.getExtraProperty("jcov.sleep.multiplier","1"));
- } catch (NumberFormatException ignore) {}
- SAFE_WAIT_TIME = 60000 * slopFactor;
- }
-
- private static final String SYSTEM_NAME =
- ActivationSystem.class.getName();
-
private static void mesg(Object mesg) {
System.err.println("ACTIVATION_LIBRARY: " + mesg.toString());
}
@@ -63,20 +49,19 @@
*/
public static void deactivate(Remote remote,
ActivationID id) {
- // We do as much as 50 deactivation trials, each separated by
- // at least 100 milliseconds sleep time (max sleep time of 5 secs).
- final long deactivateSleepTime = 100;
- long stopTime = System.currentTimeMillis() + deactivateSleepTime * 50;
- while (System.currentTimeMillis() < stopTime) {
+ final long POLLTIME_MS = 100L;
+ final long DEACTIVATE_TIME_MS = 30_000L;
+
+ long startTime = System.currentTimeMillis();
+ long deadline = TestLibrary.computeDeadline(startTime, DEACTIVATE_TIME_MS);
+
+ while (System.currentTimeMillis() < deadline) {
try {
if (Activatable.inactive(id) == true) {
mesg("inactive successful");
return;
} else {
- mesg("inactive trial failed. Sleeping " +
- deactivateSleepTime +
- " milliseconds before next trial");
- Thread.sleep(deactivateSleepTime);
+ Thread.sleep(POLLTIME_MS);
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
@@ -95,7 +80,8 @@
}
}
- mesg("unable to inactivate after several attempts");
+ mesg("unable to inactivate after " +
+ (System.currentTimeMillis() - startTime) + "ms.");
mesg("unexporting object forcibly instead");
try {
--- a/jdk/test/java/rmi/testlibrary/JavaVM.java Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/testlibrary/JavaVM.java Wed Jul 05 20:14:02 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -194,7 +194,7 @@
throws InterruptedException, TimeoutException {
if (vm == null)
throw new IllegalStateException("can't wait for JavaVM that isn't running");
- long deadline = computeDeadline(System.currentTimeMillis(), timeout);
+ long deadline = TestLibrary.computeDeadline(System.currentTimeMillis(), timeout);
while (true) {
try {
@@ -218,21 +218,4 @@
start();
return waitFor();
}
-
- /**
- * Computes a deadline from a timestamp and a timeout value.
- * Maximum timeout (before multipliers are applied) is one hour.
- */
- public static long computeDeadline(long timestamp, long timeout) {
- final long MAX_TIMEOUT_MS = 3_600_000L;
-
- if (timeout < 0L || timeout > MAX_TIMEOUT_MS) {
- throw new IllegalArgumentException("timeout " + timeout + "ms out of range");
- }
-
- // TODO apply test.timeout.factor (and possibly jcov.sleep.multiplier)
- // here instead of upstream
-
- return timestamp + timeout;
- }
}
--- a/jdk/test/java/rmi/testlibrary/RMID.java Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/testlibrary/RMID.java Wed Jul 05 20:14:02 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -249,15 +249,15 @@
mesg("Starting rmid on port " + port + ".");
super.start();
- int slopFactor = 1;
- try {
- slopFactor = Integer.valueOf(
- TestLibrary.getExtraProperty("jcov.sleep.multiplier","1"));
- } catch (NumberFormatException ignore) {}
- waitTime = waitTime * slopFactor;
+ // int slopFactor = 1;
+ // try {
+ // slopFactor = Integer.valueOf(
+ // TestLibrary.getExtraProperty("jcov.sleep.multiplier","1"));
+ // } catch (NumberFormatException ignore) {}
+ // waitTime = waitTime * slopFactor;
long startTime = System.currentTimeMillis();
- long deadline = computeDeadline(startTime, waitTime);
+ long deadline = TestLibrary.computeDeadline(startTime, waitTime);
while (true) {
try {
--- a/jdk/test/java/rmi/testlibrary/TestLibrary.java Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/rmi/testlibrary/TestLibrary.java Wed Jul 05 20:14:02 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -135,7 +135,8 @@
*/
public static boolean checkIfRegistryRunning(int port, int msTimeout) {
- long stopTime = System.currentTimeMillis() + msTimeout;
+ final long POLLTIME_MS = 100L;
+ long stopTime = computeDeadline(System.currentTimeMillis(), msTimeout);
do {
try {
Registry r = LocateRegistry.getRegistry(port);
@@ -145,12 +146,12 @@
} catch (RemoteException e) {
// problem - not ready ? Try again
try {
- Thread.sleep(500);
+ Thread.sleep(POLLTIME_MS);
} catch (InterruptedException ie) {
// not expected
}
}
- } while (stopTime > System.currentTimeMillis());
+ } while (System.currentTimeMillis() < stopTime);
return false;
}
@@ -169,6 +170,31 @@
}
}
+ public static double getTimeoutFactor() {
+ String prop = getProperty("test.timeout.factor", "1.0");
+ double timeoutFactor = 1.0;
+
+ try {
+ timeoutFactor = Double.parseDouble(prop);
+ } catch (NumberFormatException ignore) { }
+
+ return timeoutFactor;
+ }
+
+ /**
+ * Computes a deadline from a timestamp and a timeout value.
+ * Maximum timeout (before multipliers are applied) is one hour.
+ */
+ public static long computeDeadline(long timestamp, long timeout) {
+ final long MAX_TIMEOUT_MS = 3_600_000L;
+
+ if (timeout < 0L || timeout > MAX_TIMEOUT_MS) {
+ throw new IllegalArgumentException("timeout " + timeout + "ms out of range");
+ }
+
+ return timestamp + (long)(timeout * getTimeoutFactor());
+ }
+
/**
* Property mutators
*/
--- a/jdk/test/java/util/Formatter/Basic-X.java.template Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/util/Formatter/Basic-X.java.template Wed Jul 05 20:14:02 2017 +0200
@@ -1154,6 +1154,10 @@
test("%.5f", "0.99960", val);
test("%.6f", "0.999600", val);
+ val = new BigDecimal(BigInteger.ZERO, 6);
+ test("%.4f", "0.0000", val);
+ val = new BigDecimal(BigInteger.ZERO, -6);
+ test("%.4f", "0.0000", val);
#end[BigDecimal]
#if[float]
--- a/jdk/test/java/util/Formatter/Basic.java Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/util/Formatter/Basic.java Wed Jul 05 20:14:02 2017 +0200
@@ -26,6 +26,7 @@
* @bug 4906370 4962433 4973103 4989961 5005818 5031150 4970931 4989491 5002937
* 5005104 5007745 5061412 5055180 5066788 5088703 6317248 6318369 6320122
* 6344623 6369500 6534606 6282094 6286592 6476425 5063507 6469160 6476168
+ * 8059175
*
* @run shell/timeout=240 Basic.sh
*/
--- a/jdk/test/java/util/Formatter/BasicBigDecimal.java Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/java/util/Formatter/BasicBigDecimal.java Wed Jul 05 20:14:02 2017 +0200
@@ -1154,6 +1154,11 @@
test("%.5f", "0.99960", val);
test("%.6f", "0.999600", val);
+ val = new BigDecimal(BigInteger.ZERO, 6);
+ test("%.4f", "0.0000", val);
+
+ val = new BigDecimal(BigInteger.ZERO, -6);
+ test("%.4f", "0.0000", val);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/crypto/KeyGenerator/TestKGParity.java Wed Jul 05 20:14:02 2017 +0200
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.io.PrintStream;
+import java.lang.String;
+import java.lang.System;
+import java.security.Provider;
+import java.security.SecureRandom;
+import java.security.Security;
+import javax.crypto.KeyGenerator;
+import static java.lang.System.out;
+
+/*
+ * @test
+ * @bug 8048607
+ * @compile ../../../com/sun/crypto/provider/Cipher/DES/TestUtility.java
+ * @summary Test key generation of DES and DESEDE
+ */
+public class TestKGParity {
+
+ private static final String[] ALGORITHM_ARR = {
+ "deS", "DesEDE"
+ };
+
+ public static void main(String argv[]) throws Exception {
+
+ TestKGParity test = new TestKGParity();
+ test.run();
+ }
+
+ private void run() throws Exception {
+ Provider[] providers = Security.getProviders();
+ for (Provider p : providers) {
+ String prvName = p.getName();
+ if (prvName.startsWith("SunJCE")
+ || prvName.startsWith("SunPKCS11-")) {
+ for (String algorithm : ALGORITHM_ARR) {
+ if (!runTest(p, algorithm)) {
+ throw new RuntimeException(
+ "Test failed with provider/algorithm:"
+ + p.getName() + "/" + algorithm);
+ } else {
+ out.println("Test passed with provider/algorithm:"
+ + p.getName() + "/" + algorithm);
+ }
+ }
+ }
+ }
+ }
+
+ public boolean runTest(Provider p, String algo) throws Exception {
+ byte[] keyValue = null;
+ try {
+ // Initialization
+ SecureRandom sRdm = new SecureRandom();
+ KeyGenerator kg = KeyGenerator.getInstance(algo, p);
+ kg.init(sRdm);
+
+ // Generate a SecretKey and retrieve its value
+ keyValue = kg.generateKey().getEncoded();
+
+ // Verify its parity in the unit of byte
+ for (int i = 0; i < keyValue.length; i++) {
+ if (!checkParity(keyValue[i])) {
+ out.println("Testing: "
+ + p.getName()
+ + "/"
+ + algo
+ + " failed when verify its parity in the unit of byte:"
+ + TestUtility.hexDump(keyValue, i));
+ return false;
+ }
+ }
+ return true;
+ } catch (Exception ex) {
+ out.println("Testing: " + p.getName() + "/" + algo
+ + " failed with unexpected exception");
+ ex.printStackTrace();
+ throw ex;
+ }
+ }
+
+ private boolean checkParity(byte keyByte) {
+ boolean even = false;
+ byte[] PARITY_BIT_MASK = {
+ (byte) 0x40, (byte) 0x20, (byte) 0x10, (byte) 0x08,
+ (byte) 0x04, (byte) 0x02, (byte) 0x01
+ };
+
+ for (int i = 0; i < 7; i++) {
+ if ((keyByte & PARITY_BIT_MASK[i]) > 0) {
+ even = !even;
+ }
+ }
+ if (keyByte < 0) {
+ even = !even;
+ }
+
+ return even;
+ }
+}
--- a/jdk/test/javax/management/remote/mandatory/notif/NotificationBufferDeadlockTest.java Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/javax/management/remote/mandatory/notif/NotificationBufferDeadlockTest.java Wed Jul 05 20:14:02 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,8 @@
/*
* @test
* @bug 6239400
- * @summary Tests NotificationBuffer doesn't hold locks when adding listeners.
+ * @summary Tests NotificationBuffer doesn't hold locks when adding listeners,
+ * if test times out then deadlock is suspected.
* @author Eamonn McManus
* @run clean NotificationBufferDeadlockTest
* @run build NotificationBufferDeadlockTest
@@ -38,6 +39,7 @@
import java.util.List;
import java.util.Set;
import java.util.Vector;
+import java.util.concurrent.CountDownLatch;
import javax.management.*;
import javax.management.remote.*;
@@ -173,9 +175,7 @@
for (ObjectName name : names)
mbsc.invoke(name, "send", null, null);
- if (!countListener.waiting(MAX_WAITING_TIME)) {
- return "did not get " + names.size() + " notifs as expected\n";
- }
+ countListener.waiting();
if (!sources.containsAll(names))
return "missing names: " + sources;
@@ -202,13 +202,13 @@
}
};
t.start();
+ System.out.println("DeadlockTest-addNotificationListener waiting for the sending thread to die...");
try {
- t.join(5000L);
+ t.join(); //if times out here then deadlock is suspected
+ System.out.println("DeadlockTest-addNotificationListener OK.");
} catch (Exception e) {
thisFailure = "Join exception: " + e;
}
- if (t.isAlive())
- thisFailure = "Deadlock detected";
}
public void send() {
@@ -244,9 +244,9 @@
}
};
t.start();
- t.join(5000);
- if (t.isAlive())
- failure = "Query deadlock detected";
+ System.out.println("CreateDuringQueryInvocationHandler-createMBeanIfQuery waiting for the creating thread to die...");
+ t.join(); // if times out here then deadlock is suspected
+ System.out.println("CreateDuringQueryInvocationHandler-createMBeanIfQuery OK");
}
}
@@ -264,50 +264,30 @@
private static class MyListener implements NotificationListener {
public MyListener(int waitNB) {
- this.waitNB= waitNB;
+ count = new CountDownLatch(waitNB);
}
public void handleNotification(Notification n, Object h) {
- System.out.println("MyListener got: "+n.getSource()+" "+n.getType());
+ System.out.println("MyListener got: " + n.getSource() + " " + n.getType());
- synchronized(this) {
- if (TESTING_TYPE.equals(n.getType())) {
- sources.add((ObjectName) n.getSource());
-
- if (sources.size() == waitNB) {
- this.notifyAll();
- }
- }
+ if (TESTING_TYPE.equals(n.getType())) {
+ sources.add((ObjectName) n.getSource());
+ count.countDown();
}
}
- public boolean waiting(long timeout) {
- final long startTime = System.currentTimeMillis();
- long toWait = timeout;
-
- synchronized(this) {
- while(sources.size() < waitNB && toWait > 0) {
- try {
- this.wait(toWait);
- } catch (InterruptedException ire) {
- break;
- }
-
- toWait = timeout -
- (System.currentTimeMillis() - startTime);
- }
- }
-
- return sources.size() == waitNB;
+ public void waiting() throws InterruptedException {
+ System.out.println("MyListener-waiting ...");
+ count.await(); // if times out here then deadlock is suspected
+ System.out.println("MyListener-waiting done!");
}
- private final int waitNB;
+ private final CountDownLatch count;
}
static String thisFailure;
static String failure;
static int nextNameIndex;
- static final long MAX_WAITING_TIME = 10000;
private static MyListener countListener;
private static final List<ObjectName> sources = new Vector();
--- a/jdk/test/javax/xml/crypto/dsig/GenerationTests.java Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/javax/xml/crypto/dsig/GenerationTests.java Wed Jul 05 20:14:02 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
/**
* @test
* @bug 4635230 6283345 6303830 6824440 6867348 7094155 8038184 8038349 8046949
+ * 8046724
* @summary Basic unit tests for generating XML Signatures with JSR 105
* @compile -XDignore.symbol.file KeySelectors.java SignatureValidator.java
* X509KeySelector.java GenerationTests.java
@@ -45,6 +46,13 @@
import java.security.spec.KeySpec;
import java.security.spec.DSAPrivateKeySpec;
import java.security.spec.DSAPublicKeySpec;
+import java.security.spec.ECField;
+import java.security.spec.ECFieldFp;
+import java.security.spec.ECParameterSpec;
+import java.security.spec.ECPoint;
+import java.security.spec.ECPrivateKeySpec;
+import java.security.spec.ECPublicKeySpec;
+import java.security.spec.EllipticCurve;
import java.security.spec.RSAPrivateKeySpec;
import java.security.spec.RSAPublicKeySpec;
import java.util.*;
@@ -81,9 +89,10 @@
private static DocumentBuilder db;
private static CanonicalizationMethod withoutComments;
private static SignatureMethod dsaSha1, dsaSha256, rsaSha1,
- rsaSha256, rsaSha384, rsaSha512;
+ rsaSha256, rsaSha384, rsaSha512,
+ ecdsaSha1;
private static DigestMethod sha1, sha256, sha384, sha512;
- private static KeyInfo dsa1024, dsa2048, rsa, rsa1024;
+ private static KeyInfo dsa1024, dsa2048, rsa, rsa1024, p256ki;
private static KeySelector kvks = new KeySelectors.KeyValueKeySelector();
private static KeySelector sks;
private static Key signingKey;
@@ -121,6 +130,7 @@
test_create_signature_enveloping_hmac_sha384();
test_create_signature_enveloping_hmac_sha512();
test_create_signature_enveloping_rsa();
+ test_create_signature_enveloping_p256_sha1();
test_create_signature_external_b64_dsa();
test_create_signature_external_dsa();
test_create_signature_keyname();
@@ -175,6 +185,8 @@
(kifac.newKeyValue(getPublicKey("RSA", 512))));
rsa1024 = kifac.newKeyInfo(Collections.singletonList
(kifac.newKeyValue(getPublicKey("RSA", 1024))));
+ p256ki = kifac.newKeyInfo(Collections.singletonList
+ (kifac.newKeyValue(getECPublicKey())));
rsaSha1 = fac.newSignatureMethod(SignatureMethod.RSA_SHA1, null);
rsaSha256 = fac.newSignatureMethod
("http://www.w3.org/2001/04/xmldsig-more#rsa-sha256", null);
@@ -182,6 +194,8 @@
("http://www.w3.org/2001/04/xmldsig-more#rsa-sha384", null);
rsaSha512 = fac.newSignatureMethod
("http://www.w3.org/2001/04/xmldsig-more#rsa-sha512", null);
+ ecdsaSha1 = fac.newSignatureMethod
+ ("http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1", null);
sks = new KeySelectors.SecretKeySelector("secret".getBytes("ASCII"));
httpUd = new HttpURIDereferencer();
@@ -342,6 +356,13 @@
System.out.println();
}
+ static void test_create_signature_enveloping_p256_sha1() throws Exception {
+ System.out.println("* Generating signature-enveloping-p256-sha1.xml");
+ test_create_signature_enveloping(sha1, ecdsaSha1, p256ki,
+ getECPrivateKey(), kvks, false);
+ System.out.println();
+ }
+
static void test_create_signature_external_b64_dsa() throws Exception {
System.out.println("* Generating signature-external-b64-dsa.xml");
test_create_signature_external(dsaSha1, dsa1024, signingKey, kvks, true);
@@ -1168,7 +1189,42 @@
"237008997971129772408397621801631622129297063463868593083106979716" +
"204903524890556839550490384015324575598723478554854070823335021842" +
"210112348400928769";
+ private static final String EC_X =
+ "335863644451761614592446380116804721648611739647823420286081723541" +
+ "6166183710";
+ private static final String EC_Y =
+ "951559601159729477487064127150143688502130342917782252098602422796" +
+ "95457910701";
+ private static final String EC_S =
+ "425976209773168452211813225517384419928639977904006759709292218082" +
+ "7440083936";
+ private static final ECParameterSpec EC_PARAMS;
+ static {
+ final String ec_sfield, ec_a, ec_b, ec_gx, ec_gy, ec_n;
+ ec_sfield =
+ "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF";
+ ec_a =
+ "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC";
+ ec_b =
+ "5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B";
+ ec_gx =
+ "6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296";
+ ec_gy =
+ "4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5";
+ ec_n =
+ "FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551";
+ final int ec_h = 1;
+ final ECField ec_field = new ECFieldFp(bigInt(ec_sfield));
+ final EllipticCurve ec_curve = new EllipticCurve(ec_field,
+ bigInt(ec_a), bigInt(ec_b));
+ final ECPoint ec_g = new ECPoint(bigInt(ec_gx), bigInt(ec_gy));
+ EC_PARAMS = new ECParameterSpec(ec_curve, ec_g, bigInt(ec_n), ec_h);
+ }
+
+ private static BigInteger bigInt(String s) {
+ return new BigInteger(s, 16);
+ }
private static PublicKey getPublicKey(String algo, int keysize)
throws Exception {
KeyFactory kf = KeyFactory.getInstance(algo);
@@ -1197,6 +1253,14 @@
return kf.generatePublic(kspec);
}
+ private static PublicKey getECPublicKey() throws Exception {
+ KeyFactory kf = KeyFactory.getInstance("EC");
+ KeySpec kspec = new ECPublicKeySpec(new ECPoint(new BigInteger(EC_X),
+ new BigInteger(EC_Y)),
+ EC_PARAMS);
+ return kf.generatePublic(kspec);
+ }
+
private static PrivateKey getPrivateKey(String algo, int keysize)
throws Exception {
KeyFactory kf = KeyFactory.getInstance(algo);
@@ -1223,6 +1287,12 @@
return kf.generatePrivate(kspec);
}
+ private static PrivateKey getECPrivateKey() throws Exception {
+ KeyFactory kf = KeyFactory.getInstance("EC");
+ KeySpec kspec = new ECPrivateKeySpec(new BigInteger(EC_S), EC_PARAMS);
+ return kf.generatePrivate(kspec);
+ }
+
private static SecretKey getSecretKey(final byte[] secret) {
return new SecretKey() {
public String getFormat() { return "RAW"; }
--- a/jdk/test/javax/xml/crypto/dsig/KeySelectors.java Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/javax/xml/crypto/dsig/KeySelectors.java Wed Jul 05 20:14:02 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -166,7 +166,6 @@
throw new KeySelectorException("No KeyValue element found!");
}
- //@@@FIXME: this should also work for key types other than DSA/RSA
static boolean algEquals(String algURI, String algName) {
if (algName.equalsIgnoreCase("DSA") &&
algURI.equals(SignatureMethod.DSA_SHA1) ||
@@ -181,6 +180,10 @@
algURI.equals
("http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"))) {
return true;
+ } else if (algName.equalsIgnoreCase("EC") &&
+ (algURI.equals
+ ("http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"))) {
+ return true;
} else {
return false;
}
--- a/jdk/test/javax/xml/crypto/dsig/ValidationTests.java Mon Jan 12 12:24:03 2015 -0800
+++ b/jdk/test/javax/xml/crypto/dsig/ValidationTests.java Wed Jul 05 20:14:02 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
/**
* @test
- * @bug 4635230 6365103 6366054 6824440 7131084
+ * @bug 4635230 6365103 6366054 6824440 7131084 8046724
* @summary Basic unit tests for validating XML Signatures with JSR 105
* @compile -XDignore.symbol.file KeySelectors.java SignatureValidator.java
* X509KeySelector.java ValidationTests.java
@@ -90,6 +90,7 @@
new Test("signature-enveloping-b64-dsa.xml", KVKS),
new Test("signature-enveloping-dsa.xml", KVKS),
new Test("signature-enveloping-rsa.xml", KVKS),
+ new Test("signature-enveloping-p256-sha1.xml", KVKS),
new Test("signature-enveloping-hmac-sha1.xml", SKKS),
new Test("signature-external-dsa.xml", KVKS),
new Test("signature-external-b64-dsa.xml", KVKS),
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/xml/crypto/dsig/data/signature-enveloping-p256-sha1.xml Wed Jul 05 20:14:02 2017 +0200
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/><Reference URI="#object"><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue></Reference></SignedInfo><SignatureValue>WiF/Hd0s7BiH36Ds/1iJcbKiXOUVBSGFteuTjXwBbezR43NAwpMmMX5c1su0A9hG9rVVzE/1DOlO
+vuDVLBBblg==</SignatureValue><KeyInfo><KeyValue><ECKeyValue xmlns="http://www.w3.org/2009/xmldsig11#"><NamedCurve URI="urn:oid:1.2.840.10045.3.1.7"/><PublicKey>BAds672US3sCYunM2k2bEQLbuRxdQlNTvq+5fitOpDMe0mBdZV4J3yZaG0taziYIuAT9GJGfds+q
+xtXOCNWe/60=</PublicKey></ECKeyValue></KeyValue></KeyInfo><Object Id="object">some text</Object></Signature>
\ No newline at end of file
--- a/make/Jprt.gmk Mon Jan 12 12:24:03 2015 -0800
+++ b/make/Jprt.gmk Wed Jul 05 20:14:02 2017 +0200
@@ -35,6 +35,9 @@
ifdef JPRT_ARCHIVE_INSTALL_BUNDLE
override JPRT_ARCHIVE_INSTALL_BUNDLE := $(shell $(CYGPATH) -u $(JPRT_ARCHIVE_INSTALL_BUNDLE))
endif
+ ifdef JPRT_ARCHIVE_TEST_BUNDLE
+ override JPRT_ARCHIVE_TEST_BUNDLE := $(shell $(CYGPATH) -u $(JPRT_ARCHIVE_TEST_BUNDLE))
+ endif
endif
# When running in JPRT these will be provided. Need defaults so that this makefile
@@ -45,13 +48,16 @@
ifndef JPRT_ARCHIVE_INSTALL_BUNDLE
JPRT_ARCHIVE_INSTALL_BUNDLE=/tmp/jprt_bundles/product-install.zip
endif
+ifndef JPRT_ARCHIVE_TEST_BUNDLE
+ JPRT_ARCHIVE_TEST_BUNDLE=/tmp/jprt_bundles/test-image.zip
+endif
ifeq ($(SKIP_BOOT_CYCLE), false)
jprt_bundle: bootcycle-images
endif
# This target must be called in the context of a SPEC file
-jprt_bundle: $(JPRT_ARCHIVE_BUNDLE)
+jprt_bundle: $(JPRT_ARCHIVE_BUNDLE) $(JPRT_ARCHIVE_TEST_BUNDLE)
# This target must be called in the context of a SPEC file
$(JPRT_ARCHIVE_BUNDLE): bundles
@@ -59,8 +65,14 @@
$(RM) $@
$(CP) $(BUILD_OUTPUT)/bundles/$(JDK_IMAGE_SUBDIR).zip $@
+$(JPRT_ARCHIVE_TEST_BUNDLE): bundles
+ $(MKDIR) -p $(@D)
+ $(RM) $@
+ $(CP) $(BUILD_OUTPUT)/bundles/$(TEST_IMAGE_SUBDIR).zip $@
+
SRC_JDK_IMAGE_DIR := $(JDK_IMAGE_DIR)
SRC_JRE_IMAGE_DIR := $(JRE_IMAGE_DIR)
+SRC_TEST_IMAGE_DIR := $(TEST_IMAGE_DIR)
SRC_JDK_BUNDLE_DIR := $(JDK_BUNDLE_DIR)
SRC_JRE_BUNDLE_DIR := $(JRE_BUNDLE_DIR)
@@ -70,6 +82,7 @@
$(MKDIR) -p $(BUILD_OUTPUT)/bundles
$(CD) $(SRC_JDK_IMAGE_DIR) && $(ZIP) -y -q -r $(BUILD_OUTPUT)/bundles/$(JDK_IMAGE_SUBDIR).zip .
$(CD) $(SRC_JRE_IMAGE_DIR) && $(ZIP) -y -q -r $(BUILD_OUTPUT)/bundles/$(JRE_IMAGE_SUBDIR).zip .
+ $(CD) $(SRC_TEST_IMAGE_DIR) && $(ZIP) -y -q -r $(BUILD_OUTPUT)/bundles/$(TEST_IMAGE_SUBDIR).zip .
if [ -d $(BUILD_OUTPUT)/install/bundles ] ; then \
$(CD) $(BUILD_OUTPUT)/install/bundles && $(ZIP) -y -q -r $(JPRT_ARCHIVE_INSTALL_BUNDLE) . ; \
fi
--- a/make/Main.gmk Mon Jan 12 12:24:03 2015 -0800
+++ b/make/Main.gmk Wed Jul 05 20:14:02 2017 +0200
@@ -238,8 +238,12 @@
mac-bundles:
+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f MacBundles.gmk)
+prepare-test-image:
+ $(MKDIR) -p $(TEST_IMAGE_DIR)
+ $(ECHO) > $(TEST_IMAGE_DIR)/Readme.txt 'JDK test image'
+
ALL_TARGETS += source-tips bootcycle-images zip-security zip-source strip-binaries \
- jrtfs-jar jimages profiles mac-bundles
+ jrtfs-jar jimages profiles mac-bundles prepare-test-image
################################################################################
# Docs targets
@@ -442,7 +446,7 @@
# alias for ease of use.
jdk: exploded-image
-images: jimages demos samples zip-security
+images: test-image jimages demos samples zip-security
ifeq ($(OPENJDK_TARGET_OS), macosx)
images: mac-bundles
@@ -450,9 +454,11 @@
docs: docs-javadoc docs-jvmtidoc
+test-image: prepare-test-image
+
ALL_TARGETS += buildtools gensrc gendata copy java rmic libs launchers \
jdk.jdwp.agent-gensrc $(ALL_MODULE_TARGETS) exploded-image jdk images \
- docs
+ docs test-image
################################################################################
--- a/modules.xml Mon Jan 12 12:24:03 2015 -0800
+++ b/modules.xml Wed Jul 05 20:14:02 2017 +0200
@@ -482,6 +482,7 @@
<depend>java.logging</depend>
<depend>java.naming</depend>
<depend re-exports="true">java.rmi</depend>
+ <depend>java.transaction</depend>
<export>
<name>javax.activity</name>
</export>
@@ -492,9 +493,6 @@
<name>javax.rmi.CORBA</name>
</export>
<export>
- <name>javax.transaction</name>
- </export>
- <export>
<name>org.omg.CORBA</name>
</export>
<export>
@@ -888,8 +886,8 @@
<depend re-exports="true">java.compact3</depend>
<depend re-exports="true">java.corba</depend>
<depend re-exports="true">java.desktop</depend>
+ <depend re-exports="true">java.transaction</depend>
<depend re-exports="true">java.xml.bind</depend>
- <depend re-exports="true">java.xml.soap</depend>
<depend re-exports="true">java.xml.ws</depend>
</module>
<module>
@@ -982,6 +980,14 @@
</export>
</module>
<module>
+ <name>java.transaction</name>
+ <depend>java.base</depend>
+ <depend re-exports="true">java.rmi</depend>
+ <export>
+ <name>javax.transaction</name>
+ </export>
+ </module>
+ <module>
<name>java.xml</name>
<depend>java.base</depend>
<export>
@@ -1056,17 +1062,17 @@
<export>
<name>org.xml.sax.helpers</name>
</export>
- <export>
- <name>com.sun.org.apache.xerces.internal.dom</name>
- <to>java.xml.soap</to>
- </export>
- <export>
- <name>com.sun.org.apache.xerces.internal.jaxp</name>
- <to>java.xml.soap</to>
- </export>
- <export>
- <name>com.sun.org.apache.xerces.internal.util</name>
- <to>java.xml.soap</to>
+ <export>
+ <name>com.sun.org.apache.xerces.internal.dom</name>
+ <to>java.xml.ws</to>
+ </export>
+ <export>
+ <name>com.sun.org.apache.xerces.internal.jaxp</name>
+ <to>java.xml.ws</to>
+ </export>
+ <export>
+ <name>com.sun.org.apache.xerces.internal.util</name>
+ <to>java.xml.ws</to>
</export>
<export>
<name>com.sun.org.apache.xml.internal.dtm</name>
@@ -1262,17 +1268,14 @@
</export>
<export>
<name>com.sun.xml.internal.org.jvnet.mimepull</name>
- <to>java.xml.soap</to>
<to>java.xml.ws</to>
</export>
<export>
<name>com.sun.xml.internal.org.jvnet.staxex</name>
- <to>java.xml.soap</to>
<to>java.xml.ws</to>
</export>
<export>
<name>com.sun.xml.internal.org.jvnet.staxex.util</name>
- <to>java.xml.soap</to>
<to>java.xml.ws</to>
</export>
<export>
@@ -1319,29 +1322,16 @@
</export>
</module>
<module>
- <name>java.xml.soap</name>
- <depend re-exports="true">java.activation</depend>
- <depend>java.base</depend>
- <depend>java.desktop</depend>
- <depend>java.logging</depend>
- <depend re-exports="true">java.xml</depend>
- <depend>java.xml.bind</depend>
- <export>
- <name>javax.xml.soap</name>
- </export>
- </module>
- <module>
<name>java.xml.ws</name>
- <depend>java.activation</depend>
<depend>java.annotations.common</depend>
<depend>java.base</depend>
<depend>java.desktop</depend>
<depend>java.logging</depend>
<depend>java.management</depend>
<depend>java.rmi</depend>
+ <depend re-exports="true">java.activation</depend>
<depend re-exports="true">java.xml</depend>
<depend re-exports="true">java.xml.bind</depend>
- <depend re-exports="true">java.xml.soap</depend>
<depend>jdk.httpserver</depend>
<export>
<name>javax.jws</name>
@@ -1350,6 +1340,9 @@
<name>javax.jws.soap</name>
</export>
<export>
+ <name>javax.xml.soap</name>
+ </export>
+ <export>
<name>javax.xml.ws</name>
</export>
<export>
--- a/nashorn/.hgtags Mon Jan 12 12:24:03 2015 -0800
+++ b/nashorn/.hgtags Wed Jul 05 20:14:02 2017 +0200
@@ -278,3 +278,4 @@
498d1d6c4219086143b764b3bf61afe65dcece47 jdk9-b42
8ae8dff2a28f3b8831cce97ae0c7a957c5dc650a jdk9-b43
50ee576062726e536d1bb9a5eadd8fd4470128fc jdk9-b44
+3c2bbeda038aef7061455fec604db7d8a342fac5 jdk9-b45
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/samples/jd.js Wed Jul 05 20:14:02 2017 +0200
@@ -0,0 +1,94 @@
+#// Usage: jjs -cp <asmtools.jar> jd.js -- <classname> [jdis|jdec]
+
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * - Neither the name of Oracle nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// javap-like disassembler/decoder tool that disassembles/decodes
+// java classes but with OpenJDK AsmTools disassembler/decoder syntax.
+// You need to build asmtool.jar from OpenJDK codetools project
+// specify it with -cp option.
+
+// See also https://wiki.openjdk.java.net/display/CodeTools/AsmTools
+
+function usage() {
+ print("Usage: jjs -cp <asmtools.jar> jd.js -- <classname> [jdis|jdec]");
+ exit(1);
+}
+
+if (arguments.length == 0) {
+ usage();
+}
+
+// argument handling
+// convert to internal class name
+var className = arguments[0].replaceAll('\\.', '/');
+var tool;
+if (arguments.length > 1) {
+ tool = arguments[1];
+ switch (tool) {
+ case 'jdis':
+ case 'jdec':
+ break;
+ default:
+ usage();
+ }
+} else {
+ tool = "jdis"; // default tool
+}
+
+// Java classes used
+var AsmTools = Java.type("org.openjdk.asmtools.Main");
+var Files = Java.type("java.nio.file.Files");
+var StandardCopyOption = Java.type("java.nio.file.StandardCopyOption");
+
+// retrive input stream for .class bytes
+var cl = AsmTools.class.classLoader;
+var res = cl.getResource(className + ".class");
+
+if (res) {
+ var is = res.openStream();
+ var tmpPath;
+ try {
+ // copy the content of the .class to a temp file
+ tmpPath = Files.createTempFile("asmtools-", ".class");
+ // mark as delete-on-exit
+ tmpPath.toFile().deleteOnExit();
+ Files.copy(is, tmpPath, [ StandardCopyOption.REPLACE_EXISTING ]);
+ } finally {
+ is.close();
+ }
+
+ // invoke asmtools Main
+ AsmTools.main([ tool, tmpPath.toString() ]);
+} else {
+ print("no such class: " + arguments[0]);
+ exit(1);
+}
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/AbstractJSObject.java Mon Jan 12 12:24:03 2015 -0800
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/AbstractJSObject.java Wed Jul 05 20:14:02 2017 +0200
@@ -36,7 +36,10 @@
* treat objects of such classes just like nashorn script objects. Usual nashorn
* operations like obj[i], obj.foo, obj.func(), delete obj.foo will be glued
* to appropriate method call of this class.
+ *
+ * @since 1.8u40
*/
+@jdk.Exported
public abstract class AbstractJSObject implements JSObject {
/**
* Call this object as a JavaScript function. This is equivalent to
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ClassFilter.java Mon Jan 12 12:24:03 2015 -0800
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ClassFilter.java Wed Jul 05 20:14:02 2017 +0200
@@ -28,7 +28,10 @@
* Class filter (optional) to be used by nashorn script engine.
* jsr-223 program embedding nashorn script can set ClassFilter instance
* to be used when an engine instance is created.
+ *
+ * @since 1.8u40
*/
+@jdk.Exported
public interface ClassFilter {
/**
* Should the Java class of the specified name be exposed to scripts?
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/JSObject.java Mon Jan 12 12:24:03 2015 -0800
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/JSObject.java Wed Jul 05 20:14:02 2017 +0200
@@ -33,7 +33,10 @@
* treat objects of such classes just like nashorn script objects. Usual nashorn
* operations like obj[i], obj.foo, obj.func(), delete obj.foo will be glued
* to appropriate method call of this interface.
+ *
+ * @since 1.8u40
*/
+@jdk.Exported
public interface JSObject {
/**
* Call this object as a JavaScript function. This is equivalent to
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornException.java Mon Jan 12 12:24:03 2015 -0800
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornException.java Wed Jul 05 20:14:02 2017 +0200
@@ -41,7 +41,10 @@
* script object or Java access to script object properties via java.util.Map
* interface. In these cases, user code will get an instance of this or
* implementation defined subclass.
+ *
+ * @since 1.8u40
*/
+@jdk.Exported
@SuppressWarnings("serial")
public abstract class NashornException extends RuntimeException {
// script file name
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornScriptEngine.java Mon Jan 12 12:24:03 2015 -0800
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornScriptEngine.java Wed Jul 05 20:14:02 2017 +0200
@@ -65,8 +65,10 @@
* {@link NashornScriptEngineFactory#getScriptEngine()}. Note that this engine implements the {@link Compilable} and
* {@link Invocable} interfaces, allowing for efficient precompilation and repeated execution of scripts.
* @see NashornScriptEngineFactory
+ *
+ * @since 1.8u40
*/
-
+@jdk.Exported
public final class NashornScriptEngine extends AbstractScriptEngine implements Compilable, Invocable {
/**
* Key used to associate Nashorn global object mirror with arbitrary Bindings instance.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornScriptEngineFactory.java Mon Jan 12 12:24:03 2015 -0800
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornScriptEngineFactory.java Wed Jul 05 20:14:02 2017 +0200
@@ -44,7 +44,10 @@
* </ul>
* Programs executing in engines created using {@link #getScriptEngine(String[])} will have the passed arguments
* accessible as a global variable named {@code "arguments"}.
+ *
+ * @since 1.8u40
*/
+@jdk.Exported
public final class NashornScriptEngineFactory implements ScriptEngineFactory {
@Override
public String getEngineName() {
@@ -120,7 +123,7 @@
// used to execute scripts concurrently on multiple threads.
return null;
default:
- throw new IllegalArgumentException("Invalid key");
+ return null;
}
}
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ScriptObjectMirror.java Mon Jan 12 12:24:03 2015 -0800
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ScriptObjectMirror.java Wed Jul 05 20:14:02 2017 +0200
@@ -54,7 +54,10 @@
/**
* Mirror object that wraps a given Nashorn Script object.
+ *
+ * @since 1.8u40
*/
+@jdk.Exported
public final class ScriptObjectMirror extends AbstractJSObject implements Bindings {
private static AccessControlContext getContextAccCtxt() {
final Permissions perms = new Permissions();
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ScriptUtils.java Mon Jan 12 12:24:03 2015 -0800
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ScriptUtils.java Wed Jul 05 20:14:02 2017 +0200
@@ -36,7 +36,10 @@
/**
* Utilities that are to be called from script code.
+ *
+ * @since 1.8u40
*/
+@jdk.Exported
public final class ScriptUtils {
private ScriptUtils() {}
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/URLReader.java Mon Jan 12 12:24:03 2015 -0800
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/URLReader.java Wed Jul 05 20:14:02 2017 +0200
@@ -35,7 +35,10 @@
/**
* A Reader that reads from a URL. Used to make sure that the reader
* reads content from given URL and can be trusted to do so.
+ *
+ * @since 1.8u40
*/
+@jdk.Exported
public final class URLReader extends Reader {
// underlying URL
private final URL url;
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/package-info.java Mon Jan 12 12:24:03 2015 -0800
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/package-info.java Wed Jul 05 20:14:02 2017 +0200
@@ -35,5 +35,8 @@
* interfaces, allowing for efficient pre-compilation and repeated execution of scripts. In addition,
* this package provides nashorn specific extension classes, interfaces and methods. See
* {@link jdk.nashorn.api.scripting.NashornScriptEngineFactory} for further details.
+ *
+ * @since 1.8u40
*/
+@jdk.Exported
package jdk.nashorn.api.scripting;
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CodeGenerator.java Mon Jan 12 12:24:03 2015 -0800
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CodeGenerator.java Wed Jul 05 20:14:02 2017 +0200
@@ -38,7 +38,6 @@
import static jdk.nashorn.internal.codegen.CompilerConstants.SPLIT_PREFIX;
import static jdk.nashorn.internal.codegen.CompilerConstants.THIS;
import static jdk.nashorn.internal.codegen.CompilerConstants.VARARGS;
-import static jdk.nashorn.internal.codegen.CompilerConstants.constructorNoLookup;
import static jdk.nashorn.internal.codegen.CompilerConstants.interfaceCallNoLookup;
import static jdk.nashorn.internal.codegen.CompilerConstants.methodDescriptor;
import static jdk.nashorn.internal.codegen.CompilerConstants.staticCallNoLookup;
@@ -186,9 +185,6 @@
private static final String GLOBAL_OBJECT = Type.getInternalName(Global.class);
- private static final String SCRIPTFUNCTION_IMPL_NAME = Type.getInternalName(ScriptFunctionImpl.class);
- private static final Type SCRIPTFUNCTION_IMPL_TYPE = Type.typeFor(ScriptFunction.class);
-
private static final Call CREATE_REWRITE_EXCEPTION = CompilerConstants.staticCallNoLookup(RewriteException.class,
"create", RewriteException.class, UnwarrantedOptimismException.class, Object[].class, String[].class);
private static final Call CREATE_REWRITE_EXCEPTION_REST_OF = CompilerConstants.staticCallNoLookup(RewriteException.class,
@@ -201,6 +197,11 @@
private static final Call ENSURE_NUMBER = CompilerConstants.staticCallNoLookup(OptimisticReturnFilters.class,
"ensureNumber", double.class, Object.class, int.class);
+ private static final Call CREATE_FUNCTION_OBJECT = CompilerConstants.staticCallNoLookup(ScriptFunctionImpl.class,
+ "create", ScriptFunction.class, Object[].class, int.class, ScriptObject.class);
+ private static final Call CREATE_FUNCTION_OBJECT_NO_SCOPE = CompilerConstants.staticCallNoLookup(ScriptFunctionImpl.class,
+ "create", ScriptFunction.class, Object[].class, int.class);
+
private static final Class<?> ITERATOR_CLASS = Iterator.class;
static {
assert ITERATOR_CLASS == CompilerConstants.ITERATOR_PREFIX.type();
@@ -2242,7 +2243,6 @@
} else {
methodEmitter.loadConstants().load(index).arrayload();
if (object instanceof ArrayData) {
- // avoid cast to non-public ArrayData subclass
methodEmitter.checkcast(ArrayData.class);
methodEmitter.invoke(virtualCallNoLookup(ArrayData.class, "copy", ArrayData.class));
} else if (cls != Object.class) {
@@ -2251,6 +2251,10 @@
}
}
+ private void loadConstantsAndIndex(final Object object, final MethodEmitter methodEmitter) {
+ methodEmitter.loadConstants().load(compiler.getConstantData().add(object));
+ }
+
// literal values
private void loadLiteral(final LiteralNode<?> node, final TypeBounds resultBounds) {
final Object value = node.getValue();
@@ -4323,15 +4327,13 @@
final RecompilableScriptFunctionData data = compiler.getScriptFunctionData(functionNode.getId());
if (functionNode.isProgram() && !compiler.isOnDemandCompilation()) {
- final CompileUnit fnUnit = functionNode.getCompileUnit();
- final MethodEmitter createFunction = fnUnit.getClassEmitter().method(
+ final MethodEmitter createFunction = functionNode.getCompileUnit().getClassEmitter().method(
EnumSet.of(Flag.PUBLIC, Flag.STATIC), CREATE_PROGRAM_FUNCTION.symbolName(),
ScriptFunction.class, ScriptObject.class);
createFunction.begin();
- createFunction._new(SCRIPTFUNCTION_IMPL_NAME, SCRIPTFUNCTION_IMPL_TYPE).dup();
- loadConstant(data, fnUnit, createFunction);
+ loadConstantsAndIndex(data, createFunction);
createFunction.load(SCOPE_TYPE, 0);
- createFunction.invoke(constructorNoLookup(SCRIPTFUNCTION_IMPL_NAME, RecompilableScriptFunctionData.class, ScriptObject.class));
+ createFunction.invoke(CREATE_FUNCTION_OBJECT);
createFunction._return();
createFunction.end();
}
@@ -4346,15 +4348,14 @@
return;
}
- method._new(SCRIPTFUNCTION_IMPL_NAME, SCRIPTFUNCTION_IMPL_TYPE).dup();
- loadConstant(data);
+ loadConstantsAndIndex(data, method);
if (functionNode.needsParentScope()) {
method.loadCompilerConstant(SCOPE);
+ method.invoke(CREATE_FUNCTION_OBJECT);
} else {
- method.loadNull();
- }
- method.invoke(constructorNoLookup(SCRIPTFUNCTION_IMPL_NAME, RecompilableScriptFunctionData.class, ScriptObject.class));
+ method.invoke(CREATE_FUNCTION_OBJECT_NO_SCOPE);
+ }
}
// calls on Global class.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/objects/ScriptFunctionImpl.java Mon Jan 12 12:24:03 2015 -0800
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/objects/ScriptFunctionImpl.java Wed Jul 05 20:14:02 2017 +0200
@@ -118,13 +118,26 @@
}
/**
- * Constructor called by (compiler) generated code for {@link ScriptObject}s.
+ * Factory method called by compiler generated code for functions that need parent scope.
*
- * @param data static function data
- * @param scope scope object
+ * @param constants the generated class' constant array
+ * @param index the index of the {@code RecompilableScriptFunctionData} object in the constants array.
+ * @param scope the parent scope object
+ * @return a newly created function object
*/
- public ScriptFunctionImpl(final RecompilableScriptFunctionData data, final ScriptObject scope) {
- this(data, scope, Global.instance());
+ public static ScriptFunction create(final Object[] constants, final int index, final ScriptObject scope) {
+ return new ScriptFunctionImpl((RecompilableScriptFunctionData)constants[index], scope, Global.instance());
+ }
+
+ /**
+ * Factory method called by compiler generated code for functions that don't need parent scope.
+ *
+ * @param constants the generated class' constant array
+ * @param index the index of the {@code RecompilableScriptFunctionData} object in the constants array.
+ * @return a newly created function object
+ */
+ public static ScriptFunction create(final Object[] constants, final int index) {
+ return create(constants, index, null);
}
/**
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/AdaptationResult.java Mon Jan 12 12:24:03 2015 -0800
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/AdaptationResult.java Wed Jul 05 20:14:02 2017 +0200
@@ -48,28 +48,25 @@
ERROR_NO_ACCESSIBLE_CONSTRUCTOR,
ERROR_MULTIPLE_SUPERCLASSES,
ERROR_NO_COMMON_LOADER,
- ERROR_FINAL_FINALIZER
+ ERROR_FINAL_FINALIZER,
+ ERROR_OTHER
}
static final AdaptationResult SUCCESSFUL_RESULT = new AdaptationResult(Outcome.SUCCESS, "");
private final Outcome outcome;
- private final String classList;
+ private final String[] messageArgs;
- AdaptationResult(final Outcome outcome, final String classList) {
+ AdaptationResult(final Outcome outcome, final String... messageArgs) {
this.outcome = outcome;
- this.classList = classList;
+ this.messageArgs = messageArgs;
}
Outcome getOutcome() {
return outcome;
}
- String getClassList() {
- return classList;
- }
-
ECMAException typeError() {
- return ECMAErrors.typeError("extend." + outcome, classList);
+ return ECMAErrors.typeError("extend." + outcome, messageArgs);
}
}
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/JavaAdapterFactory.java Mon Jan 12 12:24:03 2015 -0800
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/JavaAdapterFactory.java Wed Jul 05 20:14:02 2017 +0200
@@ -184,7 +184,7 @@
final ClassAndLoader definingClassAndLoader = ClassAndLoader.getDefiningClassAndLoader(types);
final Map<List<Class<?>>, AdapterInfo> adapterInfoMap = ADAPTER_INFO_MAPS.get(definingClassAndLoader.getRepresentativeClass());
- final List<Class<?>> typeList = types.length == 1 ? getSingletonClassList(types[0]) : Arrays.asList(types.clone());
+ final List<Class<?>> typeList = types.length == 1 ? Collections.<Class<?>>singletonList(types[0]) : Arrays.asList(types.clone());
AdapterInfo adapterInfo;
synchronized(adapterInfoMap) {
adapterInfo = adapterInfoMap.get(typeList);
@@ -196,11 +196,6 @@
return adapterInfo;
}
- @SuppressWarnings({ "unchecked", "rawtypes" })
- private static List<Class<?>> getSingletonClassList(final Class<?> clazz) {
- return (List)Collections.singletonList(clazz);
- }
-
/**
* For a given class, create its adapter class and associated info.
* @param type the class for which the adapter is created
@@ -241,6 +236,8 @@
return new AdapterInfo(effectiveSuperClass, interfaces, definingClassAndLoader);
} catch (final AdaptationException e) {
return new AdapterInfo(e.getAdaptationResult());
+ } catch (final RuntimeException e) {
+ return new AdapterInfo(new AdaptationResult(AdaptationResult.Outcome.ERROR_OTHER, Arrays.toString(types), e.toString()));
}
}
}, CREATE_ADAPTER_INFO_ACC_CTXT);
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/resources/Messages.properties Mon Jan 12 12:24:03 2015 -0800
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/resources/Messages.properties Wed Jul 05 20:14:02 2017 +0200
@@ -141,6 +141,7 @@
type.error.extend.ERROR_MULTIPLE_SUPERCLASSES=Can not extend multiple classes {0}. At most one of the specified types can be a class, the rest must all be interfaces.
type.error.extend.ERROR_NO_COMMON_LOADER=Can not find a common class loader for ScriptObject and {0}.
type.error.extend.ERROR_FINAL_FINALIZER=Can not extend class because {0} has a final finalize method.
+type.error.extend.ERROR_OTHER=Can not extend/implement {0} because of {1}
type.error.no.constructor.matches.args=Can not construct {0} with the passed arguments; they do not match any of its constructor signatures.
type.error.no.method.matches.args=Can not invoke method {0} with the passed arguments; they do not match any of its method signatures.
type.error.method.not.constructor=Java method {0} cannot be used as a constructor.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8068580.js Wed Jul 05 20:14:02 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.
+ */
+
+/**
+ * JDK-8068580: make JavaAdapterFactory.isAutoConvertibleFromFunction more robust
+ *
+ * @test
+ * @run
+ */
+
+var BigAbstract = Java.type("jdk.nashorn.test.models.BigAbstract")
+try {
+ new BigAbstract({});
+} catch (e) {
+ Assert.assertTrue(e instanceof TypeError);
+ Assert.assertEquals(e.message, "Can not extend/implement [class jdk.nashorn.test.models.BigAbstract] because of java.lang.RuntimeException: Method code too large!");
+}
+try {
+ BigAbstract.accept(function() { });
+} catch (e) {
+ Assert.assertSame(e.class, java.lang.ClassCastException.class);
+}
--- a/nashorn/test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java Mon Jan 12 12:24:03 2015 -0800
+++ b/nashorn/test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java Wed Jul 05 20:14:02 2017 +0200
@@ -27,6 +27,7 @@
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertTrue;
import static org.testng.Assert.fail;
import java.io.StringReader;
@@ -668,6 +669,17 @@
assertEquals("helloworld", inv.invokeMethod(ctx.get(), "join", ""));
}
+ // @bug 8068524: NashornScriptEngineFactory.getParameter() throws IAE
+ // for an unknown key, doesn't conform to the general spec
+ @Test
+ public void getParameterInvalidKeyTest() throws Exception {
+ final ScriptEngineManager manager = new ScriptEngineManager();
+ final ScriptEngine e = manager.getEngineByName("nashorn");
+ // no exception expected here!
+ Object value = e.getFactory().getParameter("no value assigned to this key");
+ assertNull(value);
+ }
+
private static void checkProperty(final ScriptEngine e, final String name)
throws ScriptException {
final String value = System.getProperty(name);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/src/jdk/nashorn/test/models/BigAbstract.java Wed Jul 05 20:14:02 2017 +0200
@@ -0,0 +1,4709 @@
+/*
+ * 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
+ * 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 jdk.nashorn.test.models;
+
+public abstract class BigAbstract {
+ public static void accept(BigAbstract ba) {
+ }
+
+ public abstract void f0();
+ public abstract void f1();
+ public abstract void f2();
+ public abstract void f3();
+ public abstract void f4();
+ public abstract void f5();
+ public abstract void f6();
+ public abstract void f7();
+ public abstract void f8();
+ public abstract void f9();
+ public abstract void f10();
+ public abstract void f11();
+ public abstract void f12();
+ public abstract void f13();
+ public abstract void f14();
+ public abstract void f15();
+ public abstract void f16();
+ public abstract void f17();
+ public abstract void f18();
+ public abstract void f19();
+ public abstract void f20();
+ public abstract void f21();
+ public abstract void f22();
+ public abstract void f23();
+ public abstract void f24();
+ public abstract void f25();
+ public abstract void f26();
+ public abstract void f27();
+ public abstract void f28();
+ public abstract void f29();
+ public abstract void f30();
+ public abstract void f31();
+ public abstract void f32();
+ public abstract void f33();
+ public abstract void f34();
+ public abstract void f35();
+ public abstract void f36();
+ public abstract void f37();
+ public abstract void f38();
+ public abstract void f39();
+ public abstract void f40();
+ public abstract void f41();
+ public abstract void f42();
+ public abstract void f43();
+ public abstract void f44();
+ public abstract void f45();
+ public abstract void f46();
+ public abstract void f47();
+ public abstract void f48();
+ public abstract void f49();
+ public abstract void f50();
+ public abstract void f51();
+ public abstract void f52();
+ public abstract void f53();
+ public abstract void f54();
+ public abstract void f55();
+ public abstract void f56();
+ public abstract void f57();
+ public abstract void f58();
+ public abstract void f59();
+ public abstract void f60();
+ public abstract void f61();
+ public abstract void f62();
+ public abstract void f63();
+ public abstract void f64();
+ public abstract void f65();
+ public abstract void f66();
+ public abstract void f67();
+ public abstract void f68();
+ public abstract void f69();
+ public abstract void f70();
+ public abstract void f71();
+ public abstract void f72();
+ public abstract void f73();
+ public abstract void f74();
+ public abstract void f75();
+ public abstract void f76();
+ public abstract void f77();
+ public abstract void f78();
+ public abstract void f79();
+ public abstract void f80();
+ public abstract void f81();
+ public abstract void f82();
+ public abstract void f83();
+ public abstract void f84();
+ public abstract void f85();
+ public abstract void f86();
+ public abstract void f87();
+ public abstract void f88();
+ public abstract void f89();
+ public abstract void f90();
+ public abstract void f91();
+ public abstract void f92();
+ public abstract void f93();
+ public abstract void f94();
+ public abstract void f95();
+ public abstract void f96();
+ public abstract void f97();
+ public abstract void f98();
+ public abstract void f99();
+ public abstract void f100();
+ public abstract void f101();
+ public abstract void f102();
+ public abstract void f103();
+ public abstract void f104();
+ public abstract void f105();
+ public abstract void f106();
+ public abstract void f107();
+ public abstract void f108();
+ public abstract void f109();
+ public abstract void f110();
+ public abstract void f111();
+ public abstract void f112();
+ public abstract void f113();
+ public abstract void f114();
+ public abstract void f115();
+ public abstract void f116();
+ public abstract void f117();
+ public abstract void f118();
+ public abstract void f119();
+ public abstract void f120();
+ public abstract void f121();
+ public abstract void f122();
+ public abstract void f123();
+ public abstract void f124();
+ public abstract void f125();
+ public abstract void f126();
+ public abstract void f127();
+ public abstract void f128();
+ public abstract void f129();
+ public abstract void f130();
+ public abstract void f131();
+ public abstract void f132();
+ public abstract void f133();
+ public abstract void f134();
+ public abstract void f135();
+ public abstract void f136();
+ public abstract void f137();
+ public abstract void f138();
+ public abstract void f139();
+ public abstract void f140();
+ public abstract void f141();
+ public abstract void f142();
+ public abstract void f143();
+ public abstract void f144();
+ public abstract void f145();
+ public abstract void f146();
+ public abstract void f147();
+ public abstract void f148();
+ public abstract void f149();
+ public abstract void f150();
+ public abstract void f151();
+ public abstract void f152();
+ public abstract void f153();
+ public abstract void f154();
+ public abstract void f155();
+ public abstract void f156();
+ public abstract void f157();
+ public abstract void f158();
+ public abstract void f159();
+ public abstract void f160();
+ public abstract void f161();
+ public abstract void f162();
+ public abstract void f163();
+ public abstract void f164();
+ public abstract void f165();
+ public abstract void f166();
+ public abstract void f167();
+ public abstract void f168();
+ public abstract void f169();
+ public abstract void f170();
+ public abstract void f171();
+ public abstract void f172();
+ public abstract void f173();
+ public abstract void f174();
+ public abstract void f175();
+ public abstract void f176();
+ public abstract void f177();
+ public abstract void f178();
+ public abstract void f179();
+ public abstract void f180();
+ public abstract void f181();
+ public abstract void f182();
+ public abstract void f183();
+ public abstract void f184();
+ public abstract void f185();
+ public abstract void f186();
+ public abstract void f187();
+ public abstract void f188();
+ public abstract void f189();
+ public abstract void f190();
+ public abstract void f191();
+ public abstract void f192();
+ public abstract void f193();
+ public abstract void f194();
+ public abstract void f195();
+ public abstract void f196();
+ public abstract void f197();
+ public abstract void f198();
+ public abstract void f199();
+ public abstract void f200();
+ public abstract void f201();
+ public abstract void f202();
+ public abstract void f203();
+ public abstract void f204();
+ public abstract void f205();
+ public abstract void f206();
+ public abstract void f207();
+ public abstract void f208();
+ public abstract void f209();
+ public abstract void f210();
+ public abstract void f211();
+ public abstract void f212();
+ public abstract void f213();
+ public abstract void f214();
+ public abstract void f215();
+ public abstract void f216();
+ public abstract void f217();
+ public abstract void f218();
+ public abstract void f219();
+ public abstract void f220();
+ public abstract void f221();
+ public abstract void f222();
+ public abstract void f223();
+ public abstract void f224();
+ public abstract void f225();
+ public abstract void f226();
+ public abstract void f227();
+ public abstract void f228();
+ public abstract void f229();
+ public abstract void f230();
+ public abstract void f231();
+ public abstract void f232();
+ public abstract void f233();
+ public abstract void f234();
+ public abstract void f235();
+ public abstract void f236();
+ public abstract void f237();
+ public abstract void f238();
+ public abstract void f239();
+ public abstract void f240();
+ public abstract void f241();
+ public abstract void f242();
+ public abstract void f243();
+ public abstract void f244();
+ public abstract void f245();
+ public abstract void f246();
+ public abstract void f247();
+ public abstract void f248();
+ public abstract void f249();
+ public abstract void f250();
+ public abstract void f251();
+ public abstract void f252();
+ public abstract void f253();
+ public abstract void f254();
+ public abstract void f255();
+ public abstract void f256();
+ public abstract void f257();
+ public abstract void f258();
+ public abstract void f259();
+ public abstract void f260();
+ public abstract void f261();
+ public abstract void f262();
+ public abstract void f263();
+ public abstract void f264();
+ public abstract void f265();
+ public abstract void f266();
+ public abstract void f267();
+ public abstract void f268();
+ public abstract void f269();
+ public abstract void f270();
+ public abstract void f271();
+ public abstract void f272();
+ public abstract void f273();
+ public abstract void f274();
+ public abstract void f275();
+ public abstract void f276();
+ public abstract void f277();
+ public abstract void f278();
+ public abstract void f279();
+ public abstract void f280();
+ public abstract void f281();
+ public abstract void f282();
+ public abstract void f283();
+ public abstract void f284();
+ public abstract void f285();
+ public abstract void f286();
+ public abstract void f287();
+ public abstract void f288();
+ public abstract void f289();
+ public abstract void f290();
+ public abstract void f291();
+ public abstract void f292();
+ public abstract void f293();
+ public abstract void f294();
+ public abstract void f295();
+ public abstract void f296();
+ public abstract void f297();
+ public abstract void f298();
+ public abstract void f299();
+ public abstract void f300();
+ public abstract void f301();
+ public abstract void f302();
+ public abstract void f303();
+ public abstract void f304();
+ public abstract void f305();
+ public abstract void f306();
+ public abstract void f307();
+ public abstract void f308();
+ public abstract void f309();
+ public abstract void f310();
+ public abstract void f311();
+ public abstract void f312();
+ public abstract void f313();
+ public abstract void f314();
+ public abstract void f315();
+ public abstract void f316();
+ public abstract void f317();
+ public abstract void f318();
+ public abstract void f319();
+ public abstract void f320();
+ public abstract void f321();
+ public abstract void f322();
+ public abstract void f323();
+ public abstract void f324();
+ public abstract void f325();
+ public abstract void f326();
+ public abstract void f327();
+ public abstract void f328();
+ public abstract void f329();
+ public abstract void f330();
+ public abstract void f331();
+ public abstract void f332();
+ public abstract void f333();
+ public abstract void f334();
+ public abstract void f335();
+ public abstract void f336();
+ public abstract void f337();
+ public abstract void f338();
+ public abstract void f339();
+ public abstract void f340();
+ public abstract void f341();
+ public abstract void f342();
+ public abstract void f343();
+ public abstract void f344();
+ public abstract void f345();
+ public abstract void f346();
+ public abstract void f347();
+ public abstract void f348();
+ public abstract void f349();
+ public abstract void f350();
+ public abstract void f351();
+ public abstract void f352();
+ public abstract void f353();
+ public abstract void f354();
+ public abstract void f355();
+ public abstract void f356();
+ public abstract void f357();
+ public abstract void f358();
+ public abstract void f359();
+ public abstract void f360();
+ public abstract void f361();
+ public abstract void f362();
+ public abstract void f363();
+ public abstract void f364();
+ public abstract void f365();
+ public abstract void f366();
+ public abstract void f367();
+ public abstract void f368();
+ public abstract void f369();
+ public abstract void f370();
+ public abstract void f371();
+ public abstract void f372();
+ public abstract void f373();
+ public abstract void f374();
+ public abstract void f375();
+ public abstract void f376();
+ public abstract void f377();
+ public abstract void f378();
+ public abstract void f379();
+ public abstract void f380();
+ public abstract void f381();
+ public abstract void f382();
+ public abstract void f383();
+ public abstract void f384();
+ public abstract void f385();
+ public abstract void f386();
+ public abstract void f387();
+ public abstract void f388();
+ public abstract void f389();
+ public abstract void f390();
+ public abstract void f391();
+ public abstract void f392();
+ public abstract void f393();
+ public abstract void f394();
+ public abstract void f395();
+ public abstract void f396();
+ public abstract void f397();
+ public abstract void f398();
+ public abstract void f399();
+ public abstract void f400();
+ public abstract void f401();
+ public abstract void f402();
+ public abstract void f403();
+ public abstract void f404();
+ public abstract void f405();
+ public abstract void f406();
+ public abstract void f407();
+ public abstract void f408();
+ public abstract void f409();
+ public abstract void f410();
+ public abstract void f411();
+ public abstract void f412();
+ public abstract void f413();
+ public abstract void f414();
+ public abstract void f415();
+ public abstract void f416();
+ public abstract void f417();
+ public abstract void f418();
+ public abstract void f419();
+ public abstract void f420();
+ public abstract void f421();
+ public abstract void f422();
+ public abstract void f423();
+ public abstract void f424();
+ public abstract void f425();
+ public abstract void f426();
+ public abstract void f427();
+ public abstract void f428();
+ public abstract void f429();
+ public abstract void f430();
+ public abstract void f431();
+ public abstract void f432();
+ public abstract void f433();
+ public abstract void f434();
+ public abstract void f435();
+ public abstract void f436();
+ public abstract void f437();
+ public abstract void f438();
+ public abstract void f439();
+ public abstract void f440();
+ public abstract void f441();
+ public abstract void f442();
+ public abstract void f443();
+ public abstract void f444();
+ public abstract void f445();
+ public abstract void f446();
+ public abstract void f447();
+ public abstract void f448();
+ public abstract void f449();
+ public abstract void f450();
+ public abstract void f451();
+ public abstract void f452();
+ public abstract void f453();
+ public abstract void f454();
+ public abstract void f455();
+ public abstract void f456();
+ public abstract void f457();
+ public abstract void f458();
+ public abstract void f459();
+ public abstract void f460();
+ public abstract void f461();
+ public abstract void f462();
+ public abstract void f463();
+ public abstract void f464();
+ public abstract void f465();
+ public abstract void f466();
+ public abstract void f467();
+ public abstract void f468();
+ public abstract void f469();
+ public abstract void f470();
+ public abstract void f471();
+ public abstract void f472();
+ public abstract void f473();
+ public abstract void f474();
+ public abstract void f475();
+ public abstract void f476();
+ public abstract void f477();
+ public abstract void f478();
+ public abstract void f479();
+ public abstract void f480();
+ public abstract void f481();
+ public abstract void f482();
+ public abstract void f483();
+ public abstract void f484();
+ public abstract void f485();
+ public abstract void f486();
+ public abstract void f487();
+ public abstract void f488();
+ public abstract void f489();
+ public abstract void f490();
+ public abstract void f491();
+ public abstract void f492();
+ public abstract void f493();
+ public abstract void f494();
+ public abstract void f495();
+ public abstract void f496();
+ public abstract void f497();
+ public abstract void f498();
+ public abstract void f499();
+ public abstract void f500();
+ public abstract void f501();
+ public abstract void f502();
+ public abstract void f503();
+ public abstract void f504();
+ public abstract void f505();
+ public abstract void f506();
+ public abstract void f507();
+ public abstract void f508();
+ public abstract void f509();
+ public abstract void f510();
+ public abstract void f511();
+ public abstract void f512();
+ public abstract void f513();
+ public abstract void f514();
+ public abstract void f515();
+ public abstract void f516();
+ public abstract void f517();
+ public abstract void f518();
+ public abstract void f519();
+ public abstract void f520();
+ public abstract void f521();
+ public abstract void f522();
+ public abstract void f523();
+ public abstract void f524();
+ public abstract void f525();
+ public abstract void f526();
+ public abstract void f527();
+ public abstract void f528();
+ public abstract void f529();
+ public abstract void f530();
+ public abstract void f531();
+ public abstract void f532();
+ public abstract void f533();
+ public abstract void f534();
+ public abstract void f535();
+ public abstract void f536();
+ public abstract void f537();
+ public abstract void f538();
+ public abstract void f539();
+ public abstract void f540();
+ public abstract void f541();
+ public abstract void f542();
+ public abstract void f543();
+ public abstract void f544();
+ public abstract void f545();
+ public abstract void f546();
+ public abstract void f547();
+ public abstract void f548();
+ public abstract void f549();
+ public abstract void f550();
+ public abstract void f551();
+ public abstract void f552();
+ public abstract void f553();
+ public abstract void f554();
+ public abstract void f555();
+ public abstract void f556();
+ public abstract void f557();
+ public abstract void f558();
+ public abstract void f559();
+ public abstract void f560();
+ public abstract void f561();
+ public abstract void f562();
+ public abstract void f563();
+ public abstract void f564();
+ public abstract void f565();
+ public abstract void f566();
+ public abstract void f567();
+ public abstract void f568();
+ public abstract void f569();
+ public abstract void f570();
+ public abstract void f571();
+ public abstract void f572();
+ public abstract void f573();
+ public abstract void f574();
+ public abstract void f575();
+ public abstract void f576();
+ public abstract void f577();
+ public abstract void f578();
+ public abstract void f579();
+ public abstract void f580();
+ public abstract void f581();
+ public abstract void f582();
+ public abstract void f583();
+ public abstract void f584();
+ public abstract void f585();
+ public abstract void f586();
+ public abstract void f587();
+ public abstract void f588();
+ public abstract void f589();
+ public abstract void f590();
+ public abstract void f591();
+ public abstract void f592();
+ public abstract void f593();
+ public abstract void f594();
+ public abstract void f595();
+ public abstract void f596();
+ public abstract void f597();
+ public abstract void f598();
+ public abstract void f599();
+ public abstract void f600();
+ public abstract void f601();
+ public abstract void f602();
+ public abstract void f603();
+ public abstract void f604();
+ public abstract void f605();
+ public abstract void f606();
+ public abstract void f607();
+ public abstract void f608();
+ public abstract void f609();
+ public abstract void f610();
+ public abstract void f611();
+ public abstract void f612();
+ public abstract void f613();
+ public abstract void f614();
+ public abstract void f615();
+ public abstract void f616();
+ public abstract void f617();
+ public abstract void f618();
+ public abstract void f619();
+ public abstract void f620();
+ public abstract void f621();
+ public abstract void f622();
+ public abstract void f623();
+ public abstract void f624();
+ public abstract void f625();
+ public abstract void f626();
+ public abstract void f627();
+ public abstract void f628();
+ public abstract void f629();
+ public abstract void f630();
+ public abstract void f631();
+ public abstract void f632();
+ public abstract void f633();
+ public abstract void f634();
+ public abstract void f635();
+ public abstract void f636();
+ public abstract void f637();
+ public abstract void f638();
+ public abstract void f639();
+ public abstract void f640();
+ public abstract void f641();
+ public abstract void f642();
+ public abstract void f643();
+ public abstract void f644();
+ public abstract void f645();
+ public abstract void f646();
+ public abstract void f647();
+ public abstract void f648();
+ public abstract void f649();
+ public abstract void f650();
+ public abstract void f651();
+ public abstract void f652();
+ public abstract void f653();
+ public abstract void f654();
+ public abstract void f655();
+ public abstract void f656();
+ public abstract void f657();
+ public abstract void f658();
+ public abstract void f659();
+ public abstract void f660();
+ public abstract void f661();
+ public abstract void f662();
+ public abstract void f663();
+ public abstract void f664();
+ public abstract void f665();
+ public abstract void f666();
+ public abstract void f667();
+ public abstract void f668();
+ public abstract void f669();
+ public abstract void f670();
+ public abstract void f671();
+ public abstract void f672();
+ public abstract void f673();
+ public abstract void f674();
+ public abstract void f675();
+ public abstract void f676();
+ public abstract void f677();
+ public abstract void f678();
+ public abstract void f679();
+ public abstract void f680();
+ public abstract void f681();
+ public abstract void f682();
+ public abstract void f683();
+ public abstract void f684();
+ public abstract void f685();
+ public abstract void f686();
+ public abstract void f687();
+ public abstract void f688();
+ public abstract void f689();
+ public abstract void f690();
+ public abstract void f691();
+ public abstract void f692();
+ public abstract void f693();
+ public abstract void f694();
+ public abstract void f695();
+ public abstract void f696();
+ public abstract void f697();
+ public abstract void f698();
+ public abstract void f699();
+ public abstract void f700();
+ public abstract void f701();
+ public abstract void f702();
+ public abstract void f703();
+ public abstract void f704();
+ public abstract void f705();
+ public abstract void f706();
+ public abstract void f707();
+ public abstract void f708();
+ public abstract void f709();
+ public abstract void f710();
+ public abstract void f711();
+ public abstract void f712();
+ public abstract void f713();
+ public abstract void f714();
+ public abstract void f715();
+ public abstract void f716();
+ public abstract void f717();
+ public abstract void f718();
+ public abstract void f719();
+ public abstract void f720();
+ public abstract void f721();
+ public abstract void f722();
+ public abstract void f723();
+ public abstract void f724();
+ public abstract void f725();
+ public abstract void f726();
+ public abstract void f727();
+ public abstract void f728();
+ public abstract void f729();
+ public abstract void f730();
+ public abstract void f731();
+ public abstract void f732();
+ public abstract void f733();
+ public abstract void f734();
+ public abstract void f735();
+ public abstract void f736();
+ public abstract void f737();
+ public abstract void f738();
+ public abstract void f739();
+ public abstract void f740();
+ public abstract void f741();
+ public abstract void f742();
+ public abstract void f743();
+ public abstract void f744();
+ public abstract void f745();
+ public abstract void f746();
+ public abstract void f747();
+ public abstract void f748();
+ public abstract void f749();
+ public abstract void f750();
+ public abstract void f751();
+ public abstract void f752();
+ public abstract void f753();
+ public abstract void f754();
+ public abstract void f755();
+ public abstract void f756();
+ public abstract void f757();
+ public abstract void f758();
+ public abstract void f759();
+ public abstract void f760();
+ public abstract void f761();
+ public abstract void f762();
+ public abstract void f763();
+ public abstract void f764();
+ public abstract void f765();
+ public abstract void f766();
+ public abstract void f767();
+ public abstract void f768();
+ public abstract void f769();
+ public abstract void f770();
+ public abstract void f771();
+ public abstract void f772();
+ public abstract void f773();
+ public abstract void f774();
+ public abstract void f775();
+ public abstract void f776();
+ public abstract void f777();
+ public abstract void f778();
+ public abstract void f779();
+ public abstract void f780();
+ public abstract void f781();
+ public abstract void f782();
+ public abstract void f783();
+ public abstract void f784();
+ public abstract void f785();
+ public abstract void f786();
+ public abstract void f787();
+ public abstract void f788();
+ public abstract void f789();
+ public abstract void f790();
+ public abstract void f791();
+ public abstract void f792();
+ public abstract void f793();
+ public abstract void f794();
+ public abstract void f795();
+ public abstract void f796();
+ public abstract void f797();
+ public abstract void f798();
+ public abstract void f799();
+ public abstract void f800();
+ public abstract void f801();
+ public abstract void f802();
+ public abstract void f803();
+ public abstract void f804();
+ public abstract void f805();
+ public abstract void f806();
+ public abstract void f807();
+ public abstract void f808();
+ public abstract void f809();
+ public abstract void f810();
+ public abstract void f811();
+ public abstract void f812();
+ public abstract void f813();
+ public abstract void f814();
+ public abstract void f815();
+ public abstract void f816();
+ public abstract void f817();
+ public abstract void f818();
+ public abstract void f819();
+ public abstract void f820();
+ public abstract void f821();
+ public abstract void f822();
+ public abstract void f823();
+ public abstract void f824();
+ public abstract void f825();
+ public abstract void f826();
+ public abstract void f827();
+ public abstract void f828();
+ public abstract void f829();
+ public abstract void f830();
+ public abstract void f831();
+ public abstract void f832();
+ public abstract void f833();
+ public abstract void f834();
+ public abstract void f835();
+ public abstract void f836();
+ public abstract void f837();
+ public abstract void f838();
+ public abstract void f839();
+ public abstract void f840();
+ public abstract void f841();
+ public abstract void f842();
+ public abstract void f843();
+ public abstract void f844();
+ public abstract void f845();
+ public abstract void f846();
+ public abstract void f847();
+ public abstract void f848();
+ public abstract void f849();
+ public abstract void f850();
+ public abstract void f851();
+ public abstract void f852();
+ public abstract void f853();
+ public abstract void f854();
+ public abstract void f855();
+ public abstract void f856();
+ public abstract void f857();
+ public abstract void f858();
+ public abstract void f859();
+ public abstract void f860();
+ public abstract void f861();
+ public abstract void f862();
+ public abstract void f863();
+ public abstract void f864();
+ public abstract void f865();
+ public abstract void f866();
+ public abstract void f867();
+ public abstract void f868();
+ public abstract void f869();
+ public abstract void f870();
+ public abstract void f871();
+ public abstract void f872();
+ public abstract void f873();
+ public abstract void f874();
+ public abstract void f875();
+ public abstract void f876();
+ public abstract void f877();
+ public abstract void f878();
+ public abstract void f879();
+ public abstract void f880();
+ public abstract void f881();
+ public abstract void f882();
+ public abstract void f883();
+ public abstract void f884();
+ public abstract void f885();
+ public abstract void f886();
+ public abstract void f887();
+ public abstract void f888();
+ public abstract void f889();
+ public abstract void f890();
+ public abstract void f891();
+ public abstract void f892();
+ public abstract void f893();
+ public abstract void f894();
+ public abstract void f895();
+ public abstract void f896();
+ public abstract void f897();
+ public abstract void f898();
+ public abstract void f899();
+ public abstract void f900();
+ public abstract void f901();
+ public abstract void f902();
+ public abstract void f903();
+ public abstract void f904();
+ public abstract void f905();
+ public abstract void f906();
+ public abstract void f907();
+ public abstract void f908();
+ public abstract void f909();
+ public abstract void f910();
+ public abstract void f911();
+ public abstract void f912();
+ public abstract void f913();
+ public abstract void f914();
+ public abstract void f915();
+ public abstract void f916();
+ public abstract void f917();
+ public abstract void f918();
+ public abstract void f919();
+ public abstract void f920();
+ public abstract void f921();
+ public abstract void f922();
+ public abstract void f923();
+ public abstract void f924();
+ public abstract void f925();
+ public abstract void f926();
+ public abstract void f927();
+ public abstract void f928();
+ public abstract void f929();
+ public abstract void f930();
+ public abstract void f931();
+ public abstract void f932();
+ public abstract void f933();
+ public abstract void f934();
+ public abstract void f935();
+ public abstract void f936();
+ public abstract void f937();
+ public abstract void f938();
+ public abstract void f939();
+ public abstract void f940();
+ public abstract void f941();
+ public abstract void f942();
+ public abstract void f943();
+ public abstract void f944();
+ public abstract void f945();
+ public abstract void f946();
+ public abstract void f947();
+ public abstract void f948();
+ public abstract void f949();
+ public abstract void f950();
+ public abstract void f951();
+ public abstract void f952();
+ public abstract void f953();
+ public abstract void f954();
+ public abstract void f955();
+ public abstract void f956();
+ public abstract void f957();
+ public abstract void f958();
+ public abstract void f959();
+ public abstract void f960();
+ public abstract void f961();
+ public abstract void f962();
+ public abstract void f963();
+ public abstract void f964();
+ public abstract void f965();
+ public abstract void f966();
+ public abstract void f967();
+ public abstract void f968();
+ public abstract void f969();
+ public abstract void f970();
+ public abstract void f971();
+ public abstract void f972();
+ public abstract void f973();
+ public abstract void f974();
+ public abstract void f975();
+ public abstract void f976();
+ public abstract void f977();
+ public abstract void f978();
+ public abstract void f979();
+ public abstract void f980();
+ public abstract void f981();
+ public abstract void f982();
+ public abstract void f983();
+ public abstract void f984();
+ public abstract void f985();
+ public abstract void f986();
+ public abstract void f987();
+ public abstract void f988();
+ public abstract void f989();
+ public abstract void f990();
+ public abstract void f991();
+ public abstract void f992();
+ public abstract void f993();
+ public abstract void f994();
+ public abstract void f995();
+ public abstract void f996();
+ public abstract void f997();
+ public abstract void f998();
+ public abstract void f999();
+ public abstract void f1000();
+ public abstract void f1001();
+ public abstract void f1002();
+ public abstract void f1003();
+ public abstract void f1004();
+ public abstract void f1005();
+ public abstract void f1006();
+ public abstract void f1007();
+ public abstract void f1008();
+ public abstract void f1009();
+ public abstract void f1010();
+ public abstract void f1011();
+ public abstract void f1012();
+ public abstract void f1013();
+ public abstract void f1014();
+ public abstract void f1015();
+ public abstract void f1016();
+ public abstract void f1017();
+ public abstract void f1018();
+ public abstract void f1019();
+ public abstract void f1020();
+ public abstract void f1021();
+ public abstract void f1022();
+ public abstract void f1023();
+ public abstract void f1024();
+ public abstract void f1025();
+ public abstract void f1026();
+ public abstract void f1027();
+ public abstract void f1028();
+ public abstract void f1029();
+ public abstract void f1030();
+ public abstract void f1031();
+ public abstract void f1032();
+ public abstract void f1033();
+ public abstract void f1034();
+ public abstract void f1035();
+ public abstract void f1036();
+ public abstract void f1037();
+ public abstract void f1038();
+ public abstract void f1039();
+ public abstract void f1040();
+ public abstract void f1041();
+ public abstract void f1042();
+ public abstract void f1043();
+ public abstract void f1044();
+ public abstract void f1045();
+ public abstract void f1046();
+ public abstract void f1047();
+ public abstract void f1048();
+ public abstract void f1049();
+ public abstract void f1050();
+ public abstract void f1051();
+ public abstract void f1052();
+ public abstract void f1053();
+ public abstract void f1054();
+ public abstract void f1055();
+ public abstract void f1056();
+ public abstract void f1057();
+ public abstract void f1058();
+ public abstract void f1059();
+ public abstract void f1060();
+ public abstract void f1061();
+ public abstract void f1062();
+ public abstract void f1063();
+ public abstract void f1064();
+ public abstract void f1065();
+ public abstract void f1066();
+ public abstract void f1067();
+ public abstract void f1068();
+ public abstract void f1069();
+ public abstract void f1070();
+ public abstract void f1071();
+ public abstract void f1072();
+ public abstract void f1073();
+ public abstract void f1074();
+ public abstract void f1075();
+ public abstract void f1076();
+ public abstract void f1077();
+ public abstract void f1078();
+ public abstract void f1079();
+ public abstract void f1080();
+ public abstract void f1081();
+ public abstract void f1082();
+ public abstract void f1083();
+ public abstract void f1084();
+ public abstract void f1085();
+ public abstract void f1086();
+ public abstract void f1087();
+ public abstract void f1088();
+ public abstract void f1089();
+ public abstract void f1090();
+ public abstract void f1091();
+ public abstract void f1092();
+ public abstract void f1093();
+ public abstract void f1094();
+ public abstract void f1095();
+ public abstract void f1096();
+ public abstract void f1097();
+ public abstract void f1098();
+ public abstract void f1099();
+ public abstract void f1100();
+ public abstract void f1101();
+ public abstract void f1102();
+ public abstract void f1103();
+ public abstract void f1104();
+ public abstract void f1105();
+ public abstract void f1106();
+ public abstract void f1107();
+ public abstract void f1108();
+ public abstract void f1109();
+ public abstract void f1110();
+ public abstract void f1111();
+ public abstract void f1112();
+ public abstract void f1113();
+ public abstract void f1114();
+ public abstract void f1115();
+ public abstract void f1116();
+ public abstract void f1117();
+ public abstract void f1118();
+ public abstract void f1119();
+ public abstract void f1120();
+ public abstract void f1121();
+ public abstract void f1122();
+ public abstract void f1123();
+ public abstract void f1124();
+ public abstract void f1125();
+ public abstract void f1126();
+ public abstract void f1127();
+ public abstract void f1128();
+ public abstract void f1129();
+ public abstract void f1130();
+ public abstract void f1131();
+ public abstract void f1132();
+ public abstract void f1133();
+ public abstract void f1134();
+ public abstract void f1135();
+ public abstract void f1136();
+ public abstract void f1137();
+ public abstract void f1138();
+ public abstract void f1139();
+ public abstract void f1140();
+ public abstract void f1141();
+ public abstract void f1142();
+ public abstract void f1143();
+ public abstract void f1144();
+ public abstract void f1145();
+ public abstract void f1146();
+ public abstract void f1147();
+ public abstract void f1148();
+ public abstract void f1149();
+ public abstract void f1150();
+ public abstract void f1151();
+ public abstract void f1152();
+ public abstract void f1153();
+ public abstract void f1154();
+ public abstract void f1155();
+ public abstract void f1156();
+ public abstract void f1157();
+ public abstract void f1158();
+ public abstract void f1159();
+ public abstract void f1160();
+ public abstract void f1161();
+ public abstract void f1162();
+ public abstract void f1163();
+ public abstract void f1164();
+ public abstract void f1165();
+ public abstract void f1166();
+ public abstract void f1167();
+ public abstract void f1168();
+ public abstract void f1169();
+ public abstract void f1170();
+ public abstract void f1171();
+ public abstract void f1172();
+ public abstract void f1173();
+ public abstract void f1174();
+ public abstract void f1175();
+ public abstract void f1176();
+ public abstract void f1177();
+ public abstract void f1178();
+ public abstract void f1179();
+ public abstract void f1180();
+ public abstract void f1181();
+ public abstract void f1182();
+ public abstract void f1183();
+ public abstract void f1184();
+ public abstract void f1185();
+ public abstract void f1186();
+ public abstract void f1187();
+ public abstract void f1188();
+ public abstract void f1189();
+ public abstract void f1190();
+ public abstract void f1191();
+ public abstract void f1192();
+ public abstract void f1193();
+ public abstract void f1194();
+ public abstract void f1195();
+ public abstract void f1196();
+ public abstract void f1197();
+ public abstract void f1198();
+ public abstract void f1199();
+ public abstract void f1200();
+ public abstract void f1201();
+ public abstract void f1202();
+ public abstract void f1203();
+ public abstract void f1204();
+ public abstract void f1205();
+ public abstract void f1206();
+ public abstract void f1207();
+ public abstract void f1208();
+ public abstract void f1209();
+ public abstract void f1210();
+ public abstract void f1211();
+ public abstract void f1212();
+ public abstract void f1213();
+ public abstract void f1214();
+ public abstract void f1215();
+ public abstract void f1216();
+ public abstract void f1217();
+ public abstract void f1218();
+ public abstract void f1219();
+ public abstract void f1220();
+ public abstract void f1221();
+ public abstract void f1222();
+ public abstract void f1223();
+ public abstract void f1224();
+ public abstract void f1225();
+ public abstract void f1226();
+ public abstract void f1227();
+ public abstract void f1228();
+ public abstract void f1229();
+ public abstract void f1230();
+ public abstract void f1231();
+ public abstract void f1232();
+ public abstract void f1233();
+ public abstract void f1234();
+ public abstract void f1235();
+ public abstract void f1236();
+ public abstract void f1237();
+ public abstract void f1238();
+ public abstract void f1239();
+ public abstract void f1240();
+ public abstract void f1241();
+ public abstract void f1242();
+ public abstract void f1243();
+ public abstract void f1244();
+ public abstract void f1245();
+ public abstract void f1246();
+ public abstract void f1247();
+ public abstract void f1248();
+ public abstract void f1249();
+ public abstract void f1250();
+ public abstract void f1251();
+ public abstract void f1252();
+ public abstract void f1253();
+ public abstract void f1254();
+ public abstract void f1255();
+ public abstract void f1256();
+ public abstract void f1257();
+ public abstract void f1258();
+ public abstract void f1259();
+ public abstract void f1260();
+ public abstract void f1261();
+ public abstract void f1262();
+ public abstract void f1263();
+ public abstract void f1264();
+ public abstract void f1265();
+ public abstract void f1266();
+ public abstract void f1267();
+ public abstract void f1268();
+ public abstract void f1269();
+ public abstract void f1270();
+ public abstract void f1271();
+ public abstract void f1272();
+ public abstract void f1273();
+ public abstract void f1274();
+ public abstract void f1275();
+ public abstract void f1276();
+ public abstract void f1277();
+ public abstract void f1278();
+ public abstract void f1279();
+ public abstract void f1280();
+ public abstract void f1281();
+ public abstract void f1282();
+ public abstract void f1283();
+ public abstract void f1284();
+ public abstract void f1285();
+ public abstract void f1286();
+ public abstract void f1287();
+ public abstract void f1288();
+ public abstract void f1289();
+ public abstract void f1290();
+ public abstract void f1291();
+ public abstract void f1292();
+ public abstract void f1293();
+ public abstract void f1294();
+ public abstract void f1295();
+ public abstract void f1296();
+ public abstract void f1297();
+ public abstract void f1298();
+ public abstract void f1299();
+ public abstract void f1300();
+ public abstract void f1301();
+ public abstract void f1302();
+ public abstract void f1303();
+ public abstract void f1304();
+ public abstract void f1305();
+ public abstract void f1306();
+ public abstract void f1307();
+ public abstract void f1308();
+ public abstract void f1309();
+ public abstract void f1310();
+ public abstract void f1311();
+ public abstract void f1312();
+ public abstract void f1313();
+ public abstract void f1314();
+ public abstract void f1315();
+ public abstract void f1316();
+ public abstract void f1317();
+ public abstract void f1318();
+ public abstract void f1319();
+ public abstract void f1320();
+ public abstract void f1321();
+ public abstract void f1322();
+ public abstract void f1323();
+ public abstract void f1324();
+ public abstract void f1325();
+ public abstract void f1326();
+ public abstract void f1327();
+ public abstract void f1328();
+ public abstract void f1329();
+ public abstract void f1330();
+ public abstract void f1331();
+ public abstract void f1332();
+ public abstract void f1333();
+ public abstract void f1334();
+ public abstract void f1335();
+ public abstract void f1336();
+ public abstract void f1337();
+ public abstract void f1338();
+ public abstract void f1339();
+ public abstract void f1340();
+ public abstract void f1341();
+ public abstract void f1342();
+ public abstract void f1343();
+ public abstract void f1344();
+ public abstract void f1345();
+ public abstract void f1346();
+ public abstract void f1347();
+ public abstract void f1348();
+ public abstract void f1349();
+ public abstract void f1350();
+ public abstract void f1351();
+ public abstract void f1352();
+ public abstract void f1353();
+ public abstract void f1354();
+ public abstract void f1355();
+ public abstract void f1356();
+ public abstract void f1357();
+ public abstract void f1358();
+ public abstract void f1359();
+ public abstract void f1360();
+ public abstract void f1361();
+ public abstract void f1362();
+ public abstract void f1363();
+ public abstract void f1364();
+ public abstract void f1365();
+ public abstract void f1366();
+ public abstract void f1367();
+ public abstract void f1368();
+ public abstract void f1369();
+ public abstract void f1370();
+ public abstract void f1371();
+ public abstract void f1372();
+ public abstract void f1373();
+ public abstract void f1374();
+ public abstract void f1375();
+ public abstract void f1376();
+ public abstract void f1377();
+ public abstract void f1378();
+ public abstract void f1379();
+ public abstract void f1380();
+ public abstract void f1381();
+ public abstract void f1382();
+ public abstract void f1383();
+ public abstract void f1384();
+ public abstract void f1385();
+ public abstract void f1386();
+ public abstract void f1387();
+ public abstract void f1388();
+ public abstract void f1389();
+ public abstract void f1390();
+ public abstract void f1391();
+ public abstract void f1392();
+ public abstract void f1393();
+ public abstract void f1394();
+ public abstract void f1395();
+ public abstract void f1396();
+ public abstract void f1397();
+ public abstract void f1398();
+ public abstract void f1399();
+ public abstract void f1400();
+ public abstract void f1401();
+ public abstract void f1402();
+ public abstract void f1403();
+ public abstract void f1404();
+ public abstract void f1405();
+ public abstract void f1406();
+ public abstract void f1407();
+ public abstract void f1408();
+ public abstract void f1409();
+ public abstract void f1410();
+ public abstract void f1411();
+ public abstract void f1412();
+ public abstract void f1413();
+ public abstract void f1414();
+ public abstract void f1415();
+ public abstract void f1416();
+ public abstract void f1417();
+ public abstract void f1418();
+ public abstract void f1419();
+ public abstract void f1420();
+ public abstract void f1421();
+ public abstract void f1422();
+ public abstract void f1423();
+ public abstract void f1424();
+ public abstract void f1425();
+ public abstract void f1426();
+ public abstract void f1427();
+ public abstract void f1428();
+ public abstract void f1429();
+ public abstract void f1430();
+ public abstract void f1431();
+ public abstract void f1432();
+ public abstract void f1433();
+ public abstract void f1434();
+ public abstract void f1435();
+ public abstract void f1436();
+ public abstract void f1437();
+ public abstract void f1438();
+ public abstract void f1439();
+ public abstract void f1440();
+ public abstract void f1441();
+ public abstract void f1442();
+ public abstract void f1443();
+ public abstract void f1444();
+ public abstract void f1445();
+ public abstract void f1446();
+ public abstract void f1447();
+ public abstract void f1448();
+ public abstract void f1449();
+ public abstract void f1450();
+ public abstract void f1451();
+ public abstract void f1452();
+ public abstract void f1453();
+ public abstract void f1454();
+ public abstract void f1455();
+ public abstract void f1456();
+ public abstract void f1457();
+ public abstract void f1458();
+ public abstract void f1459();
+ public abstract void f1460();
+ public abstract void f1461();
+ public abstract void f1462();
+ public abstract void f1463();
+ public abstract void f1464();
+ public abstract void f1465();
+ public abstract void f1466();
+ public abstract void f1467();
+ public abstract void f1468();
+ public abstract void f1469();
+ public abstract void f1470();
+ public abstract void f1471();
+ public abstract void f1472();
+ public abstract void f1473();
+ public abstract void f1474();
+ public abstract void f1475();
+ public abstract void f1476();
+ public abstract void f1477();
+ public abstract void f1478();
+ public abstract void f1479();
+ public abstract void f1480();
+ public abstract void f1481();
+ public abstract void f1482();
+ public abstract void f1483();
+ public abstract void f1484();
+ public abstract void f1485();
+ public abstract void f1486();
+ public abstract void f1487();
+ public abstract void f1488();
+ public abstract void f1489();
+ public abstract void f1490();
+ public abstract void f1491();
+ public abstract void f1492();
+ public abstract void f1493();
+ public abstract void f1494();
+ public abstract void f1495();
+ public abstract void f1496();
+ public abstract void f1497();
+ public abstract void f1498();
+ public abstract void f1499();
+ public abstract void f1500();
+ public abstract void f1501();
+ public abstract void f1502();
+ public abstract void f1503();
+ public abstract void f1504();
+ public abstract void f1505();
+ public abstract void f1506();
+ public abstract void f1507();
+ public abstract void f1508();
+ public abstract void f1509();
+ public abstract void f1510();
+ public abstract void f1511();
+ public abstract void f1512();
+ public abstract void f1513();
+ public abstract void f1514();
+ public abstract void f1515();
+ public abstract void f1516();
+ public abstract void f1517();
+ public abstract void f1518();
+ public abstract void f1519();
+ public abstract void f1520();
+ public abstract void f1521();
+ public abstract void f1522();
+ public abstract void f1523();
+ public abstract void f1524();
+ public abstract void f1525();
+ public abstract void f1526();
+ public abstract void f1527();
+ public abstract void f1528();
+ public abstract void f1529();
+ public abstract void f1530();
+ public abstract void f1531();
+ public abstract void f1532();
+ public abstract void f1533();
+ public abstract void f1534();
+ public abstract void f1535();
+ public abstract void f1536();
+ public abstract void f1537();
+ public abstract void f1538();
+ public abstract void f1539();
+ public abstract void f1540();
+ public abstract void f1541();
+ public abstract void f1542();
+ public abstract void f1543();
+ public abstract void f1544();
+ public abstract void f1545();
+ public abstract void f1546();
+ public abstract void f1547();
+ public abstract void f1548();
+ public abstract void f1549();
+ public abstract void f1550();
+ public abstract void f1551();
+ public abstract void f1552();
+ public abstract void f1553();
+ public abstract void f1554();
+ public abstract void f1555();
+ public abstract void f1556();
+ public abstract void f1557();
+ public abstract void f1558();
+ public abstract void f1559();
+ public abstract void f1560();
+ public abstract void f1561();
+ public abstract void f1562();
+ public abstract void f1563();
+ public abstract void f1564();
+ public abstract void f1565();
+ public abstract void f1566();
+ public abstract void f1567();
+ public abstract void f1568();
+ public abstract void f1569();
+ public abstract void f1570();
+ public abstract void f1571();
+ public abstract void f1572();
+ public abstract void f1573();
+ public abstract void f1574();
+ public abstract void f1575();
+ public abstract void f1576();
+ public abstract void f1577();
+ public abstract void f1578();
+ public abstract void f1579();
+ public abstract void f1580();
+ public abstract void f1581();
+ public abstract void f1582();
+ public abstract void f1583();
+ public abstract void f1584();
+ public abstract void f1585();
+ public abstract void f1586();
+ public abstract void f1587();
+ public abstract void f1588();
+ public abstract void f1589();
+ public abstract void f1590();
+ public abstract void f1591();
+ public abstract void f1592();
+ public abstract void f1593();
+ public abstract void f1594();
+ public abstract void f1595();
+ public abstract void f1596();
+ public abstract void f1597();
+ public abstract void f1598();
+ public abstract void f1599();
+ public abstract void f1600();
+ public abstract void f1601();
+ public abstract void f1602();
+ public abstract void f1603();
+ public abstract void f1604();
+ public abstract void f1605();
+ public abstract void f1606();
+ public abstract void f1607();
+ public abstract void f1608();
+ public abstract void f1609();
+ public abstract void f1610();
+ public abstract void f1611();
+ public abstract void f1612();
+ public abstract void f1613();
+ public abstract void f1614();
+ public abstract void f1615();
+ public abstract void f1616();
+ public abstract void f1617();
+ public abstract void f1618();
+ public abstract void f1619();
+ public abstract void f1620();
+ public abstract void f1621();
+ public abstract void f1622();
+ public abstract void f1623();
+ public abstract void f1624();
+ public abstract void f1625();
+ public abstract void f1626();
+ public abstract void f1627();
+ public abstract void f1628();
+ public abstract void f1629();
+ public abstract void f1630();
+ public abstract void f1631();
+ public abstract void f1632();
+ public abstract void f1633();
+ public abstract void f1634();
+ public abstract void f1635();
+ public abstract void f1636();
+ public abstract void f1637();
+ public abstract void f1638();
+ public abstract void f1639();
+ public abstract void f1640();
+ public abstract void f1641();
+ public abstract void f1642();
+ public abstract void f1643();
+ public abstract void f1644();
+ public abstract void f1645();
+ public abstract void f1646();
+ public abstract void f1647();
+ public abstract void f1648();
+ public abstract void f1649();
+ public abstract void f1650();
+ public abstract void f1651();
+ public abstract void f1652();
+ public abstract void f1653();
+ public abstract void f1654();
+ public abstract void f1655();
+ public abstract void f1656();
+ public abstract void f1657();
+ public abstract void f1658();
+ public abstract void f1659();
+ public abstract void f1660();
+ public abstract void f1661();
+ public abstract void f1662();
+ public abstract void f1663();
+ public abstract void f1664();
+ public abstract void f1665();
+ public abstract void f1666();
+ public abstract void f1667();
+ public abstract void f1668();
+ public abstract void f1669();
+ public abstract void f1670();
+ public abstract void f1671();
+ public abstract void f1672();
+ public abstract void f1673();
+ public abstract void f1674();
+ public abstract void f1675();
+ public abstract void f1676();
+ public abstract void f1677();
+ public abstract void f1678();
+ public abstract void f1679();
+ public abstract void f1680();
+ public abstract void f1681();
+ public abstract void f1682();
+ public abstract void f1683();
+ public abstract void f1684();
+ public abstract void f1685();
+ public abstract void f1686();
+ public abstract void f1687();
+ public abstract void f1688();
+ public abstract void f1689();
+ public abstract void f1690();
+ public abstract void f1691();
+ public abstract void f1692();
+ public abstract void f1693();
+ public abstract void f1694();
+ public abstract void f1695();
+ public abstract void f1696();
+ public abstract void f1697();
+ public abstract void f1698();
+ public abstract void f1699();
+ public abstract void f1700();
+ public abstract void f1701();
+ public abstract void f1702();
+ public abstract void f1703();
+ public abstract void f1704();
+ public abstract void f1705();
+ public abstract void f1706();
+ public abstract void f1707();
+ public abstract void f1708();
+ public abstract void f1709();
+ public abstract void f1710();
+ public abstract void f1711();
+ public abstract void f1712();
+ public abstract void f1713();
+ public abstract void f1714();
+ public abstract void f1715();
+ public abstract void f1716();
+ public abstract void f1717();
+ public abstract void f1718();
+ public abstract void f1719();
+ public abstract void f1720();
+ public abstract void f1721();
+ public abstract void f1722();
+ public abstract void f1723();
+ public abstract void f1724();
+ public abstract void f1725();
+ public abstract void f1726();
+ public abstract void f1727();
+ public abstract void f1728();
+ public abstract void f1729();
+ public abstract void f1730();
+ public abstract void f1731();
+ public abstract void f1732();
+ public abstract void f1733();
+ public abstract void f1734();
+ public abstract void f1735();
+ public abstract void f1736();
+ public abstract void f1737();
+ public abstract void f1738();
+ public abstract void f1739();
+ public abstract void f1740();
+ public abstract void f1741();
+ public abstract void f1742();
+ public abstract void f1743();
+ public abstract void f1744();
+ public abstract void f1745();
+ public abstract void f1746();
+ public abstract void f1747();
+ public abstract void f1748();
+ public abstract void f1749();
+ public abstract void f1750();
+ public abstract void f1751();
+ public abstract void f1752();
+ public abstract void f1753();
+ public abstract void f1754();
+ public abstract void f1755();
+ public abstract void f1756();
+ public abstract void f1757();
+ public abstract void f1758();
+ public abstract void f1759();
+ public abstract void f1760();
+ public abstract void f1761();
+ public abstract void f1762();
+ public abstract void f1763();
+ public abstract void f1764();
+ public abstract void f1765();
+ public abstract void f1766();
+ public abstract void f1767();
+ public abstract void f1768();
+ public abstract void f1769();
+ public abstract void f1770();
+ public abstract void f1771();
+ public abstract void f1772();
+ public abstract void f1773();
+ public abstract void f1774();
+ public abstract void f1775();
+ public abstract void f1776();
+ public abstract void f1777();
+ public abstract void f1778();
+ public abstract void f1779();
+ public abstract void f1780();
+ public abstract void f1781();
+ public abstract void f1782();
+ public abstract void f1783();
+ public abstract void f1784();
+ public abstract void f1785();
+ public abstract void f1786();
+ public abstract void f1787();
+ public abstract void f1788();
+ public abstract void f1789();
+ public abstract void f1790();
+ public abstract void f1791();
+ public abstract void f1792();
+ public abstract void f1793();
+ public abstract void f1794();
+ public abstract void f1795();
+ public abstract void f1796();
+ public abstract void f1797();
+ public abstract void f1798();
+ public abstract void f1799();
+ public abstract void f1800();
+ public abstract void f1801();
+ public abstract void f1802();
+ public abstract void f1803();
+ public abstract void f1804();
+ public abstract void f1805();
+ public abstract void f1806();
+ public abstract void f1807();
+ public abstract void f1808();
+ public abstract void f1809();
+ public abstract void f1810();
+ public abstract void f1811();
+ public abstract void f1812();
+ public abstract void f1813();
+ public abstract void f1814();
+ public abstract void f1815();
+ public abstract void f1816();
+ public abstract void f1817();
+ public abstract void f1818();
+ public abstract void f1819();
+ public abstract void f1820();
+ public abstract void f1821();
+ public abstract void f1822();
+ public abstract void f1823();
+ public abstract void f1824();
+ public abstract void f1825();
+ public abstract void f1826();
+ public abstract void f1827();
+ public abstract void f1828();
+ public abstract void f1829();
+ public abstract void f1830();
+ public abstract void f1831();
+ public abstract void f1832();
+ public abstract void f1833();
+ public abstract void f1834();
+ public abstract void f1835();
+ public abstract void f1836();
+ public abstract void f1837();
+ public abstract void f1838();
+ public abstract void f1839();
+ public abstract void f1840();
+ public abstract void f1841();
+ public abstract void f1842();
+ public abstract void f1843();
+ public abstract void f1844();
+ public abstract void f1845();
+ public abstract void f1846();
+ public abstract void f1847();
+ public abstract void f1848();
+ public abstract void f1849();
+ public abstract void f1850();
+ public abstract void f1851();
+ public abstract void f1852();
+ public abstract void f1853();
+ public abstract void f1854();
+ public abstract void f1855();
+ public abstract void f1856();
+ public abstract void f1857();
+ public abstract void f1858();
+ public abstract void f1859();
+ public abstract void f1860();
+ public abstract void f1861();
+ public abstract void f1862();
+ public abstract void f1863();
+ public abstract void f1864();
+ public abstract void f1865();
+ public abstract void f1866();
+ public abstract void f1867();
+ public abstract void f1868();
+ public abstract void f1869();
+ public abstract void f1870();
+ public abstract void f1871();
+ public abstract void f1872();
+ public abstract void f1873();
+ public abstract void f1874();
+ public abstract void f1875();
+ public abstract void f1876();
+ public abstract void f1877();
+ public abstract void f1878();
+ public abstract void f1879();
+ public abstract void f1880();
+ public abstract void f1881();
+ public abstract void f1882();
+ public abstract void f1883();
+ public abstract void f1884();
+ public abstract void f1885();
+ public abstract void f1886();
+ public abstract void f1887();
+ public abstract void f1888();
+ public abstract void f1889();
+ public abstract void f1890();
+ public abstract void f1891();
+ public abstract void f1892();
+ public abstract void f1893();
+ public abstract void f1894();
+ public abstract void f1895();
+ public abstract void f1896();
+ public abstract void f1897();
+ public abstract void f1898();
+ public abstract void f1899();
+ public abstract void f1900();
+ public abstract void f1901();
+ public abstract void f1902();
+ public abstract void f1903();
+ public abstract void f1904();
+ public abstract void f1905();
+ public abstract void f1906();
+ public abstract void f1907();
+ public abstract void f1908();
+ public abstract void f1909();
+ public abstract void f1910();
+ public abstract void f1911();
+ public abstract void f1912();
+ public abstract void f1913();
+ public abstract void f1914();
+ public abstract void f1915();
+ public abstract void f1916();
+ public abstract void f1917();
+ public abstract void f1918();
+ public abstract void f1919();
+ public abstract void f1920();
+ public abstract void f1921();
+ public abstract void f1922();
+ public abstract void f1923();
+ public abstract void f1924();
+ public abstract void f1925();
+ public abstract void f1926();
+ public abstract void f1927();
+ public abstract void f1928();
+ public abstract void f1929();
+ public abstract void f1930();
+ public abstract void f1931();
+ public abstract void f1932();
+ public abstract void f1933();
+ public abstract void f1934();
+ public abstract void f1935();
+ public abstract void f1936();
+ public abstract void f1937();
+ public abstract void f1938();
+ public abstract void f1939();
+ public abstract void f1940();
+ public abstract void f1941();
+ public abstract void f1942();
+ public abstract void f1943();
+ public abstract void f1944();
+ public abstract void f1945();
+ public abstract void f1946();
+ public abstract void f1947();
+ public abstract void f1948();
+ public abstract void f1949();
+ public abstract void f1950();
+ public abstract void f1951();
+ public abstract void f1952();
+ public abstract void f1953();
+ public abstract void f1954();
+ public abstract void f1955();
+ public abstract void f1956();
+ public abstract void f1957();
+ public abstract void f1958();
+ public abstract void f1959();
+ public abstract void f1960();
+ public abstract void f1961();
+ public abstract void f1962();
+ public abstract void f1963();
+ public abstract void f1964();
+ public abstract void f1965();
+ public abstract void f1966();
+ public abstract void f1967();
+ public abstract void f1968();
+ public abstract void f1969();
+ public abstract void f1970();
+ public abstract void f1971();
+ public abstract void f1972();
+ public abstract void f1973();
+ public abstract void f1974();
+ public abstract void f1975();
+ public abstract void f1976();
+ public abstract void f1977();
+ public abstract void f1978();
+ public abstract void f1979();
+ public abstract void f1980();
+ public abstract void f1981();
+ public abstract void f1982();
+ public abstract void f1983();
+ public abstract void f1984();
+ public abstract void f1985();
+ public abstract void f1986();
+ public abstract void f1987();
+ public abstract void f1988();
+ public abstract void f1989();
+ public abstract void f1990();
+ public abstract void f1991();
+ public abstract void f1992();
+ public abstract void f1993();
+ public abstract void f1994();
+ public abstract void f1995();
+ public abstract void f1996();
+ public abstract void f1997();
+ public abstract void f1998();
+ public abstract void f1999();
+ public abstract void f2000();
+ public abstract void f2001();
+ public abstract void f2002();
+ public abstract void f2003();
+ public abstract void f2004();
+ public abstract void f2005();
+ public abstract void f2006();
+ public abstract void f2007();
+ public abstract void f2008();
+ public abstract void f2009();
+ public abstract void f2010();
+ public abstract void f2011();
+ public abstract void f2012();
+ public abstract void f2013();
+ public abstract void f2014();
+ public abstract void f2015();
+ public abstract void f2016();
+ public abstract void f2017();
+ public abstract void f2018();
+ public abstract void f2019();
+ public abstract void f2020();
+ public abstract void f2021();
+ public abstract void f2022();
+ public abstract void f2023();
+ public abstract void f2024();
+ public abstract void f2025();
+ public abstract void f2026();
+ public abstract void f2027();
+ public abstract void f2028();
+ public abstract void f2029();
+ public abstract void f2030();
+ public abstract void f2031();
+ public abstract void f2032();
+ public abstract void f2033();
+ public abstract void f2034();
+ public abstract void f2035();
+ public abstract void f2036();
+ public abstract void f2037();
+ public abstract void f2038();
+ public abstract void f2039();
+ public abstract void f2040();
+ public abstract void f2041();
+ public abstract void f2042();
+ public abstract void f2043();
+ public abstract void f2044();
+ public abstract void f2045();
+ public abstract void f2046();
+ public abstract void f2047();
+ public abstract void f2048();
+ public abstract void f2049();
+ public abstract void f2050();
+ public abstract void f2051();
+ public abstract void f2052();
+ public abstract void f2053();
+ public abstract void f2054();
+ public abstract void f2055();
+ public abstract void f2056();
+ public abstract void f2057();
+ public abstract void f2058();
+ public abstract void f2059();
+ public abstract void f2060();
+ public abstract void f2061();
+ public abstract void f2062();
+ public abstract void f2063();
+ public abstract void f2064();
+ public abstract void f2065();
+ public abstract void f2066();
+ public abstract void f2067();
+ public abstract void f2068();
+ public abstract void f2069();
+ public abstract void f2070();
+ public abstract void f2071();
+ public abstract void f2072();
+ public abstract void f2073();
+ public abstract void f2074();
+ public abstract void f2075();
+ public abstract void f2076();
+ public abstract void f2077();
+ public abstract void f2078();
+ public abstract void f2079();
+ public abstract void f2080();
+ public abstract void f2081();
+ public abstract void f2082();
+ public abstract void f2083();
+ public abstract void f2084();
+ public abstract void f2085();
+ public abstract void f2086();
+ public abstract void f2087();
+ public abstract void f2088();
+ public abstract void f2089();
+ public abstract void f2090();
+ public abstract void f2091();
+ public abstract void f2092();
+ public abstract void f2093();
+ public abstract void f2094();
+ public abstract void f2095();
+ public abstract void f2096();
+ public abstract void f2097();
+ public abstract void f2098();
+ public abstract void f2099();
+ public abstract void f2100();
+ public abstract void f2101();
+ public abstract void f2102();
+ public abstract void f2103();
+ public abstract void f2104();
+ public abstract void f2105();
+ public abstract void f2106();
+ public abstract void f2107();
+ public abstract void f2108();
+ public abstract void f2109();
+ public abstract void f2110();
+ public abstract void f2111();
+ public abstract void f2112();
+ public abstract void f2113();
+ public abstract void f2114();
+ public abstract void f2115();
+ public abstract void f2116();
+ public abstract void f2117();
+ public abstract void f2118();
+ public abstract void f2119();
+ public abstract void f2120();
+ public abstract void f2121();
+ public abstract void f2122();
+ public abstract void f2123();
+ public abstract void f2124();
+ public abstract void f2125();
+ public abstract void f2126();
+ public abstract void f2127();
+ public abstract void f2128();
+ public abstract void f2129();
+ public abstract void f2130();
+ public abstract void f2131();
+ public abstract void f2132();
+ public abstract void f2133();
+ public abstract void f2134();
+ public abstract void f2135();
+ public abstract void f2136();
+ public abstract void f2137();
+ public abstract void f2138();
+ public abstract void f2139();
+ public abstract void f2140();
+ public abstract void f2141();
+ public abstract void f2142();
+ public abstract void f2143();
+ public abstract void f2144();
+ public abstract void f2145();
+ public abstract void f2146();
+ public abstract void f2147();
+ public abstract void f2148();
+ public abstract void f2149();
+ public abstract void f2150();
+ public abstract void f2151();
+ public abstract void f2152();
+ public abstract void f2153();
+ public abstract void f2154();
+ public abstract void f2155();
+ public abstract void f2156();
+ public abstract void f2157();
+ public abstract void f2158();
+ public abstract void f2159();
+ public abstract void f2160();
+ public abstract void f2161();
+ public abstract void f2162();
+ public abstract void f2163();
+ public abstract void f2164();
+ public abstract void f2165();
+ public abstract void f2166();
+ public abstract void f2167();
+ public abstract void f2168();
+ public abstract void f2169();
+ public abstract void f2170();
+ public abstract void f2171();
+ public abstract void f2172();
+ public abstract void f2173();
+ public abstract void f2174();
+ public abstract void f2175();
+ public abstract void f2176();
+ public abstract void f2177();
+ public abstract void f2178();
+ public abstract void f2179();
+ public abstract void f2180();
+ public abstract void f2181();
+ public abstract void f2182();
+ public abstract void f2183();
+ public abstract void f2184();
+ public abstract void f2185();
+ public abstract void f2186();
+ public abstract void f2187();
+ public abstract void f2188();
+ public abstract void f2189();
+ public abstract void f2190();
+ public abstract void f2191();
+ public abstract void f2192();
+ public abstract void f2193();
+ public abstract void f2194();
+ public abstract void f2195();
+ public abstract void f2196();
+ public abstract void f2197();
+ public abstract void f2198();
+ public abstract void f2199();
+ public abstract void f2200();
+ public abstract void f2201();
+ public abstract void f2202();
+ public abstract void f2203();
+ public abstract void f2204();
+ public abstract void f2205();
+ public abstract void f2206();
+ public abstract void f2207();
+ public abstract void f2208();
+ public abstract void f2209();
+ public abstract void f2210();
+ public abstract void f2211();
+ public abstract void f2212();
+ public abstract void f2213();
+ public abstract void f2214();
+ public abstract void f2215();
+ public abstract void f2216();
+ public abstract void f2217();
+ public abstract void f2218();
+ public abstract void f2219();
+ public abstract void f2220();
+ public abstract void f2221();
+ public abstract void f2222();
+ public abstract void f2223();
+ public abstract void f2224();
+ public abstract void f2225();
+ public abstract void f2226();
+ public abstract void f2227();
+ public abstract void f2228();
+ public abstract void f2229();
+ public abstract void f2230();
+ public abstract void f2231();
+ public abstract void f2232();
+ public abstract void f2233();
+ public abstract void f2234();
+ public abstract void f2235();
+ public abstract void f2236();
+ public abstract void f2237();
+ public abstract void f2238();
+ public abstract void f2239();
+ public abstract void f2240();
+ public abstract void f2241();
+ public abstract void f2242();
+ public abstract void f2243();
+ public abstract void f2244();
+ public abstract void f2245();
+ public abstract void f2246();
+ public abstract void f2247();
+ public abstract void f2248();
+ public abstract void f2249();
+ public abstract void f2250();
+ public abstract void f2251();
+ public abstract void f2252();
+ public abstract void f2253();
+ public abstract void f2254();
+ public abstract void f2255();
+ public abstract void f2256();
+ public abstract void f2257();
+ public abstract void f2258();
+ public abstract void f2259();
+ public abstract void f2260();
+ public abstract void f2261();
+ public abstract void f2262();
+ public abstract void f2263();
+ public abstract void f2264();
+ public abstract void f2265();
+ public abstract void f2266();
+ public abstract void f2267();
+ public abstract void f2268();
+ public abstract void f2269();
+ public abstract void f2270();
+ public abstract void f2271();
+ public abstract void f2272();
+ public abstract void f2273();
+ public abstract void f2274();
+ public abstract void f2275();
+ public abstract void f2276();
+ public abstract void f2277();
+ public abstract void f2278();
+ public abstract void f2279();
+ public abstract void f2280();
+ public abstract void f2281();
+ public abstract void f2282();
+ public abstract void f2283();
+ public abstract void f2284();
+ public abstract void f2285();
+ public abstract void f2286();
+ public abstract void f2287();
+ public abstract void f2288();
+ public abstract void f2289();
+ public abstract void f2290();
+ public abstract void f2291();
+ public abstract void f2292();
+ public abstract void f2293();
+ public abstract void f2294();
+ public abstract void f2295();
+ public abstract void f2296();
+ public abstract void f2297();
+ public abstract void f2298();
+ public abstract void f2299();
+ public abstract void f2300();
+ public abstract void f2301();
+ public abstract void f2302();
+ public abstract void f2303();
+ public abstract void f2304();
+ public abstract void f2305();
+ public abstract void f2306();
+ public abstract void f2307();
+ public abstract void f2308();
+ public abstract void f2309();
+ public abstract void f2310();
+ public abstract void f2311();
+ public abstract void f2312();
+ public abstract void f2313();
+ public abstract void f2314();
+ public abstract void f2315();
+ public abstract void f2316();
+ public abstract void f2317();
+ public abstract void f2318();
+ public abstract void f2319();
+ public abstract void f2320();
+ public abstract void f2321();
+ public abstract void f2322();
+ public abstract void f2323();
+ public abstract void f2324();
+ public abstract void f2325();
+ public abstract void f2326();
+ public abstract void f2327();
+ public abstract void f2328();
+ public abstract void f2329();
+ public abstract void f2330();
+ public abstract void f2331();
+ public abstract void f2332();
+ public abstract void f2333();
+ public abstract void f2334();
+ public abstract void f2335();
+ public abstract void f2336();
+ public abstract void f2337();
+ public abstract void f2338();
+ public abstract void f2339();
+ public abstract void f2340();
+ public abstract void f2341();
+ public abstract void f2342();
+ public abstract void f2343();
+ public abstract void f2344();
+ public abstract void f2345();
+ public abstract void f2346();
+ public abstract void f2347();
+ public abstract void f2348();
+ public abstract void f2349();
+ public abstract void f2350();
+ public abstract void f2351();
+ public abstract void f2352();
+ public abstract void f2353();
+ public abstract void f2354();
+ public abstract void f2355();
+ public abstract void f2356();
+ public abstract void f2357();
+ public abstract void f2358();
+ public abstract void f2359();
+ public abstract void f2360();
+ public abstract void f2361();
+ public abstract void f2362();
+ public abstract void f2363();
+ public abstract void f2364();
+ public abstract void f2365();
+ public abstract void f2366();
+ public abstract void f2367();
+ public abstract void f2368();
+ public abstract void f2369();
+ public abstract void f2370();
+ public abstract void f2371();
+ public abstract void f2372();
+ public abstract void f2373();
+ public abstract void f2374();
+ public abstract void f2375();
+ public abstract void f2376();
+ public abstract void f2377();
+ public abstract void f2378();
+ public abstract void f2379();
+ public abstract void f2380();
+ public abstract void f2381();
+ public abstract void f2382();
+ public abstract void f2383();
+ public abstract void f2384();
+ public abstract void f2385();
+ public abstract void f2386();
+ public abstract void f2387();
+ public abstract void f2388();
+ public abstract void f2389();
+ public abstract void f2390();
+ public abstract void f2391();
+ public abstract void f2392();
+ public abstract void f2393();
+ public abstract void f2394();
+ public abstract void f2395();
+ public abstract void f2396();
+ public abstract void f2397();
+ public abstract void f2398();
+ public abstract void f2399();
+ public abstract void f2400();
+ public abstract void f2401();
+ public abstract void f2402();
+ public abstract void f2403();
+ public abstract void f2404();
+ public abstract void f2405();
+ public abstract void f2406();
+ public abstract void f2407();
+ public abstract void f2408();
+ public abstract void f2409();
+ public abstract void f2410();
+ public abstract void f2411();
+ public abstract void f2412();
+ public abstract void f2413();
+ public abstract void f2414();
+ public abstract void f2415();
+ public abstract void f2416();
+ public abstract void f2417();
+ public abstract void f2418();
+ public abstract void f2419();
+ public abstract void f2420();
+ public abstract void f2421();
+ public abstract void f2422();
+ public abstract void f2423();
+ public abstract void f2424();
+ public abstract void f2425();
+ public abstract void f2426();
+ public abstract void f2427();
+ public abstract void f2428();
+ public abstract void f2429();
+ public abstract void f2430();
+ public abstract void f2431();
+ public abstract void f2432();
+ public abstract void f2433();
+ public abstract void f2434();
+ public abstract void f2435();
+ public abstract void f2436();
+ public abstract void f2437();
+ public abstract void f2438();
+ public abstract void f2439();
+ public abstract void f2440();
+ public abstract void f2441();
+ public abstract void f2442();
+ public abstract void f2443();
+ public abstract void f2444();
+ public abstract void f2445();
+ public abstract void f2446();
+ public abstract void f2447();
+ public abstract void f2448();
+ public abstract void f2449();
+ public abstract void f2450();
+ public abstract void f2451();
+ public abstract void f2452();
+ public abstract void f2453();
+ public abstract void f2454();
+ public abstract void f2455();
+ public abstract void f2456();
+ public abstract void f2457();
+ public abstract void f2458();
+ public abstract void f2459();
+ public abstract void f2460();
+ public abstract void f2461();
+ public abstract void f2462();
+ public abstract void f2463();
+ public abstract void f2464();
+ public abstract void f2465();
+ public abstract void f2466();
+ public abstract void f2467();
+ public abstract void f2468();
+ public abstract void f2469();
+ public abstract void f2470();
+ public abstract void f2471();
+ public abstract void f2472();
+ public abstract void f2473();
+ public abstract void f2474();
+ public abstract void f2475();
+ public abstract void f2476();
+ public abstract void f2477();
+ public abstract void f2478();
+ public abstract void f2479();
+ public abstract void f2480();
+ public abstract void f2481();
+ public abstract void f2482();
+ public abstract void f2483();
+ public abstract void f2484();
+ public abstract void f2485();
+ public abstract void f2486();
+ public abstract void f2487();
+ public abstract void f2488();
+ public abstract void f2489();
+ public abstract void f2490();
+ public abstract void f2491();
+ public abstract void f2492();
+ public abstract void f2493();
+ public abstract void f2494();
+ public abstract void f2495();
+ public abstract void f2496();
+ public abstract void f2497();
+ public abstract void f2498();
+ public abstract void f2499();
+ public abstract void f2500();
+ public abstract void f2501();
+ public abstract void f2502();
+ public abstract void f2503();
+ public abstract void f2504();
+ public abstract void f2505();
+ public abstract void f2506();
+ public abstract void f2507();
+ public abstract void f2508();
+ public abstract void f2509();
+ public abstract void f2510();
+ public abstract void f2511();
+ public abstract void f2512();
+ public abstract void f2513();
+ public abstract void f2514();
+ public abstract void f2515();
+ public abstract void f2516();
+ public abstract void f2517();
+ public abstract void f2518();
+ public abstract void f2519();
+ public abstract void f2520();
+ public abstract void f2521();
+ public abstract void f2522();
+ public abstract void f2523();
+ public abstract void f2524();
+ public abstract void f2525();
+ public abstract void f2526();
+ public abstract void f2527();
+ public abstract void f2528();
+ public abstract void f2529();
+ public abstract void f2530();
+ public abstract void f2531();
+ public abstract void f2532();
+ public abstract void f2533();
+ public abstract void f2534();
+ public abstract void f2535();
+ public abstract void f2536();
+ public abstract void f2537();
+ public abstract void f2538();
+ public abstract void f2539();
+ public abstract void f2540();
+ public abstract void f2541();
+ public abstract void f2542();
+ public abstract void f2543();
+ public abstract void f2544();
+ public abstract void f2545();
+ public abstract void f2546();
+ public abstract void f2547();
+ public abstract void f2548();
+ public abstract void f2549();
+ public abstract void f2550();
+ public abstract void f2551();
+ public abstract void f2552();
+ public abstract void f2553();
+ public abstract void f2554();
+ public abstract void f2555();
+ public abstract void f2556();
+ public abstract void f2557();
+ public abstract void f2558();
+ public abstract void f2559();
+ public abstract void f2560();
+ public abstract void f2561();
+ public abstract void f2562();
+ public abstract void f2563();
+ public abstract void f2564();
+ public abstract void f2565();
+ public abstract void f2566();
+ public abstract void f2567();
+ public abstract void f2568();
+ public abstract void f2569();
+ public abstract void f2570();
+ public abstract void f2571();
+ public abstract void f2572();
+ public abstract void f2573();
+ public abstract void f2574();
+ public abstract void f2575();
+ public abstract void f2576();
+ public abstract void f2577();
+ public abstract void f2578();
+ public abstract void f2579();
+ public abstract void f2580();
+ public abstract void f2581();
+ public abstract void f2582();
+ public abstract void f2583();
+ public abstract void f2584();
+ public abstract void f2585();
+ public abstract void f2586();
+ public abstract void f2587();
+ public abstract void f2588();
+ public abstract void f2589();
+ public abstract void f2590();
+ public abstract void f2591();
+ public abstract void f2592();
+ public abstract void f2593();
+ public abstract void f2594();
+ public abstract void f2595();
+ public abstract void f2596();
+ public abstract void f2597();
+ public abstract void f2598();
+ public abstract void f2599();
+ public abstract void f2600();
+ public abstract void f2601();
+ public abstract void f2602();
+ public abstract void f2603();
+ public abstract void f2604();
+ public abstract void f2605();
+ public abstract void f2606();
+ public abstract void f2607();
+ public abstract void f2608();
+ public abstract void f2609();
+ public abstract void f2610();
+ public abstract void f2611();
+ public abstract void f2612();
+ public abstract void f2613();
+ public abstract void f2614();
+ public abstract void f2615();
+ public abstract void f2616();
+ public abstract void f2617();
+ public abstract void f2618();
+ public abstract void f2619();
+ public abstract void f2620();
+ public abstract void f2621();
+ public abstract void f2622();
+ public abstract void f2623();
+ public abstract void f2624();
+ public abstract void f2625();
+ public abstract void f2626();
+ public abstract void f2627();
+ public abstract void f2628();
+ public abstract void f2629();
+ public abstract void f2630();
+ public abstract void f2631();
+ public abstract void f2632();
+ public abstract void f2633();
+ public abstract void f2634();
+ public abstract void f2635();
+ public abstract void f2636();
+ public abstract void f2637();
+ public abstract void f2638();
+ public abstract void f2639();
+ public abstract void f2640();
+ public abstract void f2641();
+ public abstract void f2642();
+ public abstract void f2643();
+ public abstract void f2644();
+ public abstract void f2645();
+ public abstract void f2646();
+ public abstract void f2647();
+ public abstract void f2648();
+ public abstract void f2649();
+ public abstract void f2650();
+ public abstract void f2651();
+ public abstract void f2652();
+ public abstract void f2653();
+ public abstract void f2654();
+ public abstract void f2655();
+ public abstract void f2656();
+ public abstract void f2657();
+ public abstract void f2658();
+ public abstract void f2659();
+ public abstract void f2660();
+ public abstract void f2661();
+ public abstract void f2662();
+ public abstract void f2663();
+ public abstract void f2664();
+ public abstract void f2665();
+ public abstract void f2666();
+ public abstract void f2667();
+ public abstract void f2668();
+ public abstract void f2669();
+ public abstract void f2670();
+ public abstract void f2671();
+ public abstract void f2672();
+ public abstract void f2673();
+ public abstract void f2674();
+ public abstract void f2675();
+ public abstract void f2676();
+ public abstract void f2677();
+ public abstract void f2678();
+ public abstract void f2679();
+ public abstract void f2680();
+ public abstract void f2681();
+ public abstract void f2682();
+ public abstract void f2683();
+ public abstract void f2684();
+ public abstract void f2685();
+ public abstract void f2686();
+ public abstract void f2687();
+ public abstract void f2688();
+ public abstract void f2689();
+ public abstract void f2690();
+ public abstract void f2691();
+ public abstract void f2692();
+ public abstract void f2693();
+ public abstract void f2694();
+ public abstract void f2695();
+ public abstract void f2696();
+ public abstract void f2697();
+ public abstract void f2698();
+ public abstract void f2699();
+ public abstract void f2700();
+ public abstract void f2701();
+ public abstract void f2702();
+ public abstract void f2703();
+ public abstract void f2704();
+ public abstract void f2705();
+ public abstract void f2706();
+ public abstract void f2707();
+ public abstract void f2708();
+ public abstract void f2709();
+ public abstract void f2710();
+ public abstract void f2711();
+ public abstract void f2712();
+ public abstract void f2713();
+ public abstract void f2714();
+ public abstract void f2715();
+ public abstract void f2716();
+ public abstract void f2717();
+ public abstract void f2718();
+ public abstract void f2719();
+ public abstract void f2720();
+ public abstract void f2721();
+ public abstract void f2722();
+ public abstract void f2723();
+ public abstract void f2724();
+ public abstract void f2725();
+ public abstract void f2726();
+ public abstract void f2727();
+ public abstract void f2728();
+ public abstract void f2729();
+ public abstract void f2730();
+ public abstract void f2731();
+ public abstract void f2732();
+ public abstract void f2733();
+ public abstract void f2734();
+ public abstract void f2735();
+ public abstract void f2736();
+ public abstract void f2737();
+ public abstract void f2738();
+ public abstract void f2739();
+ public abstract void f2740();
+ public abstract void f2741();
+ public abstract void f2742();
+ public abstract void f2743();
+ public abstract void f2744();
+ public abstract void f2745();
+ public abstract void f2746();
+ public abstract void f2747();
+ public abstract void f2748();
+ public abstract void f2749();
+ public abstract void f2750();
+ public abstract void f2751();
+ public abstract void f2752();
+ public abstract void f2753();
+ public abstract void f2754();
+ public abstract void f2755();
+ public abstract void f2756();
+ public abstract void f2757();
+ public abstract void f2758();
+ public abstract void f2759();
+ public abstract void f2760();
+ public abstract void f2761();
+ public abstract void f2762();
+ public abstract void f2763();
+ public abstract void f2764();
+ public abstract void f2765();
+ public abstract void f2766();
+ public abstract void f2767();
+ public abstract void f2768();
+ public abstract void f2769();
+ public abstract void f2770();
+ public abstract void f2771();
+ public abstract void f2772();
+ public abstract void f2773();
+ public abstract void f2774();
+ public abstract void f2775();
+ public abstract void f2776();
+ public abstract void f2777();
+ public abstract void f2778();
+ public abstract void f2779();
+ public abstract void f2780();
+ public abstract void f2781();
+ public abstract void f2782();
+ public abstract void f2783();
+ public abstract void f2784();
+ public abstract void f2785();
+ public abstract void f2786();
+ public abstract void f2787();
+ public abstract void f2788();
+ public abstract void f2789();
+ public abstract void f2790();
+ public abstract void f2791();
+ public abstract void f2792();
+ public abstract void f2793();
+ public abstract void f2794();
+ public abstract void f2795();
+ public abstract void f2796();
+ public abstract void f2797();
+ public abstract void f2798();
+ public abstract void f2799();
+ public abstract void f2800();
+ public abstract void f2801();
+ public abstract void f2802();
+ public abstract void f2803();
+ public abstract void f2804();
+ public abstract void f2805();
+ public abstract void f2806();
+ public abstract void f2807();
+ public abstract void f2808();
+ public abstract void f2809();
+ public abstract void f2810();
+ public abstract void f2811();
+ public abstract void f2812();
+ public abstract void f2813();
+ public abstract void f2814();
+ public abstract void f2815();
+ public abstract void f2816();
+ public abstract void f2817();
+ public abstract void f2818();
+ public abstract void f2819();
+ public abstract void f2820();
+ public abstract void f2821();
+ public abstract void f2822();
+ public abstract void f2823();
+ public abstract void f2824();
+ public abstract void f2825();
+ public abstract void f2826();
+ public abstract void f2827();
+ public abstract void f2828();
+ public abstract void f2829();
+ public abstract void f2830();
+ public abstract void f2831();
+ public abstract void f2832();
+ public abstract void f2833();
+ public abstract void f2834();
+ public abstract void f2835();
+ public abstract void f2836();
+ public abstract void f2837();
+ public abstract void f2838();
+ public abstract void f2839();
+ public abstract void f2840();
+ public abstract void f2841();
+ public abstract void f2842();
+ public abstract void f2843();
+ public abstract void f2844();
+ public abstract void f2845();
+ public abstract void f2846();
+ public abstract void f2847();
+ public abstract void f2848();
+ public abstract void f2849();
+ public abstract void f2850();
+ public abstract void f2851();
+ public abstract void f2852();
+ public abstract void f2853();
+ public abstract void f2854();
+ public abstract void f2855();
+ public abstract void f2856();
+ public abstract void f2857();
+ public abstract void f2858();
+ public abstract void f2859();
+ public abstract void f2860();
+ public abstract void f2861();
+ public abstract void f2862();
+ public abstract void f2863();
+ public abstract void f2864();
+ public abstract void f2865();
+ public abstract void f2866();
+ public abstract void f2867();
+ public abstract void f2868();
+ public abstract void f2869();
+ public abstract void f2870();
+ public abstract void f2871();
+ public abstract void f2872();
+ public abstract void f2873();
+ public abstract void f2874();
+ public abstract void f2875();
+ public abstract void f2876();
+ public abstract void f2877();
+ public abstract void f2878();
+ public abstract void f2879();
+ public abstract void f2880();
+ public abstract void f2881();
+ public abstract void f2882();
+ public abstract void f2883();
+ public abstract void f2884();
+ public abstract void f2885();
+ public abstract void f2886();
+ public abstract void f2887();
+ public abstract void f2888();
+ public abstract void f2889();
+ public abstract void f2890();
+ public abstract void f2891();
+ public abstract void f2892();
+ public abstract void f2893();
+ public abstract void f2894();
+ public abstract void f2895();
+ public abstract void f2896();
+ public abstract void f2897();
+ public abstract void f2898();
+ public abstract void f2899();
+ public abstract void f2900();
+ public abstract void f2901();
+ public abstract void f2902();
+ public abstract void f2903();
+ public abstract void f2904();
+ public abstract void f2905();
+ public abstract void f2906();
+ public abstract void f2907();
+ public abstract void f2908();
+ public abstract void f2909();
+ public abstract void f2910();
+ public abstract void f2911();
+ public abstract void f2912();
+ public abstract void f2913();
+ public abstract void f2914();
+ public abstract void f2915();
+ public abstract void f2916();
+ public abstract void f2917();
+ public abstract void f2918();
+ public abstract void f2919();
+ public abstract void f2920();
+ public abstract void f2921();
+ public abstract void f2922();
+ public abstract void f2923();
+ public abstract void f2924();
+ public abstract void f2925();
+ public abstract void f2926();
+ public abstract void f2927();
+ public abstract void f2928();
+ public abstract void f2929();
+ public abstract void f2930();
+ public abstract void f2931();
+ public abstract void f2932();
+ public abstract void f2933();
+ public abstract void f2934();
+ public abstract void f2935();
+ public abstract void f2936();
+ public abstract void f2937();
+ public abstract void f2938();
+ public abstract void f2939();
+ public abstract void f2940();
+ public abstract void f2941();
+ public abstract void f2942();
+ public abstract void f2943();
+ public abstract void f2944();
+ public abstract void f2945();
+ public abstract void f2946();
+ public abstract void f2947();
+ public abstract void f2948();
+ public abstract void f2949();
+ public abstract void f2950();
+ public abstract void f2951();
+ public abstract void f2952();
+ public abstract void f2953();
+ public abstract void f2954();
+ public abstract void f2955();
+ public abstract void f2956();
+ public abstract void f2957();
+ public abstract void f2958();
+ public abstract void f2959();
+ public abstract void f2960();
+ public abstract void f2961();
+ public abstract void f2962();
+ public abstract void f2963();
+ public abstract void f2964();
+ public abstract void f2965();
+ public abstract void f2966();
+ public abstract void f2967();
+ public abstract void f2968();
+ public abstract void f2969();
+ public abstract void f2970();
+ public abstract void f2971();
+ public abstract void f2972();
+ public abstract void f2973();
+ public abstract void f2974();
+ public abstract void f2975();
+ public abstract void f2976();
+ public abstract void f2977();
+ public abstract void f2978();
+ public abstract void f2979();
+ public abstract void f2980();
+ public abstract void f2981();
+ public abstract void f2982();
+ public abstract void f2983();
+ public abstract void f2984();
+ public abstract void f2985();
+ public abstract void f2986();
+ public abstract void f2987();
+ public abstract void f2988();
+ public abstract void f2989();
+ public abstract void f2990();
+ public abstract void f2991();
+ public abstract void f2992();
+ public abstract void f2993();
+ public abstract void f2994();
+ public abstract void f2995();
+ public abstract void f2996();
+ public abstract void f2997();
+ public abstract void f2998();
+ public abstract void f2999();
+ public abstract void f3000();
+ public abstract void f3001();
+ public abstract void f3002();
+ public abstract void f3003();
+ public abstract void f3004();
+ public abstract void f3005();
+ public abstract void f3006();
+ public abstract void f3007();
+ public abstract void f3008();
+ public abstract void f3009();
+ public abstract void f3010();
+ public abstract void f3011();
+ public abstract void f3012();
+ public abstract void f3013();
+ public abstract void f3014();
+ public abstract void f3015();
+ public abstract void f3016();
+ public abstract void f3017();
+ public abstract void f3018();
+ public abstract void f3019();
+ public abstract void f3020();
+ public abstract void f3021();
+ public abstract void f3022();
+ public abstract void f3023();
+ public abstract void f3024();
+ public abstract void f3025();
+ public abstract void f3026();
+ public abstract void f3027();
+ public abstract void f3028();
+ public abstract void f3029();
+ public abstract void f3030();
+ public abstract void f3031();
+ public abstract void f3032();
+ public abstract void f3033();
+ public abstract void f3034();
+ public abstract void f3035();
+ public abstract void f3036();
+ public abstract void f3037();
+ public abstract void f3038();
+ public abstract void f3039();
+ public abstract void f3040();
+ public abstract void f3041();
+ public abstract void f3042();
+ public abstract void f3043();
+ public abstract void f3044();
+ public abstract void f3045();
+ public abstract void f3046();
+ public abstract void f3047();
+ public abstract void f3048();
+ public abstract void f3049();
+ public abstract void f3050();
+ public abstract void f3051();
+ public abstract void f3052();
+ public abstract void f3053();
+ public abstract void f3054();
+ public abstract void f3055();
+ public abstract void f3056();
+ public abstract void f3057();
+ public abstract void f3058();
+ public abstract void f3059();
+ public abstract void f3060();
+ public abstract void f3061();
+ public abstract void f3062();
+ public abstract void f3063();
+ public abstract void f3064();
+ public abstract void f3065();
+ public abstract void f3066();
+ public abstract void f3067();
+ public abstract void f3068();
+ public abstract void f3069();
+ public abstract void f3070();
+ public abstract void f3071();
+ public abstract void f3072();
+ public abstract void f3073();
+ public abstract void f3074();
+ public abstract void f3075();
+ public abstract void f3076();
+ public abstract void f3077();
+ public abstract void f3078();
+ public abstract void f3079();
+ public abstract void f3080();
+ public abstract void f3081();
+ public abstract void f3082();
+ public abstract void f3083();
+ public abstract void f3084();
+ public abstract void f3085();
+ public abstract void f3086();
+ public abstract void f3087();
+ public abstract void f3088();
+ public abstract void f3089();
+ public abstract void f3090();
+ public abstract void f3091();
+ public abstract void f3092();
+ public abstract void f3093();
+ public abstract void f3094();
+ public abstract void f3095();
+ public abstract void f3096();
+ public abstract void f3097();
+ public abstract void f3098();
+ public abstract void f3099();
+ public abstract void f3100();
+ public abstract void f3101();
+ public abstract void f3102();
+ public abstract void f3103();
+ public abstract void f3104();
+ public abstract void f3105();
+ public abstract void f3106();
+ public abstract void f3107();
+ public abstract void f3108();
+ public abstract void f3109();
+ public abstract void f3110();
+ public abstract void f3111();
+ public abstract void f3112();
+ public abstract void f3113();
+ public abstract void f3114();
+ public abstract void f3115();
+ public abstract void f3116();
+ public abstract void f3117();
+ public abstract void f3118();
+ public abstract void f3119();
+ public abstract void f3120();
+ public abstract void f3121();
+ public abstract void f3122();
+ public abstract void f3123();
+ public abstract void f3124();
+ public abstract void f3125();
+ public abstract void f3126();
+ public abstract void f3127();
+ public abstract void f3128();
+ public abstract void f3129();
+ public abstract void f3130();
+ public abstract void f3131();
+ public abstract void f3132();
+ public abstract void f3133();
+ public abstract void f3134();
+ public abstract void f3135();
+ public abstract void f3136();
+ public abstract void f3137();
+ public abstract void f3138();
+ public abstract void f3139();
+ public abstract void f3140();
+ public abstract void f3141();
+ public abstract void f3142();
+ public abstract void f3143();
+ public abstract void f3144();
+ public abstract void f3145();
+ public abstract void f3146();
+ public abstract void f3147();
+ public abstract void f3148();
+ public abstract void f3149();
+ public abstract void f3150();
+ public abstract void f3151();
+ public abstract void f3152();
+ public abstract void f3153();
+ public abstract void f3154();
+ public abstract void f3155();
+ public abstract void f3156();
+ public abstract void f3157();
+ public abstract void f3158();
+ public abstract void f3159();
+ public abstract void f3160();
+ public abstract void f3161();
+ public abstract void f3162();
+ public abstract void f3163();
+ public abstract void f3164();
+ public abstract void f3165();
+ public abstract void f3166();
+ public abstract void f3167();
+ public abstract void f3168();
+ public abstract void f3169();
+ public abstract void f3170();
+ public abstract void f3171();
+ public abstract void f3172();
+ public abstract void f3173();
+ public abstract void f3174();
+ public abstract void f3175();
+ public abstract void f3176();
+ public abstract void f3177();
+ public abstract void f3178();
+ public abstract void f3179();
+ public abstract void f3180();
+ public abstract void f3181();
+ public abstract void f3182();
+ public abstract void f3183();
+ public abstract void f3184();
+ public abstract void f3185();
+ public abstract void f3186();
+ public abstract void f3187();
+ public abstract void f3188();
+ public abstract void f3189();
+ public abstract void f3190();
+ public abstract void f3191();
+ public abstract void f3192();
+ public abstract void f3193();
+ public abstract void f3194();
+ public abstract void f3195();
+ public abstract void f3196();
+ public abstract void f3197();
+ public abstract void f3198();
+ public abstract void f3199();
+ public abstract void f3200();
+ public abstract void f3201();
+ public abstract void f3202();
+ public abstract void f3203();
+ public abstract void f3204();
+ public abstract void f3205();
+ public abstract void f3206();
+ public abstract void f3207();
+ public abstract void f3208();
+ public abstract void f3209();
+ public abstract void f3210();
+ public abstract void f3211();
+ public abstract void f3212();
+ public abstract void f3213();
+ public abstract void f3214();
+ public abstract void f3215();
+ public abstract void f3216();
+ public abstract void f3217();
+ public abstract void f3218();
+ public abstract void f3219();
+ public abstract void f3220();
+ public abstract void f3221();
+ public abstract void f3222();
+ public abstract void f3223();
+ public abstract void f3224();
+ public abstract void f3225();
+ public abstract void f3226();
+ public abstract void f3227();
+ public abstract void f3228();
+ public abstract void f3229();
+ public abstract void f3230();
+ public abstract void f3231();
+ public abstract void f3232();
+ public abstract void f3233();
+ public abstract void f3234();
+ public abstract void f3235();
+ public abstract void f3236();
+ public abstract void f3237();
+ public abstract void f3238();
+ public abstract void f3239();
+ public abstract void f3240();
+ public abstract void f3241();
+ public abstract void f3242();
+ public abstract void f3243();
+ public abstract void f3244();
+ public abstract void f3245();
+ public abstract void f3246();
+ public abstract void f3247();
+ public abstract void f3248();
+ public abstract void f3249();
+ public abstract void f3250();
+ public abstract void f3251();
+ public abstract void f3252();
+ public abstract void f3253();
+ public abstract void f3254();
+ public abstract void f3255();
+ public abstract void f3256();
+ public abstract void f3257();
+ public abstract void f3258();
+ public abstract void f3259();
+ public abstract void f3260();
+ public abstract void f3261();
+ public abstract void f3262();
+ public abstract void f3263();
+ public abstract void f3264();
+ public abstract void f3265();
+ public abstract void f3266();
+ public abstract void f3267();
+ public abstract void f3268();
+ public abstract void f3269();
+ public abstract void f3270();
+ public abstract void f3271();
+ public abstract void f3272();
+ public abstract void f3273();
+ public abstract void f3274();
+ public abstract void f3275();
+ public abstract void f3276();
+ public abstract void f3277();
+ public abstract void f3278();
+ public abstract void f3279();
+ public abstract void f3280();
+ public abstract void f3281();
+ public abstract void f3282();
+ public abstract void f3283();
+ public abstract void f3284();
+ public abstract void f3285();
+ public abstract void f3286();
+ public abstract void f3287();
+ public abstract void f3288();
+ public abstract void f3289();
+ public abstract void f3290();
+ public abstract void f3291();
+ public abstract void f3292();
+ public abstract void f3293();
+ public abstract void f3294();
+ public abstract void f3295();
+ public abstract void f3296();
+ public abstract void f3297();
+ public abstract void f3298();
+ public abstract void f3299();
+ public abstract void f3300();
+ public abstract void f3301();
+ public abstract void f3302();
+ public abstract void f3303();
+ public abstract void f3304();
+ public abstract void f3305();
+ public abstract void f3306();
+ public abstract void f3307();
+ public abstract void f3308();
+ public abstract void f3309();
+ public abstract void f3310();
+ public abstract void f3311();
+ public abstract void f3312();
+ public abstract void f3313();
+ public abstract void f3314();
+ public abstract void f3315();
+ public abstract void f3316();
+ public abstract void f3317();
+ public abstract void f3318();
+ public abstract void f3319();
+ public abstract void f3320();
+ public abstract void f3321();
+ public abstract void f3322();
+ public abstract void f3323();
+ public abstract void f3324();
+ public abstract void f3325();
+ public abstract void f3326();
+ public abstract void f3327();
+ public abstract void f3328();
+ public abstract void f3329();
+ public abstract void f3330();
+ public abstract void f3331();
+ public abstract void f3332();
+ public abstract void f3333();
+ public abstract void f3334();
+ public abstract void f3335();
+ public abstract void f3336();
+ public abstract void f3337();
+ public abstract void f3338();
+ public abstract void f3339();
+ public abstract void f3340();
+ public abstract void f3341();
+ public abstract void f3342();
+ public abstract void f3343();
+ public abstract void f3344();
+ public abstract void f3345();
+ public abstract void f3346();
+ public abstract void f3347();
+ public abstract void f3348();
+ public abstract void f3349();
+ public abstract void f3350();
+ public abstract void f3351();
+ public abstract void f3352();
+ public abstract void f3353();
+ public abstract void f3354();
+ public abstract void f3355();
+ public abstract void f3356();
+ public abstract void f3357();
+ public abstract void f3358();
+ public abstract void f3359();
+ public abstract void f3360();
+ public abstract void f3361();
+ public abstract void f3362();
+ public abstract void f3363();
+ public abstract void f3364();
+ public abstract void f3365();
+ public abstract void f3366();
+ public abstract void f3367();
+ public abstract void f3368();
+ public abstract void f3369();
+ public abstract void f3370();
+ public abstract void f3371();
+ public abstract void f3372();
+ public abstract void f3373();
+ public abstract void f3374();
+ public abstract void f3375();
+ public abstract void f3376();
+ public abstract void f3377();
+ public abstract void f3378();
+ public abstract void f3379();
+ public abstract void f3380();
+ public abstract void f3381();
+ public abstract void f3382();
+ public abstract void f3383();
+ public abstract void f3384();
+ public abstract void f3385();
+ public abstract void f3386();
+ public abstract void f3387();
+ public abstract void f3388();
+ public abstract void f3389();
+ public abstract void f3390();
+ public abstract void f3391();
+ public abstract void f3392();
+ public abstract void f3393();
+ public abstract void f3394();
+ public abstract void f3395();
+ public abstract void f3396();
+ public abstract void f3397();
+ public abstract void f3398();
+ public abstract void f3399();
+ public abstract void f3400();
+ public abstract void f3401();
+ public abstract void f3402();
+ public abstract void f3403();
+ public abstract void f3404();
+ public abstract void f3405();
+ public abstract void f3406();
+ public abstract void f3407();
+ public abstract void f3408();
+ public abstract void f3409();
+ public abstract void f3410();
+ public abstract void f3411();
+ public abstract void f3412();
+ public abstract void f3413();
+ public abstract void f3414();
+ public abstract void f3415();
+ public abstract void f3416();
+ public abstract void f3417();
+ public abstract void f3418();
+ public abstract void f3419();
+ public abstract void f3420();
+ public abstract void f3421();
+ public abstract void f3422();
+ public abstract void f3423();
+ public abstract void f3424();
+ public abstract void f3425();
+ public abstract void f3426();
+ public abstract void f3427();
+ public abstract void f3428();
+ public abstract void f3429();
+ public abstract void f3430();
+ public abstract void f3431();
+ public abstract void f3432();
+ public abstract void f3433();
+ public abstract void f3434();
+ public abstract void f3435();
+ public abstract void f3436();
+ public abstract void f3437();
+ public abstract void f3438();
+ public abstract void f3439();
+ public abstract void f3440();
+ public abstract void f3441();
+ public abstract void f3442();
+ public abstract void f3443();
+ public abstract void f3444();
+ public abstract void f3445();
+ public abstract void f3446();
+ public abstract void f3447();
+ public abstract void f3448();
+ public abstract void f3449();
+ public abstract void f3450();
+ public abstract void f3451();
+ public abstract void f3452();
+ public abstract void f3453();
+ public abstract void f3454();
+ public abstract void f3455();
+ public abstract void f3456();
+ public abstract void f3457();
+ public abstract void f3458();
+ public abstract void f3459();
+ public abstract void f3460();
+ public abstract void f3461();
+ public abstract void f3462();
+ public abstract void f3463();
+ public abstract void f3464();
+ public abstract void f3465();
+ public abstract void f3466();
+ public abstract void f3467();
+ public abstract void f3468();
+ public abstract void f3469();
+ public abstract void f3470();
+ public abstract void f3471();
+ public abstract void f3472();
+ public abstract void f3473();
+ public abstract void f3474();
+ public abstract void f3475();
+ public abstract void f3476();
+ public abstract void f3477();
+ public abstract void f3478();
+ public abstract void f3479();
+ public abstract void f3480();
+ public abstract void f3481();
+ public abstract void f3482();
+ public abstract void f3483();
+ public abstract void f3484();
+ public abstract void f3485();
+ public abstract void f3486();
+ public abstract void f3487();
+ public abstract void f3488();
+ public abstract void f3489();
+ public abstract void f3490();
+ public abstract void f3491();
+ public abstract void f3492();
+ public abstract void f3493();
+ public abstract void f3494();
+ public abstract void f3495();
+ public abstract void f3496();
+ public abstract void f3497();
+ public abstract void f3498();
+ public abstract void f3499();
+ public abstract void f3500();
+ public abstract void f3501();
+ public abstract void f3502();
+ public abstract void f3503();
+ public abstract void f3504();
+ public abstract void f3505();
+ public abstract void f3506();
+ public abstract void f3507();
+ public abstract void f3508();
+ public abstract void f3509();
+ public abstract void f3510();
+ public abstract void f3511();
+ public abstract void f3512();
+ public abstract void f3513();
+ public abstract void f3514();
+ public abstract void f3515();
+ public abstract void f3516();
+ public abstract void f3517();
+ public abstract void f3518();
+ public abstract void f3519();
+ public abstract void f3520();
+ public abstract void f3521();
+ public abstract void f3522();
+ public abstract void f3523();
+ public abstract void f3524();
+ public abstract void f3525();
+ public abstract void f3526();
+ public abstract void f3527();
+ public abstract void f3528();
+ public abstract void f3529();
+ public abstract void f3530();
+ public abstract void f3531();
+ public abstract void f3532();
+ public abstract void f3533();
+ public abstract void f3534();
+ public abstract void f3535();
+ public abstract void f3536();
+ public abstract void f3537();
+ public abstract void f3538();
+ public abstract void f3539();
+ public abstract void f3540();
+ public abstract void f3541();
+ public abstract void f3542();
+ public abstract void f3543();
+ public abstract void f3544();
+ public abstract void f3545();
+ public abstract void f3546();
+ public abstract void f3547();
+ public abstract void f3548();
+ public abstract void f3549();
+ public abstract void f3550();
+ public abstract void f3551();
+ public abstract void f3552();
+ public abstract void f3553();
+ public abstract void f3554();
+ public abstract void f3555();
+ public abstract void f3556();
+ public abstract void f3557();
+ public abstract void f3558();
+ public abstract void f3559();
+ public abstract void f3560();
+ public abstract void f3561();
+ public abstract void f3562();
+ public abstract void f3563();
+ public abstract void f3564();
+ public abstract void f3565();
+ public abstract void f3566();
+ public abstract void f3567();
+ public abstract void f3568();
+ public abstract void f3569();
+ public abstract void f3570();
+ public abstract void f3571();
+ public abstract void f3572();
+ public abstract void f3573();
+ public abstract void f3574();
+ public abstract void f3575();
+ public abstract void f3576();
+ public abstract void f3577();
+ public abstract void f3578();
+ public abstract void f3579();
+ public abstract void f3580();
+ public abstract void f3581();
+ public abstract void f3582();
+ public abstract void f3583();
+ public abstract void f3584();
+ public abstract void f3585();
+ public abstract void f3586();
+ public abstract void f3587();
+ public abstract void f3588();
+ public abstract void f3589();
+ public abstract void f3590();
+ public abstract void f3591();
+ public abstract void f3592();
+ public abstract void f3593();
+ public abstract void f3594();
+ public abstract void f3595();
+ public abstract void f3596();
+ public abstract void f3597();
+ public abstract void f3598();
+ public abstract void f3599();
+ public abstract void f3600();
+ public abstract void f3601();
+ public abstract void f3602();
+ public abstract void f3603();
+ public abstract void f3604();
+ public abstract void f3605();
+ public abstract void f3606();
+ public abstract void f3607();
+ public abstract void f3608();
+ public abstract void f3609();
+ public abstract void f3610();
+ public abstract void f3611();
+ public abstract void f3612();
+ public abstract void f3613();
+ public abstract void f3614();
+ public abstract void f3615();
+ public abstract void f3616();
+ public abstract void f3617();
+ public abstract void f3618();
+ public abstract void f3619();
+ public abstract void f3620();
+ public abstract void f3621();
+ public abstract void f3622();
+ public abstract void f3623();
+ public abstract void f3624();
+ public abstract void f3625();
+ public abstract void f3626();
+ public abstract void f3627();
+ public abstract void f3628();
+ public abstract void f3629();
+ public abstract void f3630();
+ public abstract void f3631();
+ public abstract void f3632();
+ public abstract void f3633();
+ public abstract void f3634();
+ public abstract void f3635();
+ public abstract void f3636();
+ public abstract void f3637();
+ public abstract void f3638();
+ public abstract void f3639();
+ public abstract void f3640();
+ public abstract void f3641();
+ public abstract void f3642();
+ public abstract void f3643();
+ public abstract void f3644();
+ public abstract void f3645();
+ public abstract void f3646();
+ public abstract void f3647();
+ public abstract void f3648();
+ public abstract void f3649();
+ public abstract void f3650();
+ public abstract void f3651();
+ public abstract void f3652();
+ public abstract void f3653();
+ public abstract void f3654();
+ public abstract void f3655();
+ public abstract void f3656();
+ public abstract void f3657();
+ public abstract void f3658();
+ public abstract void f3659();
+ public abstract void f3660();
+ public abstract void f3661();
+ public abstract void f3662();
+ public abstract void f3663();
+ public abstract void f3664();
+ public abstract void f3665();
+ public abstract void f3666();
+ public abstract void f3667();
+ public abstract void f3668();
+ public abstract void f3669();
+ public abstract void f3670();
+ public abstract void f3671();
+ public abstract void f3672();
+ public abstract void f3673();
+ public abstract void f3674();
+ public abstract void f3675();
+ public abstract void f3676();
+ public abstract void f3677();
+ public abstract void f3678();
+ public abstract void f3679();
+ public abstract void f3680();
+ public abstract void f3681();
+ public abstract void f3682();
+ public abstract void f3683();
+ public abstract void f3684();
+ public abstract void f3685();
+ public abstract void f3686();
+ public abstract void f3687();
+ public abstract void f3688();
+ public abstract void f3689();
+ public abstract void f3690();
+ public abstract void f3691();
+ public abstract void f3692();
+ public abstract void f3693();
+ public abstract void f3694();
+ public abstract void f3695();
+ public abstract void f3696();
+ public abstract void f3697();
+ public abstract void f3698();
+ public abstract void f3699();
+ public abstract void f3700();
+ public abstract void f3701();
+ public abstract void f3702();
+ public abstract void f3703();
+ public abstract void f3704();
+ public abstract void f3705();
+ public abstract void f3706();
+ public abstract void f3707();
+ public abstract void f3708();
+ public abstract void f3709();
+ public abstract void f3710();
+ public abstract void f3711();
+ public abstract void f3712();
+ public abstract void f3713();
+ public abstract void f3714();
+ public abstract void f3715();
+ public abstract void f3716();
+ public abstract void f3717();
+ public abstract void f3718();
+ public abstract void f3719();
+ public abstract void f3720();
+ public abstract void f3721();
+ public abstract void f3722();
+ public abstract void f3723();
+ public abstract void f3724();
+ public abstract void f3725();
+ public abstract void f3726();
+ public abstract void f3727();
+ public abstract void f3728();
+ public abstract void f3729();
+ public abstract void f3730();
+ public abstract void f3731();
+ public abstract void f3732();
+ public abstract void f3733();
+ public abstract void f3734();
+ public abstract void f3735();
+ public abstract void f3736();
+ public abstract void f3737();
+ public abstract void f3738();
+ public abstract void f3739();
+ public abstract void f3740();
+ public abstract void f3741();
+ public abstract void f3742();
+ public abstract void f3743();
+ public abstract void f3744();
+ public abstract void f3745();
+ public abstract void f3746();
+ public abstract void f3747();
+ public abstract void f3748();
+ public abstract void f3749();
+ public abstract void f3750();
+ public abstract void f3751();
+ public abstract void f3752();
+ public abstract void f3753();
+ public abstract void f3754();
+ public abstract void f3755();
+ public abstract void f3756();
+ public abstract void f3757();
+ public abstract void f3758();
+ public abstract void f3759();
+ public abstract void f3760();
+ public abstract void f3761();
+ public abstract void f3762();
+ public abstract void f3763();
+ public abstract void f3764();
+ public abstract void f3765();
+ public abstract void f3766();
+ public abstract void f3767();
+ public abstract void f3768();
+ public abstract void f3769();
+ public abstract void f3770();
+ public abstract void f3771();
+ public abstract void f3772();
+ public abstract void f3773();
+ public abstract void f3774();
+ public abstract void f3775();
+ public abstract void f3776();
+ public abstract void f3777();
+ public abstract void f3778();
+ public abstract void f3779();
+ public abstract void f3780();
+ public abstract void f3781();
+ public abstract void f3782();
+ public abstract void f3783();
+ public abstract void f3784();
+ public abstract void f3785();
+ public abstract void f3786();
+ public abstract void f3787();
+ public abstract void f3788();
+ public abstract void f3789();
+ public abstract void f3790();
+ public abstract void f3791();
+ public abstract void f3792();
+ public abstract void f3793();
+ public abstract void f3794();
+ public abstract void f3795();
+ public abstract void f3796();
+ public abstract void f3797();
+ public abstract void f3798();
+ public abstract void f3799();
+ public abstract void f3800();
+ public abstract void f3801();
+ public abstract void f3802();
+ public abstract void f3803();
+ public abstract void f3804();
+ public abstract void f3805();
+ public abstract void f3806();
+ public abstract void f3807();
+ public abstract void f3808();
+ public abstract void f3809();
+ public abstract void f3810();
+ public abstract void f3811();
+ public abstract void f3812();
+ public abstract void f3813();
+ public abstract void f3814();
+ public abstract void f3815();
+ public abstract void f3816();
+ public abstract void f3817();
+ public abstract void f3818();
+ public abstract void f3819();
+ public abstract void f3820();
+ public abstract void f3821();
+ public abstract void f3822();
+ public abstract void f3823();
+ public abstract void f3824();
+ public abstract void f3825();
+ public abstract void f3826();
+ public abstract void f3827();
+ public abstract void f3828();
+ public abstract void f3829();
+ public abstract void f3830();
+ public abstract void f3831();
+ public abstract void f3832();
+ public abstract void f3833();
+ public abstract void f3834();
+ public abstract void f3835();
+ public abstract void f3836();
+ public abstract void f3837();
+ public abstract void f3838();
+ public abstract void f3839();
+ public abstract void f3840();
+ public abstract void f3841();
+ public abstract void f3842();
+ public abstract void f3843();
+ public abstract void f3844();
+ public abstract void f3845();
+ public abstract void f3846();
+ public abstract void f3847();
+ public abstract void f3848();
+ public abstract void f3849();
+ public abstract void f3850();
+ public abstract void f3851();
+ public abstract void f3852();
+ public abstract void f3853();
+ public abstract void f3854();
+ public abstract void f3855();
+ public abstract void f3856();
+ public abstract void f3857();
+ public abstract void f3858();
+ public abstract void f3859();
+ public abstract void f3860();
+ public abstract void f3861();
+ public abstract void f3862();
+ public abstract void f3863();
+ public abstract void f3864();
+ public abstract void f3865();
+ public abstract void f3866();
+ public abstract void f3867();
+ public abstract void f3868();
+ public abstract void f3869();
+ public abstract void f3870();
+ public abstract void f3871();
+ public abstract void f3872();
+ public abstract void f3873();
+ public abstract void f3874();
+ public abstract void f3875();
+ public abstract void f3876();
+ public abstract void f3877();
+ public abstract void f3878();
+ public abstract void f3879();
+ public abstract void f3880();
+ public abstract void f3881();
+ public abstract void f3882();
+ public abstract void f3883();
+ public abstract void f3884();
+ public abstract void f3885();
+ public abstract void f3886();
+ public abstract void f3887();
+ public abstract void f3888();
+ public abstract void f3889();
+ public abstract void f3890();
+ public abstract void f3891();
+ public abstract void f3892();
+ public abstract void f3893();
+ public abstract void f3894();
+ public abstract void f3895();
+ public abstract void f3896();
+ public abstract void f3897();
+ public abstract void f3898();
+ public abstract void f3899();
+ public abstract void f3900();
+ public abstract void f3901();
+ public abstract void f3902();
+ public abstract void f3903();
+ public abstract void f3904();
+ public abstract void f3905();
+ public abstract void f3906();
+ public abstract void f3907();
+ public abstract void f3908();
+ public abstract void f3909();
+ public abstract void f3910();
+ public abstract void f3911();
+ public abstract void f3912();
+ public abstract void f3913();
+ public abstract void f3914();
+ public abstract void f3915();
+ public abstract void f3916();
+ public abstract void f3917();
+ public abstract void f3918();
+ public abstract void f3919();
+ public abstract void f3920();
+ public abstract void f3921();
+ public abstract void f3922();
+ public abstract void f3923();
+ public abstract void f3924();
+ public abstract void f3925();
+ public abstract void f3926();
+ public abstract void f3927();
+ public abstract void f3928();
+ public abstract void f3929();
+ public abstract void f3930();
+ public abstract void f3931();
+ public abstract void f3932();
+ public abstract void f3933();
+ public abstract void f3934();
+ public abstract void f3935();
+ public abstract void f3936();
+ public abstract void f3937();
+ public abstract void f3938();
+ public abstract void f3939();
+ public abstract void f3940();
+ public abstract void f3941();
+ public abstract void f3942();
+ public abstract void f3943();
+ public abstract void f3944();
+ public abstract void f3945();
+ public abstract void f3946();
+ public abstract void f3947();
+ public abstract void f3948();
+ public abstract void f3949();
+ public abstract void f3950();
+ public abstract void f3951();
+ public abstract void f3952();
+ public abstract void f3953();
+ public abstract void f3954();
+ public abstract void f3955();
+ public abstract void f3956();
+ public abstract void f3957();
+ public abstract void f3958();
+ public abstract void f3959();
+ public abstract void f3960();
+ public abstract void f3961();
+ public abstract void f3962();
+ public abstract void f3963();
+ public abstract void f3964();
+ public abstract void f3965();
+ public abstract void f3966();
+ public abstract void f3967();
+ public abstract void f3968();
+ public abstract void f3969();
+ public abstract void f3970();
+ public abstract void f3971();
+ public abstract void f3972();
+ public abstract void f3973();
+ public abstract void f3974();
+ public abstract void f3975();
+ public abstract void f3976();
+ public abstract void f3977();
+ public abstract void f3978();
+ public abstract void f3979();
+ public abstract void f3980();
+ public abstract void f3981();
+ public abstract void f3982();
+ public abstract void f3983();
+ public abstract void f3984();
+ public abstract void f3985();
+ public abstract void f3986();
+ public abstract void f3987();
+ public abstract void f3988();
+ public abstract void f3989();
+ public abstract void f3990();
+ public abstract void f3991();
+ public abstract void f3992();
+ public abstract void f3993();
+ public abstract void f3994();
+ public abstract void f3995();
+ public abstract void f3996();
+ public abstract void f3997();
+ public abstract void f3998();
+ public abstract void f3999();
+ public abstract void f4000();
+ public abstract void f4001();
+ public abstract void f4002();
+ public abstract void f4003();
+ public abstract void f4004();
+ public abstract void f4005();
+ public abstract void f4006();
+ public abstract void f4007();
+ public abstract void f4008();
+ public abstract void f4009();
+ public abstract void f4010();
+ public abstract void f4011();
+ public abstract void f4012();
+ public abstract void f4013();
+ public abstract void f4014();
+ public abstract void f4015();
+ public abstract void f4016();
+ public abstract void f4017();
+ public abstract void f4018();
+ public abstract void f4019();
+ public abstract void f4020();
+ public abstract void f4021();
+ public abstract void f4022();
+ public abstract void f4023();
+ public abstract void f4024();
+ public abstract void f4025();
+ public abstract void f4026();
+ public abstract void f4027();
+ public abstract void f4028();
+ public abstract void f4029();
+ public abstract void f4030();
+ public abstract void f4031();
+ public abstract void f4032();
+ public abstract void f4033();
+ public abstract void f4034();
+ public abstract void f4035();
+ public abstract void f4036();
+ public abstract void f4037();
+ public abstract void f4038();
+ public abstract void f4039();
+ public abstract void f4040();
+ public abstract void f4041();
+ public abstract void f4042();
+ public abstract void f4043();
+ public abstract void f4044();
+ public abstract void f4045();
+ public abstract void f4046();
+ public abstract void f4047();
+ public abstract void f4048();
+ public abstract void f4049();
+ public abstract void f4050();
+ public abstract void f4051();
+ public abstract void f4052();
+ public abstract void f4053();
+ public abstract void f4054();
+ public abstract void f4055();
+ public abstract void f4056();
+ public abstract void f4057();
+ public abstract void f4058();
+ public abstract void f4059();
+ public abstract void f4060();
+ public abstract void f4061();
+ public abstract void f4062();
+ public abstract void f4063();
+ public abstract void f4064();
+ public abstract void f4065();
+ public abstract void f4066();
+ public abstract void f4067();
+ public abstract void f4068();
+ public abstract void f4069();
+ public abstract void f4070();
+ public abstract void f4071();
+ public abstract void f4072();
+ public abstract void f4073();
+ public abstract void f4074();
+ public abstract void f4075();
+ public abstract void f4076();
+ public abstract void f4077();
+ public abstract void f4078();
+ public abstract void f4079();
+ public abstract void f4080();
+ public abstract void f4081();
+ public abstract void f4082();
+ public abstract void f4083();
+ public abstract void f4084();
+ public abstract void f4085();
+ public abstract void f4086();
+ public abstract void f4087();
+ public abstract void f4088();
+ public abstract void f4089();
+ public abstract void f4090();
+ public abstract void f4091();
+ public abstract void f4092();
+ public abstract void f4093();
+ public abstract void f4094();
+ public abstract void f4095();
+ public abstract void f4096();
+ public abstract void f4097();
+ public abstract void f4098();
+ public abstract void f4099();
+ public abstract void f4100();
+ public abstract void f4101();
+ public abstract void f4102();
+ public abstract void f4103();
+ public abstract void f4104();
+ public abstract void f4105();
+ public abstract void f4106();
+ public abstract void f4107();
+ public abstract void f4108();
+ public abstract void f4109();
+ public abstract void f4110();
+ public abstract void f4111();
+ public abstract void f4112();
+ public abstract void f4113();
+ public abstract void f4114();
+ public abstract void f4115();
+ public abstract void f4116();
+ public abstract void f4117();
+ public abstract void f4118();
+ public abstract void f4119();
+ public abstract void f4120();
+ public abstract void f4121();
+ public abstract void f4122();
+ public abstract void f4123();
+ public abstract void f4124();
+ public abstract void f4125();
+ public abstract void f4126();
+ public abstract void f4127();
+ public abstract void f4128();
+ public abstract void f4129();
+ public abstract void f4130();
+ public abstract void f4131();
+ public abstract void f4132();
+ public abstract void f4133();
+ public abstract void f4134();
+ public abstract void f4135();
+ public abstract void f4136();
+ public abstract void f4137();
+ public abstract void f4138();
+ public abstract void f4139();
+ public abstract void f4140();
+ public abstract void f4141();
+ public abstract void f4142();
+ public abstract void f4143();
+ public abstract void f4144();
+ public abstract void f4145();
+ public abstract void f4146();
+ public abstract void f4147();
+ public abstract void f4148();
+ public abstract void f4149();
+ public abstract void f4150();
+ public abstract void f4151();
+ public abstract void f4152();
+ public abstract void f4153();
+ public abstract void f4154();
+ public abstract void f4155();
+ public abstract void f4156();
+ public abstract void f4157();
+ public abstract void f4158();
+ public abstract void f4159();
+ public abstract void f4160();
+ public abstract void f4161();
+ public abstract void f4162();
+ public abstract void f4163();
+ public abstract void f4164();
+ public abstract void f4165();
+ public abstract void f4166();
+ public abstract void f4167();
+ public abstract void f4168();
+ public abstract void f4169();
+ public abstract void f4170();
+ public abstract void f4171();
+ public abstract void f4172();
+ public abstract void f4173();
+ public abstract void f4174();
+ public abstract void f4175();
+ public abstract void f4176();
+ public abstract void f4177();
+ public abstract void f4178();
+ public abstract void f4179();
+ public abstract void f4180();
+ public abstract void f4181();
+ public abstract void f4182();
+ public abstract void f4183();
+ public abstract void f4184();
+ public abstract void f4185();
+ public abstract void f4186();
+ public abstract void f4187();
+ public abstract void f4188();
+ public abstract void f4189();
+ public abstract void f4190();
+ public abstract void f4191();
+ public abstract void f4192();
+ public abstract void f4193();
+ public abstract void f4194();
+ public abstract void f4195();
+ public abstract void f4196();
+ public abstract void f4197();
+ public abstract void f4198();
+ public abstract void f4199();
+ public abstract void f4200();
+ public abstract void f4201();
+ public abstract void f4202();
+ public abstract void f4203();
+ public abstract void f4204();
+ public abstract void f4205();
+ public abstract void f4206();
+ public abstract void f4207();
+ public abstract void f4208();
+ public abstract void f4209();
+ public abstract void f4210();
+ public abstract void f4211();
+ public abstract void f4212();
+ public abstract void f4213();
+ public abstract void f4214();
+ public abstract void f4215();
+ public abstract void f4216();
+ public abstract void f4217();
+ public abstract void f4218();
+ public abstract void f4219();
+ public abstract void f4220();
+ public abstract void f4221();
+ public abstract void f4222();
+ public abstract void f4223();
+ public abstract void f4224();
+ public abstract void f4225();
+ public abstract void f4226();
+ public abstract void f4227();
+ public abstract void f4228();
+ public abstract void f4229();
+ public abstract void f4230();
+ public abstract void f4231();
+ public abstract void f4232();
+ public abstract void f4233();
+ public abstract void f4234();
+ public abstract void f4235();
+ public abstract void f4236();
+ public abstract void f4237();
+ public abstract void f4238();
+ public abstract void f4239();
+ public abstract void f4240();
+ public abstract void f4241();
+ public abstract void f4242();
+ public abstract void f4243();
+ public abstract void f4244();
+ public abstract void f4245();
+ public abstract void f4246();
+ public abstract void f4247();
+ public abstract void f4248();
+ public abstract void f4249();
+ public abstract void f4250();
+ public abstract void f4251();
+ public abstract void f4252();
+ public abstract void f4253();
+ public abstract void f4254();
+ public abstract void f4255();
+ public abstract void f4256();
+ public abstract void f4257();
+ public abstract void f4258();
+ public abstract void f4259();
+ public abstract void f4260();
+ public abstract void f4261();
+ public abstract void f4262();
+ public abstract void f4263();
+ public abstract void f4264();
+ public abstract void f4265();
+ public abstract void f4266();
+ public abstract void f4267();
+ public abstract void f4268();
+ public abstract void f4269();
+ public abstract void f4270();
+ public abstract void f4271();
+ public abstract void f4272();
+ public abstract void f4273();
+ public abstract void f4274();
+ public abstract void f4275();
+ public abstract void f4276();
+ public abstract void f4277();
+ public abstract void f4278();
+ public abstract void f4279();
+ public abstract void f4280();
+ public abstract void f4281();
+ public abstract void f4282();
+ public abstract void f4283();
+ public abstract void f4284();
+ public abstract void f4285();
+ public abstract void f4286();
+ public abstract void f4287();
+ public abstract void f4288();
+ public abstract void f4289();
+ public abstract void f4290();
+ public abstract void f4291();
+ public abstract void f4292();
+ public abstract void f4293();
+ public abstract void f4294();
+ public abstract void f4295();
+ public abstract void f4296();
+ public abstract void f4297();
+ public abstract void f4298();
+ public abstract void f4299();
+ public abstract void f4300();
+ public abstract void f4301();
+ public abstract void f4302();
+ public abstract void f4303();
+ public abstract void f4304();
+ public abstract void f4305();
+ public abstract void f4306();
+ public abstract void f4307();
+ public abstract void f4308();
+ public abstract void f4309();
+ public abstract void f4310();
+ public abstract void f4311();
+ public abstract void f4312();
+ public abstract void f4313();
+ public abstract void f4314();
+ public abstract void f4315();
+ public abstract void f4316();
+ public abstract void f4317();
+ public abstract void f4318();
+ public abstract void f4319();
+ public abstract void f4320();
+ public abstract void f4321();
+ public abstract void f4322();
+ public abstract void f4323();
+ public abstract void f4324();
+ public abstract void f4325();
+ public abstract void f4326();
+ public abstract void f4327();
+ public abstract void f4328();
+ public abstract void f4329();
+ public abstract void f4330();
+ public abstract void f4331();
+ public abstract void f4332();
+ public abstract void f4333();
+ public abstract void f4334();
+ public abstract void f4335();
+ public abstract void f4336();
+ public abstract void f4337();
+ public abstract void f4338();
+ public abstract void f4339();
+ public abstract void f4340();
+ public abstract void f4341();
+ public abstract void f4342();
+ public abstract void f4343();
+ public abstract void f4344();
+ public abstract void f4345();
+ public abstract void f4346();
+ public abstract void f4347();
+ public abstract void f4348();
+ public abstract void f4349();
+ public abstract void f4350();
+ public abstract void f4351();
+ public abstract void f4352();
+ public abstract void f4353();
+ public abstract void f4354();
+ public abstract void f4355();
+ public abstract void f4356();
+ public abstract void f4357();
+ public abstract void f4358();
+ public abstract void f4359();
+ public abstract void f4360();
+ public abstract void f4361();
+ public abstract void f4362();
+ public abstract void f4363();
+ public abstract void f4364();
+ public abstract void f4365();
+ public abstract void f4366();
+ public abstract void f4367();
+ public abstract void f4368();
+ public abstract void f4369();
+ public abstract void f4370();
+ public abstract void f4371();
+ public abstract void f4372();
+ public abstract void f4373();
+ public abstract void f4374();
+ public abstract void f4375();
+ public abstract void f4376();
+ public abstract void f4377();
+ public abstract void f4378();
+ public abstract void f4379();
+ public abstract void f4380();
+ public abstract void f4381();
+ public abstract void f4382();
+ public abstract void f4383();
+ public abstract void f4384();
+ public abstract void f4385();
+ public abstract void f4386();
+ public abstract void f4387();
+ public abstract void f4388();
+ public abstract void f4389();
+ public abstract void f4390();
+ public abstract void f4391();
+ public abstract void f4392();
+ public abstract void f4393();
+ public abstract void f4394();
+ public abstract void f4395();
+ public abstract void f4396();
+ public abstract void f4397();
+ public abstract void f4398();
+ public abstract void f4399();
+ public abstract void f4400();
+ public abstract void f4401();
+ public abstract void f4402();
+ public abstract void f4403();
+ public abstract void f4404();
+ public abstract void f4405();
+ public abstract void f4406();
+ public abstract void f4407();
+ public abstract void f4408();
+ public abstract void f4409();
+ public abstract void f4410();
+ public abstract void f4411();
+ public abstract void f4412();
+ public abstract void f4413();
+ public abstract void f4414();
+ public abstract void f4415();
+ public abstract void f4416();
+ public abstract void f4417();
+ public abstract void f4418();
+ public abstract void f4419();
+ public abstract void f4420();
+ public abstract void f4421();
+ public abstract void f4422();
+ public abstract void f4423();
+ public abstract void f4424();
+ public abstract void f4425();
+ public abstract void f4426();
+ public abstract void f4427();
+ public abstract void f4428();
+ public abstract void f4429();
+ public abstract void f4430();
+ public abstract void f4431();
+ public abstract void f4432();
+ public abstract void f4433();
+ public abstract void f4434();
+ public abstract void f4435();
+ public abstract void f4436();
+ public abstract void f4437();
+ public abstract void f4438();
+ public abstract void f4439();
+ public abstract void f4440();
+ public abstract void f4441();
+ public abstract void f4442();
+ public abstract void f4443();
+ public abstract void f4444();
+ public abstract void f4445();
+ public abstract void f4446();
+ public abstract void f4447();
+ public abstract void f4448();
+ public abstract void f4449();
+ public abstract void f4450();
+ public abstract void f4451();
+ public abstract void f4452();
+ public abstract void f4453();
+ public abstract void f4454();
+ public abstract void f4455();
+ public abstract void f4456();
+ public abstract void f4457();
+ public abstract void f4458();
+ public abstract void f4459();
+ public abstract void f4460();
+ public abstract void f4461();
+ public abstract void f4462();
+ public abstract void f4463();
+ public abstract void f4464();
+ public abstract void f4465();
+ public abstract void f4466();
+ public abstract void f4467();
+ public abstract void f4468();
+ public abstract void f4469();
+ public abstract void f4470();
+ public abstract void f4471();
+ public abstract void f4472();
+ public abstract void f4473();
+ public abstract void f4474();
+ public abstract void f4475();
+ public abstract void f4476();
+ public abstract void f4477();
+ public abstract void f4478();
+ public abstract void f4479();
+ public abstract void f4480();
+ public abstract void f4481();
+ public abstract void f4482();
+ public abstract void f4483();
+ public abstract void f4484();
+ public abstract void f4485();
+ public abstract void f4486();
+ public abstract void f4487();
+ public abstract void f4488();
+ public abstract void f4489();
+ public abstract void f4490();
+ public abstract void f4491();
+ public abstract void f4492();
+ public abstract void f4493();
+ public abstract void f4494();
+ public abstract void f4495();
+ public abstract void f4496();
+ public abstract void f4497();
+ public abstract void f4498();
+ public abstract void f4499();
+ public abstract void f4500();
+ public abstract void f4501();
+ public abstract void f4502();
+ public abstract void f4503();
+ public abstract void f4504();
+ public abstract void f4505();
+ public abstract void f4506();
+ public abstract void f4507();
+ public abstract void f4508();
+ public abstract void f4509();
+ public abstract void f4510();
+ public abstract void f4511();
+ public abstract void f4512();
+ public abstract void f4513();
+ public abstract void f4514();
+ public abstract void f4515();
+ public abstract void f4516();
+ public abstract void f4517();
+ public abstract void f4518();
+ public abstract void f4519();
+ public abstract void f4520();
+ public abstract void f4521();
+ public abstract void f4522();
+ public abstract void f4523();
+ public abstract void f4524();
+ public abstract void f4525();
+ public abstract void f4526();
+ public abstract void f4527();
+ public abstract void f4528();
+ public abstract void f4529();
+ public abstract void f4530();
+ public abstract void f4531();
+ public abstract void f4532();
+ public abstract void f4533();
+ public abstract void f4534();
+ public abstract void f4535();
+ public abstract void f4536();
+ public abstract void f4537();
+ public abstract void f4538();
+ public abstract void f4539();
+ public abstract void f4540();
+ public abstract void f4541();
+ public abstract void f4542();
+ public abstract void f4543();
+ public abstract void f4544();
+ public abstract void f4545();
+ public abstract void f4546();
+ public abstract void f4547();
+ public abstract void f4548();
+ public abstract void f4549();
+ public abstract void f4550();
+ public abstract void f4551();
+ public abstract void f4552();
+ public abstract void f4553();
+ public abstract void f4554();
+ public abstract void f4555();
+ public abstract void f4556();
+ public abstract void f4557();
+ public abstract void f4558();
+ public abstract void f4559();
+ public abstract void f4560();
+ public abstract void f4561();
+ public abstract void f4562();
+ public abstract void f4563();
+ public abstract void f4564();
+ public abstract void f4565();
+ public abstract void f4566();
+ public abstract void f4567();
+ public abstract void f4568();
+ public abstract void f4569();
+ public abstract void f4570();
+ public abstract void f4571();
+ public abstract void f4572();
+ public abstract void f4573();
+ public abstract void f4574();
+ public abstract void f4575();
+ public abstract void f4576();
+ public abstract void f4577();
+ public abstract void f4578();
+ public abstract void f4579();
+ public abstract void f4580();
+ public abstract void f4581();
+ public abstract void f4582();
+ public abstract void f4583();
+ public abstract void f4584();
+ public abstract void f4585();
+ public abstract void f4586();
+ public abstract void f4587();
+ public abstract void f4588();
+ public abstract void f4589();
+ public abstract void f4590();
+ public abstract void f4591();
+ public abstract void f4592();
+ public abstract void f4593();
+ public abstract void f4594();
+ public abstract void f4595();
+ public abstract void f4596();
+ public abstract void f4597();
+ public abstract void f4598();
+ public abstract void f4599();
+ public abstract void f4600();
+ public abstract void f4601();
+ public abstract void f4602();
+ public abstract void f4603();
+ public abstract void f4604();
+ public abstract void f4605();
+ public abstract void f4606();
+ public abstract void f4607();
+ public abstract void f4608();
+ public abstract void f4609();
+ public abstract void f4610();
+ public abstract void f4611();
+ public abstract void f4612();
+ public abstract void f4613();
+ public abstract void f4614();
+ public abstract void f4615();
+ public abstract void f4616();
+ public abstract void f4617();
+ public abstract void f4618();
+ public abstract void f4619();
+ public abstract void f4620();
+ public abstract void f4621();
+ public abstract void f4622();
+ public abstract void f4623();
+ public abstract void f4624();
+ public abstract void f4625();
+ public abstract void f4626();
+ public abstract void f4627();
+ public abstract void f4628();
+ public abstract void f4629();
+ public abstract void f4630();
+ public abstract void f4631();
+ public abstract void f4632();
+ public abstract void f4633();
+ public abstract void f4634();
+ public abstract void f4635();
+ public abstract void f4636();
+ public abstract void f4637();
+ public abstract void f4638();
+ public abstract void f4639();
+ public abstract void f4640();
+ public abstract void f4641();
+ public abstract void f4642();
+ public abstract void f4643();
+ public abstract void f4644();
+ public abstract void f4645();
+ public abstract void f4646();
+ public abstract void f4647();
+ public abstract void f4648();
+ public abstract void f4649();
+ public abstract void f4650();
+ public abstract void f4651();
+ public abstract void f4652();
+ public abstract void f4653();
+ public abstract void f4654();
+ public abstract void f4655();
+ public abstract void f4656();
+ public abstract void f4657();
+ public abstract void f4658();
+ public abstract void f4659();
+ public abstract void f4660();
+ public abstract void f4661();
+ public abstract void f4662();
+ public abstract void f4663();
+ public abstract void f4664();
+ public abstract void f4665();
+ public abstract void f4666();
+ public abstract void f4667();
+ public abstract void f4668();
+ public abstract void f4669();
+ public abstract void f4670();
+ public abstract void f4671();
+ public abstract void f4672();
+ public abstract void f4673();
+ public abstract void f4674();
+ public abstract void f4675();
+ public abstract void f4676();
+}