diff options
Diffstat (limited to 'src')
105 files changed, 7098 insertions, 6333 deletions
diff --git a/src/3rdparty/png_dependency.pri b/src/3rdparty/png_dependency.pri new file mode 100644 index 0000000000..78da861f77 --- /dev/null +++ b/src/3rdparty/png_dependency.pri @@ -0,0 +1,6 @@ +contains(QT_CONFIG, system-png) { + unix|mingw: LIBS_PRIVATE += -lpng + else: LIBS += libpng.lib +} else: contains(QT_CONFIG, png) { + include($$PWD/libpng.pri) +} diff --git a/src/corelib/arch/qatomic_mips.h b/src/corelib/arch/qatomic_mips.h deleted file mode 100644 index 8c400e0076..0000000000 --- a/src/corelib/arch/qatomic_mips.h +++ /dev/null @@ -1,351 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Copyright (C) 2011 Thiago Macieira <thiago@kde.org> -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL21$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QATOMIC_MIPS_H -#define QATOMIC_MIPS_H - -#include <QtCore/qgenericatomic.h> - -QT_BEGIN_NAMESPACE - -#if 0 -// silence syncqt warnings -QT_END_NAMESPACE -#pragma qt_sync_skip_header_check -#pragma qt_sync_stop_processing -#endif - -#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT_TEST_AND_SET_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_ALWAYS_NATIVE - -#define Q_ATOMIC_INT32_IS_SUPPORTED -#define Q_ATOMIC_INT32_REFERENCE_COUNTING_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT32_TEST_AND_SET_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT32_FETCH_AND_STORE_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT32_FETCH_AND_ADD_IS_ALWAYS_NATIVE - -#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE -#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE -#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_ALWAYS_NATIVE - -template <int size> struct QBasicAtomicOps: QGenericAtomicOps<QBasicAtomicOps<size> > -{ - template <typename T> - static void acquireMemoryFence(const T &) Q_DECL_NOTHROW; - template <typename T> - static void releaseMemoryFence(const T &) Q_DECL_NOTHROW; - template <typename T> - static void orderedMemoryFence(const T &) Q_DECL_NOTHROW; - - static inline Q_DECL_CONSTEXPR bool isReferenceCountingNative() Q_DECL_NOTHROW { return true; } - template <typename T> static bool ref(T &_q_value) Q_DECL_NOTHROW; - template <typename T> static bool deref(T &_q_value) Q_DECL_NOTHROW; - - static inline Q_DECL_CONSTEXPR bool isTestAndSetNative() Q_DECL_NOTHROW { return true; } - static inline Q_DECL_CONSTEXPR bool isTestAndSetWaitFree() Q_DECL_NOTHROW { return false; } - template <typename T> static bool - testAndSetRelaxed(T &_q_value, T expectedValue, T newValue, T *currentValue = 0) Q_DECL_NOTHROW; - - static inline Q_DECL_CONSTEXPR bool isFetchAndStoreNative() Q_DECL_NOTHROW { return true; } - template <typename T> static T fetchAndStoreRelaxed(T &_q_value, T newValue) Q_DECL_NOTHROW; - - static inline Q_DECL_CONSTEXPR bool isFetchAndAddNative() Q_DECL_NOTHROW { return true; } - template <typename T> static - T fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW; -}; - -template <typename T> struct QAtomicOps : QBasicAtomicOps<sizeof(T)> -{ - typedef T Type; -}; - -#if defined(Q_CC_GNU) - -#if defined(_MIPS_ARCH_MIPS1) || (!defined(Q_CC_CLANG) && defined(__mips) && __mips - 0 == 1) -# error "Sorry, the MIPS1 architecture is not supported" -# error "please set '-march=' to your architecture (e.g., -march=mips32)" -#endif - -template <int size> template <typename T> inline -void QBasicAtomicOps<size>::acquireMemoryFence(const T &) Q_DECL_NOTHROW -{ - asm volatile (".set push\n" - ".set mips32\n" - "sync 0x11\n" - ".set pop\n" ::: "memory"); -} - -template <int size> template <typename T> inline -void QBasicAtomicOps<size>::releaseMemoryFence(const T &) Q_DECL_NOTHROW -{ - asm volatile (".set push\n" - ".set mips32\n" - "sync 0x12\n" - ".set pop\n" ::: "memory"); -} - -template <int size> template <typename T> inline -void QBasicAtomicOps<size>::orderedMemoryFence(const T &) Q_DECL_NOTHROW -{ - asm volatile (".set push\n" - ".set mips32\n" - "sync 0\n" - ".set pop\n" ::: "memory"); -} - -template<> template<typename T> inline -bool QBasicAtomicOps<4>::ref(T &_q_value) Q_DECL_NOTHROW -{ - T originalValue; - T newValue; - asm volatile("0:\n" - "ll %[originalValue], %[_q_value]\n" - "addiu %[newValue], %[originalValue], %[one]\n" - "sc %[newValue], %[_q_value]\n" - "beqz %[newValue], 0b\n" - "nop\n" - : [originalValue] "=&r" (originalValue), - [_q_value] "+m" (_q_value), - [newValue] "=&r" (newValue) - : [one] "i" (1) - : "cc", "memory"); - return originalValue != T(-1); -} - -template<> template<typename T> inline -bool QBasicAtomicOps<4>::deref(T &_q_value) Q_DECL_NOTHROW -{ - T originalValue; - T newValue; - asm volatile("0:\n" - "ll %[originalValue], %[_q_value]\n" - "addiu %[newValue], %[originalValue], %[minusOne]\n" - "sc %[newValue], %[_q_value]\n" - "beqz %[newValue], 0b\n" - "nop\n" - : [originalValue] "=&r" (originalValue), - [_q_value] "+m" (_q_value), - [newValue] "=&r" (newValue) - : [minusOne] "i" (-1) - : "cc", "memory"); - return originalValue != 1; -} - -template<> template <typename T> inline -bool QBasicAtomicOps<4>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue, T *currentValue) Q_DECL_NOTHROW -{ - T result; - T tempValue; - asm volatile("0:\n" - "ll %[tempValue], %[_q_value]\n" - "xor %[result], %[tempValue], %[expectedValue]\n" - "bnez %[result], 0f\n" - "nop\n" - "move %[tempValue], %[newValue]\n" - "sc %[tempValue], %[_q_value]\n" - "beqz %[tempValue], 0b\n" - "nop\n" - "0:\n" - : [result] "=&r" (result), - [tempValue] "=&r" (tempValue), - [_q_value] "+m" (_q_value) - : [expectedValue] "r" (expectedValue), - [newValue] "r" (newValue) - : "cc", "memory"); - if (currentValue) - *currentValue = tempValue; - return result == 0; -} - -template<> template <typename T> inline -T QBasicAtomicOps<4>::fetchAndStoreRelaxed(T &_q_value, T newValue) Q_DECL_NOTHROW -{ - T originalValue; - T tempValue; - asm volatile("0:\n" - "ll %[originalValue], %[_q_value]\n" - "move %[tempValue], %[newValue]\n" - "sc %[tempValue], %[_q_value]\n" - "beqz %[tempValue], 0b\n" - "nop\n" - : [originalValue] "=&r" (originalValue), - [tempValue] "=&r" (tempValue), - [_q_value] "+m" (_q_value) - : [newValue] "r" (newValue) - : "cc", "memory"); - return originalValue; -} - -template<> template <typename T> inline -T QBasicAtomicOps<4>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW -{ - T originalValue; - T newValue; - asm volatile("0:\n" - "ll %[originalValue], %[_q_value]\n" - "addu %[newValue], %[originalValue], %[valueToAdd]\n" - "sc %[newValue], %[_q_value]\n" - "beqz %[newValue], 0b\n" - "nop\n" - : [originalValue] "=&r" (originalValue), - [_q_value] "+m" (_q_value), - [newValue] "=&r" (newValue) - : [valueToAdd] "r" (valueToAdd * QAtomicAdditiveType<T>::AddScale) - : "cc", "memory"); - return originalValue; -} - -#if defined(Q_PROCESSOR_MIPS_64) - -#define Q_ATOMIC_INT64_IS_SUPPORTED -#define Q_ATOMIC_INT64_REFERENCE_COUNTING_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT64_TEST_AND_SET_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT64_FETCH_AND_STORE_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT64_FETCH_AND_ADD_IS_ALWAYS_NATIVE - -template<> struct QAtomicOpsSupport<8> { enum { IsSupported = 1 }; }; - -template<> template<typename T> inline -bool QBasicAtomicOps<8>::ref(T &_q_value) Q_DECL_NOTHROW -{ - T originalValue; - T newValue; - asm volatile("0:\n" - "lld %[originalValue], %[_q_value]\n" - "addiu %[newValue], %[originalValue], %[one]\n" - "scd %[newValue], %[_q_value]\n" - "beqz %[newValue], 0b\n" - "nop\n" - : [originalValue] "=&r" (originalValue), - [_q_value] "+m" (_q_value), - [newValue] "=&r" (newValue) - : [one] "i" (1) - : "cc", "memory"); - return originalValue != T(-1); -} - -template<> template<typename T> inline -bool QBasicAtomicOps<8>::deref(T &_q_value) Q_DECL_NOTHROW -{ - T originalValue; - T newValue; - asm volatile("0:\n" - "lld %[originalValue], %[_q_value]\n" - "addiu %[newValue], %[originalValue], %[minusOne]\n" - "scd %[newValue], %[_q_value]\n" - "beqz %[newValue], 0b\n" - "nop\n" - : [originalValue] "=&r" (originalValue), - [_q_value] "+m" (_q_value), - [newValue] "=&r" (newValue) - : [minusOne] "i" (-1) - : "cc", "memory"); - return originalValue != 1; -} - -template<> template <typename T> inline -bool QBasicAtomicOps<8>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue, T *currentValue) Q_DECL_NOTHROW -{ - T result; - T tempValue; - asm volatile("0:\n" - "lld %[tempValue], %[_q_value]\n" - "xor %[result], %[tempValue], %[expectedValue]\n" - "bnez %[result], 0f\n" - "nop\n" - "move %[tempValue], %[newValue]\n" - "scd %[tempValue], %[_q_value]\n" - "beqz %[tempValue], 0b\n" - "nop\n" - "0:\n" - : [result] "=&r" (result), - [tempValue] "=&r" (tempValue), - [_q_value] "+m" (_q_value) - : [expectedValue] "r" (expectedValue), - [newValue] "r" (newValue) - : "cc", "memory"); - if (currentValue) - *currentValue = tempValue; - return result == 0; -} - -template<> template <typename T> inline -T QBasicAtomicOps<8>::fetchAndStoreRelaxed(T &_q_value, T newValue) Q_DECL_NOTHROW -{ - T originalValue; - T tempValue; - asm volatile("0:\n" - "lld %[originalValue], %[_q_value]\n" - "move %[tempValue], %[newValue]\n" - "scd %[tempValue], %[_q_value]\n" - "beqz %[tempValue], 0b\n" - "nop\n" - : [originalValue] "=&r" (originalValue), - [tempValue] "=&r" (tempValue), - [_q_value] "+m" (_q_value) - : [newValue] "r" (newValue) - : "cc", "memory"); - return originalValue; -} - -template<> template <typename T> inline -T QBasicAtomicOps<8>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd) Q_DECL_NOTHROW -{ - T originalValue; - T newValue; - asm volatile("0:\n" - "lld %[originalValue], %[_q_value]\n" - "addu %[newValue], %[originalValue], %[valueToAdd]\n" - "scd %[newValue], %[_q_value]\n" - "beqz %[newValue], 0b\n" - "nop\n" - : [originalValue] "=&r" (originalValue), - [_q_value] "+m" (_q_value), - [newValue] "=&r" (newValue) - : [valueToAdd] "r" (valueToAdd * QAtomicAdditiveType<T>::AddScale) - : "cc", "memory"); - return originalValue; -} - -#endif // MIPS64 - -#else -# error "This compiler for MIPS is not supported" -#endif // Q_CC_GNU - -QT_END_NAMESPACE - -#endif // QATOMIC_MIPS_H diff --git a/src/corelib/codecs/qtextcodec.cpp b/src/corelib/codecs/qtextcodec.cpp index 88987865c4..c55f93b949 100644 --- a/src/corelib/codecs/qtextcodec.cpp +++ b/src/corelib/codecs/qtextcodec.cpp @@ -993,7 +993,7 @@ QString QTextDecoder::toUnicode(const char *chars, int len) } // in qstring.cpp: -void qt_from_latin1(ushort *dst, const char *str, size_t size); +void qt_from_latin1(ushort *dst, const char *str, size_t size) Q_DECL_NOTHROW; /*! \overload diff --git a/src/corelib/codecs/qutfcodec.cpp b/src/corelib/codecs/qutfcodec.cpp index 98d4b2e4e3..a64b3d167e 100644 --- a/src/corelib/codecs/qutfcodec.cpp +++ b/src/corelib/codecs/qutfcodec.cpp @@ -296,7 +296,6 @@ QString QUtf8::convertToUnicode(const char *chars, int len, QTextCodec::Converte { bool headerdone = false; ushort replacement = QChar::ReplacementCharacter; - int need = 0; int invalid = 0; int res; uchar ch = 0; @@ -311,7 +310,7 @@ QString QUtf8::convertToUnicode(const char *chars, int len, QTextCodec::Converte // 1 of 2 bytes invalid continuation +1 (need to insert replacement and restart) // 2 of 3 bytes same +1 (same) // 3 of 4 bytes same +1 (same) - QString result(need + len + 1, Qt::Uninitialized); + QString result(len + 1, Qt::Uninitialized); ushort *dst = reinterpret_cast<ushort *>(const_cast<QChar *>(result.constData())); const uchar *src = reinterpret_cast<const uchar *>(chars); diff --git a/src/corelib/doc/src/external-resources.qdoc b/src/corelib/doc/src/external-resources.qdoc index d612ce8280..3d01b9ee2d 100644 --- a/src/corelib/doc/src/external-resources.qdoc +++ b/src/corelib/doc/src/external-resources.qdoc @@ -57,16 +57,6 @@ */ /*! - \externalpage http://doc-snapshot.qt-project.org/qt5-5.4/qtdesigner-manual.html - \title Using a Designer UI File in Your Application -*/ - -/*! - \externalpage http://doc-snapshot.qt-project.org/qt5-5.4/designer-widget-mode.html#the-property-editor - \title Qt Designer's Widget Editing Mode#The Property Editor -*/ - -/*! \externalpage http://marcmutz.wordpress.com/effective-qt/containers/#containers-qlist \title Pros and Cons of Using QList */ diff --git a/src/corelib/global/qcompilerdetection.h b/src/corelib/global/qcompilerdetection.h index 57745a2fdf..24d022059d 100644 --- a/src/corelib/global/qcompilerdetection.h +++ b/src/corelib/global/qcompilerdetection.h @@ -914,6 +914,13 @@ //# define Q_COMPILER_UNIFORM_INIT # define Q_COMPILER_UNRESTRICTED_UNIONS # endif +# if _MSC_FULL_VER >= 190023419 +# define Q_COMPILER_ATTRIBUTES +// Almost working, see https://connect.microsoft.com/VisualStudio/feedback/details/2011648 +//# define Q_COMPILER_CONSTEXPR +# define Q_COMPILER_THREADSAFE_STATICS +# define Q_COMPILER_UNIFORM_INIT +# endif # endif /* __cplusplus */ #endif /* Q_CC_MSVC */ diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp index 8397b31818..c1ab2d69fa 100644 --- a/src/corelib/global/qglobal.cpp +++ b/src/corelib/global/qglobal.cpp @@ -3842,7 +3842,8 @@ int qrand() independent copy of the object. \li \c Q_MOVABLE_TYPE specifies that \a Type has a constructor and/or a destructor but can be moved in memory using \c - memcpy(). + memcpy(). Note: despite the name, this has nothing to do with move + constructors or C++ move semantics. \li \c Q_COMPLEX_TYPE (the default) specifies that \a Type has constructors and/or a destructor and that it may not be moved in memory. diff --git a/src/corelib/io/qiodevice.cpp b/src/corelib/io/qiodevice.cpp index ce6225266a..64078b5c54 100644 --- a/src/corelib/io/qiodevice.cpp +++ b/src/corelib/io/qiodevice.cpp @@ -973,7 +973,7 @@ QByteArray QIODevice::read(qint64 maxSize) /*! \overload - Reads all available data from the device, and returns it as a + Reads all remaining data from the device, and returns it as a byte array. This function has no way of reporting errors; returning an empty diff --git a/src/corelib/io/qprocess.cpp b/src/corelib/io/qprocess.cpp index 3539c75548..b09c99985c 100644 --- a/src/corelib/io/qprocess.cpp +++ b/src/corelib/io/qprocess.cpp @@ -1179,14 +1179,15 @@ bool QProcessPrivate::_q_startupNotification() if (startupSocketNotifier) startupSocketNotifier->setEnabled(false); - if (processStarted()) { + QString errorMessage; + if (processStarted(&errorMessage)) { q->setProcessState(QProcess::Running); emit q->started(QProcess::QPrivateSignal()); return true; } q->setProcessState(QProcess::NotRunning); - setErrorAndEmit(QProcess::FailedToStart, errorString); // the error string was already set + setErrorAndEmit(QProcess::FailedToStart, errorMessage); #ifdef Q_OS_UNIX // make sure the process manager removes this entry waitForDeadChild(); diff --git a/src/corelib/io/qprocess_p.h b/src/corelib/io/qprocess_p.h index fc6b5345d1..d3f251c399 100644 --- a/src/corelib/io/qprocess_p.h +++ b/src/corelib/io/qprocess_p.h @@ -352,7 +352,7 @@ public: #elif defined(QPROCESS_USE_SPAWN) pid_t spawnChild(pid_t *ppid, const char *workingDirectory, char **argv, char **envp); #endif - bool processStarted(); + bool processStarted(QString *errorMessage = Q_NULLPTR); void terminateProcess(); void killProcess(); void findExitCode(); diff --git a/src/corelib/io/qprocess_unix.cpp b/src/corelib/io/qprocess_unix.cpp index a958aa4322..38f7ecd568 100644 --- a/src/corelib/io/qprocess_unix.cpp +++ b/src/corelib/io/qprocess_unix.cpp @@ -720,7 +720,7 @@ report_errno: } #endif -bool QProcessPrivate::processStarted() +bool QProcessPrivate::processStarted(QString *errorMessage) { char buf[errorBufferMax]; int i = 0; @@ -744,8 +744,8 @@ bool QProcessPrivate::processStarted() #endif // did we read an error message? - if (i > 0) - q_func()->setErrorString(QString::fromLocal8Bit(buf, i)); + if ((i > 0) && errorMessage) + *errorMessage = QString::fromLocal8Bit(buf, i); return i <= 0; } diff --git a/src/corelib/io/qprocess_win.cpp b/src/corelib/io/qprocess_win.cpp index e77249975c..80e6d5bb61 100644 --- a/src/corelib/io/qprocess_win.cpp +++ b/src/corelib/io/qprocess_win.cpp @@ -543,7 +543,7 @@ void QProcessPrivate::startProcess() _q_startupNotification(); } -bool QProcessPrivate::processStarted() +bool QProcessPrivate::processStarted(QString * /*errorMessage*/) { return processState == QProcess::Running; } diff --git a/src/corelib/io/qprocess_wince.cpp b/src/corelib/io/qprocess_wince.cpp index 807472b7b2..9b63ece15c 100644 --- a/src/corelib/io/qprocess_wince.cpp +++ b/src/corelib/io/qprocess_wince.cpp @@ -160,7 +160,7 @@ void QProcessPrivate::startProcess() _q_startupNotification(); } -bool QProcessPrivate::processStarted() +bool QProcessPrivate::processStarted(QString * /*errorMessage*/) { return processState == QProcess::Running; } diff --git a/src/corelib/itemmodels/qitemselectionmodel.cpp b/src/corelib/itemmodels/qitemselectionmodel.cpp index 51c670f79e..222e722c06 100644 --- a/src/corelib/itemmodels/qitemselectionmodel.cpp +++ b/src/corelib/itemmodels/qitemselectionmodel.cpp @@ -1646,6 +1646,7 @@ QModelIndexList QItemSelectionModel::selectedIndexes() const /*! \since 4.2 Returns the indexes in the given \a column for the rows where all columns are selected. + The list is not sorted. \sa selectedIndexes(), selectedColumns() */ diff --git a/src/corelib/json/qjson_p.h b/src/corelib/json/qjson_p.h index 5fc021c841..35a16b0ef6 100644 --- a/src/corelib/json/qjson_p.h +++ b/src/corelib/json/qjson_p.h @@ -280,7 +280,7 @@ static inline int compressedNumber(double d) if (non_int) return INT_MAX; - bool neg = (val >> 63); + bool neg = (val >> 63) != 0; val &= fraction_mask; val |= ((quint64)1 << 52); int res = (int)(val >> (52 - exp)); @@ -543,7 +543,7 @@ public: offset tableOffset; // content follows here - inline bool isObject() const { return is_object; } + inline bool isObject() const { return !!is_object; } inline bool isArray() const { return !isObject(); } inline offset *table() const { return (offset *) (((char *) this) + tableOffset); } diff --git a/src/corelib/json/qjsonvalue.cpp b/src/corelib/json/qjsonvalue.cpp index 4c7a44b4a0..328e07d18e 100644 --- a/src/corelib/json/qjsonvalue.cpp +++ b/src/corelib/json/qjsonvalue.cpp @@ -173,7 +173,7 @@ QJsonValue::QJsonValue(int n) QJsonValue::QJsonValue(qint64 n) : d(0), t(Double) { - this->dbl = n; + this->dbl = double(n); } /*! @@ -515,7 +515,7 @@ bool QJsonValue::toBool(bool defaultValue) const int QJsonValue::toInt(int defaultValue) const { if (t == Double && int(dbl) == dbl) - return dbl; + return int(dbl); return defaultValue; } diff --git a/src/corelib/kernel/kernel.pri b/src/corelib/kernel/kernel.pri index 600c28b5d7..f09fa4debc 100644 --- a/src/corelib/kernel/kernel.pri +++ b/src/corelib/kernel/kernel.pri @@ -101,7 +101,8 @@ winrt { mac { HEADERS += \ kernel/qcfsocketnotifier_p.h \ - kernel/qcore_mac_p.h + kernel/qcore_mac_p.h \ + kernel/qeventdispatcher_cf_p.h SOURCES += \ kernel/qcfsocketnotifier.cpp \ @@ -109,18 +110,14 @@ mac { kernel/qcore_mac.cpp OBJECTIVE_SOURCES += \ - kernel/qcore_mac_objc.mm + kernel/qcore_mac_objc.mm \ + kernel/qeventdispatcher_cf.mm LIBS_PRIVATE += -framework Foundation - osx: LIBS_PRIVATE += -framework CoreServices + osx: LIBS_PRIVATE += -framework CoreServices -framework AppKit ios { - OBJECTIVE_SOURCES += \ - kernel/qeventdispatcher_cf.mm - HEADERS += \ - kernel/qeventdispatcher_cf_p.h - # We need UIKit for UIDevice LIBS_PRIVATE += -framework UIKit } diff --git a/src/corelib/kernel/qeventdispatcher_cf.mm b/src/corelib/kernel/qeventdispatcher_cf.mm index 5b9ad38b28..240dfed79f 100644 --- a/src/corelib/kernel/qeventdispatcher_cf.mm +++ b/src/corelib/kernel/qeventdispatcher_cf.mm @@ -43,7 +43,11 @@ #include <limits> -#include <UIKit/UIApplication.h> +#ifdef Q_OS_OSX +# include <AppKit/NSApplication.h> +#else +# include <UIKit/UIApplication.h> +#endif @interface RunLoopModeTracker : NSObject { QStack<CFStringRef> m_runLoopModes; @@ -61,7 +65,11 @@ addObserver:self selector:@selector(receivedNotification:) name:nil +#ifdef Q_OS_OSX + object:[NSApplication sharedApplication]]; +#else object:[UIApplication sharedApplication]]; +#endif } return self; diff --git a/src/corelib/kernel/qfunctions_wince.h b/src/corelib/kernel/qfunctions_wince.h index d172acceec..4273070c11 100644 --- a/src/corelib/kernel/qfunctions_wince.h +++ b/src/corelib/kernel/qfunctions_wince.h @@ -103,7 +103,7 @@ struct tm { int tm_year; /* years since 1900 */ int tm_wday; /* days since Sunday - [0,6] */ int tm_yday; /* days since January 1 - [0,365] */ - int tm_isdst; /* daylight savings time flag */ + int tm_isdst; /* daylight-saving time flag */ }; #endif // _TM_DEFINED diff --git a/src/corelib/plugin/qplugin.qdoc b/src/corelib/plugin/qplugin.qdoc index 00ecb30430..1b394c4174 100644 --- a/src/corelib/plugin/qplugin.qdoc +++ b/src/corelib/plugin/qplugin.qdoc @@ -93,9 +93,9 @@ \macro Q_IMPORT_PLUGIN(PluginName) \relates <QtPlugin> - This macro imports the plugin named \a PluginName, corresponding - to the \l{qmake Variable Reference#TARGET}{TARGET} specified in the - plugin's project file. + This macro imports the plugin named \a PluginName, which corresponds + with the name of the class that declares metadata for the plugin with + Q_PLUGIN_METADATA(). Inserting this macro into your application's source code will allow you to make use of a static plugin. diff --git a/src/corelib/qtzlib.pro b/src/corelib/qtzlib.pro new file mode 100644 index 0000000000..744750fbbe --- /dev/null +++ b/src/corelib/qtzlib.pro @@ -0,0 +1,7 @@ +TARGET = QtZlib +MODULE = zlib +MAKEFILE = Makefile.qtzlib +CONFIG += internal_module header_module alien_syncqt +QT = + +load(qt_module) diff --git a/src/corelib/thread/qbasicatomic.h b/src/corelib/thread/qbasicatomic.h index a747134df3..c29b80d3d0 100644 --- a/src/corelib/thread/qbasicatomic.h +++ b/src/corelib/thread/qbasicatomic.h @@ -62,8 +62,6 @@ # include "QtCore/qatomic_armv5.h" #elif defined(Q_PROCESSOR_IA64) # include "QtCore/qatomic_ia64.h" -#elif defined(Q_PROCESSOR_MIPS) -# include "QtCore/qatomic_mips.h" #elif defined(Q_PROCESSOR_X86) # include <QtCore/qatomic_x86.h> diff --git a/src/corelib/thread/qmutex.cpp b/src/corelib/thread/qmutex.cpp index 742a572bef..fa3bb080ae 100644 --- a/src/corelib/thread/qmutex.cpp +++ b/src/corelib/thread/qmutex.cpp @@ -139,6 +139,11 @@ public: lock calls unlock(). A non-blocking alternative to lock() is tryLock(). + QMutex is optimized to be fast in the non-contended case. A non-recursive + QMutex will not allocate memory if there is no contention on that mutex. + It is constructed and destroyed with almost no overhead, + which means it is fine to have many mutexes as part of other classes. + \sa QMutexLocker, QReadWriteLock, QSemaphore, QWaitCondition */ @@ -165,6 +170,8 @@ public: a thread may only lock a mutex once. The default is QMutex::NonRecursive. + Recursive mutexes are slower and take more memory than non-recursive ones. + \sa lock(), unlock() */ QMutex::QMutex(RecursionMode mode) diff --git a/src/corelib/tools/qchar.cpp b/src/corelib/tools/qchar.cpp index 5469eee14d..78fa0bccf0 100644 --- a/src/corelib/tools/qchar.cpp +++ b/src/corelib/tools/qchar.cpp @@ -179,8 +179,9 @@ QT_BEGIN_NAMESPACE \value Unicode_6_2 Version 6.2 \value Unicode_6_3 Version 6.3 Since Qt 5.3 \value Unicode_7_0 Version 7.0 Since Qt 5.5 + \value Unicode_8_0 Version 8.0 Since Qt 5.6 \value Unicode_Unassigned The value is not assigned to any character - in version 6.3 of Unicode. + in version 8.0 of Unicode. \sa unicodeVersion(), currentUnicodeVersion() */ @@ -401,6 +402,12 @@ QT_BEGIN_NAMESPACE \value Script_Khudawadi \value Script_Tirhuta \value Script_WarangCiti + \value Script_Ahom + \value Script_AnatolianHieroglyphs + \value Script_Hatran + \value Script_Multani + \value Script_OldHungarian + \value Script_SignWriting \omitvalue ScriptCount @@ -1423,48 +1430,18 @@ QChar::UnicodeVersion QChar::currentUnicodeVersion() Q_DECL_NOTHROW } -template <typename T> -Q_DECL_CONST_FUNCTION static inline T toLowerCase_helper(T uc) Q_DECL_NOTHROW +template <typename Traits, typename T> +Q_DECL_CONST_FUNCTION static inline T convertCase_helper(T uc) Q_DECL_NOTHROW { - const QUnicodeTables::Properties *p = qGetProp(uc); - if (p->lowerCaseSpecial) { - const ushort *specialCase = specialCaseMap + p->lowerCaseDiff; - return (*specialCase == 1) ? specialCase[1] : uc; - } - return uc + p->lowerCaseDiff; -} - -template <typename T> -Q_DECL_CONST_FUNCTION static inline T toUpperCase_helper(T uc) Q_DECL_NOTHROW -{ - const QUnicodeTables::Properties *p = qGetProp(uc); - if (p->upperCaseSpecial) { - const ushort *specialCase = specialCaseMap + p->upperCaseDiff; - return (*specialCase == 1) ? specialCase[1] : uc; - } - return uc + p->upperCaseDiff; -} + const QUnicodeTables::Properties *prop = qGetProp(uc); -template <typename T> -Q_DECL_CONST_FUNCTION static inline T toTitleCase_helper(T uc) Q_DECL_NOTHROW -{ - const QUnicodeTables::Properties *p = qGetProp(uc); - if (p->titleCaseSpecial) { - const ushort *specialCase = specialCaseMap + p->titleCaseDiff; - return (*specialCase == 1) ? specialCase[1] : uc; + if (Q_UNLIKELY(Traits::caseSpecial(prop))) { + const ushort *specialCase = specialCaseMap + Traits::caseDiff(prop); + // so far, there are no special cases beyond BMP (guaranteed by the qunicodetables generator) + return *specialCase == 1 ? specialCase[1] : uc; } - return uc + p->titleCaseDiff; -} -template <typename T> -Q_DECL_CONST_FUNCTION static inline T toCaseFolded_helper(T uc) Q_DECL_NOTHROW -{ - const QUnicodeTables::Properties *p = qGetProp(uc); - if (p->caseFoldSpecial) { - const ushort *specialCase = specialCaseMap + p->caseFoldDiff; - return (*specialCase == 1) ? specialCase[1] : uc; - } - return uc + p->caseFoldDiff; + return uc + Traits::caseDiff(prop); } /*! @@ -1484,7 +1461,7 @@ uint QChar::toLower(uint ucs4) Q_DECL_NOTHROW { if (ucs4 > LastValidCodePoint) return ucs4; - return toLowerCase_helper<uint>(ucs4); + return convertCase_helper<QUnicodeTables::LowercaseTraits>(ucs4); } /*! @@ -1504,7 +1481,7 @@ uint QChar::toUpper(uint ucs4) Q_DECL_NOTHROW { if (ucs4 > LastValidCodePoint) return ucs4; - return toUpperCase_helper<uint>(ucs4); + return convertCase_helper<QUnicodeTables::UppercaseTraits>(ucs4); } /*! @@ -1524,29 +1501,29 @@ uint QChar::toTitleCase(uint ucs4) Q_DECL_NOTHROW { if (ucs4 > LastValidCodePoint) return ucs4; - return toTitleCase_helper<uint>(ucs4); + return convertCase_helper<QUnicodeTables::TitlecaseTraits>(ucs4); } static inline uint foldCase(const ushort *ch, const ushort *start) { - uint c = *ch; - if (QChar(c).isLowSurrogate() && ch > start && QChar(*(ch - 1)).isHighSurrogate()) - c = QChar::surrogateToUcs4(*(ch - 1), c); - return toCaseFolded_helper<uint>(c); + uint ucs4 = *ch; + if (QChar::isLowSurrogate(ucs4) && ch > start && QChar::isHighSurrogate(*(ch - 1))) + ucs4 = QChar::surrogateToUcs4(*(ch - 1), ucs4); + return convertCase_helper<QUnicodeTables::CasefoldTraits>(ucs4); } static inline uint foldCase(uint ch, uint &last) Q_DECL_NOTHROW { - uint c = ch; - if (QChar(c).isLowSurrogate() && QChar(last).isHighSurrogate()) - c = QChar::surrogateToUcs4(last, c); + uint ucs4 = ch; + if (QChar::isLowSurrogate(ucs4) && QChar::isHighSurrogate(last)) + ucs4 = QChar::surrogateToUcs4(last, ucs4); last = ch; - return toCaseFolded_helper<uint>(c); + return convertCase_helper<QUnicodeTables::CasefoldTraits>(ucs4); } static inline ushort foldCase(ushort ch) Q_DECL_NOTHROW { - return toCaseFolded_helper<ushort>(ch); + return convertCase_helper<QUnicodeTables::CasefoldTraits>(ch); } /*! @@ -1565,7 +1542,7 @@ uint QChar::toCaseFolded(uint ucs4) Q_DECL_NOTHROW { if (ucs4 > LastValidCodePoint) return ucs4; - return toCaseFolded_helper<uint>(ucs4); + return convertCase_helper<QUnicodeTables::CasefoldTraits>(ucs4); } /*! diff --git a/src/corelib/tools/qchar.h b/src/corelib/tools/qchar.h index fc1fc7bc16..9833380cc8 100644 --- a/src/corelib/tools/qchar.h +++ b/src/corelib/tools/qchar.h @@ -275,6 +275,14 @@ public: Script_Tirhuta, Script_WarangCiti, + // Unicode 8.0 additions + Script_Ahom, + Script_AnatolianHieroglyphs, + Script_Hatran, + Script_Multani, + Script_OldHungarian, + Script_SignWriting, + ScriptCount }; @@ -365,7 +373,8 @@ public: Unicode_6_1, Unicode_6_2, Unicode_6_3, - Unicode_7_0 + Unicode_7_0, + Unicode_8_0 }; // ****** WHEN ADDING FUNCTIONS, CONSIDER ADDING TO QCharRef TOO diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp index 18fb9db9b6..9bbf5b8944 100644 --- a/src/corelib/tools/qdatetime.cpp +++ b/src/corelib/tools/qdatetime.cpp @@ -1383,7 +1383,7 @@ bool QDate::isLeapYear(int y) QTime uses the 24-hour clock format; it has no concept of AM/PM. Unlike QDateTime, QTime knows nothing about time zones or - daylight savings time (DST). + daylight-saving time (DST). A QTime object is typically created either by giving the number of hours, minutes, seconds, and milliseconds explicitly, or by @@ -1728,7 +1728,7 @@ QTime QTime::addMSecs(int ms) const QTime t; if (isValid()) { if (ms < 0) { - // % not well-defined for -ve, but / is. + // %,/ not well-defined for -ve, so always work with +ve. int negdays = (MSECS_PER_DAY - ms) / MSECS_PER_DAY; t.mds = (ds() + ms + negdays * MSECS_PER_DAY) % MSECS_PER_DAY; } else { @@ -2059,7 +2059,7 @@ void QTime::start() \warning If the system's clock setting has been changed since the last time start() or restart() was called, the result is - undefined. This can happen when daylight savings time is turned on + undefined. This can happen when daylight-saving time is turned on or off. \sa start(), elapsed(), currentTime() @@ -2087,7 +2087,7 @@ int QTime::restart() \warning If the system's clock setting has been changed since the last time start() or restart() was called, the result is - undefined. This can happen when daylight savings time is turned on + undefined. This can happen when daylight-saving time is turned on or off. \sa start(), restart() @@ -2301,7 +2301,7 @@ static qint64 qt_mktime(QDate *date, QTime *time, QDateTimePrivate::DaylightStat } // Calls the platform variant of localtime for the given msecs, and updates -// the date, time, and daylight status with the returned values. +// the date, time, and DST status with the returned values. static bool qt_localtime(qint64 msecsSinceEpoch, QDate *localDate, QTime *localTime, QDateTimePrivate::DaylightStatus *daylightStatus) { @@ -2417,7 +2417,7 @@ static bool epochMSecsToLocalTime(qint64 msecs, QDate *localDate, QTime *localTi *daylightStatus = QDateTimePrivate::StandardTime; return true; } else if (msecs > (qint64(TIME_T_MAX) * 1000)) { - // Docs state any LocalTime after 2037-12-31 *will* have any Daylight Time applied + // Docs state any LocalTime after 2037-12-31 *will* have any DST applied // but this may fall outside the supported time_t range, so need to fake it. // Use existing method to fake the conversion, but this is deeply flawed as it may // apply the conversion from the wrong day number, e.g. if rule is last Sunday of month @@ -2442,7 +2442,7 @@ static bool epochMSecsToLocalTime(qint64 msecs, QDate *localDate, QTime *localTi } // Convert a LocalTime expressed in local msecs encoding and the corresponding -// daylight status into a UTC epoch msecs. Optionally populate the returned +// DST status into a UTC epoch msecs. Optionally populate the returned // values from mktime for the adjusted local date and time. static qint64 localMSecsToEpochMSecs(qint64 localMsecs, QDateTimePrivate::DaylightStatus *daylightStatus, @@ -2457,10 +2457,10 @@ static qint64 localMSecsToEpochMSecs(qint64 localMsecs, if (localMsecs <= qint64(MSECS_PER_DAY)) { - // Docs state any LocalTime before 1970-01-01 will *not* have any Daylight Time applied + // Docs state any LocalTime before 1970-01-01 will *not* have any DST applied // First, if localMsecs is within +/- 1 day of minimum time_t try mktime in case it does - // fall after minimum and needs proper daylight conversion + // fall after minimum and needs proper DST conversion if (localMsecs >= -qint64(MSECS_PER_DAY)) { bool valid; qint64 utcMsecs = qt_mktime(&dt, &tm, daylightStatus, abbreviation, &valid); @@ -2488,11 +2488,11 @@ static qint64 localMSecsToEpochMSecs(qint64 localMsecs, } else if (localMsecs >= msecsMax - MSECS_PER_DAY) { - // Docs state any LocalTime after 2037-12-31 *will* have any Daylight Time applied + // Docs state any LocalTime after 2037-12-31 *will* have any DST applied // but this may fall outside the supported time_t range, so need to fake it. // First, if localMsecs is within +/- 1 day of maximum time_t try mktime in case it does - // fall before maximum and can use proper daylight conversion + // fall before maximum and can use proper DST conversion if (localMsecs <= msecsMax + MSECS_PER_DAY) { bool valid; qint64 utcMsecs = qt_mktime(&dt, &tm, daylightStatus, abbreviation, &valid); @@ -2662,7 +2662,7 @@ void QDateTimePrivate::setDaylightStatus(QDateTimePrivate::DaylightStatus status } } -// Get the Daylight Status if LocalTime set via msecs +// Get the DST Status if LocalTime set via msecs QDateTimePrivate::DaylightStatus QDateTimePrivate::daylightStatus() const { if ((m_status & SetToDaylightTime) == SetToDaylightTime) @@ -2746,7 +2746,7 @@ void QDateTimePrivate::refreshDateTime() #endif // QT_BOOTSTRAPPED // We have a valid date and time and a Qt::LocalTime or Qt::TimeZone that needs calculating - // LocalTime and TimeZone might fall into "missing" DaylightTime transition hour + // LocalTime and TimeZone might fall into a "missing" DST transition hour // Calling toEpochMSecs will adjust the returned date/time if it does QDate testDate; QTime testTime; @@ -2776,8 +2776,8 @@ qint64 QDateTimePrivate::zoneMSecsToEpochMSecs(qint64 zoneMSecs, const QTimeZone { // Get the effective data from QTimeZone QTimeZonePrivate::Data data = zone.d->dataForLocalTime(zoneMSecs); - // Docs state any LocalTime before 1970-01-01 will *not* have any Daylight Time applied - // but all times afterwards will have Daylight Time applied. + // Docs state any LocalTime before 1970-01-01 will *not* have any DST applied + // but all affected times afterwards will have DST applied. if (data.atMSecsSinceEpoch >= 0) { msecsToTime(data.atMSecsSinceEpoch + (data.offsetFromUtc * 1000), localDate, localTime); return data.atMSecsSinceEpoch; @@ -2836,7 +2836,7 @@ qint64 QDateTimePrivate::zoneMSecsToEpochMSecs(qint64 zoneMSecs, const QTimeZone QDateTime expressed as local time; use toUTC() to convert it to UTC. You can also use timeSpec() to find out if a QDateTime object stores a UTC time or a local time. Operations such as - addSecs() and secsTo() are aware of daylight saving time (DST). + addSecs() and secsTo() are aware of daylight-saving time (DST). \note QDateTime does not account for leap seconds. @@ -2866,7 +2866,7 @@ qint64 QDateTimePrivate::zoneMSecsToEpochMSecs(qint64 zoneMSecs, const QTimeZone correctly or not up-to-date, QDateTime will give wrong results as well. - \section2 Daylight Savings Time (DST) + \section2 Daylight-Saving Time (DST) QDateTime takes into account the system's time zone information when dealing with DST. On modern Unix systems, this means it @@ -2884,7 +2884,7 @@ qint64 QDateTimePrivate::zoneMSecsToEpochMSecs(qint64 zoneMSecs, const QTimeZone time zone before 1970, even if the system's time zone database supports that information. - QDateTime takes into consideration the Standard Time to Daylight Time + QDateTime takes into consideration the Standard Time to Daylight-Saving Time transition. For example if the transition is at 2am and the clock goes forward to 3am, then there is a "missing" hour from 02:00:00 to 02:59:59.999 which QDateTime considers to be invalid. Any date maths performed @@ -2896,7 +2896,7 @@ qint64 QDateTimePrivate::zoneMSecsToEpochMSecs(qint64 zoneMSecs, const QTimeZone to define a QDateTime relative to UTC at a fixed offset of a given number of seconds from UTC. For example, an offset of +3600 seconds is one hour ahead of UTC and is usually written in ISO standard notation as - "UTC+01:00". Daylight Savings Time never applies with this TimeSpec. + "UTC+01:00". Daylight-Saving Time never applies with this TimeSpec. There is no explicit size restriction to the offset seconds, but there is an implicit limit imposed when using the toString() and fromString() @@ -2908,8 +2908,8 @@ qint64 QDateTimePrivate::zoneMSecsToEpochMSecs(qint64 zoneMSecs, const QTimeZone A Qt::TimeSpec of Qt::TimeZone is also supported in conjunction with the QTimeZone class. This allows you to define a datetime in a named time zone - adhering to a consistent set of daylight savings transition rules. For - example a time zone of "Europe/Berlin" will apply the daylight savings + adhering to a consistent set of daylight-saving transition rules. For + example a time zone of "Europe/Berlin" will apply the daylight-saving rules as used in Germany since 1970. Note that the transition rules applied depend on the platform support. See the QTimeZone documentation for more details. @@ -3051,7 +3051,7 @@ bool QDateTime::isNull() const the current Qt::TimeSpec, otherwise returns \c false. If the timeSpec() is Qt::LocalTime or Qt::TimeZone then the date and time are - checked to see if they fall in the Standard Time to Daylight Time transition + checked to see if they fall in the Standard Time to Daylight-Saving Time transition hour, i.e. if the transition is at 2am and the clock goes forward to 3am then the time from 02:00:00 to 02:59:59.999 is considered to be invalid. @@ -3142,10 +3142,10 @@ QTimeZone QDateTime::timeZone() const If the timeSpec() is Qt::OffsetFromUTC this will be the value originally set. If the timeSpec() is Qt::TimeZone this will be the offset effective in the - Time Zone including any Daylight Saving Offset. + Time Zone including any Daylight-Saving Offset. If the timeSpec() is Qt::LocalTime this will be the difference between the - Local Time and UTC including any Daylight Saving Offset. + Local Time and UTC including any Daylight-Saving Offset. If the timeSpec() is Qt::UTC this will be 0. @@ -3202,7 +3202,7 @@ QString QDateTime::timeZoneAbbreviation() const /*! \since 5.2 - Returns if this datetime falls in Daylight Savings Time. + Returns if this datetime falls in Daylight-Saving Time. If the Qt::TimeSpec is not Qt::LocalTime or Qt::TimeZone then will always return false. @@ -3415,8 +3415,8 @@ void QDateTime::setMSecsSinceEpoch(qint64 msecs) break; case Qt::TimeZone: #ifndef QT_BOOTSTRAPPED - // Docs state any LocalTime before 1970-01-01 will *not* have any Daylight Time applied - // but all times afterwards will have Daylight Time applied. + // Docs state any LocalTime before 1970-01-01 will *not* have any DST applied + // but all affected times afterwards will have DST applied. if (msecs >= 0) d->m_offsetFromUtc = d->m_timeZone.d->offsetFromUtc(msecs); else @@ -3658,7 +3658,7 @@ QString QDateTime::toString(const QString& format) const negative). If the timeSpec() is Qt::LocalTime and the resulting - date and time fall in the Standard Time to Daylight Time transition + date and time fall in the Standard Time to Daylight-Saving Time transition hour then the result will be adjusted accordingly, i.e. if the transition is at 2am and the clock goes forward to 3am and the result falls between 2am and 3am then the result will be adjusted to fall after 3am. @@ -3693,7 +3693,7 @@ QDateTime QDateTime::addDays(qint64 ndays) const is negative). If the timeSpec() is Qt::LocalTime and the resulting - date and time fall in the Standard Time to Daylight Time transition + date and time fall in the Standard Time to Daylight-Saving Time transition hour then the result will be adjusted accordingly, i.e. if the transition is at 2am and the clock goes forward to 3am and the result falls between 2am and 3am then the result will be adjusted to fall after 3am. @@ -3728,7 +3728,7 @@ QDateTime QDateTime::addMonths(int nmonths) const negative). If the timeSpec() is Qt::LocalTime and the resulting - date and time fall in the Standard Time to Daylight Time transition + date and time fall in the Standard Time to Daylight-Saving Time transition hour then the result will be adjusted accordingly, i.e. if the transition is at 2am and the clock goes forward to 3am and the result falls between 2am and 3am then the result will be adjusted to fall after 3am. @@ -3788,7 +3788,7 @@ QDateTime QDateTime::addMSecs(qint64 msecs) const QDateTime dt(*this); if (d->m_spec == Qt::LocalTime || d->m_spec == Qt::TimeZone) - // Convert to real UTC first in case crosses daylight transition + // Convert to real UTC first in case crosses DST transition dt.setMSecsSinceEpoch(d->toMSecsSinceEpoch() + msecs); else // No need to convert, just add on @@ -3823,8 +3823,8 @@ qint64 QDateTime::daysTo(const QDateTime &other) const the value returned is negative. Before performing the comparison, the two datetimes are converted - to Qt::UTC to ensure that the result is correct if one of the two - datetimes has daylight saving time (DST) and the other doesn't. + to Qt::UTC to ensure that the result is correct if daylight-saving + (DST) applies to one of the two datetimes but not the other. Returns 0 if either datetime is invalid. @@ -3845,8 +3845,8 @@ qint64 QDateTime::secsTo(const QDateTime &other) const the value returned is negative. Before performing the comparison, the two datetimes are converted - to Qt::UTC to ensure that the result is correct if one of the two - datetimes has daylight saving time (DST) and the other doesn't. + to Qt::UTC to ensure that the result is correct if daylight-saving + (DST) applies to one of the two datetimes and but not the other. Returns 0 if either datetime is invalid. diff --git a/src/corelib/tools/qelapsedtimer.cpp b/src/corelib/tools/qelapsedtimer.cpp index 41e8b4854d..8360f11632 100644 --- a/src/corelib/tools/qelapsedtimer.cpp +++ b/src/corelib/tools/qelapsedtimer.cpp @@ -83,7 +83,7 @@ QT_BEGIN_NAMESPACE platforms that support it (see QElapsedTimer::isMonotonic()). This has the added benefit that QElapsedTimer is immune to time adjustments, such as the user correcting the time. Also unlike QTime, QElapsedTimer is - immune to changes in the timezone settings, such as daylight saving + immune to changes in the timezone settings, such as daylight-saving periods. On the other hand, this means QElapsedTimer values can only be compared diff --git a/src/corelib/tools/qsimd.cpp b/src/corelib/tools/qsimd.cpp index ad02d2c147..3e4fdfaaf1 100644 --- a/src/corelib/tools/qsimd.cpp +++ b/src/corelib/tools/qsimd.cpp @@ -636,7 +636,7 @@ int ffsll(quint64 i) #endif } #endif -#elif defined(Q_OS_ANDROID) || defined(Q_OS_QNX) +#elif defined(Q_OS_ANDROID) || defined(Q_OS_QNX) || defined(Q_OS_OSX) # define ffsll __builtin_ffsll #endif diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index 13d8a3864b..d1b5327f5c 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -203,7 +203,7 @@ inline RetType UnrollTailLoop<0>::exec(int, RetType returnIfExited, Functor1, Fu #endif // conversion between Latin 1 and UTF-16 -void qt_from_latin1(ushort *dst, const char *str, size_t size) +void qt_from_latin1(ushort *dst, const char *str, size_t size) Q_DECL_NOTHROW { /* SIMD: * Unpacking with SSE has been shown to improve performance on recent CPUs @@ -5666,34 +5666,36 @@ QString QString::rightJustified(int width, QChar fill, bool truncate) const */ namespace QUnicodeTables { -struct LowercaseTraits -{ - static signed short caseDiff(const Properties *prop) - { return prop->lowerCaseDiff; } - static bool caseSpecial(const Properties *prop) - { return prop->lowerCaseSpecial; } -}; - -struct UppercaseTraits -{ - static signed short caseDiff(const Properties *prop) - { return prop->upperCaseDiff; } - static bool caseSpecial(const Properties *prop) - { return prop->upperCaseSpecial; } -}; +/*! + \internal + Converts the \a str string starting from the position pointed to by the \a + it iterator, using the Unicode case traits \c Traits, and returns the + result. The input string must not be empty (the convertCase function below + guarantees that). + + The string type \c{T} is also a template and is either \c{const QString} or + \c{QString}. This function can do both copy-conversion and in-place + conversion depending on the state of the \a str parameter: + \list + \li \c{T} is \c{const QString}: copy-convert + \li \c{T} is \c{QString} and its refcount != 1: copy-convert + \li \c{T} is \c{QString} and its refcount == 1: in-place convert + \endlist -struct CasefoldTraits -{ - static signed short caseDiff(const Properties *prop) - { return prop->caseFoldDiff; } - static bool caseSpecial(const Properties *prop) - { return prop->caseFoldSpecial; } -}; + In copy-convert mode, the local variable \c{s} is detached from the input + \a str. In the in-place convert mode, \a str is in moved-from state (which + this function requires to be a valid, empty string) and \c{s} contains the + only copy of the string, without reallocation (thus, \a it is still valid). + There's one pathological case left: when the in-place conversion needs to + reallocate memory to grow the buffer. In that case, we need to adjust the \a + it pointer. + */ template <typename Traits, typename T> Q_NEVER_INLINE static QString detachAndConvertCase(T &str, QStringIterator it) { + Q_ASSERT(!str.isEmpty()); QString s = qMove(str); // will copy if T is const QString QChar *pp = s.begin() + it.index(); // will detach if necessary uint uc = it.nextUnchecked(); @@ -5702,12 +5704,19 @@ static QString detachAndConvertCase(T &str, QStringIterator it) signed short caseDiff = Traits::caseDiff(prop); if (Q_UNLIKELY(Traits::caseSpecial(prop))) { - // slow path + // slow path: the string is growing const ushort *specialCase = specialCaseMap + caseDiff; ushort length = *specialCase++; - int pos = pp - s.constBegin(); - s.replace(pos, 1, reinterpret_cast<const QChar *>(specialCase), length); - pp = const_cast<QChar *>(s.constBegin()) + pos + length; + int inpos = it.index() - 1; + int outpos = pp - s.constBegin(); + + s.replace(outpos, 1, reinterpret_cast<const QChar *>(specialCase), length); + pp = const_cast<QChar *>(s.constBegin()) + outpos + length; + + // do we need to adjust the input iterator too? + // if it is pointing to s's data, str is empty + if (str.isEmpty()) + it = QStringIterator(s.constBegin(), inpos + length, s.constEnd()); } else if (QChar::requiresSurrogates(uc)) { *pp++ = QChar::highSurrogate(uc + caseDiff); *pp++ = QChar::lowSurrogate(uc + caseDiff); diff --git a/src/corelib/tools/qstringiterator_p.h b/src/corelib/tools/qstringiterator_p.h index 06b05de833..1c098a314d 100644 --- a/src/corelib/tools/qstringiterator_p.h +++ b/src/corelib/tools/qstringiterator_p.h @@ -69,6 +69,13 @@ public: { } + inline explicit QStringIterator(const QChar *begin, int idx, const QChar *end) + : i(begin), + pos(begin + idx), + e(end) + { + } + inline QString::const_iterator position() const { return pos; diff --git a/src/corelib/tools/qtimezone.cpp b/src/corelib/tools/qtimezone.cpp index 900c8ff14e..57c1838b76 100644 --- a/src/corelib/tools/qtimezone.cpp +++ b/src/corelib/tools/qtimezone.cpp @@ -116,8 +116,9 @@ Q_GLOBAL_STATIC(QTimeZoneSingleton, global_tz); \class QTimeZone \inmodule QtCore \since 5.2 - \brief The QTimeZone class converts between between UTC and local time in a - specific time zone. + + \brief The QTimeZone class converts between UTC and local time in a specific + time zone. \threadsafe @@ -198,14 +199,15 @@ Q_GLOBAL_STATIC(QTimeZoneSingleton, global_tz); The difference between UTC and the local time in a time zone is expressed as an offset in seconds from UTC, i.e. the number of seconds to add to UTC to obtain the local time. The total offset is comprised of two component - parts, the standard time offset and the daylight time offset. The standard - time offset is the number of seconds to add to UTC to obtain standard time - in the time zone. The daylight time offset is the number of seconds to add - to the standard time offset to obtain daylight time in the time zone. + parts, the standard time offset and the daylight-saving time offset. The + standard time offset is the number of seconds to add to UTC to obtain + standard time in the time zone. The daylight-saving time offset is the + number of seconds to add to the standard time offset to obtain + daylight-saving time (abbreviated DST and sometimes called "daylight time" + or "summer time") in the time zone. - Note that the standard and daylight offsets for a time zone may change over - time as countries have changed daylight time laws or even their standard - time offset. + Note that the standard and DST offsets for a time zone may change over time + as countries have changed DST laws or even their standard time offset. \section2 License @@ -240,21 +242,20 @@ Q_GLOBAL_STATIC(QTimeZoneSingleton, global_tz); \enum QTimeZone::TimeType The type of time zone time, for example when requesting the name. In time - zones that do not apply daylight time, all three values may return the - same result. + zones that do not apply DST, all three values may return the same result. \value StandardTime - The standard time in a time zone, i.e. when Daylight Savings is not + The standard time in a time zone, i.e. when Daylight-Saving is not in effect. For example when formatting a display name this will show something like "Pacific Standard Time". \value DaylightTime - A time when Daylight Savings is in effect. + A time when Daylight-Saving is in effect. For example when formatting a display name this will show something - like "Pacific daylight time". + like "Pacific daylight-saving time". \value GenericTime - A time which is not specifically Standard or Daylight time, either - an unknown time or a neutral form. + A time which is not specifically Standard or Daylight-Saving time, + either an unknown time or a neutral form. For example when formatting a display name this will show something like "Pacific Time". */ @@ -285,11 +286,11 @@ Q_GLOBAL_STATIC(QTimeZoneSingleton, global_tz); \li OffsetData::atUtc The datetime of the offset data in UTC time. \li OffsetData::offsetFromUtc The total offset from UTC in effect at the datetime. \li OffsetData::standardTimeOffset The standard time offset component of the total offset. - \li OffsetData::daylightTimeOffset The daylight time offset component of the total offset. + \li OffsetData::daylightTimeOffset The DST offset component of the total offset. \li OffsetData::abbreviation The abbreviation in effect at the datetime. \endlist - For example, for time zone "Europe/Berlin" the OffsetDate in standard and daylight time might be: + For example, for time zone "Europe/Berlin" the OffsetDate in standard and DST might be: \list \li atUtc = QDateTime(QDate(2013, 1, 1), QTime(0, 0, 0), Qt::UTC) @@ -530,8 +531,7 @@ QString QTimeZone::comment() const If the \a locale is not provided then the application default locale will be used. - The display name may change depending on daylight time or historical - events. + The display name may change depending on DST or historical events. \sa abbreviation() */ @@ -571,8 +571,7 @@ QString QTimeZone::displayName(TimeType timeType, NameType nameType, /*! Returns the time zone abbreviation at the given \a atDateTime. The - abbreviation may change depending on daylight time or even - historical events. + abbreviation may change depending on DST or even historical events. Note that the abbreviation is not guaranteed to be unique to this time zone and should not be used in place of the ID or display name. @@ -591,13 +590,13 @@ QString QTimeZone::abbreviation(const QDateTime &atDateTime) const /*! Returns the total effective offset at the given \a atDateTime, i.e. the number of seconds to add to UTC to obtain the local time. This includes - any daylight time offset that may be in effect, i.e. it is the sum of + any DST offset that may be in effect, i.e. it is the sum of standardTimeOffset() and daylightTimeOffset() for the given datetime. For example, for the time zone "Europe/Berlin" the standard time offset is - +3600 seconds and the daylight time offset is +3600 seconds. During standard - time offsetFromUtc() will return +3600 (UTC+01:00), and during daylight time - it will return +7200 (UTC+02:00). + +3600 seconds and the DST offset is +3600 seconds. During standard time + offsetFromUtc() will return +3600 (UTC+01:00), and during DST it will + return +7200 (UTC+02:00). \sa standardTimeOffset(), daylightTimeOffset() */ @@ -613,11 +612,11 @@ int QTimeZone::offsetFromUtc(const QDateTime &atDateTime) const /*! Returns the standard time offset at the given \a atDateTime, i.e. the number of seconds to add to UTC to obtain the local Standard Time. This - excludes any daylight time offset that may be in effect. + excludes any DST offset that may be in effect. For example, for the time zone "Europe/Berlin" the standard time offset is - +3600 seconds. During both standard and daylight time offsetFromUtc() will - return +3600 (UTC+01:00). + +3600 seconds. During both standard and DST offsetFromUtc() will return + +3600 (UTC+01:00). \sa offsetFromUtc(), daylightTimeOffset() */ @@ -631,13 +630,13 @@ int QTimeZone::standardTimeOffset(const QDateTime &atDateTime) const } /*! - Returns the daylight time offset at the given \a atDateTime, i.e. the - number of seconds to add to the standard time offset to obtain the local - daylight time. + Returns the daylight-saving time offset at the given \a atDateTime, + i.e. the number of seconds to add to the standard time offset to obtain the + local daylight-saving time. - For example, for the time zone "Europe/Berlin" the daylight time offset - is +3600 seconds. During standard time daylightTimeOffset() will return - 0, and during daylight time it will return +3600. + For example, for the time zone "Europe/Berlin" the DST offset is +3600 + seconds. During standard time daylightTimeOffset() will return 0, and when + daylight-saving is in effect it will return +3600. \sa offsetFromUtc(), standardTimeOffset() */ @@ -651,7 +650,7 @@ int QTimeZone::daylightTimeOffset(const QDateTime &atDateTime) const } /*! - Returns \c true if the time zone has observed daylight time at any time. + Returns \c true if the time zone has practiced daylight-saving at any time. \sa isDaylightTime(), daylightTimeOffset() */ @@ -665,7 +664,7 @@ bool QTimeZone::hasDaylightTime() const } /*! - Returns \c true if the given \a atDateTime is in daylight time. + Returns \c true if daylight-saving was in effect at the given \a atDateTime. \sa hasDaylightTime(), daylightTimeOffset() */ diff --git a/src/corelib/tools/qtimezoneprivate.cpp b/src/corelib/tools/qtimezoneprivate.cpp index 5bc3610af0..ab8332aea3 100644 --- a/src/corelib/tools/qtimezoneprivate.cpp +++ b/src/corelib/tools/qtimezoneprivate.cpp @@ -246,8 +246,8 @@ QTimeZonePrivate::Data QTimeZonePrivate::data(qint64 forMSecsSinceEpoch) const QTimeZonePrivate::Data QTimeZonePrivate::dataForLocalTime(qint64 forLocalMSecs) const { if (!hasDaylightTime() ||!hasTransitions()) { - // No daylight time means same offset for all local msecs - // Having daylight time but no transitions means we can't calculate, so use nearest + // No DST means same offset for all local msecs + // Having DST but no transitions means we can't calculate, so use nearest return data(forLocalMSecs - (standardTimeOffset(forLocalMSecs) * 1000)); } @@ -276,16 +276,16 @@ QTimeZonePrivate::Data QTimeZonePrivate::dataForLocalTime(qint64 forLocalMSecs) } if (tran.daylightTimeOffset == 0) { - // If tran is in StandardTime, then need to check if falls close either daylight transition + // If tran is in StandardTime, then need to check if falls close to either DST transition. // If it does, then it may need adjusting for missing hour or for second occurrence qint64 diffPrevTran = forLocalMSecs - (tran.atMSecsSinceEpoch + (tran.offsetFromUtc * 1000)); qint64 diffNextTran = nextTran.atMSecsSinceEpoch + (nextTran.offsetFromUtc * 1000) - forLocalMSecs; if (diffPrevTran >= 0 && diffPrevTran < MSECS_TRAN_WINDOW) { - // If tran picked is for standard time check if changed from daylight in last 6 hours, + // If tran picked is for standard time check if changed from DST in last 6 hours, // as the local msecs may be ambiguous and represent two valid utc msecs. - // If in last 6 hours then get prev tran and if diff falls within the daylight offset + // If in last 6 hours then get prev tran and if diff falls within the DST offset // then use the prev tran as we default to the FirstOccurrence // TODO Check if faster to just always get prev tran, or if faster using 6 hour check. Data dstTran = previousTransition(tran.atMSecsSinceEpoch); diff --git a/src/corelib/tools/qtimezoneprivate_android.cpp b/src/corelib/tools/qtimezoneprivate_android.cpp index 6178fe935a..e66d00c67c 100644 --- a/src/corelib/tools/qtimezoneprivate_android.cpp +++ b/src/corelib/tools/qtimezoneprivate_android.cpp @@ -150,7 +150,7 @@ int QAndroidTimeZonePrivate::daylightTimeOffset(qint64 atMSecsSinceEpoch) const bool QAndroidTimeZonePrivate::hasDaylightTime() const { if ( androidTimeZone.isValid() ) - /* note: the Java function only tests for future daylight transtions, not past */ + /* note: the Java function only tests for future DST transtions, not past */ return androidTimeZone.callMethod<jboolean>("useDaylightTime" ); else return false; @@ -210,34 +210,34 @@ QTimeZonePrivate::Data QAndroidTimeZonePrivate::dataForLocalTime(qint64 forLocal } else { qint64 UTCepochMSecs; - // compare the UTC time with standard offset against normal daylight offset of one hour + // compare the UTC time with standard offset against normal DST offset of one hour qint64 standardUTCMSecs(forLocalMSecs - (standardTimeOffset(forLocalMSecs) * 1000)); qint64 daylightUTCMsecs; - // Check if daylight time does apply, - // checking also for daylight time boundaries + // Check if daylight-saving time applies, + // checking also for DST boundaries if (isDaylightTime(standardUTCMSecs)) { - // If daylight does apply, then standardUTCMSecs will be an hour or so ahead of the real epoch time + // If DST does apply, then standardUTCMSecs will be an hour or so ahead of the real epoch time // so check that time daylightUTCMsecs = standardUTCMSecs - daylightTimeOffset(standardUTCMSecs)*1000; if (isDaylightTime(daylightUTCMsecs)) { - // daylight time confirmed + // DST confirmed UTCepochMSecs = daylightUTCMsecs; } else { - // daylight time has just finished + // DST has just finished UTCepochMSecs = standardUTCMSecs; } } else { // Standard time indicated, but check for a false negative. - // Would a standard one-hour daylight offset indicate daylight time? + // Would a standard one-hour DST offset indicate DST? daylightUTCMsecs = standardUTCMSecs - 3600000; // 3600000 MSECS_PER_HOUR if (isDaylightTime(daylightUTCMsecs)) { - // daylight time may have just started, - // but double check against timezone's own daylight offset + // DST may have just started, + // but double check against timezone's own DST offset // (don't necessarily assume a one-hour offset) daylightUTCMsecs = standardUTCMSecs - daylightTimeOffset(daylightUTCMsecs)*1000; if (isDaylightTime(daylightUTCMsecs)) { - // daylight time confirmed + // DST confirmed UTCepochMSecs = daylightUTCMsecs; } else { // false positive, apply standard time after all diff --git a/src/corelib/tools/qunicodetables.cpp b/src/corelib/tools/qunicodetables.cpp index 73dce81d4a..14e4fd10aa 100644 --- a/src/corelib/tools/qunicodetables.cpp +++ b/src/corelib/tools/qunicodetables.cpp @@ -31,7 +31,7 @@ ** ****************************************************************************/ -/* This file is autogenerated from the Unicode 7.0 database. Do not edit */ +/* This file is autogenerated from the Unicode 8.0 database. Do not edit */ #include "qunicodetables_p.h" @@ -40,7 +40,7 @@ QT_BEGIN_NAMESPACE namespace QUnicodeTables { static const unsigned short uc_property_trie[] = { - // 0 - 0x11000 + // [0x0..0x11000) 6256, 6288, 6320, 6352, 6384, 6416, 6448, 6480, 6512, 6544, 6576, 6608, 6640, 6672, 6704, 6736, @@ -62,803 +62,803 @@ static const unsigned short uc_property_trie[] = { 10256, 10288, 10320, 10352, 10384, 10416, 10448, 10480, 10512, 10512, 10544, 10576, 10608, 10640, 10672, 10704, 10736, 10768, 10800, 10768, 10832, 10864, 10896, 10928, - 10960, 10768, 10992, 11024, 11056, 11088, 11088, 11120, - 11152, 11184, 11184, 11184, 11184, 11184, 11184, 11184, - 11184, 11184, 11184, 11184, 11184, 11184, 11184, 11184, - 11184, 11184, 11184, 11216, 11248, 11280, 11280, 11312, - 11344, 11376, 11408, 11440, 11472, 11504, 11536, 11568, - 11600, 11632, 11664, 11696, 11728, 11760, 11792, 11824, - 11856, 11888, 11920, 11952, 11984, 12016, 12048, 12080, - 12112, 12144, 12176, 12208, 12240, 12272, 9904, 9904, - 12304, 12336, 12368, 12400, 12432, 12464, 12496, 12528, - 12560, 12592, 12624, 12656, 9904, 9904, 12688, 12720, - 12752, 12784, 12816, 12848, 12880, 12912, 12944, 12976, - 13008, 13008, 13008, 13008, 13040, 13008, 13008, 13072, - 13104, 13136, 13168, 13200, 13232, 13264, 13296, 13328, - - 13360, 13392, 13424, 13456, 13488, 13520, 13552, 13584, - 13616, 13648, 13680, 13712, 13744, 13776, 13808, 13840, - 13872, 13904, 13936, 13968, 14000, 14032, 14064, 14096, - 14128, 14160, 14192, 14224, 14256, 14288, 14320, 14352, - 14384, 14416, 14448, 14480, 14512, 14544, 14576, 14608, - 14384, 14384, 14384, 14384, 14640, 14672, 14704, 14736, - 14768, 14800, 14384, 14832, 14864, 14896, 14928, 14960, - 14992, 15024, 15056, 15088, 15120, 15152, 15184, 15216, - 15248, 15248, 15248, 15248, 15248, 15248, 15248, 15248, - 15280, 15280, 15280, 15280, 15312, 15344, 15376, 15408, - 15440, 15472, 15280, 15504, 15536, 15568, 15600, 15632, - 15664, 15696, 15728, 15760, 15792, 15824, 15856, 9904, - 15888, 15920, 15952, 15984, 16016, 16016, 16016, 16048, - 16080, 16112, 16144, 16176, 16208, 16240, 16240, 16272, - 16304, 16336, 16368, 9904, 16400, 16432, 16432, 16464, - 16496, 16496, 16496, 16496, 16496, 16496, 16528, 16560, - - 16592, 16624, 16656, 16688, 16720, 16752, 16784, 16816, - 16848, 16880, 16912, 16912, 16944, 16976, 17008, 17040, - 17072, 17104, 17136, 17168, 17104, 17200, 17232, 17264, - 17296, 17296, 17328, 17360, 17392, 17392, 17424, 17456, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17520, 17552, 17552, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17616, 17648, 17680, - - 17712, 17744, 17744, 17744, 17744, 17744, 17744, 17744, - 17744, 17744, 17744, 17744, 17744, 17744, 17744, 17744, - 17744, 17744, 17744, 17744, 17744, 17744, 17744, 17744, - 17744, 17744, 17744, 17744, 17744, 17744, 17744, 17744, - 17744, 17744, 17744, 17744, 17776, 17808, 17840, 17872, - 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904, - 17936, 17968, 18000, 18032, 18064, 18096, 18096, 18128, - 18160, 18192, 18224, 18256, 18288, 18320, 9904, 18352, - 18384, 18416, 18448, 18480, 18512, 18544, 18576, 18608, - 18640, 18672, 18704, 18736, 18768, 18800, 18832, 18864, - 18896, 18928, 18960, 18992, 19024, 19056, 19088, 19120, - 19152, 19184, 19216, 19248, 9904, 9904, 19280, 19312, - 19344, 19376, 19408, 19440, 19472, 19504, 19536, 19344, - 19376, 19408, 19440, 19472, 19504, 19536, 19344, 19376, - 19408, 19440, 19472, 19504, 19536, 19344, 19376, 19408, - 19440, 19472, 19504, 19536, 19344, 19376, 19408, 19440, - - 19472, 19504, 19536, 19344, 19376, 19408, 19440, 19472, - 19504, 19536, 19344, 19376, 19408, 19440, 19472, 19504, - 19536, 19344, 19376, 19408, 19440, 19472, 19504, 19536, - 19344, 19376, 19408, 19440, 19472, 19504, 19536, 19344, - 19376, 19408, 19440, 19472, 19504, 19536, 19344, 19376, - 19408, 19440, 19472, 19504, 19536, 19344, 19376, 19408, - 19440, 19472, 19504, 19536, 19344, 19376, 19408, 19440, - 19472, 19504, 19536, 19344, 19376, 19408, 19440, 19472, - 19504, 19536, 19344, 19376, 19408, 19440, 19472, 19504, - 19536, 19344, 19376, 19408, 19440, 19472, 19504, 19536, - 19344, 19376, 19408, 19440, 19472, 19504, 19536, 19344, - 19376, 19408, 19440, 19472, 19504, 19536, 19344, 19376, - 19408, 19440, 19472, 19504, 19536, 19344, 19376, 19408, - 19440, 19472, 19504, 19536, 19344, 19376, 19408, 19440, - 19472, 19504, 19536, 19344, 19376, 19408, 19440, 19472, - 19504, 19536, 19344, 19376, 19408, 19440, 19472, 19504, - - 19536, 19344, 19376, 19408, 19440, 19472, 19504, 19536, - 19344, 19376, 19408, 19440, 19472, 19504, 19536, 19344, - 19376, 19408, 19440, 19472, 19504, 19536, 19344, 19376, - 19408, 19440, 19472, 19504, 19536, 19344, 19376, 19408, - 19440, 19472, 19504, 19536, 19344, 19376, 19408, 19440, - 19472, 19504, 19536, 19344, 19376, 19408, 19440, 19472, - 19504, 19536, 19344, 19376, 19408, 19440, 19472, 19504, - 19536, 19344, 19376, 19408, 19440, 19472, 19504, 19536, - 19344, 19376, 19408, 19440, 19472, 19504, 19536, 19344, - 19376, 19408, 19440, 19472, 19504, 19536, 19344, 19376, - 19408, 19440, 19472, 19504, 19536, 19344, 19376, 19408, - 19440, 19472, 19504, 19536, 19344, 19376, 19408, 19440, - 19472, 19504, 19536, 19344, 19376, 19408, 19440, 19472, - 19504, 19536, 19344, 19376, 19408, 19440, 19472, 19504, - 19536, 19344, 19376, 19408, 19440, 19472, 19504, 19536, - 19344, 19376, 19408, 19440, 19472, 19504, 19536, 19344, - - 19376, 19408, 19440, 19472, 19504, 19536, 19344, 19376, - 19408, 19440, 19472, 19504, 19536, 19344, 19376, 19408, - 19440, 19472, 19504, 19536, 19344, 19376, 19408, 19440, - 19472, 19504, 19536, 19344, 19376, 19408, 19440, 19472, - 19504, 19536, 19344, 19376, 19408, 19440, 19472, 19504, - 19536, 19344, 19376, 19408, 19440, 19472, 19504, 19536, - 19344, 19376, 19408, 19440, 19472, 19504, 19536, 19344, - 19376, 19408, 19440, 19472, 19504, 19568, 19600, 19632, - 19664, 19664, 19664, 19664, 19664, 19664, 19664, 19664, - 19664, 19664, 19664, 19664, 19664, 19664, 19664, 19664, - 19664, 19664, 19664, 19664, 19664, 19664, 19664, 19664, - 19664, 19664, 19664, 19664, 19664, 19664, 19664, 19664, - 19664, 19664, 19664, 19664, 19664, 19664, 19664, 19664, - 19664, 19664, 19664, 19664, 19664, 19664, 19664, 19664, - 19664, 19664, 19664, 19664, 19664, 19664, 19664, 19664, - 19664, 19664, 19664, 19664, 19664, 19664, 19664, 19664, - - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19728, 19728, 19728, 19728, 19728, 19728, 19728, 19728, - 19760, 19792, 19824, 19856, 19888, 19888, 19920, 17680, - 19952, 19984, 20016, 20048, 20048, 20080, 20112, 20048, - 20048, 20048, 20048, 20048, 20048, 20048, 20048, 20048, - 20048, 20144, 20176, 20048, 20208, 20048, 20240, 20272, - 20304, 20336, 20368, 20400, 20048, 20048, 20048, 20432, - 20464, 20496, 20528, 20560, 20592, 20624, 20656, 20688, - - 20720, 20752, 20784, 9904, 20816, 20816, 20816, 20848, - 20880, 20912, 20944, 20976, 21008, 21040, 21072, 21104, - 9904, 9904, 9904, 9904, 21136, 21168, 21200, 21232, - 21264, 21296, 21328, 21360, 21392, 21424, 21456, 9904, - 21488, 21520, 21552, 21584, 21616, 21648, 9904, 9904, - 21680, 21712, 21744, 21776, 9904, 9904, 9904, 9904, - 21808, 21808, 21808, 21808, 21808, 21808, 21808, 21808, + 10960, 10768, 10992, 11024, 11056, 11088, 11120, 11152, + 11184, 11216, 11216, 11216, 11216, 11216, 11216, 11216, + 11216, 11216, 11216, 11216, 11216, 11216, 11216, 11216, + 11216, 11216, 11216, 11248, 11280, 11312, 11312, 11344, + 11376, 11408, 11440, 11472, 11504, 11536, 11568, 11600, + 11632, 11664, 11696, 11728, 11760, 11792, 11824, 11856, + 11888, 11920, 11952, 11984, 12016, 12048, 12080, 12112, + 12144, 12176, 12208, 12240, 12272, 12304, 9904, 9904, + 12336, 12368, 12400, 12432, 12464, 12496, 12528, 12560, + 12592, 12624, 12656, 12688, 9904, 9904, 12720, 12752, + 12784, 12816, 12848, 12880, 12912, 12944, 12976, 13008, + 13040, 13040, 13040, 13040, 13072, 13040, 13040, 13104, + 13136, 13168, 13200, 13232, 13264, 13296, 13328, 13360, + + 13392, 13424, 13456, 13488, 13520, 13552, 13584, 13616, + 13648, 13680, 13712, 13744, 13776, 13808, 13840, 13872, + 13904, 13936, 13968, 14000, 14032, 14064, 14096, 14128, + 14160, 14192, 14224, 14256, 14288, 14320, 14352, 14384, + 14416, 14448, 14480, 14512, 14544, 14576, 14608, 14640, + 14416, 14416, 14416, 14416, 14672, 14704, 14736, 14768, + 14800, 14832, 14416, 14864, 14896, 14928, 14960, 14992, + 15024, 15056, 15088, 15120, 15152, 15184, 15216, 15248, + 15280, 15280, 15280, 15280, 15280, 15280, 15280, 15280, + 15312, 15312, 15312, 15312, 15344, 15376, 15408, 15440, + 15472, 15504, 15312, 15536, 15568, 15600, 15632, 15664, + 15696, 15728, 15760, 15792, 15824, 15856, 15888, 15920, + 15952, 15984, 16016, 16048, 16080, 16080, 16080, 16112, + 16144, 16176, 16208, 16240, 16272, 16304, 16304, 16336, + 16368, 16400, 16432, 9904, 16464, 16496, 16496, 16528, + 16560, 16560, 16560, 16560, 16560, 16560, 16592, 16624, + + 16656, 16688, 16720, 16752, 16784, 16816, 16848, 16880, + 16912, 16944, 16976, 16976, 17008, 17040, 17072, 17104, + 17136, 17168, 17200, 17232, 17168, 17264, 17296, 17328, + 17360, 17360, 17392, 17424, 17456, 17456, 17488, 17520, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17584, 17616, 17616, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17680, 17712, 17744, + + 17776, 17808, 17808, 17808, 17808, 17808, 17808, 17808, + 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808, + 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808, + 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808, + 17808, 17808, 17808, 17808, 17840, 17872, 17904, 17936, + 17968, 17968, 17968, 17968, 17968, 17968, 17968, 17968, + 18000, 18032, 18064, 18096, 18128, 18160, 18160, 18192, + 18224, 18256, 18288, 18320, 18352, 18384, 9904, 18416, + 18448, 18480, 18512, 18544, 18576, 18608, 18640, 18672, + 18704, 18736, 18768, 18800, 18832, 18864, 18896, 18928, + 18960, 18992, 19024, 19056, 19088, 19120, 19152, 19184, + 19216, 19248, 19280, 19312, 19344, 19376, 19408, 19440, + 19472, 19504, 19536, 19568, 19600, 19632, 19664, 19472, + 19504, 19536, 19568, 19600, 19632, 19664, 19472, 19504, + 19536, 19568, 19600, 19632, 19664, 19472, 19504, 19536, + 19568, 19600, 19632, 19664, 19472, 19504, 19536, 19568, + + 19600, 19632, 19664, 19472, 19504, 19536, 19568, 19600, + 19632, 19664, 19472, 19504, 19536, 19568, 19600, 19632, + 19664, 19472, 19504, 19536, 19568, 19600, 19632, 19664, + 19472, 19504, 19536, 19568, 19600, 19632, 19664, 19472, + 19504, 19536, 19568, 19600, 19632, 19664, 19472, 19504, + 19536, 19568, 19600, 19632, 19664, 19472, 19504, 19536, + 19568, 19600, 19632, 19664, 19472, 19504, 19536, 19568, + 19600, 19632, 19664, 19472, 19504, 19536, 19568, 19600, + 19632, 19664, 19472, 19504, 19536, 19568, 19600, 19632, + 19664, 19472, 19504, 19536, 19568, 19600, 19632, 19664, + 19472, 19504, 19536, 19568, 19600, 19632, 19664, 19472, + 19504, 19536, 19568, 19600, 19632, 19664, 19472, 19504, + 19536, 19568, 19600, 19632, 19664, 19472, 19504, 19536, + 19568, 19600, 19632, 19664, 19472, 19504, 19536, 19568, + 19600, 19632, 19664, 19472, 19504, 19536, 19568, 19600, + 19632, 19664, 19472, 19504, 19536, 19568, 19600, 19632, + + 19664, 19472, 19504, 19536, 19568, 19600, 19632, 19664, + 19472, 19504, 19536, 19568, 19600, 19632, 19664, 19472, + 19504, 19536, 19568, 19600, 19632, 19664, 19472, 19504, + 19536, 19568, 19600, 19632, 19664, 19472, 19504, 19536, + 19568, 19600, 19632, 19664, 19472, 19504, 19536, 19568, + 19600, 19632, 19664, 19472, 19504, 19536, 19568, 19600, + 19632, 19664, 19472, 19504, 19536, 19568, 19600, 19632, + 19664, 19472, 19504, 19536, 19568, 19600, 19632, 19664, + 19472, 19504, 19536, 19568, 19600, 19632, 19664, 19472, + 19504, 19536, 19568, 19600, 19632, 19664, 19472, 19504, + 19536, 19568, 19600, 19632, 19664, 19472, 19504, 19536, + 19568, 19600, 19632, 19664, 19472, 19504, 19536, 19568, + 19600, 19632, 19664, 19472, 19504, 19536, 19568, 19600, + 19632, 19664, 19472, 19504, 19536, 19568, 19600, 19632, + 19664, 19472, 19504, 19536, 19568, 19600, 19632, 19664, + 19472, 19504, 19536, 19568, 19600, 19632, 19664, 19472, + + 19504, 19536, 19568, 19600, 19632, 19664, 19472, 19504, + 19536, 19568, 19600, 19632, 19664, 19472, 19504, 19536, + 19568, 19600, 19632, 19664, 19472, 19504, 19536, 19568, + 19600, 19632, 19664, 19472, 19504, 19536, 19568, 19600, + 19632, 19664, 19472, 19504, 19536, 19568, 19600, 19632, + 19664, 19472, 19504, 19536, 19568, 19600, 19632, 19664, + 19472, 19504, 19536, 19568, 19600, 19632, 19664, 19472, + 19504, 19536, 19568, 19600, 19632, 19696, 19728, 19760, + 19792, 19792, 19792, 19792, 19792, 19792, 19792, 19792, + 19792, 19792, 19792, 19792, 19792, 19792, 19792, 19792, + 19792, 19792, 19792, 19792, 19792, 19792, 19792, 19792, + 19792, 19792, 19792, 19792, 19792, 19792, 19792, 19792, + 19792, 19792, 19792, 19792, 19792, 19792, 19792, 19792, + 19792, 19792, 19792, 19792, 19792, 19792, 19792, 19792, + 19792, 19792, 19792, 19792, 19792, 19792, 19792, 19792, + 19792, 19792, 19792, 19792, 19792, 19792, 19792, 19792, + + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19856, 19856, 19856, 19856, 19856, 19856, 19856, 19856, + 19888, 19920, 19952, 19984, 20016, 20016, 20048, 17744, + 20080, 20112, 20144, 20176, 20176, 20208, 20240, 20176, + 20176, 20176, 20176, 20176, 20176, 20176, 20176, 20176, + 20176, 20272, 20304, 20176, 20336, 20176, 20368, 20400, + 20432, 20464, 20496, 20528, 20176, 20176, 20176, 20560, + 20592, 20624, 20656, 20688, 20720, 20752, 20784, 20816, + + 20848, 20880, 20912, 9904, 20944, 20944, 20944, 20976, + 21008, 21040, 21072, 21104, 21136, 21168, 21200, 21232, + 9904, 9904, 9904, 9904, 21264, 21296, 21328, 21360, + 21392, 21424, 21456, 21488, 21520, 21552, 21584, 9904, + 21616, 21648, 21680, 21712, 21744, 21776, 9904, 9904, 21808, 21840, 21872, 21904, 9904, 9904, 9904, 9904, - 21936, 21968, 22000, 22032, 22064, 22096, 8400, 8400, - 22128, 22160, 8400, 8400, 22192, 22224, 8400, 8400, - 22256, 22288, 22320, 22352, 22384, 8400, 22416, 22448, - 22480, 22512, 22544, 22576, 22608, 22640, 8400, 8400, - 22672, 22672, 22704, 8400, 8400, 8400, 8400, 8400, + 21936, 21936, 21936, 21936, 21936, 21936, 21936, 21936, + 21936, 21968, 22000, 22032, 9904, 9904, 9904, 9904, + 22064, 22096, 22128, 22160, 22192, 22224, 8400, 22256, + 22288, 22320, 8400, 8400, 22352, 22384, 22416, 22448, + 22480, 22512, 22544, 22576, 22608, 8400, 22640, 22672, + 22704, 22736, 22768, 22800, 22832, 22864, 8400, 8400, + 22896, 22896, 22928, 8400, 22960, 22992, 23024, 23056, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, - 8400, 8400, 8400, 22736, 8400, 8400, 8400, 8400, + 8400, 8400, 8400, 23088, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, - // 0x11000 - 0x110000 - - 22768, 23024, 23280, 23536, 23792, 24048, 24304, 24560, - 24816, 24560, 25072, 24560, 24560, 24560, 24560, 24560, - 25328, 25328, 25328, 25584, 25840, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 26096, 26096, 26352, 26608, 26864, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 27120, 27120, 27376, 27632, 24560, 24560, 24560, 27888, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 28144, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 28400, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 28656, 28912, 29168, 29424, 29680, 29936, 30192, 30448, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 30704, 30960, 30960, 30960, 30960, 30960, 31216, 30960, - 31472, 31728, 31984, 32240, 32496, 32752, 33008, 33264, - 33520, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34288, 34544, - 34544, 34544, 34544, 34544, 34544, 34544, 34544, 34544, - 34544, 34544, 34544, 34544, 34544, 34544, 34544, 34800, - 35056, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35568, 35568, 35824, 35312, 35312, 35312, 35312, 36080, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 36080, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 36336, 36592, 36848, 36848, 36848, 36848, 36848, 36848, - 36848, 36848, 36848, 36848, 36848, 36848, 36848, 36848, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37360, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37360, + // [0x11000..0x110000) + + 23120, 23376, 23632, 23888, 24144, 24400, 24656, 24912, + 25168, 25424, 25680, 25424, 25424, 25424, 25424, 25424, + 25936, 25936, 25936, 26192, 26448, 26704, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 26960, 26960, 27216, 27472, 27728, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 27984, 28240, 28496, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 28752, 28752, 29008, 29264, 25424, 25424, 25424, 29520, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 29776, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 30032, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 30288, 30544, 30800, 31056, 31312, 31568, 31824, 32080, + 32336, 32336, 32592, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 32848, 33104, 33104, 33104, 33104, 33104, 33360, 33104, + 33616, 33872, 34128, 34384, 34640, 34896, 35152, 35408, + 35664, 35920, 25424, 25424, 25424, 25424, 25424, 36176, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36688, 36944, + 36944, 36944, 36944, 36944, 36944, 36944, 36944, 36944, + 36944, 36944, 36944, 36944, 36944, 36944, 36944, 37200, + 37456, 37712, 37712, 37712, 37712, 37712, 37712, 37712, + 37712, 37712, 37712, 37712, 37712, 37712, 37712, 37712, + 37712, 37712, 37712, 37712, 37712, 37712, 37968, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38480, 38480, 38736, 38224, 38224, 38224, 38224, 38992, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38992, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 39248, 39504, 39760, 39760, 39760, 39760, 39760, 39760, + 39760, 39760, 39760, 39760, 39760, 39760, 39760, 39760, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40272, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40272, 0, 0, 0, 0, 0, 0, 0, 0, @@ -964,594 +964,569 @@ static const unsigned short uc_property_trie[] = { 149, 78, 78, 149, 78, 78, 78, 150, 149, 151, 152, 152, 153, 78, 78, 78, 78, 78, 154, 78, 100, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 155, 78, + 78, 78, 78, 78, 78, 155, 156, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 156, 156, 156, 156, 156, 114, 114, - 157, 157, 157, 157, 157, 157, 157, 157, - 157, 158, 158, 159, 159, 159, 159, 159, - - 160, 160, 42, 42, 42, 42, 158, 158, - 161, 158, 158, 158, 161, 158, 158, 158, - 159, 159, 42, 42, 42, 42, 42, 162, - 52, 52, 52, 52, 52, 52, 42, 163, - - 157, 157, 157, 157, 157, 42, 42, 42, - 42, 42, 164, 164, 165, 166, 167, 168, - 168, 168, 168, 168, 168, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 168, 168, - - 169, 169, 169, 169, 169, 170, 169, 169, - 169, 169, 169, 169, 169, 170, 170, 169, - 170, 169, 170, 169, 169, 171, 172, 172, - 172, 172, 171, 173, 172, 172, 172, 172, - - 172, 174, 174, 175, 175, 175, 175, 176, - 176, 172, 172, 172, 172, 175, 175, 172, - 175, 175, 172, 172, 177, 177, 177, 177, - 178, 172, 172, 172, 172, 170, 170, 170, - - 179, 179, 169, 179, 179, 180, 181, 182, - 182, 182, 181, 181, 181, 182, 182, 183, - 184, 184, 184, 185, 185, 185, 185, 184, - 186, 187, 187, 188, 189, 190, 190, 191, - - 192, 192, 193, 194, 194, 194, 194, 194, - 194, 194, 194, 194, 194, 194, 194, 194, - 195, 196, 195, 196, 197, 198, 195, 196, - 199, 199, 200, 201, 201, 201, 202, 203, - - 199, 199, 199, 199, 204, 205, 206, 207, - 208, 208, 208, 199, 209, 199, 210, 210, - 211, 212, 212, 212, 212, 212, 212, 212, - 212, 212, 212, 212, 212, 212, 212, 212, - - 212, 212, 199, 212, 212, 212, 212, 212, - 212, 212, 213, 213, 214, 215, 215, 215, - 216, 217, 217, 217, 217, 217, 217, 217, - 217, 217, 217, 217, 217, 217, 217, 217, - - 217, 217, 218, 217, 217, 217, 217, 217, - 217, 217, 219, 219, 220, 221, 221, 222, - 223, 224, 225, 226, 226, 227, 228, 229, - 230, 231, 232, 233, 232, 233, 232, 233, - - 232, 233, 234, 235, 234, 235, 234, 235, - 234, 235, 234, 235, 234, 235, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 243, 244, 246, 247, 247, 247, - - 248, 249, 250, 249, 250, 250, 250, 249, - 250, 250, 250, 250, 249, 248, 249, 250, - 251, 251, 251, 251, 251, 251, 251, 251, - 251, 252, 251, 251, 251, 251, 251, 251, - - 251, 251, 251, 251, 251, 251, 251, 251, - 251, 251, 251, 251, 251, 251, 251, 251, - 253, 253, 253, 253, 253, 253, 253, 253, - 253, 254, 253, 253, 253, 253, 253, 253, - - 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, - 255, 256, 257, 256, 257, 257, 257, 256, - 257, 257, 257, 257, 256, 255, 256, 257, - - 258, 259, 258, 259, 258, 259, 258, 259, - 258, 259, 258, 259, 258, 259, 258, 259, - 258, 259, 258, 259, 258, 259, 260, 261, - 258, 259, 258, 259, 258, 259, 258, 259, - - 258, 259, 262, 263, 263, 170, 170, 264, - 265, 265, 266, 267, 268, 269, 268, 269, - 258, 259, 258, 259, 258, 259, 258, 259, - 258, 259, 258, 259, 258, 259, 258, 259, - - 258, 259, 258, 259, 258, 259, 258, 259, - 258, 259, 258, 259, 258, 259, 258, 259, - 258, 259, 258, 259, 258, 259, 258, 259, - 258, 259, 258, 259, 258, 259, 258, 259, - - 270, 260, 261, 258, 259, 266, 267, 258, - 259, 266, 267, 258, 259, 266, 267, 271, - 260, 261, 260, 261, 258, 259, 260, 261, - 258, 259, 260, 261, 260, 261, 260, 261, - - 258, 259, 260, 261, 260, 261, 260, 261, - 258, 259, 260, 261, 272, 273, 260, 261, - 260, 261, 260, 261, 260, 261, 274, 275, - 260, 261, 276, 277, 276, 277, 276, 277, - - 266, 267, 266, 267, 266, 267, 266, 267, - 266, 267, 266, 267, 266, 267, 266, 267, - 276, 277, 276, 277, 278, 279, 278, 279, - 278, 279, 278, 279, 278, 279, 278, 279, - - 278, 279, 278, 279, 280, 281, 282, 283, - 284, 285, 284, 285, 284, 285, 284, 285, - 199, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, - - 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 199, - 199, 287, 288, 288, 288, 289, 288, 288, - - 199, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, - - 290, 290, 290, 290, 290, 290, 290, 291, - 199, 292, 293, 199, 199, 294, 294, 295, - 296, 297, 298, 298, 298, 298, 297, 298, - 298, 298, 299, 297, 298, 298, 298, 298, - - 298, 298, 300, 297, 297, 297, 297, 297, - 298, 298, 297, 298, 298, 299, 301, 298, - 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, - - 318, 319, 320, 318, 298, 300, 321, 322, - 296, 296, 296, 296, 296, 296, 296, 296, - 323, 323, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 323, 323, 323, 323, 323, - - 323, 323, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 296, 296, 296, 296, 296, - 323, 323, 323, 324, 325, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - - 326, 326, 326, 326, 327, 328, 329, 329, - 330, 331, 331, 332, 19, 333, 334, 334, - 335, 335, 335, 335, 335, 335, 336, 336, - 337, 338, 339, 340, 341, 342, 343, 344, - - 345, 346, 347, 347, 347, 347, 348, 349, - 350, 349, 350, 350, 350, 350, 350, 349, - 349, 349, 349, 350, 350, 350, 350, 350, + 78, 157, 157, 157, 157, 157, 114, 114, + 158, 158, 158, 158, 158, 158, 158, 158, + 158, 159, 159, 160, 160, 160, 160, 160, + + 161, 161, 42, 42, 42, 42, 159, 159, + 162, 159, 159, 159, 162, 159, 159, 159, + 160, 160, 42, 42, 42, 42, 42, 163, + 52, 52, 52, 52, 52, 52, 42, 164, + + 158, 158, 158, 158, 158, 42, 42, 42, + 42, 42, 165, 165, 166, 167, 168, 169, + 169, 169, 169, 169, 169, 169, 169, 169, + 169, 169, 169, 169, 169, 169, 169, 169, + + 170, 170, 170, 170, 170, 171, 170, 170, + 170, 170, 170, 170, 170, 171, 171, 170, + 171, 170, 171, 170, 170, 172, 173, 173, + 173, 173, 172, 174, 173, 173, 173, 173, + + 173, 175, 175, 176, 176, 176, 176, 177, + 177, 173, 173, 173, 173, 176, 176, 173, + 176, 176, 173, 173, 178, 178, 178, 178, + 179, 173, 173, 173, 173, 171, 171, 171, + + 180, 180, 170, 180, 180, 181, 182, 183, + 183, 183, 182, 182, 182, 183, 183, 184, + 185, 185, 185, 186, 186, 186, 186, 185, + 187, 188, 188, 189, 190, 191, 191, 192, + + 193, 193, 194, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, + 196, 197, 196, 197, 198, 199, 196, 197, + 200, 200, 201, 202, 202, 202, 203, 204, + + 200, 200, 200, 200, 205, 206, 207, 208, + 209, 209, 209, 200, 210, 200, 211, 211, + 212, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 213, 213, 213, 213, 213, + + 213, 213, 200, 213, 213, 213, 213, 213, + 213, 213, 214, 214, 215, 216, 216, 216, + 217, 218, 218, 218, 218, 218, 218, 218, + 218, 218, 218, 218, 218, 218, 218, 218, + + 218, 218, 219, 218, 218, 218, 218, 218, + 218, 218, 220, 220, 221, 222, 222, 223, + 224, 225, 226, 227, 227, 228, 229, 230, + 231, 232, 233, 234, 233, 234, 233, 234, + + 233, 234, 235, 236, 235, 236, 235, 236, + 235, 236, 235, 236, 235, 236, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 244, 245, 247, 248, 248, 248, + + 249, 250, 251, 250, 251, 251, 251, 250, + 251, 251, 251, 251, 250, 249, 250, 251, + 252, 252, 252, 252, 252, 252, 252, 252, + 252, 253, 252, 252, 252, 252, 252, 252, + + 252, 252, 252, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 252, + 254, 254, 254, 254, 254, 254, 254, 254, + 254, 255, 254, 254, 254, 254, 254, 254, + + 254, 254, 254, 254, 254, 254, 254, 254, + 254, 254, 254, 254, 254, 254, 254, 254, + 256, 257, 258, 257, 258, 258, 258, 257, + 258, 258, 258, 258, 257, 256, 257, 258, + + 259, 260, 259, 260, 259, 260, 259, 260, + 259, 260, 259, 260, 259, 260, 259, 260, + 259, 260, 259, 260, 259, 260, 261, 262, + 259, 260, 259, 260, 259, 260, 259, 260, + + 259, 260, 263, 264, 264, 171, 171, 265, + 266, 266, 267, 268, 269, 270, 269, 270, + 259, 260, 259, 260, 259, 260, 259, 260, + 259, 260, 259, 260, 259, 260, 259, 260, + + 259, 260, 259, 260, 259, 260, 259, 260, + 259, 260, 259, 260, 259, 260, 259, 260, + 259, 260, 259, 260, 259, 260, 259, 260, + 259, 260, 259, 260, 259, 260, 259, 260, + + 271, 261, 262, 259, 260, 267, 268, 259, + 260, 267, 268, 259, 260, 267, 268, 272, + 261, 262, 261, 262, 259, 260, 261, 262, + 259, 260, 261, 262, 261, 262, 261, 262, + + 259, 260, 261, 262, 261, 262, 261, 262, + 259, 260, 261, 262, 273, 274, 261, 262, + 261, 262, 261, 262, 261, 262, 275, 276, + 261, 262, 277, 278, 277, 278, 277, 278, + + 267, 268, 267, 268, 267, 268, 267, 268, + 267, 268, 267, 268, 267, 268, 267, 268, + 277, 278, 277, 278, 279, 280, 279, 280, + 279, 280, 279, 280, 279, 280, 279, 280, + + 279, 280, 279, 280, 281, 282, 283, 284, + 285, 286, 285, 286, 285, 286, 285, 286, + 200, 287, 287, 287, 287, 287, 287, 287, + 287, 287, 287, 287, 287, 287, 287, 287, + + 287, 287, 287, 287, 287, 287, 287, 287, + 287, 287, 287, 287, 287, 287, 287, 287, + 287, 287, 287, 287, 287, 287, 287, 200, + 200, 288, 289, 289, 289, 290, 289, 289, + + 200, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, + + 291, 291, 291, 291, 291, 291, 291, 292, + 200, 293, 294, 200, 200, 295, 295, 296, + 297, 298, 299, 299, 299, 299, 298, 299, + 299, 299, 300, 298, 299, 299, 299, 299, + + 299, 299, 301, 298, 298, 298, 298, 298, + 299, 299, 298, 299, 299, 300, 302, 299, + 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, + + 319, 320, 321, 319, 299, 301, 322, 323, + 297, 297, 297, 297, 297, 297, 297, 297, + 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, + + 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 297, 297, 297, 297, 297, + 324, 324, 324, 325, 326, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 327, 327, 327, 327, 328, 329, 330, 330, + 331, 332, 332, 333, 19, 334, 335, 335, + 336, 336, 336, 336, 336, 336, 337, 337, + 338, 339, 340, 341, 342, 343, 344, 345, + + 346, 347, 348, 348, 348, 348, 349, 350, + 351, 350, 351, 351, 351, 351, 351, 350, 350, 350, 350, 351, 351, 351, 351, 351, + 351, 351, 351, 352, 352, 352, 352, 352, - 352, 350, 350, 350, 350, 350, 350, 350, - 349, 350, 350, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 361, 362, 363, 335, - 335, 364, 364, 364, 365, 364, 364, 366, + 353, 351, 351, 351, 351, 351, 351, 351, + 350, 351, 351, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 362, 363, 364, 336, + 336, 365, 365, 365, 366, 365, 365, 367, - 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 381, - 382, 349, 349, 349, 346, 383, 383, 383, - 384, 350, 350, 350, 350, 350, 350, 350, + 368, 369, 370, 371, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 382, + 383, 350, 350, 350, 347, 384, 384, 384, + 385, 351, 351, 351, 351, 351, 351, 351, - 350, 350, 350, 350, 350, 350, 350, 350, - 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 350, 350, 350, 350, 350, 350, - - 350, 350, 350, 350, 350, 350, 350, 350, + 351, 351, 351, 351, 351, 351, 351, 351, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 385, 385, 350, 350, 350, 350, 350, 385, - - 347, 350, 348, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 350, 349, 350, 386, - 350, 350, 349, 347, 387, 349, 388, 388, - 388, 388, 388, 388, 388, 389, 390, 388, - - 388, 388, 388, 391, 388, 392, 392, 388, - 388, 390, 391, 388, 388, 391, 393, 393, - 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 385, 385, 385, 404, 404, 405, - - 406, 406, 406, 407, 407, 407, 407, 407, - 407, 407, 407, 407, 407, 407, 342, 408, - 409, 410, 411, 411, 411, 409, 409, 409, - 409, 409, 411, 411, 411, 411, 409, 411, - - 411, 411, 411, 411, 411, 411, 411, 411, - 409, 411, 409, 411, 409, 412, 412, 413, - 414, 415, 414, 414, 415, 414, 414, 415, - 415, 415, 414, 415, 415, 414, 415, 414, - - 414, 414, 415, 414, 415, 414, 415, 414, - 415, 414, 414, 342, 342, 413, 412, 412, - 416, 416, 416, 416, 416, 416, 416, 416, - 416, 417, 417, 417, 416, 416, 416, 416, - - 416, 416, 416, 416, 416, 416, 416, 416, - 416, 416, 416, 417, 417, 416, 351, 351, - 351, 418, 351, 418, 418, 351, 351, 351, - 418, 418, 351, 351, 351, 351, 351, 351, - - 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, - - 419, 419, 419, 419, 419, 419, 420, 420, + 350, 350, 351, 351, 351, 351, 351, 351, + + 351, 351, 351, 351, 351, 351, 351, 351, + 351, 351, 351, 351, 351, 351, 351, 351, + 351, 351, 351, 351, 351, 351, 351, 351, + 386, 386, 351, 351, 351, 351, 351, 386, + + 348, 351, 349, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 351, 350, 351, 387, + 351, 351, 350, 348, 388, 350, 389, 389, + 389, 389, 389, 389, 389, 390, 391, 389, + + 389, 389, 389, 392, 389, 393, 393, 389, + 389, 391, 392, 389, 389, 392, 394, 394, + 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 386, 386, 386, 405, 405, 406, + + 407, 407, 407, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 343, 409, + 410, 411, 412, 412, 412, 410, 410, 410, + 410, 410, 412, 412, 412, 412, 410, 412, + + 412, 412, 412, 412, 412, 412, 412, 412, + 410, 412, 410, 412, 410, 413, 413, 414, + 415, 416, 415, 415, 416, 415, 415, 416, + 416, 416, 415, 416, 416, 415, 416, 415, + + 415, 415, 416, 415, 416, 415, 416, 415, + 416, 415, 415, 343, 343, 414, 413, 413, + 417, 417, 417, 417, 417, 417, 417, 417, + 417, 418, 418, 418, 417, 417, 417, 417, + + 417, 417, 417, 417, 417, 417, 417, 417, + 417, 417, 417, 418, 418, 417, 352, 352, + 352, 419, 352, 419, 419, 352, 352, 352, + 419, 419, 352, 352, 352, 352, 352, 352, + + 420, 420, 420, 420, 420, 420, 420, 420, + 420, 420, 420, 420, 420, 420, 420, 420, + 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, - 420, 421, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - - 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 432, 432, 432, 432, 432, - 432, 432, 432, 432, 432, 432, 432, 432, - 432, 432, 432, 432, 432, 432, 432, 432, - - 432, 432, 432, 432, 432, 432, 432, 432, - 432, 432, 432, 433, 433, 433, 433, 433, - 433, 433, 434, 433, 435, 435, 436, 437, - 438, 439, 440, 296, 296, 296, 296, 296, - - 441, 441, 441, 441, 441, 441, 441, 441, - 441, 441, 441, 441, 441, 441, 441, 441, - 441, 441, 441, 441, 441, 441, 442, 442, - 442, 442, 443, 442, 442, 442, 442, 442, - - 442, 442, 442, 442, 443, 442, 442, 442, - 443, 442, 442, 442, 442, 442, 296, 296, - 444, 444, 444, 444, 444, 444, 444, 444, - 444, 444, 444, 444, 444, 444, 444, 296, - - 445, 446, 446, 446, 446, 446, 445, 446, - 446, 445, 446, 446, 446, 446, 446, 445, - 446, 446, 446, 446, 445, 446, 447, 447, - 447, 448, 448, 448, 296, 296, 449, 296, - - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - - 450, 451, 450, 450, 450, 450, 450, 450, - 450, 450, 452, 452, 452, 453, 454, 451, - 451, 454, 454, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - - 342, 342, 342, 342, 455, 455, 456, 455, - 455, 456, 455, 455, 455, 456, 456, 456, - 457, 458, 459, 455, 455, 455, 456, 455, - 455, 456, 456, 455, 455, 455, 455, 460, - - 461, 462, 462, 463, 464, 465, 465, 465, - 465, 465, 465, 465, 465, 465, 465, 465, - 465, 465, 465, 465, 465, 465, 465, 465, - 465, 465, 465, 465, 465, 465, 465, 465, - - 465, 465, 465, 465, 465, 465, 465, 465, - 465, 466, 465, 465, 465, 465, 465, 465, - 465, 466, 465, 465, 466, 465, 465, 465, - 465, 465, 467, 468, 469, 465, 463, 463, - - 463, 462, 462, 462, 462, 462, 462, 462, - 462, 463, 463, 463, 463, 470, 471, 468, - 465, 170, 172, 472, 472, 461, 467, 467, - 473, 473, 473, 473, 473, 473, 473, 473, - - 465, 465, 462, 462, 474, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 488, 488, 488, 488, - 489, 490, 490, 491, 491, 492, 491, 491, - - 493, 494, 495, 495, 199, 496, 496, 496, - 496, 496, 496, 496, 496, 199, 199, 496, - 496, 199, 199, 496, 496, 496, 496, 496, - 496, 496, 496, 496, 496, 496, 496, 496, - - 496, 496, 496, 496, 496, 496, 496, 496, - 496, 199, 496, 496, 496, 496, 496, 496, - 496, 199, 496, 199, 199, 199, 496, 496, - 496, 496, 199, 199, 497, 498, 499, 495, - - 495, 494, 494, 494, 494, 199, 199, 495, - 495, 199, 199, 500, 500, 501, 502, 199, - 199, 199, 199, 199, 199, 199, 199, 499, - 199, 199, 199, 199, 503, 503, 199, 503, - - 496, 496, 494, 494, 199, 199, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, - 496, 496, 514, 514, 515, 515, 515, 515, - 515, 516, 517, 518, 199, 199, 199, 199, - - 199, 519, 520, 521, 199, 522, 522, 522, - 522, 522, 522, 199, 199, 199, 199, 522, - 522, 199, 199, 522, 522, 522, 522, 522, - 522, 522, 522, 522, 522, 522, 522, 522, - - 522, 522, 522, 522, 522, 522, 522, 522, - 522, 199, 522, 522, 522, 522, 522, 522, - 522, 199, 522, 523, 199, 522, 523, 199, - 522, 522, 199, 199, 524, 199, 525, 525, - - 525, 520, 520, 199, 199, 199, 199, 520, - 520, 199, 199, 520, 520, 526, 199, 199, - 199, 527, 199, 199, 199, 199, 199, 199, - 199, 523, 523, 523, 522, 199, 523, 199, - - 199, 199, 199, 199, 199, 199, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, - 520, 520, 522, 522, 522, 527, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 538, 538, 539, 199, 540, 540, 540, - 540, 540, 540, 540, 541, 540, 199, 540, - 540, 540, 199, 540, 540, 540, 540, 540, - 540, 540, 540, 540, 540, 540, 540, 540, - - 540, 540, 540, 540, 540, 540, 540, 540, - 540, 199, 540, 540, 540, 540, 540, 540, - 540, 199, 540, 540, 199, 540, 540, 540, - 540, 540, 199, 199, 542, 540, 539, 539, - - 539, 538, 538, 538, 538, 538, 199, 538, - 538, 539, 199, 539, 539, 543, 199, 199, - 540, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 540, 541, 544, 544, 199, 199, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 557, 558, 558, 199, 559, 559, 559, - 559, 559, 559, 559, 559, 199, 199, 559, - 559, 199, 199, 559, 559, 559, 559, 559, - 559, 559, 559, 559, 559, 559, 559, 559, - - 559, 559, 559, 559, 559, 559, 559, 559, - 559, 199, 559, 559, 559, 559, 559, 559, - 559, 199, 559, 559, 199, 560, 559, 559, - 559, 559, 199, 199, 561, 559, 562, 557, - - 558, 557, 557, 557, 563, 199, 199, 558, - 564, 199, 199, 564, 564, 565, 199, 199, - 199, 199, 199, 199, 199, 199, 566, 562, - 199, 199, 199, 199, 567, 567, 199, 559, - - 559, 559, 563, 563, 199, 199, 568, 569, - 570, 571, 572, 573, 574, 575, 576, 577, - 578, 560, 579, 579, 579, 579, 579, 579, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 580, 581, 199, 581, 581, 581, - 581, 581, 581, 199, 199, 199, 581, 581, - 581, 199, 581, 581, 582, 581, 199, 199, - 199, 581, 581, 199, 581, 199, 581, 581, - - 199, 199, 199, 581, 581, 199, 199, 199, - 581, 581, 581, 199, 199, 199, 581, 581, - 581, 581, 581, 581, 581, 581, 583, 581, - 581, 581, 199, 199, 199, 199, 584, 585, - - 580, 585, 585, 199, 199, 199, 585, 585, - 585, 199, 586, 586, 586, 587, 199, 199, - 588, 199, 199, 199, 199, 199, 199, 584, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 589, 590, - 591, 592, 593, 594, 595, 596, 597, 598, - 599, 599, 599, 600, 600, 600, 600, 600, - 600, 601, 600, 199, 199, 199, 199, 199, - - 602, 603, 603, 603, 199, 604, 604, 604, - 604, 604, 604, 604, 604, 199, 604, 604, - 604, 199, 604, 604, 604, 604, 604, 604, - 604, 604, 604, 604, 604, 604, 604, 604, - - 604, 604, 604, 604, 604, 604, 604, 604, - 604, 199, 604, 604, 604, 604, 604, 604, - 604, 604, 604, 604, 605, 604, 604, 604, - 604, 604, 199, 199, 199, 606, 607, 607, - - 607, 603, 603, 603, 603, 199, 607, 607, - 608, 199, 607, 607, 607, 609, 199, 199, - 199, 199, 199, 199, 199, 610, 611, 199, - 606, 606, 199, 199, 199, 199, 199, 199, - - 604, 604, 612, 612, 199, 199, 613, 614, - 615, 616, 617, 618, 619, 620, 621, 622, - 199, 199, 199, 199, 199, 199, 199, 199, - 623, 623, 623, 623, 623, 623, 623, 624, - - 199, 625, 626, 626, 199, 627, 627, 627, - 627, 627, 627, 627, 627, 199, 627, 627, - 627, 199, 627, 627, 627, 627, 627, 627, - 627, 627, 627, 627, 627, 627, 627, 627, - - 627, 627, 627, 627, 627, 627, 627, 627, - 627, 199, 627, 627, 627, 627, 627, 627, - 627, 627, 627, 627, 199, 627, 627, 627, - 627, 627, 199, 199, 628, 629, 626, 630, - - 631, 626, 632, 626, 626, 199, 630, 631, - 631, 199, 631, 631, 633, 634, 199, 199, - 199, 199, 199, 199, 199, 632, 632, 199, - 199, 199, 199, 199, 199, 199, 627, 199, - - 627, 627, 635, 635, 199, 199, 636, 637, - 638, 639, 640, 641, 642, 643, 644, 645, - 199, 646, 646, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 647, 648, 648, 199, 649, 649, 649, - 649, 649, 649, 649, 649, 199, 649, 649, - 649, 199, 649, 649, 649, 649, 649, 649, - 649, 649, 649, 649, 649, 649, 649, 649, - - 649, 649, 649, 649, 649, 649, 649, 649, - 649, 650, 649, 649, 649, 649, 649, 649, - 649, 649, 649, 649, 649, 649, 649, 649, - 649, 649, 650, 199, 199, 651, 652, 648, - - 648, 653, 653, 653, 654, 199, 648, 648, - 648, 199, 655, 655, 655, 656, 650, 199, - 199, 199, 199, 199, 199, 199, 199, 652, - 199, 199, 199, 199, 199, 199, 199, 199, - - 649, 649, 654, 654, 199, 199, 657, 658, - 659, 660, 661, 662, 663, 664, 665, 666, - 667, 667, 667, 667, 667, 667, 199, 199, - 199, 668, 651, 651, 651, 651, 651, 651, - - 199, 199, 669, 669, 199, 670, 670, 670, - 670, 670, 670, 670, 670, 670, 670, 670, - 670, 670, 670, 670, 670, 670, 670, 199, - 199, 199, 670, 670, 670, 670, 670, 670, - - 670, 670, 670, 670, 670, 670, 670, 670, - 670, 670, 670, 670, 670, 670, 670, 670, - 670, 670, 199, 670, 670, 670, 670, 670, - 670, 670, 670, 670, 199, 670, 199, 199, - - 670, 670, 670, 670, 670, 670, 670, 199, - 199, 199, 671, 199, 199, 199, 199, 672, - 669, 669, 673, 673, 673, 199, 673, 199, - 669, 669, 674, 669, 674, 674, 674, 672, - - 199, 199, 199, 199, 199, 199, 675, 676, - 677, 678, 679, 680, 681, 682, 683, 684, - 199, 199, 669, 669, 685, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 686, 686, 686, 686, 686, 686, 686, - 686, 686, 686, 686, 686, 686, 686, 686, - 686, 686, 686, 686, 686, 686, 686, 686, - 686, 686, 686, 686, 686, 686, 686, 686, - - 686, 686, 686, 686, 686, 686, 686, 686, - 686, 686, 686, 686, 686, 686, 686, 686, - 686, 687, 686, 688, 687, 687, 687, 687, - 689, 689, 690, 199, 199, 199, 199, 12, - - 686, 686, 686, 686, 686, 686, 691, 687, - 692, 692, 692, 692, 687, 687, 687, 693, - 694, 695, 696, 697, 698, 699, 700, 701, - 702, 703, 704, 704, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 705, 705, 199, 705, 199, 199, 705, - 705, 199, 705, 199, 199, 705, 199, 199, - 199, 199, 199, 199, 705, 705, 705, 705, - 199, 705, 705, 705, 705, 705, 705, 705, - - 199, 705, 705, 705, 199, 705, 199, 705, - 199, 199, 705, 705, 199, 705, 705, 705, - 705, 706, 705, 707, 706, 706, 706, 706, - 708, 708, 199, 706, 706, 705, 199, 199, - - 705, 705, 705, 705, 705, 199, 709, 199, - 710, 710, 710, 710, 706, 706, 199, 199, - 711, 712, 713, 714, 715, 716, 717, 718, - 719, 720, 199, 199, 721, 721, 722, 722, - - 723, 724, 724, 724, 725, 726, 725, 725, - 727, 725, 725, 728, 729, 730, 730, 730, - 730, 730, 727, 731, 730, 731, 731, 731, - 732, 732, 731, 731, 731, 731, 731, 731, - - 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 743, 743, 743, 743, 743, - 743, 743, 743, 743, 744, 732, 731, 732, - 731, 745, 746, 747, 746, 747, 748, 748, - - 723, 723, 723, 749, 723, 723, 723, 723, - 199, 723, 723, 723, 723, 749, 723, 723, - 723, 723, 749, 723, 723, 723, 723, 749, - 723, 723, 723, 723, 749, 723, 723, 723, - - 723, 723, 723, 723, 723, 723, 723, 723, - 723, 749, 750, 751, 751, 199, 199, 199, - 199, 752, 753, 754, 755, 754, 754, 756, - 754, 756, 753, 753, 753, 753, 757, 758, - - 753, 754, 759, 759, 760, 728, 759, 759, - 723, 723, 723, 723, 761, 762, 762, 762, - 757, 757, 757, 754, 757, 757, 763, 757, - 199, 757, 757, 757, 757, 754, 757, 757, - - 757, 757, 754, 757, 757, 757, 757, 754, - 757, 757, 757, 757, 754, 757, 763, 763, - 763, 757, 757, 757, 757, 757, 757, 757, - 763, 754, 763, 763, 763, 199, 764, 764, - - 765, 765, 765, 765, 765, 765, 766, 765, - 765, 765, 765, 765, 765, 199, 767, 765, - 768, 768, 769, 770, 771, 772, 772, 772, - 772, 773, 773, 199, 199, 199, 199, 199, - - 774, 774, 774, 774, 774, 774, 774, 774, - 774, 774, 774, 774, 774, 774, 774, 774, - 774, 774, 774, 774, 774, 774, 774, 774, - 774, 774, 774, 774, 774, 774, 774, 774, - - 774, 774, 775, 774, 774, 774, 776, 774, - 775, 774, 774, 777, 778, 779, 780, 779, - 779, 781, 779, 782, 782, 782, 779, 783, - 778, 784, 785, 786, 786, 782, 782, 775, - - 787, 788, 789, 790, 791, 792, 793, 794, - 795, 796, 797, 797, 798, 798, 798, 798, - 774, 774, 774, 774, 774, 774, 781, 781, - 779, 779, 775, 775, 775, 775, 782, 782, - - 782, 775, 777, 777, 777, 775, 775, 777, - 777, 777, 777, 777, 777, 777, 775, 775, - 775, 782, 782, 782, 782, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, - - 775, 775, 782, 777, 786, 782, 782, 777, - 777, 777, 777, 777, 777, 799, 775, 777, - 800, 801, 802, 803, 804, 805, 806, 807, - 808, 809, 810, 810, 810, 811, 812, 812, - - 813, 813, 813, 813, 813, 813, 813, 813, - 813, 813, 813, 813, 813, 813, 813, 813, - 813, 813, 813, 813, 813, 813, 813, 813, - 813, 813, 813, 813, 813, 813, 813, 813, - - 813, 813, 813, 813, 813, 813, 199, 814, - 199, 199, 199, 199, 199, 814, 199, 199, - 815, 815, 815, 815, 815, 815, 815, 815, - 815, 815, 815, 815, 815, 815, 815, 815, - - 815, 815, 815, 815, 815, 815, 815, 815, - 815, 815, 815, 815, 815, 815, 815, 815, - 815, 815, 815, 815, 815, 815, 815, 816, - 816, 817, 817, 818, 819, 820, 820, 820, - 821, 821, 821, 821, 821, 821, 821, 821, - 821, 821, 821, 821, 821, 821, 821, 821, + 420, 420, 420, 420, 420, 420, 421, 421, + 421, 421, 421, 421, 421, 421, 421, 421, + 421, 422, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + + 423, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 433, 433, 433, 433, 433, 433, + 433, 433, 433, 433, 433, 433, 433, 433, + 433, 433, 433, 433, 433, 433, 433, 433, + + 433, 433, 433, 433, 433, 433, 433, 433, + 433, 433, 433, 434, 434, 434, 434, 434, + 434, 434, 435, 434, 436, 436, 437, 438, + 439, 440, 441, 297, 297, 297, 297, 297, + + 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 443, 443, + 443, 443, 444, 443, 443, 443, 443, 443, + + 443, 443, 443, 443, 444, 443, 443, 443, + 444, 443, 443, 443, 443, 443, 297, 297, + 445, 445, 445, 445, 445, 445, 445, 445, + 445, 445, 445, 445, 445, 445, 445, 297, + + 446, 447, 447, 447, 447, 447, 446, 446, + 447, 446, 447, 447, 447, 447, 447, 447, + 447, 447, 447, 447, 446, 447, 448, 448, + 448, 449, 449, 449, 297, 297, 450, 297, + + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 451, 452, 451, 451, 451, 451, 451, 451, + 451, 451, 453, 453, 453, 454, 455, 452, + 452, 455, 455, 456, 456, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + + 343, 343, 343, 457, 458, 458, 459, 458, + 458, 459, 458, 458, 458, 459, 459, 459, + 460, 461, 462, 458, 458, 458, 459, 458, + 458, 459, 459, 458, 458, 458, 458, 463, + + 464, 465, 465, 466, 467, 468, 468, 468, + 468, 468, 468, 468, 468, 468, 468, 468, + 468, 468, 468, 468, 468, 468, 468, 468, + 468, 468, 468, 468, 468, 468, 468, 468, + + 468, 468, 468, 468, 468, 468, 468, 468, + 468, 469, 468, 468, 468, 468, 468, 468, + 468, 469, 468, 468, 469, 468, 468, 468, + 468, 468, 470, 471, 472, 468, 466, 466, + + 466, 465, 465, 465, 465, 465, 465, 465, + 465, 466, 466, 466, 466, 473, 474, 471, + 468, 171, 173, 475, 475, 464, 470, 470, + 476, 476, 476, 476, 476, 476, 476, 476, + + 468, 468, 465, 465, 477, 477, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 490, 491, 491, 491, 491, 491, + 492, 493, 493, 494, 494, 495, 494, 494, + + 496, 497, 498, 498, 200, 499, 499, 499, + 499, 499, 499, 499, 499, 200, 200, 499, + 499, 200, 200, 499, 499, 499, 499, 499, + 499, 499, 499, 499, 499, 499, 499, 499, + + 499, 499, 499, 499, 499, 499, 499, 499, + 499, 200, 499, 499, 499, 499, 499, 499, + 499, 200, 499, 200, 200, 200, 499, 499, + 499, 499, 200, 200, 500, 501, 502, 498, + + 498, 497, 497, 497, 497, 200, 200, 498, + 498, 200, 200, 503, 503, 504, 505, 200, + 200, 200, 200, 200, 200, 200, 200, 502, + 200, 200, 200, 200, 506, 506, 200, 506, + + 499, 499, 497, 497, 200, 200, 507, 508, + 509, 510, 511, 512, 513, 514, 515, 516, + 499, 499, 517, 517, 518, 518, 518, 518, + 518, 519, 520, 521, 200, 200, 200, 200, + + 200, 522, 523, 524, 200, 525, 525, 525, + 525, 525, 525, 200, 200, 200, 200, 525, + 525, 200, 200, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, + + 525, 525, 525, 525, 525, 525, 525, 525, + 525, 200, 525, 525, 525, 525, 525, 525, + 525, 200, 525, 526, 200, 525, 526, 200, + 525, 525, 200, 200, 527, 200, 528, 528, + + 528, 523, 523, 200, 200, 200, 200, 523, + 523, 200, 200, 523, 523, 529, 200, 200, + 200, 530, 200, 200, 200, 200, 200, 200, + 200, 526, 526, 526, 525, 200, 526, 200, + + 200, 200, 200, 200, 200, 200, 531, 532, + 533, 534, 535, 536, 537, 538, 539, 540, + 523, 523, 525, 525, 525, 530, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 541, 541, 542, 200, 543, 543, 543, + 543, 543, 543, 543, 544, 543, 200, 543, + 543, 543, 200, 543, 543, 543, 543, 543, + 543, 543, 543, 543, 543, 543, 543, 543, + + 543, 543, 543, 543, 543, 543, 543, 543, + 543, 200, 543, 543, 543, 543, 543, 543, + 543, 200, 543, 543, 200, 543, 543, 543, + 543, 543, 200, 200, 545, 543, 542, 542, + + 542, 541, 541, 541, 541, 541, 200, 541, + 541, 542, 200, 542, 542, 546, 200, 200, + 543, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 543, 544, 547, 547, 200, 200, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, + 558, 559, 200, 200, 200, 200, 200, 200, + 200, 560, 200, 200, 200, 200, 200, 200, + + 200, 561, 562, 562, 200, 563, 563, 563, + 563, 563, 563, 563, 563, 200, 200, 563, + 563, 200, 200, 563, 563, 563, 563, 563, + 563, 563, 563, 563, 563, 563, 563, 563, + + 563, 563, 563, 563, 563, 563, 563, 563, + 563, 200, 563, 563, 563, 563, 563, 563, + 563, 200, 563, 563, 200, 564, 563, 563, + 563, 563, 200, 200, 565, 563, 566, 561, + + 562, 561, 561, 561, 567, 200, 200, 562, + 568, 200, 200, 568, 568, 569, 200, 200, + 200, 200, 200, 200, 200, 200, 570, 566, + 200, 200, 200, 200, 571, 571, 200, 563, + + 563, 563, 567, 567, 200, 200, 572, 573, + 574, 575, 576, 577, 578, 579, 580, 581, + 582, 564, 583, 583, 583, 583, 583, 583, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 584, 585, 200, 585, 585, 585, + 585, 585, 585, 200, 200, 200, 585, 585, + 585, 200, 585, 585, 586, 585, 200, 200, + 200, 585, 585, 200, 585, 200, 585, 585, + + 200, 200, 200, 585, 585, 200, 200, 200, + 585, 585, 585, 200, 200, 200, 585, 585, + 585, 585, 585, 585, 585, 585, 587, 585, + 585, 585, 200, 200, 200, 200, 588, 589, + + 584, 589, 589, 200, 200, 200, 589, 589, + 589, 200, 590, 590, 590, 591, 200, 200, + 592, 200, 200, 200, 200, 200, 200, 588, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 593, 594, + 595, 596, 597, 598, 599, 600, 601, 602, + 603, 603, 603, 604, 604, 604, 604, 604, + 604, 605, 604, 200, 200, 200, 200, 200, + + 606, 607, 607, 607, 200, 608, 608, 608, + 608, 608, 608, 608, 608, 200, 608, 608, + 608, 200, 608, 608, 608, 608, 608, 608, + 608, 608, 608, 608, 608, 608, 608, 608, + + 608, 608, 608, 608, 608, 608, 608, 608, + 608, 200, 608, 608, 608, 608, 608, 608, + 608, 608, 608, 608, 609, 608, 608, 608, + 608, 608, 200, 200, 200, 610, 611, 611, + + 611, 607, 607, 607, 607, 200, 611, 611, + 612, 200, 611, 611, 611, 613, 200, 200, + 200, 200, 200, 200, 200, 614, 615, 200, + 610, 610, 616, 200, 200, 200, 200, 200, + + 608, 608, 617, 617, 200, 200, 618, 619, + 620, 621, 622, 623, 624, 625, 626, 627, + 200, 200, 200, 200, 200, 200, 200, 200, + 628, 628, 628, 628, 628, 628, 628, 629, + + 200, 630, 631, 631, 200, 632, 632, 632, + 632, 632, 632, 632, 632, 200, 632, 632, + 632, 200, 632, 632, 632, 632, 632, 632, + 632, 632, 632, 632, 632, 632, 632, 632, + + 632, 632, 632, 632, 632, 632, 632, 632, + 632, 200, 632, 632, 632, 632, 632, 632, + 632, 632, 632, 632, 200, 632, 632, 632, + 632, 632, 200, 200, 633, 634, 631, 635, + + 636, 631, 637, 631, 631, 200, 635, 636, + 636, 200, 636, 636, 638, 639, 200, 200, + 200, 200, 200, 200, 200, 637, 637, 200, + 200, 200, 200, 200, 200, 200, 632, 200, + + 632, 632, 640, 640, 200, 200, 641, 642, + 643, 644, 645, 646, 647, 648, 649, 650, + 200, 651, 651, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 652, 653, 653, 200, 654, 654, 654, + 654, 654, 654, 654, 654, 200, 654, 654, + 654, 200, 654, 654, 654, 654, 654, 654, + 654, 654, 654, 654, 654, 654, 654, 654, + + 654, 654, 654, 654, 654, 654, 654, 654, + 654, 655, 654, 654, 654, 654, 654, 654, + 654, 654, 654, 654, 654, 654, 654, 654, + 654, 654, 655, 200, 200, 656, 657, 653, + + 653, 658, 658, 658, 659, 200, 653, 653, + 653, 200, 660, 660, 660, 661, 655, 200, + 200, 200, 200, 200, 200, 200, 200, 657, + 200, 200, 200, 200, 200, 200, 200, 662, + + 654, 654, 659, 659, 200, 200, 663, 664, + 665, 666, 667, 668, 669, 670, 671, 672, + 673, 673, 673, 673, 673, 673, 200, 200, + 200, 674, 656, 656, 656, 656, 656, 656, + + 200, 200, 675, 675, 200, 676, 676, 676, + 676, 676, 676, 676, 676, 676, 676, 676, + 676, 676, 676, 676, 676, 676, 676, 200, + 200, 200, 676, 676, 676, 676, 676, 676, + + 676, 676, 676, 676, 676, 676, 676, 676, + 676, 676, 676, 676, 676, 676, 676, 676, + 676, 676, 200, 676, 676, 676, 676, 676, + 676, 676, 676, 676, 200, 676, 200, 200, + + 676, 676, 676, 676, 676, 676, 676, 200, + 200, 200, 677, 200, 200, 200, 200, 678, + 675, 675, 679, 679, 679, 200, 679, 200, + 675, 675, 680, 675, 680, 680, 680, 678, + + 200, 200, 200, 200, 200, 200, 681, 682, + 683, 684, 685, 686, 687, 688, 689, 690, + 200, 200, 675, 675, 691, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 692, 692, 692, 692, 692, 692, 692, + 692, 692, 692, 692, 692, 692, 692, 692, + 692, 692, 692, 692, 692, 692, 692, 692, + 692, 692, 692, 692, 692, 692, 692, 692, + + 692, 692, 692, 692, 692, 692, 692, 692, + 692, 692, 692, 692, 692, 692, 692, 692, + 692, 693, 692, 694, 693, 693, 693, 693, + 695, 695, 696, 200, 200, 200, 200, 12, + + 692, 692, 692, 692, 692, 692, 697, 693, + 698, 698, 698, 698, 693, 693, 693, 699, + 700, 701, 702, 703, 704, 705, 706, 707, + 708, 709, 710, 710, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 711, 711, 200, 711, 200, 200, 711, + 711, 200, 711, 200, 200, 711, 200, 200, + 200, 200, 200, 200, 711, 711, 711, 711, + 200, 711, 711, 711, 711, 711, 711, 711, + + 200, 711, 711, 711, 200, 711, 200, 711, + 200, 200, 711, 711, 200, 711, 711, 711, + 711, 712, 711, 713, 712, 712, 712, 712, + 714, 714, 200, 712, 712, 711, 200, 200, + + 711, 711, 711, 711, 711, 200, 715, 200, + 716, 716, 716, 716, 712, 712, 200, 200, + 717, 718, 719, 720, 721, 722, 723, 724, + 725, 726, 200, 200, 727, 727, 728, 728, + + 729, 730, 730, 730, 731, 732, 731, 731, + 733, 731, 731, 734, 735, 736, 736, 736, + 736, 736, 733, 737, 736, 737, 737, 737, + 738, 738, 737, 737, 737, 737, 737, 737, + + 739, 740, 741, 742, 743, 744, 745, 746, + 747, 748, 749, 749, 749, 749, 749, 749, + 749, 749, 749, 749, 750, 738, 737, 738, + 737, 751, 752, 753, 752, 753, 754, 754, + + 729, 729, 729, 755, 729, 729, 729, 729, + 200, 729, 729, 729, 729, 755, 729, 729, + 729, 729, 755, 729, 729, 729, 729, 755, + 729, 729, 729, 729, 755, 729, 729, 729, + + 729, 729, 729, 729, 729, 729, 729, 729, + 729, 755, 756, 757, 757, 200, 200, 200, + 200, 758, 759, 760, 761, 760, 760, 762, + 760, 762, 759, 759, 759, 759, 763, 764, + + 759, 760, 765, 765, 766, 734, 765, 765, + 729, 729, 729, 729, 767, 768, 768, 768, + 763, 763, 763, 760, 763, 763, 769, 763, + 200, 763, 763, 763, 763, 760, 763, 763, + + 763, 763, 760, 763, 763, 763, 763, 760, + 763, 763, 763, 763, 760, 763, 769, 769, + 769, 763, 763, 763, 763, 763, 763, 763, + 769, 760, 769, 769, 769, 200, 770, 770, + + 771, 771, 771, 771, 771, 771, 772, 771, + 771, 771, 771, 771, 771, 200, 773, 771, + 774, 774, 775, 776, 777, 778, 778, 778, + 778, 779, 779, 200, 200, 200, 200, 200, + + 780, 780, 780, 780, 780, 780, 780, 780, + 780, 780, 780, 780, 780, 780, 780, 780, + 780, 780, 780, 780, 780, 780, 780, 780, + 780, 780, 780, 780, 780, 780, 780, 780, + + 780, 780, 781, 780, 780, 780, 782, 780, + 781, 780, 780, 783, 784, 785, 786, 785, + 785, 787, 785, 788, 788, 788, 785, 789, + 784, 790, 791, 792, 792, 788, 788, 781, + + 793, 794, 795, 796, 797, 798, 799, 800, + 801, 802, 803, 803, 804, 804, 804, 804, + 780, 780, 780, 780, 780, 780, 787, 787, + 785, 785, 781, 781, 781, 781, 788, 788, + + 788, 781, 783, 783, 783, 781, 781, 783, + 783, 783, 783, 783, 783, 783, 781, 781, + 781, 788, 788, 788, 788, 781, 781, 781, + 781, 781, 781, 781, 781, 781, 781, 781, + + 781, 781, 788, 783, 792, 788, 788, 783, + 783, 783, 783, 783, 783, 805, 781, 783, + 806, 807, 808, 809, 810, 811, 812, 813, + 814, 815, 816, 816, 816, 817, 818, 818, + + 819, 819, 819, 819, 819, 819, 819, 819, + 819, 819, 819, 819, 819, 819, 819, 819, + 819, 819, 819, 819, 819, 819, 819, 819, + 819, 819, 819, 819, 819, 819, 819, 819, + + 819, 819, 819, 819, 819, 819, 200, 820, + 200, 200, 200, 200, 200, 820, 200, 200, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, - 821, 821, 821, 821, 821, 821, 821, 821, - 821, 821, 822, 822, 822, 822, 822, 821, - - 823, 824, 824, 824, 824, 824, 824, 824, - 824, 824, 824, 824, 824, 824, 824, 824, - 824, 824, 824, 824, 824, 824, 823, 823, - 823, 823, 823, 823, 823, 823, 823, 823, + 821, 821, 821, 821, 821, 821, 821, 822, + 822, 823, 823, 824, 825, 826, 826, 826, - 823, 823, 823, 823, 823, 823, 823, 823, - 823, 823, 823, 823, 823, 823, 823, 823, - 823, 823, 823, 823, 823, 823, 823, 823, - 823, 823, 823, 823, 823, 823, 823, 823, - - 823, 823, 823, 825, 825, 825, 825, 825, - 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, - - 826, 826, 826, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, @@ -1559,202 +1534,202 @@ static const unsigned short uc_property_trie[] = { 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, - 827, 827, 828, 828, 828, 828, 828, 828, - - 829, 829, 829, 829, 829, 829, 829, 830, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, + 827, 827, 828, 828, 828, 828, 828, 827, + 829, 830, 830, 830, 830, 830, 830, 830, + 830, 830, 830, 830, 830, 830, 830, 830, + 830, 830, 830, 830, 830, 830, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, - - 829, 829, 829, 829, 829, 829, 829, 830, - 829, 199, 829, 829, 829, 829, 199, 199, - 829, 829, 829, 829, 829, 829, 829, 199, - 829, 199, 829, 829, 829, 829, 199, 199, - 829, 829, 829, 829, 829, 829, 829, 830, - 829, 199, 829, 829, 829, 829, 199, 199, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 830, - 829, 199, 829, 829, 829, 829, 199, 199, - 829, 829, 829, 829, 829, 829, 829, 199, - - 829, 199, 829, 829, 829, 829, 199, 199, - 829, 829, 829, 829, 829, 829, 829, 830, - 829, 829, 829, 829, 829, 829, 829, 199, 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 830, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, + 829, 829, 829, 831, 831, 831, 831, 831, + 832, 832, 832, 832, 832, 832, 832, 832, + 832, 832, 832, 832, 832, 832, 832, 832, + 832, 832, 832, 832, 832, 832, 832, 832, + + 832, 832, 832, 833, 833, 833, 833, 833, + 833, 833, 833, 833, 833, 833, 833, 833, + 833, 833, 833, 833, 833, 833, 833, 833, + 833, 833, 833, 833, 833, 833, 833, 833, + + 833, 833, 833, 833, 833, 833, 833, 833, + 833, 833, 833, 833, 833, 833, 833, 833, + 833, 833, 833, 833, 833, 833, 833, 833, + 833, 833, 834, 834, 834, 834, 834, 834, + + 835, 835, 835, 835, 835, 835, 835, 836, + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, + + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, + + 835, 835, 835, 835, 835, 835, 835, 836, + 835, 200, 835, 835, 835, 835, 200, 200, + 835, 835, 835, 835, 835, 835, 835, 200, + 835, 200, 835, 835, 835, 835, 200, 200, + + 835, 835, 835, 835, 835, 835, 835, 836, + 835, 200, 835, 835, 835, 835, 200, 200, + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, + + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 836, + 835, 200, 835, 835, 835, 835, 200, 200, + 835, 835, 835, 835, 835, 835, 835, 200, + + 835, 200, 835, 835, 835, 835, 200, 200, + 835, 835, 835, 835, 835, 835, 835, 836, + 835, 835, 835, 835, 835, 835, 835, 200, + 835, 835, 835, 835, 835, 835, 835, 835, + + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 836, + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, + + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 836, + 835, 200, 835, 835, 835, 835, 200, 200, + 835, 835, 835, 835, 835, 835, 835, 836, + + 835, 835, 835, 835, 835, 835, 835, 836, + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 200, 200, 837, 837, 838, + + 839, 840, 841, 842, 842, 842, 842, 841, + 841, 843, 844, 845, 846, 847, 848, 849, + 850, 851, 852, 852, 852, 852, 852, 852, + 852, 852, 852, 852, 852, 200, 200, 200, + + 836, 836, 836, 836, 836, 836, 836, 836, + 836, 836, 836, 836, 836, 836, 836, 836, + 853, 853, 853, 853, 853, 853, 853, 853, + 853, 853, 200, 200, 200, 200, 200, 200, + + 854, 855, 856, 857, 858, 859, 860, 861, + 862, 863, 864, 865, 866, 867, 868, 869, + 870, 871, 872, 873, 874, 875, 876, 877, + 878, 879, 880, 881, 882, 883, 884, 885, + + 886, 887, 888, 889, 890, 891, 892, 893, + 894, 895, 896, 897, 898, 899, 900, 901, + 902, 903, 904, 905, 906, 907, 908, 909, + 910, 911, 912, 913, 914, 915, 916, 917, + + 918, 919, 920, 921, 922, 923, 924, 925, + 926, 927, 928, 929, 930, 931, 932, 933, + 934, 934, 934, 934, 934, 935, 200, 200, + 936, 936, 936, 936, 936, 936, 200, 200, + + 937, 938, 938, 938, 938, 938, 938, 938, + 938, 938, 938, 938, 938, 938, 938, 938, + 938, 938, 938, 938, 938, 938, 938, 938, + 938, 938, 938, 938, 938, 938, 938, 938, + + 938, 938, 938, 938, 938, 938, 938, 938, + 938, 938, 938, 938, 938, 938, 938, 938, + 938, 938, 938, 938, 938, 938, 938, 938, + 938, 938, 938, 938, 938, 938, 938, 938, + + 938, 938, 938, 938, 938, 938, 938, 938, + 938, 938, 938, 938, 938, 939, 940, 938, + 938, 938, 938, 938, 938, 938, 938, 941, + 941, 941, 941, 941, 941, 941, 941, 941, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 830, - 829, 199, 829, 829, 829, 829, 199, 199, - 829, 829, 829, 829, 829, 829, 829, 830, + 942, 943, 943, 943, 943, 943, 943, 943, + 943, 943, 943, 943, 943, 943, 943, 943, + 943, 943, 943, 943, 943, 943, 943, 943, + 943, 943, 943, 944, 945, 200, 200, 200, - 829, 829, 829, 829, 829, 829, 829, 830, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 199, 199, 831, 831, 832, + 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 946, - 833, 834, 835, 836, 836, 836, 836, 835, - 835, 837, 838, 839, 840, 841, 842, 843, - 844, 845, 846, 846, 846, 846, 846, 846, - 846, 846, 846, 846, 846, 199, 199, 199, + 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 947, 947, 947, 948, 948, + 948, 949, 949, 949, 949, 949, 949, 949, + 949, 200, 200, 200, 200, 200, 200, 200, - 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, - 847, 847, 847, 847, 847, 847, 847, 847, - 847, 847, 199, 199, 199, 199, 199, 199, - - 848, 848, 848, 848, 848, 848, 848, 848, - 848, 848, 848, 848, 848, 848, 848, 848, - 848, 848, 848, 848, 848, 848, 848, 848, - 848, 848, 848, 848, 848, 848, 848, 848, - - 848, 848, 848, 848, 848, 848, 848, 848, - 848, 848, 848, 848, 848, 848, 848, 848, - 848, 848, 848, 848, 848, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 849, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 850, 850, 850, - - 850, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 850, 850, 850, - - 850, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 851, 852, 850, - 850, 850, 850, 850, 850, 850, 850, 853, - 853, 853, 853, 853, 853, 853, 853, 853, + 950, 950, 950, 950, 950, 950, 950, 950, + 950, 950, 950, 950, 950, 200, 950, 950, + 950, 950, 951, 951, 952, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, - 854, 855, 855, 855, 855, 855, 855, 855, - 855, 855, 855, 855, 855, 855, 855, 855, - 855, 855, 855, 855, 855, 855, 855, 855, - 855, 855, 855, 856, 857, 199, 199, 199, - - 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, - - 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 859, 859, 859, 860, 860, - 860, 861, 861, 861, 861, 861, 861, 861, - 861, 199, 199, 199, 199, 199, 199, 199, - - 862, 862, 862, 862, 862, 862, 862, 862, - 862, 862, 862, 862, 862, 199, 862, 862, - 862, 862, 863, 863, 864, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 865, 865, 865, 865, 865, 865, 865, 865, - 865, 865, 865, 865, 865, 865, 865, 865, - 865, 865, 866, 866, 867, 868, 868, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 869, 869, 869, 869, 869, 869, 869, 869, - 869, 869, 869, 869, 869, 869, 869, 869, - 869, 869, 870, 870, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 199, 871, 871, - 871, 199, 872, 872, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 873, 873, 873, 873, 873, 873, 873, 873, - 873, 873, 873, 873, 873, 873, 873, 873, - 873, 873, 873, 873, 873, 873, 873, 873, - 873, 873, 873, 873, 873, 873, 873, 873, - - 873, 873, 873, 873, 873, 873, 873, 873, - 873, 873, 873, 873, 873, 873, 873, 873, - 873, 873, 873, 873, 874, 874, 875, 874, - 874, 874, 874, 874, 874, 874, 875, 875, - - 875, 875, 875, 875, 875, 875, 874, 875, - 875, 874, 874, 874, 874, 874, 874, 874, - 874, 874, 876, 874, 877, 877, 878, 879, - 877, 880, 877, 881, 873, 882, 199, 199, - - 883, 884, 885, 886, 887, 888, 889, 890, - 891, 892, 199, 199, 199, 199, 199, 199, - 893, 893, 893, 893, 893, 893, 893, 893, - 893, 893, 199, 199, 199, 199, 199, 199, - - 894, 894, 895, 896, 897, 898, 899, 900, - 901, 902, 903, 904, 904, 904, 905, 199, - 906, 907, 908, 909, 910, 911, 912, 913, - 914, 915, 199, 199, 199, 199, 199, 199, - - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - - 916, 916, 916, 917, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - 199, 199, 199, 199, 199, 199, 199, 199, - - 918, 918, 918, 918, 918, 918, 918, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 919, 920, 199, 199, 199, 199, 199, - 853, 853, 853, 853, 853, 853, 853, 853, - 853, 853, 853, 853, 853, 853, 853, 853, + 953, 953, 953, 953, 953, 953, 953, 953, + 953, 953, 953, 953, 953, 953, 953, 953, + 953, 953, 954, 954, 955, 956, 956, 200, + 200, 200, 200, 200, 200, 200, 200, 200, - 853, 853, 853, 853, 853, 853, 853, 853, - 853, 853, 853, 853, 853, 853, 853, 853, - 853, 853, 853, 853, 853, 853, 853, 853, - 853, 853, 853, 853, 853, 853, 853, 853, + 957, 957, 957, 957, 957, 957, 957, 957, + 957, 957, 957, 957, 957, 957, 957, 957, + 957, 957, 958, 958, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, - 853, 853, 853, 853, 853, 853, 853, 853, - 853, 853, 853, 853, 853, 853, 853, 853, - 853, 853, 853, 853, 853, 853, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, + 959, 959, 959, 959, 959, 959, 959, 959, + 959, 959, 959, 959, 959, 200, 959, 959, + 959, 200, 960, 960, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, - 921, 921, 921, 921, 921, 921, 921, 921, - 921, 921, 921, 921, 921, 921, 921, 921, - 921, 921, 921, 921, 921, 921, 921, 921, - 921, 921, 921, 921, 921, 922, 922, 199, + 961, 961, 961, 961, 961, 961, 961, 961, + 961, 961, 961, 961, 961, 961, 961, 961, + 961, 961, 961, 961, 961, 961, 961, 961, + 961, 961, 961, 961, 961, 961, 961, 961, - 923, 923, 923, 924, 924, 924, 924, 923, - 923, 924, 924, 924, 199, 199, 199, 199, - 924, 924, 923, 924, 924, 924, 924, 924, - 924, 925, 926, 927, 199, 199, 199, 199, + 961, 961, 961, 961, 961, 961, 961, 961, + 961, 961, 961, 961, 961, 961, 961, 961, + 961, 961, 961, 961, 962, 962, 963, 962, + 962, 962, 962, 962, 962, 962, 963, 963, - 928, 199, 199, 199, 929, 929, 930, 931, - 932, 933, 934, 935, 936, 937, 938, 939, - 940, 940, 940, 940, 940, 940, 940, 940, - 940, 940, 940, 940, 940, 940, 940, 940, + 963, 963, 963, 963, 963, 963, 962, 963, + 963, 962, 962, 962, 962, 962, 962, 962, + 962, 962, 964, 962, 965, 965, 966, 967, + 965, 968, 965, 969, 961, 970, 200, 200, - 940, 940, 940, 940, 940, 940, 940, 940, - 940, 940, 940, 940, 940, 940, 199, 199, - 940, 940, 940, 940, 940, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, + 971, 972, 973, 974, 975, 976, 977, 978, + 979, 980, 200, 200, 200, 200, 200, 200, + 981, 981, 981, 981, 981, 981, 981, 981, + 981, 981, 200, 200, 200, 200, 200, 200, + + 982, 982, 983, 984, 985, 986, 987, 988, + 989, 990, 991, 992, 992, 992, 993, 200, + 994, 995, 996, 997, 998, 999, 1000, 1001, + 1002, 1003, 200, 200, 200, 200, 200, 200, + + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + + 1004, 1004, 1004, 1005, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1007, 1008, 200, 200, 200, 200, 200, + 941, 941, 941, 941, 941, 941, 941, 941, + 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, @@ -1762,159 +1737,189 @@ static const unsigned short uc_property_trie[] = { 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, - 941, 941, 942, 942, 199, 199, 199, 199, - 943, 943, 943, 943, 943, 944, 944, 944, - 943, 943, 944, 943, 943, 943, 943, 943, - - 943, 941, 941, 941, 941, 941, 941, 941, - 943, 943, 199, 199, 199, 199, 199, 199, - 945, 946, 947, 948, 949, 950, 951, 952, - 953, 954, 955, 199, 199, 199, 956, 956, - - 957, 957, 957, 957, 957, 957, 957, 957, - 957, 957, 957, 957, 957, 957, 957, 957, - 957, 957, 957, 957, 957, 957, 957, 957, - 957, 957, 957, 957, 957, 957, 957, 957, - - 958, 958, 958, 958, 958, 958, 958, 958, - 958, 958, 958, 958, 958, 958, 958, 958, - 958, 958, 958, 958, 958, 958, 958, 959, - 960, 961, 961, 962, 199, 199, 963, 963, - - 964, 964, 964, 964, 964, 964, 964, 964, - 964, 964, 964, 964, 964, 964, 964, 964, - 964, 964, 964, 964, 964, 964, 964, 964, - 964, 964, 964, 964, 964, 964, 964, 964, - - 964, 964, 964, 964, 964, 964, 964, 964, - 964, 964, 964, 964, 964, 964, 964, 964, - 964, 964, 964, 964, 964, 965, 966, 965, - 966, 966, 966, 966, 966, 966, 966, 199, + 941, 941, 941, 941, 941, 941, 941, 941, + 941, 941, 941, 941, 941, 941, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, - 967, 968, 966, 968, 968, 966, 966, 966, - 966, 966, 966, 966, 966, 965, 965, 965, - 965, 965, 965, 966, 966, 969, 969, 969, - 969, 969, 969, 969, 969, 199, 199, 970, + 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, + 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, + 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, + 1009, 1009, 1009, 1009, 1009, 1010, 1010, 200, - 971, 972, 973, 974, 975, 976, 977, 978, - 979, 980, 199, 199, 199, 199, 199, 199, - 971, 972, 973, 974, 975, 976, 977, 978, - 979, 980, 199, 199, 199, 199, 199, 199, - - 981, 981, 981, 981, 981, 981, 981, 982, - 983, 983, 983, 983, 981, 981, 199, 199, - 984, 984, 984, 984, 984, 985, 985, 985, - 985, 985, 985, 984, 984, 985, 986, 199, - - 987, 987, 987, 987, 988, 989, 990, 989, - 990, 989, 990, 989, 990, 989, 990, 989, - 989, 989, 990, 989, 989, 989, 989, 989, - 989, 989, 989, 989, 989, 989, 989, 989, - - 989, 989, 989, 989, 989, 989, 989, 989, - 989, 989, 989, 989, 989, 989, 989, 989, - 989, 989, 989, 989, 991, 992, 987, 987, - 987, 987, 987, 993, 987, 993, 988, 988, - - 993, 993, 987, 993, 994, 989, 989, 989, - 989, 989, 989, 989, 199, 199, 199, 199, - 995, 996, 997, 998, 999, 1000, 1001, 1002, - 1003, 1004, 1005, 1005, 1006, 1007, 1005, 1005, - - 1007, 1008, 1008, 1008, 1008, 1008, 1008, 1008, - 1008, 1008, 1008, 1009, 1010, 1009, 1009, 1009, - 1009, 1009, 1009, 1009, 1008, 1008, 1008, 1008, - 1008, 1008, 1008, 1008, 1008, 199, 199, 199, - - 1011, 1011, 1012, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, - - 1013, 1012, 1011, 1011, 1011, 1011, 1012, 1012, - 1011, 1011, 1014, 1015, 1016, 1016, 1013, 1013, - 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, - 1025, 1026, 1027, 1027, 1027, 1027, 1027, 1027, + 1011, 1011, 1011, 1012, 1012, 1012, 1012, 1011, + 1011, 1012, 1012, 1012, 200, 200, 200, 200, + 1012, 1012, 1011, 1012, 1012, 1012, 1012, 1012, + 1012, 1013, 1014, 1015, 200, 200, 200, 200, + 1016, 200, 200, 200, 1017, 1017, 1018, 1019, + 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, - 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 200, 200, + 1028, 1028, 1028, 1028, 1028, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1030, 1030, 200, 200, 200, 200, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 200, 200, 200, 200, 200, 200, + 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, + 1039, 1040, 1041, 200, 200, 200, 1042, 1042, + + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + + 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, + 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, + 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1045, + 1046, 1047, 1047, 1048, 200, 200, 1049, 1049, + + 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, + 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, + 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, + 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, + + 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, + 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, + 1050, 1050, 1050, 1050, 1050, 1051, 1052, 1051, + 1052, 1052, 1052, 1052, 1052, 1052, 1052, 200, + + 1053, 1054, 1052, 1054, 1054, 1052, 1052, 1052, + 1052, 1052, 1052, 1052, 1052, 1051, 1051, 1051, + 1051, 1051, 1051, 1052, 1052, 1055, 1055, 1055, + 1055, 1055, 1055, 1055, 1055, 200, 200, 1056, + + 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, + 1065, 1066, 200, 200, 200, 200, 200, 200, + 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, + 1065, 1066, 200, 200, 200, 200, 200, 200, + + 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1068, + 1069, 1069, 1069, 1069, 1067, 1067, 200, 200, + 1070, 1070, 1070, 1070, 1070, 1071, 1071, 1071, + 1071, 1071, 1071, 1070, 1070, 1071, 1072, 200, + + 1073, 1073, 1073, 1073, 1074, 1075, 1076, 1075, + 1076, 1075, 1076, 1075, 1076, 1075, 1076, 1075, + 1075, 1075, 1076, 1075, 1075, 1075, 1075, 1075, + 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, - 1028, 1028, 1028, 1028, 1028, 1028, 1029, 1030, - 1031, 1031, 1030, 1030, 1030, 1031, 1030, 1031, - 1031, 1031, 1032, 1032, 199, 199, 199, 199, - 199, 199, 199, 199, 1033, 1033, 1033, 1033, - - 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, - 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, - 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, - 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, - - 1034, 1034, 1034, 1034, 1035, 1035, 1035, 1035, - 1035, 1035, 1035, 1035, 1036, 1036, 1036, 1036, - 1036, 1036, 1036, 1036, 1035, 1035, 1036, 1037, - 199, 199, 199, 1038, 1038, 1039, 1039, 1039, - - 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, - 1048, 1049, 199, 199, 199, 1034, 1034, 1034, - 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, - 1058, 1059, 1060, 1060, 1060, 1060, 1060, 1060, - - 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, - 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, - 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, - 1061, 1061, 1061, 1061, 1061, 1061, 1062, 1062, - - 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, - 199, 199, 199, 199, 199, 199, 199, 199, - 1064, 1064, 1064, 1065, 1066, 1067, 1067, 1067, - 1067, 1067, 1064, 1064, 1067, 1067, 1067, 1067, - - 1064, 1068, 1066, 1066, 1066, 1066, 1066, 1066, - 1066, 1069, 1069, 1069, 1069, 1067, 1069, 1069, - 1069, 1069, 1068, 1070, 1071, 1072, 1072, 199, - 984, 984, 199, 199, 199, 199, 199, 199, + 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, + 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, + 1075, 1075, 1075, 1075, 1077, 1078, 1073, 1073, + 1073, 1073, 1073, 1079, 1073, 1079, 1074, 1074, + + 1079, 1079, 1073, 1079, 1080, 1075, 1075, 1075, + 1075, 1075, 1075, 1075, 200, 200, 200, 200, + 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, + 1089, 1090, 1091, 1091, 1092, 1093, 1091, 1091, + + 1093, 1094, 1094, 1094, 1094, 1094, 1094, 1094, + 1094, 1094, 1094, 1095, 1096, 1095, 1095, 1095, + 1095, 1095, 1095, 1095, 1094, 1094, 1094, 1094, + 1094, 1094, 1094, 1094, 1094, 200, 200, 200, + + 1097, 1097, 1098, 1099, 1099, 1099, 1099, 1099, + 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, + 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, + 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, + + 1099, 1098, 1097, 1097, 1097, 1097, 1098, 1098, + 1097, 1097, 1100, 1101, 1102, 1102, 1099, 1099, + 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, + 1111, 1112, 1113, 1113, 1113, 1113, 1113, 1113, + + 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, + 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, + 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, + 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, + + 1114, 1114, 1114, 1114, 1114, 1114, 1115, 1116, + 1117, 1117, 1116, 1116, 1116, 1117, 1116, 1117, + 1117, 1117, 1118, 1118, 200, 200, 200, 200, + 200, 200, 200, 200, 1119, 1119, 1119, 1119, + + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + + 1120, 1120, 1120, 1120, 1121, 1121, 1121, 1121, + 1121, 1121, 1121, 1121, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1121, 1121, 1122, 1123, + 200, 200, 200, 1124, 1124, 1125, 1125, 1125, + + 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, + 1134, 1135, 200, 200, 200, 1120, 1120, 1120, + 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, + 1144, 1145, 1146, 1146, 1146, 1146, 1146, 1146, + + 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, + 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, + 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, + 1147, 1147, 1147, 1147, 1147, 1147, 1148, 1148, + + 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, + 200, 200, 200, 200, 200, 200, 200, 200, + 1150, 1150, 1150, 1151, 1152, 1153, 1153, 1153, + 1153, 1153, 1150, 1150, 1153, 1153, 1153, 1153, + + 1150, 1154, 1152, 1152, 1152, 1152, 1152, 1152, + 1152, 1155, 1155, 1155, 1155, 1153, 1155, 1155, + 1155, 1155, 1154, 1156, 1157, 1158, 1158, 200, + 1070, 1070, 200, 200, 200, 200, 200, 200, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 1073, 1073, - 1073, 1073, 1073, 1074, 1075, 1075, 1075, 1076, - 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, - 1075, 1075, 1075, 1076, 1075, 1075, 1075, 1075, + 114, 114, 114, 114, 114, 114, 1159, 1159, + 1159, 1159, 1159, 1160, 1161, 1161, 1161, 1162, + 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, + 1161, 1161, 1161, 1162, 1161, 1161, 1161, 1161, - 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, - 1075, 1075, 1075, 1075, 1075, 1075, 1076, 1075, - 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, - 1075, 1075, 1075, 1075, 1075, 1077, 1077, 1077, + 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, + 1161, 1161, 1161, 1161, 1161, 1161, 1162, 1161, + 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, + 1161, 1161, 1161, 1161, 1161, 1163, 1163, 1163, - 1077, 1077, 1075, 1075, 1075, 1075, 1077, 1077, - 1077, 1077, 1077, 114, 115, 115, 115, 115, + 1163, 1163, 1161, 1161, 1161, 1161, 1163, 1163, + 1163, 1163, 1163, 114, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 1078, 1079, 115, 115, 115, 1080, 115, 115, + 1164, 1165, 115, 115, 115, 1166, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 1081, 1081, 1081, 1081, 1081, + 115, 115, 115, 1167, 1167, 1167, 1167, 1167, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1082, + 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, + 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, + 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, + 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1168, - 188, 188, 187, 188, 1083, 1083, 1083, 1083, - 1083, 1083, 1084, 1085, 1085, 1086, 1087, 1088, - 1089, 1085, 1085, 1085, 1085, 1085, 1085, 1085, - 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, + 189, 189, 188, 189, 1169, 1169, 1169, 1169, + 1169, 1169, 1170, 1171, 1171, 1172, 1173, 1174, + 1175, 1171, 1171, 1171, 1171, 1171, 1171, 1171, + 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1085, 1085, 1085, 1085, 1085, 1085, 1085, 984, - 984, 984, 984, 984, 984, 984, 984, 984, - 984, 984, 984, 984, 984, 984, 199, 199, - 199, 199, 199, 199, 1090, 1067, 1083, 1084, + 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1070, + 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, + 1070, 1070, 1070, 1070, 1070, 1070, 200, 200, + 200, 200, 200, 200, 1176, 1153, 1169, 1170, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, @@ -1923,258 +1928,258 @@ static const unsigned short uc_property_trie[] = { 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, - 70, 71, 70, 71, 70, 71, 1091, 1092, - 1093, 1094, 1095, 1096, 1097, 1097, 1098, 1097, + 70, 71, 70, 71, 70, 71, 1177, 1178, + 1179, 1180, 1181, 1182, 1183, 1183, 1184, 1183, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, - 70, 71, 1099, 1100, 1099, 1100, 1099, 1100, - - 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, - 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, - 1101, 1101, 1101, 1101, 1101, 1101, 199, 199, - 1102, 1102, 1102, 1102, 1102, 1102, 199, 199, - - 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, - 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, - 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, - 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, - - 1101, 1101, 1101, 1101, 1101, 1101, 199, 199, - 1102, 1102, 1102, 1102, 1102, 1102, 199, 199, - 1103, 1101, 1104, 1101, 1105, 1101, 1106, 1101, - 199, 1102, 199, 1102, 199, 1102, 199, 1102, - - 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, - 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, - 1107, 1108, 1109, 1110, 1109, 1110, 1111, 1112, - 1113, 1114, 1115, 1116, 1117, 1118, 199, 199, - - 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, - 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, - 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, - 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, - - 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, - 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, - 1101, 1101, 1167, 1168, 1169, 199, 1170, 1171, - 1102, 1102, 1172, 1173, 1174, 204, 1175, 204, - - 204, 1176, 1177, 1178, 1179, 199, 1180, 1181, - 1182, 1183, 1182, 1183, 1184, 1176, 1176, 1176, - 1101, 1101, 1185, 1186, 199, 199, 1187, 1188, - 1102, 1102, 1189, 1190, 199, 1176, 1176, 1176, - - 1101, 1101, 1191, 1192, 1193, 1194, 1195, 1196, - 1102, 1102, 1197, 1198, 1199, 1176, 1200, 1200, - 199, 199, 1201, 1202, 1203, 199, 1204, 1205, - 1206, 1207, 1208, 1209, 1210, 1211, 204, 199, - - 1212, 1212, 1213, 1213, 1213, 1213, 1213, 1214, - 1213, 1213, 1213, 1215, 1216, 1217, 1218, 1219, - 1220, 1221, 1220, 1222, 1223, 1224, 14, 1225, - 1226, 1227, 1228, 1229, 1229, 1230, 1228, 1229, - - 14, 14, 14, 14, 1231, 1232, 1232, 1233, - 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, - 13, 13, 13, 1242, 1242, 1243, 1244, 1244, - 14, 1245, 1246, 14, 1247, 1248, 1225, 43, - - 43, 14, 14, 14, 1249, 16, 1250, 1251, - 1252, 1252, 1253, 1253, 1253, 1253, 1254, 1254, - 1254, 1254, 1255, 1256, 1257, 1258, 1259, 1260, - 1259, 1259, 1259, 1259, 1258, 1259, 1259, 1261, - - 1262, 1263, 1263, 1263, 1264, 1265, 1266, 1267, - 1268, 1269, 1270, 1270, 1270, 1270, 1270, 1270, - 1271, 1272, 199, 199, 1273, 1274, 1275, 1276, - 1277, 1278, 1279, 1279, 1280, 1281, 1282, 157, - - 1271, 63, 58, 59, 1273, 1274, 1275, 1276, - 1277, 1278, 1279, 1279, 1280, 1281, 1282, 199, - 1081, 1081, 1081, 1081, 1081, 1283, 1283, 1283, - 1283, 1283, 1283, 1283, 1283, 199, 199, 199, + 70, 71, 1185, 1186, 1185, 1186, 1185, 1186, + + 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, + 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, + 1187, 1187, 1187, 1187, 1187, 1187, 200, 200, + 1188, 1188, 1188, 1188, 1188, 1188, 200, 200, + + 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, + 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, + 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, + 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, + + 1187, 1187, 1187, 1187, 1187, 1187, 200, 200, + 1188, 1188, 1188, 1188, 1188, 1188, 200, 200, + 1189, 1187, 1190, 1187, 1191, 1187, 1192, 1187, + 200, 1188, 200, 1188, 200, 1188, 200, 1188, + + 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, + 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, + 1193, 1194, 1195, 1196, 1195, 1196, 1197, 1198, + 1199, 1200, 1201, 1202, 1203, 1204, 200, 200, + + 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, + 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, + 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, + 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, + + 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, + 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, + 1187, 1187, 1253, 1254, 1255, 200, 1256, 1257, + 1188, 1188, 1258, 1259, 1260, 205, 1261, 205, + + 205, 1262, 1263, 1264, 1265, 200, 1266, 1267, + 1268, 1269, 1268, 1269, 1270, 1262, 1262, 1262, + 1187, 1187, 1271, 1272, 200, 200, 1273, 1274, + 1188, 1188, 1275, 1276, 200, 1262, 1262, 1262, + + 1187, 1187, 1277, 1278, 1279, 1280, 1281, 1282, + 1188, 1188, 1283, 1284, 1285, 1262, 1286, 1286, + 200, 200, 1287, 1288, 1289, 200, 1290, 1291, + 1292, 1293, 1294, 1295, 1296, 1297, 205, 200, + + 1298, 1298, 1299, 1299, 1299, 1299, 1299, 1300, + 1299, 1299, 1299, 1301, 1302, 1303, 1304, 1305, + 1306, 1307, 1306, 1308, 1309, 1310, 14, 1311, + 1312, 1313, 1314, 1315, 1315, 1316, 1314, 1315, + + 14, 14, 14, 14, 1317, 1318, 1318, 1319, + 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, + 13, 13, 13, 1328, 1328, 1329, 1330, 1330, + 14, 1331, 1332, 14, 1333, 1334, 1311, 43, + + 43, 14, 14, 14, 1335, 16, 1336, 1337, + 1338, 1338, 1339, 1339, 1339, 1339, 1340, 1340, + 1340, 1340, 1341, 1342, 1343, 1344, 1345, 1346, + 1345, 1345, 1345, 1345, 1344, 1345, 1345, 1347, + + 1348, 1349, 1349, 1349, 1350, 1351, 1352, 1353, + 1354, 1355, 1356, 1356, 1356, 1356, 1356, 1356, + 1357, 1358, 200, 200, 1359, 1360, 1361, 1362, + 1363, 1364, 1365, 1365, 1366, 1367, 1368, 158, + + 1357, 63, 58, 59, 1359, 1360, 1361, 1362, + 1363, 1364, 1365, 1365, 1366, 1367, 1368, 200, + 1167, 1167, 1167, 1167, 1167, 1369, 1369, 1369, + 1369, 1369, 1369, 1369, 1369, 200, 200, 200, 12, 12, 12, 12, 12, 12, 12, 50, - 1284, 12, 12, 1285, 1286, 1287, 1287, 1287, - 1288, 1288, 1289, 1289, 1289, 1289, 1290, 1291, - 1291, 1292, 1293, 1294, 1295, 1295, 1296, 1296, - - 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, - 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, - 170, 170, 177, 177, 170, 170, 170, 170, - 177, 177, 177, 170, 170, 1297, 1297, 1297, - - 1297, 170, 1298, 1298, 1299, 1300, 1300, 194, - 1301, 194, 1300, 1302, 1084, 1084, 1084, 1084, - 1085, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1303, 1303, 1304, 1305, 51, 1303, 1303, 1304, - 51, 1305, 1306, 1304, 1304, 1304, 1306, 1306, - 1304, 1304, 1304, 1306, 51, 1304, 1307, 51, - 36, 1304, 1304, 1304, 1304, 1304, 51, 51, - - 1303, 1303, 1303, 51, 1304, 51, 1308, 51, - 1304, 51, 1309, 1310, 1304, 1304, 1311, 1306, - 1304, 1304, 1312, 1304, 1306, 1313, 1313, 1313, - 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1319, - - 1320, 1255, 1255, 1255, 1255, 1319, 1318, 1318, - 1318, 1318, 1321, 1255, 1322, 1323, 1324, 1325, - 1326, 1326, 1326, 65, 65, 65, 65, 65, + 1370, 12, 12, 1371, 1372, 1373, 1373, 1373, + 1374, 1374, 1375, 1375, 1375, 1375, 1376, 1377, + 1377, 1378, 1379, 1380, 1381, 1381, 1382, 1383, + + 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, + 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, + 171, 171, 178, 178, 171, 171, 171, 171, + 178, 178, 178, 171, 171, 1384, 1384, 1384, + + 1384, 171, 1385, 1385, 1386, 1387, 1387, 195, + 1388, 195, 1387, 1389, 1170, 1170, 1170, 1170, + 1171, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1390, 1390, 1391, 1392, 51, 1390, 1390, 1391, + 51, 1392, 1393, 1391, 1391, 1391, 1393, 1393, + 1391, 1391, 1391, 1393, 51, 1391, 1394, 51, + 36, 1391, 1391, 1391, 1391, 1391, 51, 51, + + 1390, 1390, 1390, 51, 1391, 51, 1395, 51, + 1391, 51, 1396, 1397, 1391, 1391, 1398, 1393, + 1391, 1391, 1399, 1391, 1393, 1400, 1400, 1400, + 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1406, + + 1407, 1341, 1341, 1341, 1341, 1406, 1405, 1405, + 1405, 1405, 1408, 1341, 1409, 1410, 1411, 1412, + 1413, 1413, 1413, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, - 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, - 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, - 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, + 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, + 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, - 1329, 1329, 1329, 111, 123, 1330, 1330, 1330, - 1330, 1326, 199, 199, 199, 199, 199, 199, + 1416, 1416, 1416, 111, 123, 1417, 1417, 1417, + 1417, 1413, 1418, 1418, 200, 200, 200, 200, 36, 36, 36, 36, 36, 51, 51, 51, - 51, 51, 1331, 1331, 51, 51, 51, 51, + 51, 51, 1419, 1419, 51, 51, 51, 51, 36, 51, 51, 36, 51, 51, 36, 51, - 51, 51, 51, 51, 51, 51, 1331, 51, + 51, 51, 51, 51, 51, 51, 1419, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 1332, 1331, 1331, + 51, 51, 51, 51, 51, 1420, 1419, 1419, 51, 51, 36, 51, 36, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 1315, 1315, 1315, 1315, 1315, - 1315, 1315, 1315, 1315, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, + 51, 51, 51, 1402, 1402, 1402, 1402, 1402, + 1402, 1402, 1402, 1402, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, - 36, 36, 36, 36, 1331, 36, 36, 36, - 1333, 1334, 1333, 1335, 1336, 1335, 36, 36, - 36, 36, 18, 57, 36, 1337, 36, 36, + 36, 36, 36, 36, 1419, 36, 36, 36, + 1421, 1422, 1421, 1423, 1424, 1423, 36, 36, + 36, 36, 18, 57, 36, 1425, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 1331, 36, 1331, 36, - 36, 36, 36, 36, 1280, 1280, 36, 1280, - 1280, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 1338, 1339, 36, 36, + 36, 36, 36, 36, 1419, 36, 1419, 36, + 36, 36, 36, 36, 1366, 1366, 36, 1366, + 1366, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 1426, 1427, 36, 36, - 36, 1331, 36, 1340, 1331, 36, 36, 1331, - 36, 1331, 36, 36, 36, 36, 36, 36, - 36, 36, 1338, 1339, 1338, 1339, 36, 36, + 36, 1419, 36, 1428, 1419, 36, 36, 1419, + 36, 1419, 36, 36, 36, 36, 36, 36, + 36, 36, 1426, 1427, 1426, 1427, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 1331, 36, 1331, 36, 1338, 1339, 1338, 1339, - 1338, 1339, 1338, 1339, 36, 1331, 1341, 1342, - 1341, 1342, 1338, 1339, 1341, 1342, 1338, 1339, - 1341, 1342, 1338, 1339, 1338, 1339, 1338, 1339, + 1419, 36, 1419, 36, 1426, 1427, 1426, 1427, + 1426, 1427, 1426, 1427, 36, 1419, 1429, 1430, + 1429, 1430, 1426, 1427, 1429, 1430, 1426, 1427, + 1429, 1430, 1426, 1427, 1426, 1427, 1426, 1427, - 1341, 1342, 1338, 1339, 1341, 1342, 1338, 1339, - 1341, 1342, 1338, 1339, 36, 36, 36, 1338, - 1339, 1338, 1339, 36, 36, 36, 36, 36, - 1343, 36, 36, 36, 36, 36, 36, 36, + 1429, 1430, 1426, 1427, 1429, 1430, 1426, 1427, + 1429, 1430, 1426, 1427, 36, 36, 36, 1426, + 1427, 1426, 1427, 36, 36, 36, 36, 36, + 1431, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 1338, 1339, 36, 36, 1344, 36, - 1345, 1346, 36, 1346, 1331, 1331, 1331, 1331, - 1338, 1339, 1338, 1339, 1338, 1339, 1338, 1339, + 36, 36, 1426, 1427, 36, 36, 1432, 36, + 1433, 1434, 36, 1434, 1419, 1419, 1419, 1419, + 1426, 1427, 1426, 1427, 1426, 1427, 1426, 1427, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 1338, 1339, 1338, 1339, 1347, 36, 36, - 1338, 1339, 36, 36, 36, 36, 1338, 1339, - 1338, 1339, 1338, 1339, 1338, 1339, 1338, 1339, + 36, 1426, 1427, 1426, 1427, 1435, 36, 36, + 1426, 1427, 36, 36, 36, 36, 1426, 1427, + 1426, 1427, 1426, 1427, 1426, 1427, 1426, 1427, - 1341, 1342, 1341, 1342, 1338, 1339, 1338, 1339, - 1338, 1339, 1341, 1342, 1341, 1342, 36, 36, - 1338, 1339, 1348, 1348, 1348, 1255, 1349, 1349, - 1255, 1255, 1350, 1350, 1350, 1351, 1351, 1255, + 1429, 1430, 1429, 1430, 1426, 1427, 1426, 1427, + 1426, 1427, 1429, 1430, 1429, 1430, 36, 1436, + 1426, 1427, 1437, 1437, 1437, 1341, 1438, 1438, + 1341, 1341, 1439, 1439, 1439, 1440, 1440, 1341, - 51, 1315, 51, 51, 51, 51, 51, 51, - 16, 1250, 16, 1250, 51, 51, 51, 51, + 51, 1402, 51, 51, 51, 51, 51, 51, + 16, 1336, 16, 1336, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 1352, 1352, 51, 51, 51, 51, + 51, 51, 1441, 1441, 51, 51, 51, 51, 36, 36, 51, 51, 51, 51, 51, 51, - 51, 1353, 1354, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 1355, 1355, - 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, - - 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, - 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, - 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, - 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, - - 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, - 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, - 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, - 1355, 1355, 1355, 1315, 1255, 1315, 1315, 1315, - - 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, - 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, - 1315, 1315, 1315, 1315, 1315, 1356, 1315, 1315, - 1315, 1315, 1315, 1255, 1255, 1255, 1255, 1255, - - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1357, - 1357, 1322, 1322, 1322, 1322, 1322, 1322, 1322, - 1322, 1322, 1322, 1322, 1358, 1358, 1358, 1358, - - 1358, 1358, 1323, 1323, 1323, 1323, 1323, 1323, - 1359, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1361, 1361, 1361, 1361, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 199, 199, 199, 199, 199, + 51, 1442, 1443, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 1444, 1444, + 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, + + 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, + 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, + 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, + 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, + + 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, + 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, + 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, + 1444, 1444, 1444, 1402, 1341, 1402, 1402, 1402, + + 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, + 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, + 1402, 1402, 1402, 1402, 1402, 1445, 1402, 1402, + 1402, 1402, 1402, 1341, 1341, 1341, 1341, 1341, + + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1408, 1408, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, + + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1446, + 1446, 1409, 1409, 1409, 1409, 1409, 1409, 1409, + 1409, 1409, 1409, 1409, 1447, 1447, 1447, 1447, + + 1447, 1447, 1410, 1410, 1410, 1410, 1410, 1410, + 1448, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1450, 1450, 1450, 1450, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 200, 200, 200, 200, 200, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 1315, 1315, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, + 51, 51, 51, 51, 51, 1402, 1402, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, + 51, 51, 51, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, - 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, - 1371, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 1363, 1364, 1365, 1366, - 1367, 1368, 1369, 1370, 1371, 65, 65, 65, + 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, + 1460, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 1452, 1453, 1454, 1455, + 1456, 1457, 1458, 1459, 1460, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 63, 58, 59, 1273, 1274, 1275, 1276, 1277, - 1278, 1372, 1372, 1372, 1372, 1372, 1372, 1372, - 1372, 1372, 1372, 1372, 1373, 1373, 1373, 1373, + 63, 58, 59, 1359, 1360, 1361, 1362, 1363, + 1364, 1461, 1461, 1461, 1461, 1461, 1461, 1461, + 1461, 1461, 1461, 1461, 1462, 1462, 1462, 1462, - 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, - 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, - 1373, 1373, 1373, 1373, 1373, 1373, 1374, 1374, - 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, + 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, + 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, + 1462, 1462, 1462, 1462, 1462, 1462, 1463, 1463, + 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, - 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, - 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, - 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, - 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, + 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, + 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, + 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, + 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, - 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, - 1375, 1375, 1376, 1377, 1377, 1377, 1377, 1377, - 1377, 1377, 1377, 1377, 1377, 1378, 1379, 1380, - 1381, 1382, 1383, 1384, 1385, 1386, 1377, 1387, + 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, + 1464, 1464, 1465, 1466, 1466, 1466, 1466, 1466, + 1466, 1466, 1466, 1466, 1466, 1467, 1468, 1469, + 1470, 1471, 1472, 1473, 1474, 1475, 1466, 1476, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 51, 51, 51, 51, 51, 51, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, @@ -2188,3172 +2193,3552 @@ static const unsigned short uc_property_trie[] = { 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, + 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, - 1352, 1352, 1352, 1352, 51, 51, 51, 51, + 1441, 1441, 1441, 1441, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 1388, 1388, 1321, 1321, - 1389, 1315, 1352, 1352, 1352, 1352, 1352, 1352, + 51, 51, 51, 51, 1477, 1477, 1408, 1408, + 1478, 1402, 1441, 1441, 1441, 1441, 1441, 1441, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 1352, 1352, 1352, 51, 51, 51, 51, + 51, 1441, 1441, 1441, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 1352, 51, 51, 51, 51, 51, 51, 36, - 1315, 1315, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1322, 1389, - - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1322, 1322, 1322, 1322, 1322, 1322, - 1322, 1322, 1322, 1322, 1322, 1390, 1359, 1359, - - 1357, 1357, 1322, 1322, 1322, 1322, 1322, 1322, - 1322, 1322, 1322, 1322, 1391, 1322, 1322, 1322, - 1322, 1322, 1323, 1390, 1390, 1390, 1390, 1390, - 1390, 1390, 1390, 1390, 1390, 1392, 1392, 1392, - - 1393, 1393, 1393, 1393, 1392, 1392, 1392, 1392, - 1392, 1359, 1359, 1359, 1359, 1392, 1360, 1392, - 1392, 1392, 1359, 1392, 1392, 1359, 1359, 1359, - 1392, 1392, 1359, 1359, 1392, 1359, 1359, 1392, - - 1392, 1392, 1360, 1359, 1360, 1360, 1360, 1360, - 1359, 1359, 1392, 1359, 1359, 1359, 1359, 1359, - 1359, 1392, 1392, 1392, 1392, 1392, 1359, 1392, - 1392, 1392, 1392, 1359, 1359, 1392, 1392, 1392, - - 1394, 1352, 1352, 1352, 1352, 1360, 51, 51, - 1352, 1352, 1361, 1361, 1352, 1352, 51, 51, + 1441, 51, 51, 51, 51, 51, 51, 36, + 1402, 1402, 1408, 1408, 1408, 1408, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1409, 1478, + + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, + 1408, 1408, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1409, 1409, 1409, 1409, 1409, 1409, + 1409, 1409, 1409, 1409, 1409, 1479, 1448, 1448, + + 1446, 1446, 1409, 1409, 1409, 1409, 1409, 1409, + 1409, 1409, 1409, 1409, 1480, 1409, 1409, 1409, + 1409, 1409, 1410, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1481, 1481, 1481, + + 1482, 1482, 1482, 1482, 1481, 1481, 1481, 1481, + 1481, 1448, 1448, 1448, 1448, 1481, 1449, 1481, + 1481, 1481, 1448, 1481, 1481, 1448, 1448, 1448, + 1481, 1481, 1448, 1448, 1481, 1448, 1448, 1481, + + 1481, 1481, 1449, 1448, 1449, 1449, 1449, 1449, + 1448, 1448, 1481, 1448, 1448, 1448, 1448, 1448, + 1448, 1481, 1481, 1481, 1481, 1481, 1448, 1481, + 1481, 1481, 1481, 1448, 1448, 1481, 1481, 1481, + + 1483, 1441, 1441, 1441, 1441, 1449, 51, 51, + 1441, 1441, 1450, 1450, 1441, 1441, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 1360, 51, 51, 51, 51, 51, 51, 51, + 1449, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 1360, 51, 1360, 51, - 51, 51, 51, 1360, 1360, 1360, 51, 1359, - 51, 51, 51, 1395, 1395, 1395, 1395, 1396, - - 1396, 51, 1397, 1397, 51, 51, 51, 51, - 1398, 1399, 1398, 1399, 1398, 1399, 1398, 1399, - 1398, 1399, 1398, 1399, 1398, 1399, 1400, 1401, - 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, - - 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, - 1408, 1409, 1400, 1401, 1402, 1403, 1404, 1405, - 1406, 1407, 1408, 1409, 51, 1360, 1360, 1360, + 51, 51, 51, 51, 1449, 51, 1449, 51, + 51, 51, 51, 1449, 1449, 1449, 51, 1448, + 51, 51, 51, 1484, 1484, 1484, 1484, 1485, + + 1485, 51, 1486, 1486, 51, 51, 51, 51, + 1487, 1488, 1487, 1488, 1487, 1488, 1487, 1488, + 1487, 1488, 1487, 1488, 1487, 1488, 1489, 1490, + 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, + + 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, + 1497, 1498, 1489, 1490, 1491, 1492, 1493, 1494, + 1495, 1496, 1497, 1498, 51, 1449, 1449, 1449, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 1360, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 1360, - - 1410, 1410, 1410, 1411, 1412, 1413, 1414, 1358, - 1415, 1416, 1358, 1417, 1418, 1419, 1420, 1420, - 1255, 1255, 1255, 1255, 1255, 1421, 1422, 1255, - 1255, 1255, 1255, 1255, 1255, 1421, 1422, 1255, - - 1255, 1255, 1421, 1422, 1421, 1422, 1398, 1399, - 1398, 1399, 1398, 1399, 1423, 1424, 1423, 1424, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - - 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, - 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, - 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, - 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, - - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - - 1255, 1255, 1255, 1398, 1399, 1398, 1399, 1398, - 1399, 1398, 1399, 1398, 1399, 1426, 1427, 1428, - 1429, 1398, 1399, 1398, 1399, 1398, 1399, 1398, - 1399, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1430, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - - 1421, 1422, 1255, 1255, 1421, 1422, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1421, - 1422, 1421, 1422, 1255, 1421, 1422, 1255, 1255, - 1398, 1399, 1398, 1399, 1255, 1255, 1255, 1255, - - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1431, 1255, 1255, - 1421, 1422, 1255, 1255, 1398, 1399, 1255, 1255, - - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1320, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1421, 1422, 1421, 1422, 1255, - 1255, 1255, 1255, 1255, 1421, 1422, 1255, 1255, - 1255, 1255, 1255, 1255, 1421, 1422, 1255, 1255, - - 1255, 1255, 1255, 1255, 1421, 1422, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1320, 1320, 1320, 1255, - 1255, 1421, 1422, 1255, 1255, 1421, 1422, 1421, - - 1422, 1421, 1422, 1421, 1422, 1255, 1255, 1255, - 1255, 1255, 1255, 1421, 1422, 1255, 1255, 1255, - 1255, 1421, 1422, 1421, 1422, 1421, 1422, 1421, - 1422, 1421, 1422, 1421, 1422, 1255, 1255, 1255, - - 1255, 1421, 1422, 1255, 1255, 1255, 1421, 1422, - 1421, 1422, 1421, 1422, 1421, 1422, 1255, 1421, - 1422, 1255, 1255, 1421, 1422, 1255, 1255, 1255, - 1255, 1255, 1255, 1421, 1422, 1421, 1422, 1421, - - 1422, 1421, 1422, 1421, 1422, 1421, 1422, 1255, - 1255, 1255, 1255, 1255, 1255, 1421, 1422, 1421, - 1422, 1421, 1422, 1421, 1422, 1421, 1422, 1255, - 1255, 1255, 1255, 1255, 1432, 1255, 1433, 1255, - - 1255, 1255, 1255, 1434, 1435, 1434, 1255, 1255, - 1255, 1255, 1255, 1255, 1421, 1422, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1421, - 1422, 1421, 1422, 1255, 1255, 1255, 1255, 1255, - - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1322, 1322, - 1322, 1322, 1322, 1322, 1323, 1323, 1323, 1323, - 1323, 1323, 1323, 1390, 1390, 1390, 1390, 1390, - - 1323, 1323, 1323, 1323, 1390, 1390, 1390, 1390, - 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, - 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, - 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, - - 1418, 1418, 1418, 1418, 1418, 1390, 1390, 1418, - 1418, 1418, 1418, 1418, 1418, 1362, 1362, 1362, - 1390, 1390, 1390, 1390, 1390, 1359, 1359, 1359, - 1359, 1359, 1362, 1362, 1362, 1362, 1362, 1362, - - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 199, 199, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 199, 199, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 199, 199, 199, 1362, 1362, 1362, - - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 199, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 199, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 199, - - 127, 123, 1438, 1439, 1440, 1441, 1442, 127, - 123, 127, 123, 127, 123, 1443, 1444, 1445, - 1446, 1097, 1099, 1100, 1447, 127, 123, 1447, - 1097, 1097, 1097, 1097, 1448, 1448, 1449, 1450, - - 1451, 1452, 1451, 1452, 1451, 1452, 1451, 1452, - 1451, 1452, 1451, 1452, 1451, 1452, 1451, 1452, - 1451, 1452, 1451, 1452, 1451, 1452, 1451, 1452, - 1451, 1452, 1451, 1452, 1451, 1452, 1451, 1452, - - 1451, 1452, 1451, 1452, 1453, 1454, 1454, 1454, - 1454, 1454, 1454, 1455, 1456, 1455, 1456, 1457, - 1457, 1457, 1458, 1459, 199, 199, 199, 199, - 199, 1460, 1461, 1461, 1461, 1462, 1460, 1461, + 1449, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 1449, + + 1499, 1499, 1499, 1500, 1501, 1502, 1503, 1447, + 1504, 1505, 1447, 1506, 1507, 1508, 1509, 1509, + 1341, 1341, 1341, 1341, 1341, 1510, 1511, 1341, + 1341, 1341, 1341, 1341, 1341, 1510, 1511, 1341, + + 1341, 1341, 1510, 1511, 1510, 1511, 1487, 1488, + 1487, 1488, 1487, 1488, 1512, 1513, 1512, 1513, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + + 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, + 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, + 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, + 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, + + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + + 1341, 1341, 1341, 1487, 1488, 1487, 1488, 1487, + 1488, 1487, 1488, 1487, 1488, 1515, 1516, 1517, + 1518, 1487, 1488, 1487, 1488, 1487, 1488, 1487, + 1488, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1519, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + + 1510, 1511, 1341, 1341, 1510, 1511, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1510, + 1511, 1510, 1511, 1341, 1510, 1511, 1341, 1341, + 1487, 1488, 1487, 1488, 1341, 1341, 1341, 1341, + + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1520, 1341, 1341, + 1510, 1511, 1341, 1341, 1487, 1488, 1341, 1341, + + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1407, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1510, 1511, 1510, 1511, 1341, + 1341, 1341, 1341, 1341, 1510, 1511, 1341, 1341, + 1341, 1341, 1341, 1341, 1510, 1511, 1341, 1341, + + 1341, 1341, 1341, 1341, 1510, 1511, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1407, 1407, 1407, 1341, + 1341, 1510, 1511, 1341, 1341, 1510, 1511, 1510, + + 1511, 1510, 1511, 1510, 1511, 1341, 1341, 1341, + 1341, 1341, 1341, 1510, 1511, 1341, 1341, 1341, + 1341, 1510, 1511, 1510, 1511, 1510, 1511, 1510, + 1511, 1510, 1511, 1510, 1511, 1341, 1341, 1341, + + 1341, 1510, 1511, 1341, 1341, 1341, 1510, 1511, + 1510, 1511, 1510, 1511, 1510, 1511, 1341, 1510, + 1511, 1341, 1341, 1510, 1511, 1341, 1341, 1341, + 1341, 1341, 1341, 1510, 1511, 1510, 1511, 1510, + + 1511, 1510, 1511, 1510, 1511, 1510, 1511, 1341, + 1341, 1341, 1341, 1341, 1341, 1510, 1511, 1510, + 1511, 1510, 1511, 1510, 1511, 1510, 1511, 1341, + 1341, 1341, 1341, 1341, 1521, 1341, 1522, 1341, + + 1341, 1341, 1341, 1523, 1524, 1523, 1341, 1341, + 1341, 1341, 1341, 1341, 1510, 1511, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1510, + 1511, 1510, 1511, 1341, 1341, 1341, 1341, 1341, + + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1409, 1409, + 1409, 1409, 1409, 1409, 1410, 1410, 1410, 1410, + 1410, 1410, 1410, 1479, 1479, 1479, 1479, 1479, + + 1410, 1410, 1410, 1410, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, + 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, + + 1507, 1507, 1507, 1507, 1507, 1479, 1479, 1507, + 1507, 1507, 1507, 1507, 1507, 1451, 1451, 1451, + 1479, 1479, 1479, 1479, 1479, 1448, 1448, 1448, + 1448, 1448, 1451, 1451, 1451, 1451, 1451, 1451, + + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 200, 200, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 200, 200, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 200, 200, 200, 1451, 1451, 1451, + + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 200, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 1418, 1418, 1418, 1418, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, + 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, + 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, + 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, + + 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, + 1525, 1525, 1525, 1525, 1525, 1525, 1525, 200, + 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, + 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, + + 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, + 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, + 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, + 1526, 1526, 1526, 1526, 1526, 1526, 1526, 200, + + 127, 123, 1527, 1528, 1529, 1530, 1531, 127, + 123, 127, 123, 127, 123, 1532, 1533, 1534, + 1535, 1183, 1185, 1186, 1536, 127, 123, 1536, + 1183, 1183, 1183, 1183, 1537, 1537, 1538, 1539, + + 1540, 1541, 1540, 1541, 1540, 1541, 1540, 1541, + 1540, 1541, 1540, 1541, 1540, 1541, 1540, 1541, + 1540, 1541, 1540, 1541, 1540, 1541, 1540, 1541, + 1540, 1541, 1540, 1541, 1540, 1541, 1540, 1541, + + 1540, 1541, 1540, 1541, 1542, 1543, 1543, 1543, + 1543, 1543, 1543, 1544, 1545, 1544, 1545, 1546, + 1546, 1546, 1547, 1548, 200, 200, 200, 200, + 200, 1549, 1550, 1550, 1550, 1551, 1549, 1550, - 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, - 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, - 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, - 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, + 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, + 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, + 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, + 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, - 1463, 1463, 1463, 1463, 1463, 1463, 199, 1464, - 199, 199, 199, 199, 199, 1464, 199, 199, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, + 1552, 1552, 1552, 1552, 1552, 1552, 200, 1553, + 200, 200, 200, 200, 200, 1553, 200, 200, + 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, + 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, + 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, + 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, + 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, + 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1465, 1465, 1465, 1465, 1465, 1465, 1466, 1466, - 199, 199, 199, 199, 199, 199, 199, 1467, - 1468, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 1469, + 1554, 1554, 1554, 1554, 1554, 1554, 1555, 1555, + 200, 200, 200, 200, 200, 200, 200, 1556, + 1557, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 1558, + + 836, 836, 836, 836, 836, 836, 836, 836, + 836, 836, 836, 836, 836, 836, 836, 836, + 836, 836, 836, 836, 836, 836, 836, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 836, 836, 836, 836, 836, 836, 836, 200, + 836, 836, 836, 836, 836, 836, 836, 200, + 836, 836, 836, 836, 836, 836, 836, 200, + 836, 836, 836, 836, 836, 836, 836, 200, + + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + + 1559, 1559, 1560, 1561, 1560, 1561, 1559, 1559, + 1559, 1560, 1561, 1559, 1560, 1561, 1345, 1345, + 1345, 1345, 1345, 1345, 1345, 1345, 1344, 1562, + 1563, 1564, 1565, 1566, 1560, 1561, 1566, 1566, + + 1567, 1568, 1512, 1513, 1512, 1513, 1512, 1513, + 1512, 1513, 1564, 1564, 1564, 1564, 1569, 1570, + 1564, 1571, 1572, 1573, 1573, 1572, 1572, 1572, + 1572, 1572, 1574, 1574, 1575, 1576, 1576, 1577, + + 1578, 1576, 1579, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + 1580, 1580, 200, 1580, 1580, 1580, 1580, 1581, + + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + 1580, 1580, 1580, 1581, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, + 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, + 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, + 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, + + 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, + 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, + 1581, 1581, 1581, 1581, 1581, 1581, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, + 1582, 1582, 1582, 1582, 200, 200, 200, 200, + + 1299, 1583, 1584, 1585, 1441, 1586, 1587, 1588, + 16, 1336, 16, 1336, 16, 1336, 16, 1336, + 16, 1336, 1441, 1441, 16, 1336, 16, 1336, + 16, 1336, 16, 1336, 1589, 1314, 1590, 1590, + + 1441, 1588, 1588, 1588, 1588, 1588, 1588, 1588, + 1588, 1588, 1591, 1592, 172, 1593, 1594, 1594, + 1595, 1596, 1596, 1596, 1596, 1597, 1598, 1441, + 1599, 1599, 1599, 1600, 1601, 1602, 1582, 1441, + + 200, 1603, 1604, 1603, 1604, 1603, 1604, 1603, + 1604, 1603, 1604, 1604, 1605, 1604, 1605, 1604, + 1605, 1604, 1605, 1604, 1605, 1604, 1605, 1604, + 1605, 1604, 1605, 1604, 1605, 1604, 1605, 1604, + + 1605, 1604, 1605, 1603, 1604, 1605, 1604, 1605, + 1604, 1605, 1604, 1604, 1604, 1604, 1604, 1604, + 1605, 1605, 1604, 1605, 1605, 1604, 1605, 1605, + 1604, 1605, 1605, 1604, 1605, 1605, 1604, 1604, + + 1604, 1604, 1604, 1603, 1604, 1603, 1604, 1603, + 1604, 1604, 1604, 1604, 1604, 1604, 1603, 1604, + 1604, 1604, 1604, 1604, 1605, 1606, 1606, 200, + 200, 1607, 1607, 1608, 1608, 1609, 1610, 1611, + + 1612, 1613, 1614, 1613, 1614, 1613, 1614, 1613, + 1614, 1613, 1614, 1614, 1615, 1614, 1615, 1614, + 1615, 1614, 1615, 1614, 1615, 1614, 1615, 1614, + 1615, 1614, 1615, 1614, 1615, 1614, 1615, 1614, + + 1615, 1614, 1615, 1613, 1614, 1615, 1614, 1615, + 1614, 1615, 1614, 1614, 1614, 1614, 1614, 1614, + 1615, 1615, 1614, 1615, 1615, 1614, 1615, 1615, + 1614, 1615, 1615, 1614, 1615, 1615, 1614, 1614, + + 1614, 1614, 1614, 1613, 1614, 1613, 1614, 1613, + 1614, 1614, 1614, 1614, 1614, 1614, 1613, 1614, + 1614, 1614, 1614, 1614, 1615, 1613, 1613, 1615, + 1615, 1615, 1615, 1616, 1617, 1618, 1619, 1620, + + 200, 200, 200, 200, 200, 1621, 1621, 1621, + 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + + 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + 1621, 1621, 1621, 1621, 1621, 1622, 200, 200, + 200, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 200, + 1624, 1624, 1625, 1625, 1625, 1625, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, - 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 830, 830, 830, 830, 830, 830, 830, 199, - 830, 830, 830, 830, 830, 830, 830, 199, - 830, 830, 830, 830, 830, 830, 830, 199, - 830, 830, 830, 830, 830, 830, 830, 199, - - 264, 264, 264, 264, 264, 264, 264, 264, - 264, 264, 264, 264, 264, 264, 264, 264, - 264, 264, 264, 264, 264, 264, 264, 264, - 264, 264, 264, 264, 264, 264, 264, 264, - - 1470, 1470, 1471, 1472, 1471, 1472, 1470, 1470, - 1470, 1471, 1472, 1470, 1471, 1472, 1259, 1259, - 1259, 1259, 1259, 1259, 1259, 1259, 1258, 1473, - 1474, 1475, 1476, 1477, 1471, 1472, 1477, 1477, - - 1478, 1479, 1423, 1424, 1423, 1424, 1423, 1424, - 1423, 1424, 1475, 1475, 1475, 1475, 1480, 1481, - 1475, 1482, 1483, 1484, 1484, 1483, 1483, 1483, - 1483, 1483, 1485, 1485, 1486, 1487, 1487, 1488, - - 1489, 1487, 1490, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - 1491, 1491, 199, 1491, 1491, 1491, 1491, 1492, - - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - 1491, 1491, 1491, 1492, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, - 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, - 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, - 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, - - 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, - 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, - 1492, 1492, 1492, 1492, 1492, 1492, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, - 1493, 1493, 1493, 1493, 199, 199, 199, 199, - - 1213, 1494, 1495, 1496, 1352, 1497, 1498, 1499, - 16, 1250, 16, 1250, 16, 1250, 16, 1250, - 16, 1250, 1352, 1352, 16, 1250, 16, 1250, - 16, 1250, 16, 1250, 1500, 1228, 1501, 1501, - - 1352, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1502, 1503, 171, 1504, 1505, 1505, - 1506, 1507, 1507, 1507, 1507, 1508, 1509, 1352, - 1510, 1510, 1510, 1511, 1512, 1513, 1493, 1352, - - 199, 1514, 1515, 1514, 1515, 1514, 1515, 1514, - 1515, 1514, 1515, 1515, 1516, 1515, 1516, 1515, - 1516, 1515, 1516, 1515, 1516, 1515, 1516, 1515, - 1516, 1515, 1516, 1515, 1516, 1515, 1516, 1515, - - 1516, 1515, 1516, 1514, 1515, 1516, 1515, 1516, - 1515, 1516, 1515, 1515, 1515, 1515, 1515, 1515, - 1516, 1516, 1515, 1516, 1516, 1515, 1516, 1516, - 1515, 1516, 1516, 1515, 1516, 1516, 1515, 1515, - - 1515, 1515, 1515, 1514, 1515, 1514, 1515, 1514, - 1515, 1515, 1515, 1515, 1515, 1515, 1514, 1515, - 1515, 1515, 1515, 1515, 1516, 1517, 1517, 199, - 199, 1518, 1518, 1519, 1519, 1520, 1521, 1522, - - 1523, 1524, 1525, 1524, 1525, 1524, 1525, 1524, - 1525, 1524, 1525, 1525, 1526, 1525, 1526, 1525, - 1526, 1525, 1526, 1525, 1526, 1525, 1526, 1525, - 1526, 1525, 1526, 1525, 1526, 1525, 1526, 1525, - - 1526, 1525, 1526, 1524, 1525, 1526, 1525, 1526, - 1525, 1526, 1525, 1525, 1525, 1525, 1525, 1525, - 1526, 1526, 1525, 1526, 1526, 1525, 1526, 1526, - 1525, 1526, 1526, 1525, 1526, 1526, 1525, 1525, - - 1525, 1525, 1525, 1524, 1525, 1524, 1525, 1524, - 1525, 1525, 1525, 1525, 1525, 1525, 1524, 1525, - 1525, 1525, 1525, 1525, 1526, 1524, 1524, 1526, - 1526, 1526, 1526, 1527, 1528, 1529, 1530, 1531, - - 199, 199, 199, 199, 199, 1532, 1532, 1532, - 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, - 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, - 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, - - 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, - 1532, 1532, 1532, 1532, 1532, 1533, 199, 199, - 199, 1534, 1534, 1534, 1534, 1534, 1534, 1534, - 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, - - 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, - 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, - 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, - 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, - - 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, - 1534, 1534, 1534, 1534, 1534, 1534, 1534, 199, - 1535, 1535, 1536, 1536, 1536, 1536, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - - 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, - 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, - 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, - 1539, 1539, 1539, 199, 199, 199, 199, 199, - - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - - 1393, 1393, 1393, 1393, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, - 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, - - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 1541, 1541, 1541, 1542, 1542, 199, - - 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, - 1536, 1536, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - - 1537, 1537, 1537, 1537, 1543, 1543, 1543, 1543, - 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, - 1545, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 1541, 1541, 1542, 1542, 1547, 1535, - - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1545, 1545, 1545, 1545, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, + 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, + 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, + 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, + 1628, 1628, 1628, 200, 200, 200, 200, 200, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 199, + 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, + 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, + 1482, 1482, 1482, 1482, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, + 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1545, - 1545, 1545, 1545, 1537, 1537, 1537, 1537, 1537, - - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1545, 1545, - - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1545, - - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - - 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, - 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, - 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, - 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, - - 1551, 1551, 1551, 1551, 1551, 1551, 1552, 1552, - 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, - 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, - 1552, 1552, 1552, 1552, 1553, 1553, 1553, 1553, - - 1553, 1553, 1553, 1553, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1555, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - - 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, - 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, - 1556, 1556, 1556, 1556, 1556, 1557, 1556, 1556, - 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, - - 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, - 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, - 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, - 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, - - 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, - 1556, 1556, 1556, 1556, 1556, 199, 199, 199, - 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, - 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, - - 1558, 1558, 1559, 1559, 1558, 1558, 1558, 1558, - 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, - 1558, 1558, 1558, 1558, 1559, 1558, 1558, 1558, - 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, - - 1558, 1559, 1558, 1558, 1558, 1559, 1558, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, - 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, - - 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, - 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, - 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, - 1561, 1561, 1561, 1561, 1561, 1561, 1562, 1563, - - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - 1564, 1564, 1564, 1564, 1565, 1566, 1567, 1568, - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - - 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, - 1577, 1578, 1564, 1564, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 278, 279, 278, 279, 278, 279, 278, 279, - 278, 279, 278, 279, 278, 279, 278, 279, - 278, 279, 278, 279, 278, 279, 278, 279, - 278, 279, 278, 279, 278, 279, 278, 279, - - 282, 283, 278, 279, 278, 279, 278, 279, - 278, 279, 278, 279, 278, 279, 1579, 264, - 1580, 1580, 1580, 1581, 1582, 1582, 1582, 1582, - 1582, 1582, 1582, 1582, 264, 264, 1581, 1583, - - 278, 279, 278, 279, 278, 279, 278, 279, - 278, 279, 278, 279, 278, 279, 278, 279, - 278, 279, 278, 279, 278, 279, 278, 279, - 284, 285, 284, 285, 1584, 1584, 199, 1582, - - 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, - 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, - 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, - 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, - - 1585, 1585, 1585, 1585, 1585, 1585, 1586, 1586, - 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, - 1587, 1587, 1588, 1589, 1590, 1590, 1590, 1589, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, - 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, - 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1592, - 1592, 1592, 1592, 1481, 1481, 1481, 1481, 1481, - - 1593, 1593, 1099, 1100, 1099, 1100, 1099, 1100, - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - 1097, 1097, 1099, 1100, 1099, 1100, 1099, 1100, - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - 1448, 1097, 1097, 1097, 1097, 1097, 1097, 1097, - 1097, 1099, 1100, 1099, 1100, 1594, 1099, 1100, - - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - 1481, 1595, 1595, 1099, 1100, 1596, 1597, 199, - 1598, 1599, 1600, 1601, 1602, 1602, 1603, 1604, - 1603, 1604, 1603, 1604, 1603, 1604, 1603, 1604, - - 1598, 1599, 1598, 1599, 1598, 1599, 1598, 1599, - 1598, 1599, 1605, 1606, 1607, 1608, 199, 199, - 1609, 1610, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 1611, - 1612, 1612, 1597, 1613, 1613, 1613, 1613, 1613, - - 1614, 1614, 1615, 1614, 1614, 1614, 1616, 1614, - 1614, 1614, 1614, 1615, 1614, 1614, 1614, 1614, - 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, - 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, - - 1614, 1614, 1614, 1617, 1617, 1615, 1615, 1617, - 1618, 1618, 1618, 1618, 199, 199, 199, 199, - 1544, 1544, 1544, 1544, 1544, 1544, 772, 772, - 1290, 1619, 199, 199, 199, 199, 199, 199, - - 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, - 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, - 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, - 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, - - 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, - 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, - 1620, 1620, 1621, 1622, 1623, 1623, 1624, 1624, - 199, 199, 199, 199, 199, 199, 199, 199, + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1630, 1631, 1631, 200, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + + 1626, 1626, 1626, 1626, 1632, 1632, 1632, 1632, + 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, + 1634, 1635, 1635, 1635, 1635, 1635, 1635, 1635, + 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, + + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1631, 1631, 1636, 1624, + + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1635, 1635, 1635, 1635, 1635, 1635, 1635, + 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1634, 1634, 1634, 1634, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 200, + + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, - 1626, 1626, 1626, 1626, 1625, 1625, 1625, 1625, - 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, - 1625, 1625, 1625, 1625, 1627, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 1628, 1628, - 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, - 1637, 1638, 199, 199, 199, 199, 199, 199, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1634, + 1634, 1634, 1634, 1626, 1626, 1626, 1626, 1626, + + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1634, 1634, + + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1634, + 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, + 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, + 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, + 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, + + 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, + 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, + 1638, 1638, 1638, 1638, 1638, 1638, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + + 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, + 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, + 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, + 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, + + 1640, 1640, 1640, 1640, 1640, 1640, 1641, 1641, + 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, + 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, + 1641, 1641, 1641, 1641, 1642, 1642, 1642, 1642, + + 1642, 1642, 1642, 1642, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1644, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, - 1639, 1639, 490, 490, 490, 490, 490, 490, - 1640, 1640, 1640, 490, 199, 199, 199, 199, - - 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, - 1649, 1650, 1651, 1651, 1651, 1651, 1651, 1651, - 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, - 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, - - 1651, 1651, 1651, 1651, 1651, 1651, 1652, 1652, - 1652, 1652, 1652, 1653, 1653, 1653, 1654, 1655, - 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, - 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, - - 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1657, - 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, - 1657, 1657, 1658, 1659, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 1660, - - 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 199, 199, 199, - - 1661, 1661, 1661, 1662, 1663, 1663, 1663, 1663, - 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, - 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, - 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, - - 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, - 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, - 1663, 1663, 1663, 1664, 1662, 1662, 1661, 1661, - 1661, 1661, 1662, 1662, 1661, 1662, 1662, 1662, - - 1665, 1666, 1666, 1666, 1666, 1666, 1666, 1667, - 1668, 1668, 1666, 1666, 1666, 1666, 199, 1669, - 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, - 1678, 1679, 199, 199, 199, 199, 1666, 1666, - - 1680, 1680, 1680, 1680, 1680, 1681, 1682, 1680, - 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, - 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, - 1691, 1692, 1680, 1680, 1680, 1680, 1680, 199, - - 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, - 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, - 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, - 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, - - 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, - 1693, 1694, 1694, 1694, 1694, 1694, 1694, 1695, - 1695, 1694, 1694, 1695, 1695, 1694, 1694, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1693, 1693, 1693, 1694, 1693, 1693, 1693, 1693, - 1693, 1693, 1693, 1693, 1694, 1695, 199, 199, - 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, - 1704, 1705, 199, 199, 1706, 1707, 1707, 1707, - - 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, - 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, - 1709, 1708, 1708, 1708, 1708, 1708, 1708, 1710, - 1710, 1710, 1708, 810, 1681, 1711, 1680, 1680, - - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, - - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, - 1713, 1712, 1713, 1713, 1714, 1712, 1712, 1713, - 1713, 1712, 1712, 1712, 1712, 1712, 1713, 1713, - - 1712, 1713, 1712, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 1712, 1712, 1715, 1716, 1716, - - 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, - 1717, 1717, 1717, 1718, 1719, 1719, 1718, 1718, - 1720, 1720, 1717, 1721, 1721, 1718, 1722, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 1723, 1723, 1723, 1723, 1723, 1723, 199, - 199, 1723, 1723, 1723, 1723, 1723, 1723, 199, - 199, 1723, 1723, 1723, 1723, 1723, 1723, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1723, 1723, 1723, 1723, 1723, 1723, 1723, 199, - 1723, 1723, 1723, 1723, 1723, 1723, 1723, 199, - 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, - 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, - - 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, - 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, - 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, - 1602, 1602, 1602, 1724, 1725, 1725, 1725, 1725, - - 199, 199, 199, 199, 1602, 1726, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, - 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, - 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, - 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, - - 1727, 1727, 1727, 1728, 1728, 1729, 1728, 1728, - 1729, 1728, 1728, 1730, 1728, 1731, 199, 199, - 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, - 1740, 1741, 199, 199, 199, 199, 199, 199, - - 1742, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1742, 1743, 1743, 1743, - - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1742, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1742, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1742, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1742, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1742, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - - 1743, 1743, 1743, 1743, 1742, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - - 1743, 1743, 1743, 1743, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 825, 825, 825, 825, 825, 825, 825, 825, - 825, 825, 825, 825, 825, 825, 825, 825, - - 825, 825, 825, 825, 825, 825, 825, 199, - 199, 199, 199, 828, 828, 828, 828, 828, - 828, 828, 828, 828, 828, 828, 828, 828, - 828, 828, 828, 828, 828, 828, 828, 828, + + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 1647, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 200, 200, 200, + 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, + 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, + + 1648, 1648, 1649, 1649, 1648, 1648, 1648, 1648, + 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, + 1648, 1648, 1648, 1648, 1649, 1648, 1648, 1648, + 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, + + 1648, 1649, 1648, 1648, 1648, 1649, 1648, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, + 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, + + 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, + 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, + 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, + 1651, 1651, 1651, 1651, 1651, 1651, 1652, 1653, + + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + 1654, 1654, 1654, 1654, 1655, 1656, 1657, 1658, + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + + 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, + 1667, 1668, 1654, 1654, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 279, 280, 279, 280, 279, 280, 279, 280, + 279, 280, 279, 280, 279, 280, 279, 280, + 279, 280, 279, 280, 279, 280, 279, 280, + 279, 280, 279, 280, 279, 280, 279, 280, + + 283, 284, 279, 280, 279, 280, 279, 280, + 279, 280, 279, 280, 279, 280, 1669, 265, + 1670, 1670, 1670, 1671, 1672, 1672, 1672, 1672, + 1672, 1672, 1672, 1672, 265, 265, 1671, 1673, + + 279, 280, 279, 280, 279, 280, 279, 280, + 279, 280, 279, 280, 279, 280, 279, 280, + 279, 280, 279, 280, 279, 280, 279, 280, + 285, 286, 285, 286, 1674, 1674, 1675, 1672, + + 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + + 1676, 1676, 1676, 1676, 1676, 1676, 1677, 1677, + 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, + 1678, 1678, 1679, 1680, 1681, 1681, 1681, 1680, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, + 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, + 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1683, + 1683, 1683, 1683, 1570, 1570, 1570, 1570, 1570, + + 1684, 1684, 1185, 1186, 1185, 1186, 1185, 1186, + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + 1183, 1183, 1185, 1186, 1185, 1186, 1185, 1186, + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + 1537, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1185, 1186, 1185, 1186, 1685, 1185, 1186, + + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + 1570, 1686, 1686, 1185, 1186, 1687, 1688, 1689, + 1690, 1691, 1692, 1693, 1694, 1694, 1695, 1696, + 1695, 1696, 1695, 1696, 1695, 1696, 1695, 1696, + + 1690, 1691, 1690, 1691, 1690, 1691, 1690, 1691, + 1690, 1691, 1697, 1698, 1699, 1700, 200, 200, + 1701, 1702, 1703, 1704, 1705, 1706, 1705, 1706, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 1707, + 1708, 1708, 1688, 1709, 1709, 1709, 1709, 1709, + + 1710, 1710, 1711, 1710, 1710, 1710, 1712, 1710, + 1710, 1710, 1710, 1711, 1710, 1710, 1710, 1710, + 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, + 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, + + 1710, 1710, 1710, 1713, 1713, 1711, 1711, 1713, + 1714, 1714, 1714, 1714, 200, 200, 200, 200, + 1633, 1633, 1633, 1633, 1633, 1633, 778, 778, + 1376, 1715, 200, 200, 200, 200, 200, 200, + + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1717, 1718, 1719, 1719, 1720, 1720, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1721, 1721, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1721, 1721, 1721, 1721, + 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, + + 1721, 1721, 1721, 1721, 1723, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 1724, 1724, + 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, + 1733, 1734, 200, 200, 200, 200, 200, 200, + + 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, + 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, + 1735, 1735, 493, 493, 493, 493, 493, 493, + 1736, 1736, 1736, 493, 1737, 1738, 200, 200, + + 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, + 1747, 1748, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + + 1749, 1749, 1749, 1749, 1749, 1749, 1750, 1750, + 1750, 1750, 1750, 1751, 1751, 1751, 1752, 1753, + 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, + 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, + + 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1755, + 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, + 1755, 1755, 1756, 1757, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 1758, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, - 828, 828, 828, 828, 199, 199, 199, 199, - - 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, - 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, - 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, - 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, - - 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, - 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, - 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, - 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, - - 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, - 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, - 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, - 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, - - 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, - 1746, 1746, 1746, 1746, 1746, 1746, 1551, 1551, - 1746, 1551, 1746, 1551, 1551, 1746, 1746, 1746, - 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1551, - - 1746, 1551, 1746, 1551, 1551, 1746, 1746, 1551, - 1551, 1551, 1746, 1746, 1746, 1746, 1747, 1747, - 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, - 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, - - 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, - 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, - 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, - 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, - - 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, - 1748, 1748, 1748, 1749, 1749, 1749, 1550, 1550, - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - 1750, 1750, 1550, 1550, 1550, 1550, 1550, 1550, - - 1751, 1752, 1753, 1754, 1755, 1756, 1756, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 1757, 1758, 1759, 1760, 1761, - 199, 199, 199, 199, 199, 1762, 1763, 1764, - - 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, - 1765, 1766, 1764, 1764, 1764, 1764, 1764, 1764, - 1764, 1764, 1764, 1764, 1764, 1764, 1764, 296, - 1764, 1764, 1764, 1764, 1764, 296, 1764, 296, - - 1764, 1764, 296, 1764, 1764, 296, 1764, 1764, - 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1765, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1768, 1768, 1768, 1768, 1768, 1768, - 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, - - 1768, 1768, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1501, 1228, - - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 342, 342, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 342, 342, 342, 342, 342, 342, 342, 342, - 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, - 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, - - 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, - 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1770, 334, 342, 342, - - 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, - 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, - 1772, 1773, 1774, 1775, 1776, 1777, 1777, 1778, - 1779, 1780, 199, 199, 199, 199, 199, 199, - - 170, 170, 170, 170, 1085, 1085, 1085, 985, - 985, 985, 985, 985, 985, 985, 199, 199, - 1781, 1782, 1782, 1783, 1783, 1784, 1785, 1784, - 1785, 1784, 1785, 1784, 1785, 1784, 1785, 1784, - - 1785, 1784, 1785, 1784, 1785, 1513, 1513, 1786, - 1787, 1781, 1781, 1781, 1781, 1783, 1783, 1783, - 1788, 1789, 1790, 199, 1791, 1792, 1793, 1793, - 1782, 1281, 1282, 1281, 1282, 1281, 1282, 1794, - - 1781, 1781, 1795, 1796, 1797, 1798, 1799, 199, - 1781, 1284, 1242, 1781, 199, 199, 199, 199, - 1767, 1767, 1767, 1800, 1767, 342, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 342, 342, 1801, - - 199, 1793, 1781, 1794, 1284, 1242, 1781, 1802, - 1281, 1282, 1781, 1795, 1788, 1796, 1790, 1803, - 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, - 1812, 1813, 1792, 1791, 1814, 1799, 1815, 1793, - - 1781, 1816, 1816, 1816, 1816, 1816, 1816, 1816, - 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, - 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, - 1816, 1816, 1816, 1817, 1781, 1818, 1819, 1783, - - 1819, 1820, 1820, 1820, 1820, 1820, 1820, 1820, - 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, - 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, - 1820, 1820, 1820, 1817, 1799, 1818, 1799, 1821, - - 1822, 1823, 1281, 1282, 1824, 1825, 1826, 1827, - 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, - 1828, 1826, 1826, 1826, 1826, 1826, 1826, 1826, - 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, - - 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, - 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, - 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, - 1826, 1826, 1826, 1826, 1826, 1826, 1829, 1829, - - 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, - 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, - 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, - 1830, 1830, 1830, 1830, 1830, 1830, 1830, 199, - - 199, 199, 1830, 1830, 1830, 1830, 1830, 1830, - 199, 199, 1830, 1830, 1830, 1830, 1830, 1830, - 199, 199, 1830, 1830, 1830, 1830, 1830, 1830, - 199, 199, 1830, 1830, 1830, 199, 199, 199, - - 1831, 1284, 1799, 1819, 1509, 1284, 1284, 199, - 1303, 1280, 1280, 1280, 1280, 1303, 1303, 199, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1832, 1832, 1832, 1833, 51, 1834, 1834, - - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 199, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 199, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 199, 1835, 1835, 199, 1835, - - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 199, 199, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 199, 199, - - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 199, 199, 199, 199, 199, - - 1836, 1837, 1836, 199, 199, 199, 199, 1838, - 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, - 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, - 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, - - 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, - 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, - 1838, 1838, 1838, 1838, 199, 199, 199, 1839, - 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, - - 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, - 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, - 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, - 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, - - 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, - 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, - 1840, 1840, 1840, 1840, 1840, 1841, 1841, 1841, - 1841, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 1841, 1843, 1844, 199, 199, 199, - 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, - 1390, 1390, 1390, 1390, 199, 199, 199, 199, - - 1844, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, - 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, - - 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, - 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, - 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, - 1325, 1325, 1325, 1325, 1325, 1088, 199, 199, - - 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, - 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, - 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, - 1845, 1845, 1845, 1845, 1845, 199, 199, 199, - - 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, - 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, - 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, - 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, - - 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, - 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, - 1846, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 985, 1847, 1847, 1847, 1847, 1847, 1847, 1847, - 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, - 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, - 1847, 1847, 1847, 1847, 199, 199, 199, 199, - - 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, - 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, - 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, - 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1849, - - 1850, 1850, 1850, 1850, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, - 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, - - 1851, 1852, 1851, 1851, 1851, 1851, 1851, 1851, - 1851, 1851, 1852, 199, 199, 199, 199, 199, - 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, - 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, - - 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, - 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, - 1853, 1853, 1853, 1853, 1853, 1853, 1854, 1854, - 1854, 1854, 1854, 199, 199, 199, 199, 199, - - 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, - 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, - 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, - 1855, 1855, 1855, 1855, 1855, 1855, 199, 1856, - - 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, - 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, - 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, - 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, - - 1857, 1857, 1857, 1857, 199, 199, 199, 199, - 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, - 1858, 1859, 1859, 1859, 1859, 1859, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, - 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, - 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, - 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, - - 1860, 1860, 1860, 1860, 1860, 1860, 1861, 1861, - 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, - 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, - 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, - - 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, - 1862, 1862, 1862, 1862, 1862, 1862, 1863, 1863, - 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, - 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, - - 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, - 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, - 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, - 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, - - 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, - 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, - 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, - 1865, 1865, 1865, 1865, 1865, 1865, 199, 199, - - 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, - 1874, 1875, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, - 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, - 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, - 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, - - 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, - 199, 199, 199, 199, 199, 199, 199, 199, - 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, - 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, - - 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, - 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, - 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, - 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, - - 1877, 1877, 1877, 1877, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 1878, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1880, 1880, 1880, 1880, 1880, 1880, 296, 296, - 1880, 296, 1880, 1880, 1880, 1880, 1880, 1880, - 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, - 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, - - 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, - 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, - 1880, 1880, 1880, 1880, 1880, 1880, 296, 1880, - 1880, 296, 296, 296, 1880, 296, 296, 1880, - - 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, - 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, - 1881, 1881, 1881, 1881, 1881, 1881, 296, 1882, - 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, - - 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, - 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, - 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1885, - 1885, 1886, 1886, 1886, 1886, 1886, 1886, 1886, - - 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, - 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, - 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, - 1887, 1887, 1887, 1887, 1887, 1887, 1887, 296, - - 296, 296, 296, 296, 296, 296, 296, 1888, - 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - - 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, - 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, - 1889, 1889, 1889, 1889, 1889, 1889, 1890, 1890, - 1890, 1890, 1891, 1891, 296, 296, 296, 1892, - - 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, - 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, - 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, - 1893, 1893, 296, 296, 296, 296, 296, 1894, - - 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, - 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, - 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, - 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, - - 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, - 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, - 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, - 296, 296, 296, 296, 296, 296, 1896, 1896, - - 1897, 1898, 1898, 1898, 296, 1898, 1898, 296, - 296, 296, 296, 296, 1898, 1899, 1898, 1900, - 1897, 1897, 1897, 1897, 296, 1897, 1897, 1897, - 296, 1897, 1897, 1897, 1897, 1897, 1897, 1897, - - 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, - 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, - 1897, 1897, 1897, 1897, 296, 296, 296, 296, - 1900, 1901, 1899, 296, 296, 296, 296, 1902, - - 1903, 1904, 1905, 1906, 1907, 1907, 1907, 1907, - 296, 296, 296, 296, 296, 296, 296, 296, - 1908, 1908, 1908, 1908, 1908, 1908, 1909, 1909, - 1910, 296, 296, 296, 296, 296, 296, 296, - - 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, - 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, - 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, - 1911, 1911, 1911, 1911, 1911, 1912, 1912, 1913, - - 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, - 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, - 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, - 1914, 1914, 1914, 1914, 1914, 1915, 1915, 1915, - - 1916, 1916, 1916, 1916, 1916, 1917, 1918, 1917, - 1919, 1917, 1917, 1918, 1918, 1920, 1917, 1917, - 1917, 1917, 1917, 1916, 1916, 1916, 1916, 1920, - 1916, 1916, 1916, 1916, 1916, 1917, 1916, 1916, - - 1916, 1917, 1918, 1918, 1917, 1921, 1922, 296, - 296, 296, 296, 1923, 1923, 1923, 1923, 1924, - 1925, 1925, 1925, 1925, 1925, 1925, 1926, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - - 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, - 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, - 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, - 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, - - 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, - 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, - 1927, 1927, 1927, 1927, 1927, 1927, 296, 296, - 296, 1928, 1928, 1928, 1928, 1928, 1928, 1928, - - 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, - 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, - 1929, 1929, 1929, 1929, 1929, 1929, 296, 296, + 828, 828, 828, 828, 828, 200, 200, 200, + + 1759, 1759, 1759, 1760, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1762, 1760, 1760, 1759, 1759, + 1759, 1759, 1760, 1760, 1759, 1760, 1760, 1760, + + 1763, 1764, 1764, 1764, 1764, 1764, 1764, 1765, + 1766, 1766, 1764, 1764, 1764, 1764, 200, 1767, + 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, + 1776, 1777, 200, 200, 200, 200, 1764, 1764, + + 1778, 1778, 1778, 1778, 1778, 1779, 1780, 1778, + 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, + 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, + 1789, 1790, 1778, 1778, 1778, 1778, 1778, 200, + + 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, + 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, + 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, + 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, + + 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, + 1791, 1792, 1792, 1792, 1792, 1792, 1792, 1793, + 1793, 1792, 1792, 1793, 1793, 1792, 1792, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1791, 1791, 1791, 1792, 1791, 1791, 1791, 1791, + 1791, 1791, 1791, 1791, 1792, 1793, 200, 200, + 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, + 1802, 1803, 200, 200, 1804, 1805, 1805, 1805, + + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1807, 1806, 1806, 1806, 1806, 1806, 1806, 1808, + 1808, 1808, 1806, 816, 1779, 1809, 1778, 1778, + + 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, + 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, + 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, + 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, + + 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, + 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, + 1811, 1810, 1811, 1811, 1812, 1810, 1810, 1811, + 1811, 1810, 1810, 1810, 1810, 1810, 1811, 1811, + + 1810, 1811, 1810, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 1810, 1810, 1813, 1814, 1814, + + 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, + 1815, 1815, 1815, 1816, 1817, 1817, 1816, 1816, + 1818, 1818, 1815, 1819, 1819, 1816, 1820, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 1821, 1821, 1821, 1821, 1821, 1821, 200, + 200, 1821, 1821, 1821, 1821, 1821, 1821, 200, + 200, 1821, 1821, 1821, 1821, 1821, 1821, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1821, 1821, 1821, 1821, 1821, 1821, 1821, 200, + 1821, 1821, 1821, 1821, 1821, 1821, 1821, 200, + 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, + 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, + + 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, + 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, + 1694, 1694, 1694, 1822, 1694, 1694, 1694, 1694, + 1694, 1694, 1694, 1823, 1824, 1824, 1824, 1824, + + 1825, 1825, 1825, 1825, 1694, 1826, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, + 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, + + 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, + 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, + 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, + 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, + + 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, + 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, + 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, + 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, + + 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, + 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, + 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, + 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, + + 1907, 1907, 1907, 1908, 1908, 1909, 1908, 1908, + 1909, 1908, 1908, 1910, 1908, 1911, 200, 200, + 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, + 1920, 1921, 200, 200, 200, 200, 200, 200, + + 1922, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1922, 1923, 1923, 1923, + + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1922, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1922, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1922, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1922, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1922, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + + 1923, 1923, 1923, 1923, 1922, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + + 1923, 1923, 1923, 1923, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 831, 831, 831, 831, 831, 831, 831, 831, + 831, 831, 831, 831, 831, 831, 831, 831, + + 831, 831, 831, 831, 831, 831, 831, 200, + 200, 200, 200, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, + + 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 200, 200, 200, 200, + + 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, + 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, + 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, + 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, + + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1640, 1640, + 1926, 1640, 1926, 1640, 1640, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1640, + + 1926, 1640, 1926, 1640, 1640, 1926, 1926, 1640, + 1640, 1640, 1926, 1926, 1926, 1926, 1927, 1927, + 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, + 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, + + 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, + 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, + 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, + 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, + + 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, + 1928, 1928, 1928, 1929, 1929, 1929, 1639, 1639, + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + 1930, 1930, 1639, 1639, 1639, 1639, 1639, 1639, + + 1931, 1932, 1933, 1934, 1935, 1936, 1936, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 1937, 1938, 1939, 1940, 1941, + 200, 200, 200, 200, 200, 1942, 1943, 1944, + + 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, + 1945, 1946, 1944, 1944, 1944, 1944, 1944, 1944, + 1944, 1944, 1944, 1944, 1944, 1944, 1944, 297, + 1944, 1944, 1944, 1944, 1944, 297, 1944, 297, + + 1944, 1944, 297, 1944, 1944, 297, 1944, 1944, + 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1945, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1948, 1948, 1948, 1948, 1948, 1948, + 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, + + 1948, 1948, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1590, 1314, + + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 343, 343, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 343, 343, 343, 343, 343, 343, 343, 343, + 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, + 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, - 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, - 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, - 1931, 1931, 1931, 296, 296, 296, 296, 296, - 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, - - 1933, 1934, 1933, 1934, 1934, 1934, 1933, 1933, - 1933, 1934, 1933, 1933, 1934, 1933, 1934, 1934, - 1933, 1934, 296, 296, 296, 296, 296, 296, - 296, 1935, 1935, 1935, 1935, 296, 296, 296, - - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 1936, 1936, 1936, 1936, 1937, 1937, 1938, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - - 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, - 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, - 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, - 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, - - 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, - 1939, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - - 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, - 1948, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, - 1949, 1949, 1949, 1949, 1949, 1949, 1949, 296, - - 1950, 1951, 1950, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, + 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1950, 335, 343, 343, + 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, - 1951, 1951, 1951, 1951, 1951, 1951, 1953, 1954, - 1954, 1955, 1955, 1955, 1955, 1955, 199, 199, - 199, 199, 1956, 1957, 1958, 1959, 1960, 1961, - 1962, 1963, 1964, 1965, 1965, 1965, 1965, 1965, - 1965, 1965, 1965, 1965, 1965, 1965, 1966, 1967, - 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 1976, - 1977, 1977, 1978, 1979, 1979, 1979, 1979, 1979, - 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, - 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, - 1979, 1979, 1980, 1979, 1980, 1979, 1979, 1979, - 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, - 1979, 1979, 1979, 1980, 1979, 1979, 1979, 1979, - 1978, 1978, 1978, 1977, 1977, 1977, 1977, 1978, - 1978, 1981, 1982, 1983, 1983, 1984, 1985, 1985, - 1985, 1985, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, - 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, - 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, - 1986, 199, 199, 199, 199, 199, 199, 199, - 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, - 1995, 1996, 199, 199, 199, 199, 199, 199, - - 1997, 1997, 1997, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1999, - 2000, 2000, 2000, 2000, 2001, 2000, 2002, 2002, - 2000, 2000, 2000, 2003, 2003, 199, 2004, 2005, - 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, - 2014, 2015, 2015, 2015, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, - 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, - 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, - 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, - 2016, 2016, 2016, 2017, 2018, 2019, 2016, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2020, 2020, 2021, 2022, 2022, 2022, 2022, 2022, - 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, - 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, - 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, - 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, + 1952, 1953, 1954, 1955, 1956, 1957, 1957, 1958, + 1959, 1960, 200, 200, 200, 200, 200, 200, + + 171, 171, 171, 171, 1171, 1171, 1171, 1071, + 1071, 1071, 1071, 1071, 1071, 1071, 1675, 1675, + 1961, 1962, 1962, 1963, 1963, 1964, 1965, 1964, + 1965, 1964, 1965, 1964, 1965, 1964, 1965, 1964, + + 1965, 1964, 1965, 1964, 1965, 1602, 1602, 1966, + 1967, 1961, 1961, 1961, 1961, 1963, 1963, 1963, + 1968, 1969, 1970, 200, 1971, 1972, 1973, 1973, + 1962, 1367, 1368, 1367, 1368, 1367, 1368, 1974, + + 1961, 1961, 1975, 1976, 1977, 1978, 1979, 200, + 1961, 1370, 1328, 1961, 200, 200, 200, 200, + 1947, 1947, 1947, 1980, 1947, 343, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 343, 343, 1981, + + 200, 1973, 1961, 1974, 1370, 1328, 1961, 1982, + 1367, 1368, 1961, 1975, 1968, 1976, 1970, 1983, + 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, + 1992, 1993, 1972, 1971, 1994, 1979, 1995, 1973, + + 1961, 1996, 1996, 1996, 1996, 1996, 1996, 1996, + 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, + 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, + 1996, 1996, 1996, 1997, 1961, 1998, 1999, 1963, + + 1999, 2000, 2000, 2000, 2000, 2000, 2000, 2000, + 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, + 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, + 2000, 2000, 2000, 1997, 1979, 1998, 1979, 2001, + + 2002, 2003, 1367, 1368, 2004, 2005, 2006, 2007, + 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, + 2008, 2006, 2006, 2006, 2006, 2006, 2006, 2006, + 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, + + 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, + 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, + 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, + 2006, 2006, 2006, 2006, 2006, 2006, 2009, 2009, + + 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, + 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, + 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, + 2010, 2010, 2010, 2010, 2010, 2010, 2010, 200, + + 200, 200, 2010, 2010, 2010, 2010, 2010, 2010, + 200, 200, 2010, 2010, 2010, 2010, 2010, 2010, + 200, 200, 2010, 2010, 2010, 2010, 2010, 2010, + 200, 200, 2010, 2010, 2010, 200, 200, 200, + + 2011, 1370, 1979, 1999, 1598, 1370, 1370, 200, + 1390, 1366, 1366, 1366, 1366, 1390, 1390, 200, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 2012, 2012, 2012, 2013, 51, 2014, 2014, + + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 200, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 200, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 200, 2015, 2015, 200, 2015, + + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 200, 200, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 200, 200, + + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 200, 200, 200, 200, 200, + + 2016, 2017, 2016, 200, 200, 200, 200, 2018, + 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, + 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, + 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, + + 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, + 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, + 2018, 2018, 2018, 2018, 200, 200, 200, 2019, + 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, + + 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, + 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, + 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, + 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, + + 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, + 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, + 2020, 2020, 2020, 2020, 2020, 2021, 2021, 2021, + 2021, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, - 2022, 2022, 2022, 2021, 2021, 2021, 2020, 2020, - 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2021, - 2023, 2022, 2022, 2022, 2022, 2024, 2024, 2025, - 2026, 199, 199, 199, 199, 2027, 199, 199, - 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, - 2036, 2037, 2038, 199, 199, 199, 199, 199, - 199, 2039, 2039, 2039, 2039, 2039, 2039, 2039, - 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, - 2039, 2039, 2039, 2039, 2039, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, + 2022, 2022, 2021, 2023, 2024, 200, 200, 200, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 200, 200, 200, 200, + + 2024, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, + 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, + + 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, + 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, + 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, + 1412, 1412, 1412, 1412, 1412, 1174, 200, 200, + + 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, + 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, + 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, + 2025, 2025, 2025, 2025, 2025, 200, 200, 200, + + 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + + 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + 2026, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1071, 2027, 2027, 2027, 2027, 2027, 2027, 2027, + 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, + 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, + 2027, 2027, 2027, 2027, 200, 200, 200, 200, + + 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, + 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, + 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, + 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2029, + + 2030, 2030, 2030, 2030, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, + 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, + + 2031, 2032, 2031, 2031, 2031, 2031, 2031, 2031, + 2031, 2031, 2032, 200, 200, 200, 200, 200, + 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, + 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, + + 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, + 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, + 2033, 2033, 2033, 2033, 2033, 2033, 2034, 2034, + 2034, 2034, 2034, 200, 200, 200, 200, 200, + + 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, + 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, + 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, + 2035, 2035, 2035, 2035, 2035, 2035, 200, 2036, + + 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, + 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, + 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, + 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, + + 2037, 2037, 2037, 2037, 200, 200, 200, 200, + 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, + 2038, 2039, 2039, 2039, 2039, 2039, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, - 2040, 2040, 199, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, - 2040, 2040, 2040, 2040, 2041, 2041, 2041, 2042, - 2042, 2042, 2041, 2041, 2042, 2043, 2044, 2042, - 2045, 2045, 2046, 2045, 2045, 2046, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, - 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, - 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, - 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, - 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, - 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2048, - 2049, 2049, 2049, 2048, 2048, 2048, 2048, 2048, - 2048, 2050, 2051, 199, 199, 199, 199, 199, - 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, - 2060, 2061, 199, 199, 199, 199, 199, 199, - - 199, 2062, 2063, 2063, 199, 2064, 2064, 2064, - 2064, 2064, 2064, 2064, 2064, 199, 199, 2064, - 2064, 199, 199, 2064, 2064, 2064, 2064, 2064, + + 2040, 2040, 2040, 2040, 2040, 2040, 2041, 2041, + 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, + 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, + 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, + + 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, + 2042, 2042, 2042, 2042, 2042, 2042, 2043, 2043, + 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, + 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, + + 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, + 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, + 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, + 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, + + 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, + 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, + 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, + 2045, 2045, 2045, 2045, 2045, 2045, 200, 200, + + 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, + 2054, 2055, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 200, 200, 200, 200, 200, 200, 200, 200, + 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, + 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, + + 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, + 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, + 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, + 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, + + 2057, 2057, 2057, 2057, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 2058, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + 2059, 2059, 2059, 2059, 2059, 2059, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2060, 2060, 2060, 2060, 2060, 2060, 297, 297, + 2060, 297, 2060, 2060, 2060, 2060, 2060, 2060, + 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, + 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, + + 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, + 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, + 2060, 2060, 2060, 2060, 2060, 2060, 297, 2060, + 2060, 297, 297, 297, 2060, 297, 297, 2060, + + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 297, 2062, + 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, + 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, - 2064, 199, 2064, 2064, 2064, 2064, 2064, 2064, - 2064, 199, 2064, 2064, 199, 2064, 2064, 2064, - 2064, 2064, 199, 199, 2065, 2064, 2066, 2063, - 2062, 2063, 2063, 2063, 2063, 199, 199, 2063, - 2063, 199, 199, 2067, 2067, 2068, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 2066, - 199, 199, 199, 199, 199, 2064, 2064, 2064, - 2064, 2064, 2063, 2063, 199, 199, 2069, 2069, - 2069, 2069, 2069, 2069, 2069, 199, 199, 199, - 2069, 2069, 2069, 2069, 2069, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, - 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, - 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, - 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, - 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, - 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, - 2071, 2072, 2072, 2073, 2073, 2073, 2073, 2073, - 2073, 2072, 2074, 2075, 2075, 2071, 2075, 2073, - 2073, 2072, 2076, 2077, 2070, 2070, 2078, 2070, - 199, 199, 199, 199, 199, 199, 199, 199, - 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, - 2087, 2088, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, - 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, - 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, - 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, - 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, - 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2090, - 2091, 2091, 2092, 2092, 2092, 2092, 199, 199, - 2091, 2091, 2093, 2093, 2092, 2092, 2091, 2094, - 2095, 2096, 2097, 2097, 2098, 2098, 2099, 2099, - 2099, 2097, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, - 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, - 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, - 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, - 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, - 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, - 2101, 2101, 2101, 2102, 2102, 2102, 2102, 2102, - 2102, 2102, 2102, 2101, 2101, 2102, 2101, 2103, - 2102, 2104, 2104, 2105, 2100, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2106, 2107, 2108, 2109, 2110, 2111, 2112, 2113, - 2114, 2115, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2117, 2118, 2117, 2118, 2118, - 2117, 2117, 2117, 2117, 2117, 2117, 2119, 2120, - 199, 199, 199, 199, 199, 199, 199, 199, - 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, - 2129, 2130, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, - 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, - 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, - 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, - 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, - 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, - 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, - 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, - 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, - 2141, 2142, 2143, 2143, 2143, 2143, 2143, 2143, - 2143, 2143, 2143, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 2144, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, - 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, - 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, - 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, - 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, - 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, - 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, - 2145, 199, 199, 199, 199, 199, 199, 199, - - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2147, - 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, - 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, - 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, - 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, - 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, - 2147, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2149, 2149, 2149, 2149, 2149, - 2149, 2149, 2149, 2149, 2149, 2149, 2149, 199, - 2150, 2150, 2150, 2150, 2151, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2153, 2153, 2153, 2154, 2154, 2154, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2154, 2152, 2152, 2152, 2153, 2154, - 2153, 2154, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2153, 2154, 2154, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 199, 199, 199, 199, 199, 199, 199, - 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, - 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, - 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, - 2156, 2156, 2156, 2156, 2156, 2156, 2156, 199, - 2157, 2158, 2159, 2160, 2161, 2162, 2163, 2164, - 2165, 2166, 199, 199, 199, 199, 2167, 2167, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, - 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, - 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, - 2168, 2168, 2168, 2168, 2168, 2168, 199, 199, - 2169, 2169, 2169, 2169, 2169, 2170, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2173, - 2173, 2174, 2175, 2175, 2176, 2176, 2176, 2176, - 2177, 2177, 2177, 2177, 2173, 2176, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, - 2186, 2187, 199, 2188, 2188, 2188, 2188, 2188, - 2188, 2188, 199, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 199, 199, 199, 199, 199, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, - 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, - 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, - 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, - 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, - 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, - 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, - 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, - 2189, 2189, 2189, 2189, 2189, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2189, 2190, 2190, 2190, 2190, 2190, 2190, 2190, - 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, - 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, - 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, - 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, - 2190, 2190, 2190, 2190, 2190, 2190, 2190, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 2191, - 2191, 2191, 2191, 2192, 2192, 2192, 2192, 2192, - 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2193, 2194, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 199, 199, 199, 199, 199, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 199, 199, 199, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 199, 199, 199, 199, 199, 199, 199, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 199, 199, 2196, 2197, 2198, 2199, - 2200, 2200, 2200, 2200, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 199, - 199, 1325, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2202, 2202, - 2202, 2202, 2202, 2202, 2202, 2203, 2204, 2205, - 2205, 2205, 2201, 2201, 2201, 2206, 2203, 2203, - 2203, 2203, 2203, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2208, 2208, 2208, 2208, 2208, - 2208, 2208, 2208, 2201, 2201, 2209, 2209, 2209, - 2209, 2209, 2208, 2208, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2209, 2209, 2209, 2209, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2202, 2202, 2202, 2202, 2202, - 2202, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 2210, 2210, 2210, 1842, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, - 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, - 2211, 2211, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 199, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2212, 199, 2212, 2212, - 199, 199, 2212, 199, 199, 2212, 2212, 199, - 199, 2212, 2212, 2212, 2212, 199, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2213, 2213, - 2213, 2213, 199, 2213, 199, 2213, 2213, 2213, - 2213, 2214, 2213, 2213, 199, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - - 2213, 2213, 2213, 2213, 2212, 2212, 199, 2212, - 2212, 2212, 2212, 199, 199, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 199, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 199, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2212, 2212, 199, 2212, 2212, 2212, 2212, 199, - 2212, 2212, 2212, 2212, 2212, 199, 2212, 199, - 199, 199, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 199, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 1317, 1317, 199, 199, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2215, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2216, 2213, 2213, 2213, 2213, - 2213, 2213, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2215, 2213, 2213, 2213, 2213, - - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2216, 2213, 2213, - 2213, 2213, 2213, 2213, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2215, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2216, - 2213, 2213, 2213, 2213, 2213, 2213, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2215, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2216, 2213, 2213, 2213, 2213, 2213, 2213, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2215, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2216, 2213, 2213, 2213, 2213, - 2213, 2213, 2217, 2218, 199, 199, 2219, 2220, - 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, - 2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226, - 2227, 2228, 2219, 2220, 2221, 2222, 2223, 2224, - 2225, 2226, 2227, 2228, 2219, 2220, 2221, 2222, - 2223, 2224, 2225, 2226, 2227, 2228, 2219, 2220, - 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, - - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 296, 296, 2230, - 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, - 2231, 2231, 2231, 2231, 2231, 2231, 2231, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - - 2232, 2232, 2232, 2232, 342, 2232, 2232, 2232, - 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, - 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, + 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2065, + 2065, 2066, 2066, 2066, 2066, 2066, 2066, 2066, + + 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, + 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, + 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, + 2067, 2067, 2067, 2067, 2067, 2067, 2067, 297, + + 297, 297, 297, 297, 297, 297, 297, 2068, + 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, + 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, + 2069, 2069, 2069, 297, 2069, 2069, 297, 297, + 297, 297, 297, 2070, 2070, 2070, 2070, 2070, + + 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, + 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, + 2071, 2071, 2071, 2071, 2071, 2071, 2072, 2072, + 2072, 2072, 2073, 2073, 297, 297, 297, 2074, + + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 297, 297, 297, 297, 297, 2076, + + 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, + 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, + 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, + 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, + + 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, + 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, + 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, + 297, 297, 297, 297, 2079, 2079, 2078, 2078, + + 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, + 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, + 297, 297, 2079, 2079, 2079, 2079, 2079, 2079, + 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, + + 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, + 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, + 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, + 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, + + 2080, 2081, 2081, 2081, 297, 2081, 2081, 297, + 297, 297, 297, 297, 2081, 2082, 2081, 2083, + 2080, 2080, 2080, 2080, 297, 2080, 2080, 2080, + 297, 2080, 2080, 2080, 2080, 2080, 2080, 2080, + + 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, + 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, + 2080, 2080, 2080, 2080, 297, 297, 297, 297, + 2083, 2084, 2082, 297, 297, 297, 297, 2085, + + 2086, 2087, 2088, 2089, 2090, 2090, 2090, 2090, + 297, 297, 297, 297, 297, 297, 297, 297, + 2091, 2091, 2091, 2091, 2091, 2091, 2092, 2092, + 2093, 297, 297, 297, 297, 297, 297, 297, + + 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, + 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, + 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, + 2094, 2094, 2094, 2094, 2094, 2095, 2095, 2096, + + 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, + 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, + 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, + 2097, 2097, 2097, 2097, 2097, 2098, 2098, 2098, + + 2099, 2099, 2099, 2099, 2099, 2100, 2101, 2100, + 2102, 2100, 2100, 2101, 2101, 2103, 2100, 2100, + 2100, 2100, 2100, 2099, 2099, 2099, 2099, 2103, + 2099, 2099, 2099, 2099, 2099, 2100, 2099, 2099, + + 2099, 2100, 2101, 2101, 2100, 2104, 2105, 297, + 297, 297, 297, 2106, 2106, 2106, 2106, 2107, + 2108, 2108, 2108, 2108, 2108, 2108, 2109, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, + 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, + 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, + 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, + + 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, + 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, + 2110, 2110, 2110, 2110, 2110, 2110, 297, 297, + 297, 2111, 2111, 2111, 2111, 2111, 2111, 2111, + + 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, + 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, + 2112, 2112, 2112, 2112, 2112, 2112, 297, 297, + 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, + + 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, + 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, + 2114, 2114, 2114, 297, 297, 297, 297, 297, + 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, + + 2116, 2117, 2116, 2117, 2117, 2117, 2116, 2116, + 2116, 2117, 2116, 2116, 2117, 2116, 2117, 2117, + 2116, 2117, 297, 297, 297, 297, 297, 297, + 297, 2118, 2118, 2118, 2118, 297, 297, 297, + + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 2119, 2119, 2119, 2119, 2120, 2120, 2121, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, + 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, + 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, + 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, + + 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, + 2122, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, + 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, + 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, + 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, + + 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, + 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, + 2124, 2124, 2124, 297, 297, 297, 297, 297, + 297, 297, 2125, 2125, 2125, 2125, 2125, 2125, + + 2126, 2127, 2128, 2129, 2130, 2131, 2132, 2133, + 2134, 2135, 2135, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 297, + + 2136, 2137, 2136, 2138, 2138, 2138, 2138, 2138, + 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, + 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, + 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, + 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, + 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, + 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, + 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, + 2137, 2137, 2137, 2137, 2137, 2137, 2139, 2140, + 2140, 2141, 2141, 2141, 2141, 2141, 200, 200, + 200, 200, 2142, 2143, 2144, 2145, 2146, 2147, + 2148, 2149, 2150, 2151, 2151, 2151, 2151, 2151, + 2151, 2151, 2151, 2151, 2151, 2151, 2152, 2153, + 2154, 2155, 2156, 2157, 2158, 2159, 2160, 2161, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 2162, + 2163, 2163, 2164, 2165, 2165, 2165, 2165, 2165, + 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, + 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, + 2165, 2165, 2166, 2165, 2166, 2165, 2165, 2165, + 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, + 2165, 2165, 2165, 2166, 2165, 2165, 2165, 2165, + 2164, 2164, 2164, 2163, 2163, 2163, 2163, 2164, + 2164, 2167, 2168, 2169, 2169, 2170, 2171, 2171, + 2171, 2171, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, + 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, + 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, + 2172, 200, 200, 200, 200, 200, 200, 200, + 2173, 2174, 2175, 2176, 2177, 2178, 2179, 2180, + 2181, 2182, 200, 200, 200, 200, 200, 200, + + 2183, 2183, 2183, 2184, 2184, 2184, 2184, 2184, + 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, + 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, + 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, + 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2185, + 2186, 2186, 2186, 2186, 2187, 2186, 2188, 2188, + 2186, 2186, 2186, 2189, 2189, 200, 2190, 2191, + 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199, + 2200, 2201, 2201, 2201, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, + 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, + 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, + 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, + 2202, 2202, 2202, 2203, 2204, 2205, 2202, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2206, 2206, 2207, 2208, 2208, 2208, 2208, 2208, + 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, + 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, + 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, + 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, + 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, + 2208, 2208, 2208, 2207, 2207, 2207, 2206, 2206, + 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2207, + 2209, 2208, 2208, 2208, 2208, 2210, 2210, 2211, + 2212, 2213, 2214, 2215, 2215, 2216, 200, 200, + 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, + 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2231, + 200, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, - 342, 2232, 2232, 342, 2232, 342, 342, 2232, - 342, 2232, 2232, 2232, 2232, 2232, 2232, 2232, - 2232, 2232, 2232, 342, 2232, 2232, 2232, 2232, - 342, 2232, 342, 2232, 342, 342, 342, 342, - 342, 342, 2232, 342, 342, 342, 342, 2232, - 342, 2232, 342, 2232, 342, 2232, 2232, 2232, - 342, 2232, 2232, 342, 2232, 342, 342, 2232, - 342, 2232, 342, 2232, 342, 2232, 342, 2232, - 342, 2232, 2232, 342, 2232, 342, 342, 2232, - 2232, 2232, 2232, 342, 2232, 2232, 2232, 2232, - 2232, 2232, 2232, 342, 2232, 2232, 2232, 2232, - 342, 2232, 2232, 2232, 2232, 342, 2232, 342, - 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, - 2232, 2232, 342, 2232, 2232, 2232, 2232, 2232, - 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, - 2232, 2232, 2232, 2232, 342, 342, 342, 342, - 342, 2232, 2232, 2232, 342, 2232, 2232, 2232, - 2232, 2232, 342, 2232, 2232, 2232, 2232, 2232, - 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, - 2232, 2232, 2232, 2232, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 2233, 2233, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 199, 199, 199, 199, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 199, - 199, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1394, - 199, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 199, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2234, 2234, 2235, 2236, 2237, 2238, 2239, 2240, - 2241, 2242, 2243, 2244, 2244, 199, 199, 199, - 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, - 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, - 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, - 2245, 2245, 2245, 2245, 2245, 2245, 2245, 199, - 2246, 2247, 2246, 2246, 2246, 2246, 2246, 2246, - 2246, 2246, 2246, 2246, 2246, 2247, 2246, 2247, - 2246, 2246, 2247, 2246, 2246, 2246, 2247, 2246, - 2246, 2246, 2245, 2245, 2245, 2245, 2245, 2248, - 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2250, - 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2250, - 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, - 2249, 2249, 2251, 2251, 199, 199, 199, 199, - 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, - 2249, 2250, 2249, 2250, 2250, 2249, 2249, 2250, - 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, - 2249, 2249, 772, 772, 772, 772, 2252, 2252, - 2245, 2252, 2252, 2252, 2252, 2252, 2252, 2252, - 2252, 2252, 2252, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 2253, 2253, - 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, - 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, - 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, - - 2254, 2255, 2255, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, - 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, - 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, - 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, - 1543, 1543, 2255, 2255, 2255, 2255, 2255, 2255, - 2255, 2255, 2255, 199, 199, 199, 199, 199, - 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, - 1543, 199, 199, 199, 199, 199, 199, 199, - 2255, 2255, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 199, 199, 199, - 1361, 1361, 1361, 1361, 1361, 1361, 1394, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1394, 199, 199, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1362, 1362, 1394, 1394, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1360, 1360, 1361, - 1361, 1361, 1361, 1361, 1360, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1394, 1361, 1361, - 1361, 1361, 1361, 1394, 1394, 1394, 1394, 199, - 199, 199, 199, 199, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1394, - 1361, 1394, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1360, 1361, 1360, 1361, 1360, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1360, - 1361, 1360, 1360, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1394, 1361, 1361, 1361, 1361, 1394, 1394, 199, - - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1362, 1362, - 2256, 2256, 2256, 2256, 1362, 1362, 1362, 1362, - 1362, 1362, 1394, 199, 199, 199, 199, 199, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 199, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 199, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1362, 1362, 1362, 1362, - 1362, 1362, 1394, 1361, 1361, 1361, 1361, 1361, - - 2257, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 2257, 1361, 1361, 1361, 2257, 1361, 2257, - 1361, 2257, 1361, 2257, 1361, 1361, 1361, 2257, - 1361, 1361, 1361, 1361, 1361, 1361, 2257, 2257, - 1361, 1361, 1361, 1361, 2257, 1361, 2257, 2257, - 1361, 1361, 1361, 1361, 2257, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1394, 1394, 199, 199, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 2258, 2258, - 2258, 2259, 2259, 2259, 1362, 1362, 1362, 1362, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 199, 199, 199, - 1394, 1394, 1394, 1394, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 199, 199, 199, 199, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 199, 199, 199, 199, 199, 199, 199, 199, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 199, 199, 199, 199, 199, 199, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 199, 199, 199, 199, 199, 199, 199, 199, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 2260, 2260, - - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, + 2232, 2232, 2232, 2232, 2232, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, + 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, + 2233, 2233, 200, 2233, 2233, 2233, 2233, 2233, + 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, + 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, + 2233, 2233, 2233, 2233, 2234, 2234, 2234, 2235, + 2235, 2235, 2234, 2234, 2235, 2236, 2237, 2235, + 2238, 2238, 2239, 2238, 2238, 2239, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2240, 2240, 2240, 2240, 2240, 2240, 2240, 200, + 2240, 200, 2240, 2240, 2240, 2240, 200, 2240, + 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, + 2240, 2240, 2240, 2240, 2240, 2240, 200, 2240, + 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, + 2240, 2241, 200, 200, 200, 200, 200, 200, + 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, + 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, + 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, + 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, + 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, + 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2243, + 2244, 2244, 2244, 2243, 2243, 2243, 2243, 2243, + 2243, 2245, 2246, 200, 200, 200, 200, 200, + 2247, 2248, 2249, 2250, 2251, 2252, 2253, 2254, + 2255, 2256, 200, 200, 200, 200, 200, 200, + + 2257, 2258, 2259, 2259, 200, 2260, 2260, 2260, + 2260, 2260, 2260, 2260, 2260, 200, 200, 2260, + 2260, 200, 200, 2260, 2260, 2260, 2260, 2260, + 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, + 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, + 2260, 200, 2260, 2260, 2260, 2260, 2260, 2260, + 2260, 200, 2260, 2260, 200, 2260, 2260, 2260, + 2260, 2260, 200, 200, 2261, 2260, 2262, 2259, + 2258, 2259, 2259, 2259, 2259, 200, 200, 2259, + 2259, 200, 200, 2263, 2263, 2264, 200, 200, + 2265, 200, 200, 200, 200, 200, 200, 2262, + 200, 200, 200, 200, 200, 2260, 2260, 2260, + 2260, 2260, 2259, 2259, 200, 200, 2266, 2266, + 2266, 2266, 2266, 2266, 2266, 200, 200, 200, + 2266, 2266, 2266, 2266, 2266, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, + 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, + 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, + 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, + 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, + 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, + 2268, 2269, 2269, 2270, 2270, 2270, 2270, 2270, + 2270, 2269, 2271, 2272, 2272, 2268, 2272, 2270, + 2270, 2269, 2273, 2274, 2267, 2267, 2275, 2267, + 200, 200, 200, 200, 200, 200, 200, 200, + 2276, 2277, 2278, 2279, 2280, 2281, 2282, 2283, + 2284, 2285, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, + 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, + 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, + 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, + 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, + 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2287, + 2288, 2288, 2289, 2289, 2289, 2289, 200, 200, + 2288, 2288, 2290, 2290, 2289, 2289, 2288, 2291, + 2292, 2293, 2294, 2294, 2295, 2295, 2296, 2296, + 2296, 2294, 2297, 2297, 2297, 2297, 2297, 2297, + 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, + 2298, 2298, 2298, 2298, 2299, 2299, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, + 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, + 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, + 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, + 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, + 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, + 2301, 2301, 2301, 2302, 2302, 2302, 2302, 2302, + 2302, 2302, 2302, 2301, 2301, 2302, 2301, 2303, + 2302, 2304, 2304, 2305, 2300, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2306, 2307, 2308, 2309, 2310, 2311, 2312, 2313, + 2314, 2315, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, + 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, + 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, + 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, + 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, + 2316, 2316, 2316, 2317, 2318, 2317, 2318, 2318, + 2317, 2317, 2317, 2317, 2317, 2317, 2319, 2320, + 200, 200, 200, 200, 200, 200, 200, 200, + 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, + 2329, 2330, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, + 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, + 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, + 2331, 2331, 200, 200, 200, 2332, 2332, 2332, + 2333, 2333, 2332, 2332, 2332, 2332, 2333, 2332, + 2332, 2332, 2332, 2334, 200, 200, 200, 200, + 2335, 2336, 2337, 2338, 2339, 2340, 2341, 2342, + 2343, 2344, 2345, 2345, 2346, 2346, 2346, 2347, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, + 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, + 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, + 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, + 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, + 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, + 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, + 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, + 2350, 2351, 2352, 2353, 2354, 2355, 2356, 2357, + 2358, 2359, 2360, 2360, 2360, 2360, 2360, 2360, + 2360, 2360, 2360, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 2361, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, + 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, + 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, + 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, + 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, + 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, + 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, + 2362, 200, 200, 200, 200, 200, 200, 200, + + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2364, + 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, + 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, + 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, + 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, + 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, + 2364, 2365, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, + 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, + 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, + 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, + 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, + 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, + 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, + 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, + 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, + 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, + 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, + 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, + 2366, 2366, 2366, 2367, 2367, 2367, 2367, 2367, + 2367, 2367, 2367, 2367, 2367, 2367, 2367, 200, + 2368, 2368, 2368, 2368, 2369, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2371, 2371, 2371, 2372, 2372, 2372, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2372, 2370, 2370, 2370, 2371, 2372, + 2371, 2372, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2371, 2372, 2372, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2374, 2375, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 200, 200, 200, 200, 200, 200, 200, + 2377, 2377, 2377, 2377, 2377, 2377, 2377, 2377, + 2377, 2377, 2377, 2377, 2377, 2377, 2377, 2377, + 2377, 2377, 2377, 2377, 2377, 2377, 2377, 2377, + 2377, 2377, 2377, 2377, 2377, 2377, 2377, 200, + 2378, 2379, 2380, 2381, 2382, 2383, 2384, 2385, + 2386, 2387, 200, 200, 200, 200, 2388, 2388, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, + 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, + 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, + 2389, 2389, 2389, 2389, 2389, 2389, 200, 200, + 2390, 2390, 2390, 2390, 2390, 2391, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, + 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, + 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, + 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, + 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, + 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, + 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2394, + 2394, 2395, 2396, 2396, 2397, 2397, 2397, 2397, + 2398, 2398, 2398, 2398, 2394, 2397, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2399, 2400, 2401, 2402, 2403, 2404, 2405, 2406, + 2407, 2408, 200, 2409, 2409, 2409, 2409, 2409, + 2409, 2409, 200, 2392, 2392, 2392, 2392, 2392, + 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, + 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, + 200, 200, 200, 200, 200, 2392, 2392, 2392, + 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, + 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, + 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, + 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, + 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, + 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, + 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, + 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, + 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, + 2410, 2410, 2410, 2410, 2410, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2410, 2411, 2411, 2411, 2411, 2411, 2411, 2411, + 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, + 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, + 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, + 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, + 2411, 2411, 2411, 2411, 2411, 2411, 2411, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 2412, + 2412, 2412, 2412, 2413, 2413, 2413, 2413, 2413, + 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2414, 2415, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 200, 200, 200, 200, 200, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 200, 200, 200, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 200, 200, 200, 200, 200, 200, 200, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 200, 200, 2417, 2418, 2419, 2420, + 2421, 2421, 2421, 2421, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 200, + 200, 1412, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2423, 2423, + 2423, 2423, 2423, 2423, 2423, 2424, 2425, 2426, + 2426, 2426, 2422, 2422, 2422, 2427, 2424, 2424, + 2424, 2424, 2424, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2429, 2429, 2429, 2429, 2429, + 2429, 2429, 2429, 2422, 2422, 2430, 2430, 2430, + 2430, 2430, 2429, 2429, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2430, 2430, 2430, 2430, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2423, 2423, 2423, 2423, 2423, + 2423, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2431, 2431, + 2431, 2431, 2431, 2431, 2431, 2431, 2431, 2431, + 2431, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2432, 2432, 2432, 2022, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2433, 2433, 2433, 2433, 2433, 2433, 2433, 2433, + 2433, 2433, 2433, 2433, 2433, 2433, 2433, 2433, + 2433, 2433, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 200, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2434, 200, 2434, 2434, + 200, 200, 2434, 200, 200, 2434, 2434, 200, + 200, 2434, 2434, 2434, 2434, 200, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2435, 2435, + 2435, 2435, 200, 2435, 200, 2435, 2435, 2435, + 2435, 2436, 2435, 2435, 200, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + + 2435, 2435, 2435, 2435, 2434, 2434, 200, 2434, + 2434, 2434, 2434, 200, 200, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 200, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 200, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2434, 2434, 200, 2434, 2434, 2434, 2434, 200, + 2434, 2434, 2434, 2434, 2434, 200, 2434, 200, + 200, 200, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 200, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 1404, 1404, 200, 200, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2437, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2438, 2435, 2435, 2435, 2435, + 2435, 2435, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2437, 2435, 2435, 2435, 2435, + + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2438, 2435, 2435, + 2435, 2435, 2435, 2435, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2437, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2438, + 2435, 2435, 2435, 2435, 2435, 2435, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2437, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2438, 2435, 2435, 2435, 2435, 2435, 2435, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2437, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2438, 2435, 2435, 2435, 2435, + 2435, 2435, 2439, 2440, 200, 200, 2441, 2442, + 2443, 2444, 2445, 2446, 2447, 2448, 2449, 2450, + 2441, 2442, 2443, 2444, 2445, 2446, 2447, 2448, + 2449, 2450, 2441, 2442, 2443, 2444, 2445, 2446, + 2447, 2448, 2449, 2450, 2441, 2442, 2443, 2444, + 2445, 2446, 2447, 2448, 2449, 2450, 2441, 2442, + 2443, 2444, 2445, 2446, 2447, 2448, 2449, 2450, + + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2451, + 2451, 2451, 2451, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2452, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2452, 2451, 2451, 2453, + 2454, 2453, 2453, 2455, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 2452, 2452, 2452, 2452, 2452, + 200, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 297, 297, 2457, + 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, + 2458, 2458, 2458, 2458, 2458, 2458, 2458, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 2459, 2459, 2459, 2459, 343, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 343, 2459, 2459, 343, 2459, 343, 343, 2459, + 343, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 343, 2459, 2459, 2459, 2459, + 343, 2459, 343, 2459, 343, 343, 343, 343, + 343, 343, 2459, 343, 343, 343, 343, 2459, + 343, 2459, 343, 2459, 343, 2459, 2459, 2459, + 343, 2459, 2459, 343, 2459, 343, 343, 2459, + 343, 2459, 343, 2459, 343, 2459, 343, 2459, + 343, 2459, 2459, 343, 2459, 343, 343, 2459, + 2459, 2459, 2459, 343, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 343, 2459, 2459, 2459, 2459, + 343, 2459, 2459, 2459, 2459, 343, 2459, 343, + 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 343, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 343, 343, 343, 343, + 343, 2459, 2459, 2459, 343, 2459, 2459, 2459, + 2459, 2459, 343, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 2460, 2460, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 200, 200, 200, 200, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 200, + 200, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1483, + 200, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 200, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2461, 2461, 2462, 2463, 2464, 2465, 2466, 2467, + 2468, 2469, 2470, 2471, 2471, 200, 200, 200, + 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, + 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, + 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, + 2472, 2472, 2472, 2472, 2472, 2472, 2472, 200, + 2473, 2474, 2473, 2473, 2473, 2473, 2473, 2473, + 2473, 2473, 2473, 2473, 2473, 2474, 2473, 2474, + 2473, 2473, 2474, 2473, 2473, 2473, 2474, 2473, + 2473, 2473, 2472, 2472, 2472, 2472, 2472, 2475, + 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2477, + 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2477, + 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, + 2476, 2476, 2478, 2478, 200, 200, 200, 200, + 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, + 2476, 2477, 2476, 2477, 2477, 2476, 2476, 2477, + 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, + 2476, 2476, 778, 778, 778, 778, 2479, 2479, + 2472, 2479, 2479, 2479, 2479, 2479, 2479, 2479, + 2479, 2479, 2479, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 2480, 2480, + 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, + 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, + 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, + + 2481, 2482, 2482, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, + 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, + 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, + 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, + 1632, 1632, 2482, 2482, 2482, 2482, 2482, 2482, + 2482, 2482, 2482, 200, 200, 200, 200, 200, + 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, + 1632, 200, 200, 200, 200, 200, 200, 200, + 2482, 2482, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 2483, 2483, 2483, + 1450, 1450, 1450, 1450, 1450, 1450, 1483, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1483, 2483, 2483, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1451, 1451, 1483, 1483, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1449, 1449, 1450, + 1450, 1450, 1450, 1450, 1449, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1483, 1450, 1450, + 1450, 1450, 1450, 1483, 1483, 1483, 1483, 2483, + 2483, 2483, 2483, 2483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 2483, 2483, 2483, 2484, 2484, 2484, 2484, 2484, + + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1483, + 1450, 1483, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1449, 1450, 1449, 1450, 1449, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1449, + 1450, 1449, 1449, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1483, 1450, 1450, 1450, 1450, 1483, 1483, 2483, + + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1451, 1451, + 2485, 2485, 2485, 2485, 1451, 1451, 1451, 1451, + 1451, 1451, 1483, 2483, 2483, 2483, 2483, 2483, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 200, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 200, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1451, 1451, 1451, 1451, + 1451, 1451, 1483, 1450, 1450, 1450, 1450, 1450, + + 2486, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 2486, 1450, 1450, 1450, 2486, 1450, 2486, + 1450, 2486, 1450, 2486, 1450, 1450, 1450, 2486, + 1450, 1450, 1450, 1450, 1450, 1450, 2486, 2486, + 1450, 1450, 1450, 1450, 2486, 1450, 2486, 2486, + 1450, 1450, 1450, 1450, 2486, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1483, 1483, 2483, 2483, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 2487, 2487, + 2487, 2488, 2488, 2488, 1451, 1451, 1451, 1451, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 2483, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 200, 200, 200, + 1483, 1483, 1483, 1483, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 200, 200, 200, 200, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 200, 200, 200, 200, 200, 200, 200, 200, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 200, 200, 200, 200, 200, 200, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 200, 200, 200, 200, 200, 200, 200, 200, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, + 2483, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2483, 2483, 2483, 2483, 2483, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2483, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 2489, 2489, + + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 2260, 2260, - - 1265, 2207, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2260, 2260, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 1639, 1639, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 2489, 2489, + + 1351, 2428, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2489, 2489 }; #define GET_PROP_INDEX(ucs4) \ @@ -5432,19 +5817,19 @@ static const Properties uc_properties[] = { { 24, 10, 0, 0, -1, -16, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 13, 3, 2 }, { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 80, 0, 0, 0, 12, 2 }, { 14, 0, 0, 0, -1, 0, 0, 32, 0, 0, 0, 0, 0, 32, 1, 17, 0, 8, 7, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 80, 1, 77, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 404, 1, 401, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -32, 0, -32, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 121, 0, 121, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 17, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 83, 0, 0, 0, 0, 0, 0, 1, 17, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 407, 0, 0, 0, 0, 0, 0, 1, 17, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -232, 0, -232, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 80, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 162, 1, 162, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 486, 1, 486, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, -121, 0, 0, 0, 0, 0, -121, 1, 17, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -300, 0, -300, 0, -268, 1, 80, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 195, 0, 195, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, @@ -5471,7 +5856,7 @@ static const Properties uc_properties[] = { { 16, 0, 0, 0, -1, 0, 0, 1, 0, -1, 0, 0, 0, 1, 1, 80, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -2, 0, -1, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -79, 0, -79, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 173, 1, 173, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 497, 1, 497, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, -97, 0, 0, 0, 0, 0, -97, 4, 0, 0, 8, 7, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, -56, 0, 0, 0, 0, 0, -56, 4, 0, 0, 8, 7, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 4, 17, 0, 8, 7, 12, 3 }, @@ -5521,6 +5906,7 @@ static const Properties uc_properties[] = { { 15, 0, 0, 0, -1, 0, 0, 0, 0, -71, 0, -71, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -219, 0, -219, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 1, 33, 1, 33, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 35, 1, 35, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 6, 12, 3 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 8, 12, 2 }, @@ -5576,12 +5962,12 @@ static const Properties uc_properties[] = { { 14, 0, 0, 0, -1, 0, 0, 37, 0, 0, 0, 0, 0, 37, 1, 17, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, 64, 0, 0, 0, 0, 0, 64, 1, 17, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, 63, 0, 0, 0, 0, 0, 63, 1, 17, 0, 8, 7, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 165, 1, 165, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 489, 1, 489, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, 32, 0, 0, 0, 0, 0, 32, 1, 0, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, 32, 0, 0, 0, 0, 0, 32, 1, 17, 0, 8, 7, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -38, 0, -38, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -37, 0, -37, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 169, 1, 169, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 493, 1, 493, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -32, 0, -32, 0, 0, 1, 0, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -31, 0, -31, 0, 1, 1, 0, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -32, 0, -32, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, @@ -5656,7 +6042,7 @@ static const Properties uc_properties[] = { { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12, 6 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 11, 12, 6 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -48, 0, -48, 0, 0, 1, 0, 0, 8, 6, 12, 6 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 129, 1, 126, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 453, 1, 450, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 12, 8, 2 }, { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 17, 6 }, { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 6 }, @@ -5732,16 +6118,16 @@ static const Properties uc_properties[] = { { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 4, 4, 4, 21, 8 }, { 0, 17, 220, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 4, 4, 4, 21, 8 }, { 0, 17, 220, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 4, 4, 4, 21, 8 }, - { 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, + { 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, { 25, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10, 8 }, { 25, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, { 25, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 9, 11, 8 }, @@ -5820,6 +6206,8 @@ static const Properties uc_properties[] = { { 18, 13, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 8, 8, 12, 8 }, { 18, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 8 }, { 18, 13, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 8 }, + { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 8 }, + { 0, 17, 220, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 21, 8 }, { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, 4, 4, 21, 8 }, { 0, 17, 220, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, 4, 4, 21, 8 }, { 0, 17, 27, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, 4, 4, 21, 8 }, @@ -5922,6 +6310,7 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 14 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 12, 14 }, { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 9, 14 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 14 }, { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 4, 4, 21, 15 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 4, 4, 21, 15 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 8, 12, 15 }, @@ -5977,6 +6366,7 @@ static const Properties uc_properties[] = { { 0, 17, 9, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 4, 4, 21, 17 }, { 0, 17, 84, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 4, 4, 21, 17 }, { 0, 17, 91, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 204, 4, 4, 4, 21, 17 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 17 }, { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 4, 4, 4, 21, 17 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 17 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 17 }, @@ -6022,6 +6412,7 @@ static const Properties uc_properties[] = { { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 4, 4, 4, 21, 19 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 7, 4, 4, 21, 19 }, { 0, 17, 9, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 4, 4, 21, 19 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 19 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 19 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 19 }, { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 19 }, @@ -6213,7 +6604,89 @@ static const Properties uc_properties[] = { { 5, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 12, 27 }, { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 12, 27 }, { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 12, 27 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 8, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 37, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 39, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 41, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 43, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 45, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 47, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 49, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 51, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 53, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 55, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 57, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 59, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 61, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 63, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 65, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 67, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 69, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 71, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 73, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 75, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 77, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 79, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 81, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 83, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 85, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 87, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 89, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 91, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 93, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 95, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 97, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 99, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 101, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 103, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 105, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 107, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 109, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 111, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 113, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 115, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 117, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 119, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 121, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 123, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 125, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 127, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 129, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 131, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 133, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 135, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 137, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 139, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 141, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 143, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 145, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 147, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 149, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 151, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 153, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 155, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 157, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 159, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 161, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 163, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 165, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 167, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 169, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 171, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 173, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 175, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 177, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 179, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 181, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 183, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 185, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 187, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 189, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 191, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 193, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 195, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 7, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, -8, 0, -8, 0, -8, 17, 0, 0, 8, 6, 12, 28 }, { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 17, 29 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 8, 12, 29 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 12, 29 }, @@ -6308,8 +6781,6 @@ static const Properties uc_properties[] = { { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 8, 30, 48 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 30, 56 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 8, 30, 56 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 4, 4, 30, 56 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 4, 4, 30, 56 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 14, 9, 11, 56 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 14, 9, 11, 56 }, { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 14, 9, 11, 56 }, @@ -6444,7 +6915,7 @@ static const Properties uc_properties[] = { { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 8, 6, 12, 3 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 80, 0, 8, 6, 12, 4 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 80, 0, 8, 6, 12, 5 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 35, 1, 35, 0, 0, 8, 0, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 197, 1, 197, 0, 0, 8, 0, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 3814, 0, 3814, 0, 0, 8, 0, 0, 8, 6, 12, 3 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 80, 0, 8, 6, 12, 3 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 80, 0, 8, 6, 12, 4 }, @@ -6456,11 +6927,11 @@ static const Properties uc_properties[] = { { 0, 17, 220, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 4, 4, 4, 21, 1 }, { 0, 17, 202, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 4, 4, 4, 21, 1 }, { 0, 17, 233, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 4, 4, 4, 21, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 176, 1, 176, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 179, 1, 179, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 182, 1, 182, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 185, 1, 185, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 188, 1, 188, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 500, 1, 500, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 503, 1, 503, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 506, 1, 506, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 509, 1, 509, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 512, 1, 512, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -59, 0, -59, 0, -58, 2, 81, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 8, 6, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, -7615, 0, 0, 0, 0, 0, -7615, 10, 0, 0, 8, 7, 12, 3 }, @@ -6468,10 +6939,10 @@ static const Properties uc_properties[] = { { 15, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 10, 0, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 8, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -8, 0, 0, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 191, 1, 191, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 194, 1, 194, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 198, 1, 198, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 202, 1, 202, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 515, 1, 515, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 518, 1, 518, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 522, 1, 522, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 526, 1, 526, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 74, 0, 74, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 74, 0, 74, 0, 0, 1, 85, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 86, 0, 86, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, @@ -6484,98 +6955,98 @@ static const Properties uc_properties[] = { { 15, 0, 0, 0, -1, 0, 0, 0, 0, 112, 0, 112, 0, 0, 1, 85, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 126, 0, 126, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 126, 0, 126, 0, 0, 1, 85, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 240, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 243, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 246, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 249, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 252, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 255, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 258, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 261, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 240, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 243, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 246, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 249, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 252, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 255, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 258, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 261, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 264, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 267, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 270, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 273, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 276, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 279, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 282, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 285, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 264, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 267, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 270, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 273, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 276, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 279, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 282, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 285, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 288, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 291, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 294, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 297, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 300, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 303, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 306, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 309, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 288, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 291, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 294, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 297, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 300, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 303, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 306, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 309, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 324, 1, 321, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 312, 0, 9, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 330, 1, 327, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 206, 1, 206, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 361, 1, 357, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 564, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 567, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 570, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 573, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 576, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 579, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 582, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 585, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 564, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 567, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 570, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 573, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 576, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 579, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 582, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 585, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 588, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 591, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 594, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 597, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 600, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 603, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 606, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 609, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 588, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 591, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 594, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 597, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 600, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 603, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 606, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 609, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 612, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 615, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 618, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 621, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 624, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 627, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 630, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 633, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 612, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 615, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 618, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 621, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 624, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 627, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 630, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 633, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 648, 1, 645, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 636, 0, 9, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 654, 1, 651, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 530, 1, 530, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 685, 1, 681, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -74, 0, 0, 0, 0, 0, -74, 1, 17, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -74, 0, 0, 0, 0, 0, -74, 1, 85, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -9, 1, 312, 0, 0, 0, -9, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -9, 1, 636, 0, 0, 0, -9, 1, 17, 0, 8, 7, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -7205, 0, -7205, 0, -7173, 1, 85, 0, 8, 6, 12, 4 }, { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 81, 0, 0, 0, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 336, 1, 333, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 315, 0, 9, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 342, 1, 339, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 209, 1, 209, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 369, 1, 365, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 660, 1, 657, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 639, 0, 9, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 666, 1, 663, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 533, 1, 533, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 693, 1, 689, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -86, 0, 0, 0, 0, 0, -86, 1, 17, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -86, 0, 0, 0, 0, 0, -86, 1, 85, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -9, 1, 315, 0, 0, 0, -9, 1, 17, 0, 8, 7, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 212, 1, 212, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 165, 1, 165, 0, 0, 1, 85, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 216, 1, 216, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 219, 1, 219, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -9, 1, 639, 0, 0, 0, -9, 1, 17, 0, 8, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 536, 1, 536, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 489, 1, 489, 0, 0, 1, 85, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 540, 1, 540, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 543, 1, 543, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -100, 0, 0, 0, 0, 0, -100, 1, 17, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -100, 0, 0, 0, 0, 0, -100, 1, 85, 0, 8, 7, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 223, 1, 223, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 169, 1, 169, 0, 0, 1, 85, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 227, 1, 227, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 547, 1, 547, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 493, 1, 493, 0, 0, 1, 85, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 551, 1, 551, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 7, 0, 7, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 230, 1, 230, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 233, 1, 233, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 554, 1, 554, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 557, 1, 557, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -112, 0, 0, 0, 0, 0, -112, 1, 17, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -112, 0, 0, 0, 0, 0, -112, 1, 85, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -7, 0, 0, 0, 0, 0, -7, 1, 17, 0, 8, 7, 12, 4 }, { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 85, 0, 0, 0, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 348, 1, 345, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 318, 0, 9, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 354, 1, 351, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 237, 1, 237, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 377, 1, 373, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 672, 1, 669, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 642, 0, 9, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 678, 1, 675, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 561, 1, 561, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 701, 1, 697, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -128, 0, 0, 0, 0, 0, -128, 1, 17, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -128, 0, 0, 0, 0, 0, -128, 1, 85, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -126, 0, 0, 0, 0, 0, -126, 1, 17, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -126, 0, 0, 0, 0, 0, -126, 1, 85, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -9, 1, 318, 0, 0, 0, -9, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -9, 1, 642, 0, 0, 0, -9, 1, 17, 0, 8, 7, 12, 4 }, { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 85, 0, 0, 0, 18, 4 }, { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 85, 0, 0, 5, 17, 2 }, { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 80, 0, 0, 5, 17, 2 }, @@ -6661,6 +7132,7 @@ static const Properties uc_properties[] = { { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 9, 2 }, { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 10, 2 }, { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 9, 2 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 10, 2 }, { 13, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0 }, { 2, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 4, 4, 21, 1 }, { 2, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 4, 4, 21, 1 }, @@ -6674,8 +7146,8 @@ static const Properties uc_properties[] = { { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 80, 0, 8, 6, 12, 2 }, { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 80, 0, 0, 0, 9, 2 }, { 14, 0, 0, 0, -1, 0, 0, -7517, 0, 0, 0, 0, 0, -7517, 1, 85, 0, 8, 7, 12, 4 }, - { 14, 0, 0, 0, -1, 0, 1, 37, 0, 0, 0, 0, 1, 37, 1, 85, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 39, 0, 0, 0, 0, 1, 39, 1, 85, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 199, 0, 0, 0, 0, 1, 199, 1, 85, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 201, 0, 0, 0, 0, 1, 201, 1, 85, 0, 8, 7, 12, 3 }, { 29, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12, 2 }, { 14, 0, 0, 0, -1, 0, 0, 28, 0, 0, 0, 0, 0, 28, 1, 0, 0, 8, 7, 12, 3 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 80, 0, 8, 8, 12, 2 }, @@ -6696,6 +7168,7 @@ static const Properties uc_properties[] = { { 4, 0, 0, 0, -1, 0, 0, 0, 0, -16, 0, -16, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 8, 12, 3 }, { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 8, 8, 12, 3 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 2 }, { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 0, 0, 0, 12, 2 }, { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 0, 0, 0, 12, 2 }, { 26, 10, 0, 0, -1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12, 2 }, @@ -6713,6 +7186,7 @@ static const Properties uc_properties[] = { { 26, 10, 0, 0, -1, 2108, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12, 2 }, { 26, 10, 0, 0, -1, 2106, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12, 2 }, { 26, 10, 0, 0, -1, -138, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 15, 2 }, { 26, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 12, 2 }, { 26, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 12, 2 }, { 26, 10, 0, 0, -1, -8, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 12, 2 }, @@ -6803,19 +7277,19 @@ static const Properties uc_properties[] = { { 26, 10, 0, 0, -1, -2108, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 12, 2 }, { 14, 0, 0, 0, -1, 0, 0, 48, 0, 0, 0, 0, 0, 48, 8, 0, 0, 8, 7, 12, 57 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -48, 0, -48, 0, 0, 8, 0, 0, 8, 6, 12, 57 }, - { 14, 0, 0, 0, -1, 0, 1, 41, 0, 0, 0, 0, 1, 41, 9, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 203, 0, 0, 0, 0, 1, 203, 9, 0, 0, 8, 7, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, -3814, 0, 0, 0, 0, 0, -3814, 9, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 43, 0, 0, 0, 0, 1, 43, 9, 0, 0, 8, 7, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 45, 1, 45, 0, 0, 9, 0, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 47, 1, 47, 0, 0, 9, 0, 0, 8, 6, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 49, 0, 0, 0, 0, 1, 49, 10, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 51, 0, 0, 0, 0, 1, 51, 10, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 53, 0, 0, 0, 0, 1, 53, 10, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 55, 0, 0, 0, 0, 1, 55, 11, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 205, 0, 0, 0, 0, 1, 205, 9, 0, 0, 8, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 207, 1, 207, 0, 0, 9, 0, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 209, 1, 209, 0, 0, 9, 0, 0, 8, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 211, 0, 0, 0, 0, 1, 211, 10, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 213, 0, 0, 0, 0, 1, 213, 10, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 215, 0, 0, 0, 0, 1, 215, 10, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 217, 0, 0, 0, 0, 1, 217, 11, 0, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 8, 6, 12, 3 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 80, 0, 8, 6, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 57, 0, 0, 0, 0, 1, 57, 11, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 59, 0, 0, 0, 0, 1, 59, 11, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 219, 0, 0, 0, 0, 1, 219, 11, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 221, 0, 0, 0, 0, 1, 221, 11, 0, 0, 8, 7, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 8, 0, 0, 8, 7, 12, 46 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 8, 0, 0, 8, 6, 12, 46 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 8, 6, 12, 46 }, @@ -6921,6 +7395,7 @@ static const Properties uc_properties[] = { { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 8, 14, 37 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 8, 14, 37 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 8, 14, 37 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 8, 14, 37 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 8, 14, 38 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 8, 5, 38 }, { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 14, 38 }, @@ -6950,6 +7425,7 @@ static const Properties uc_properties[] = { { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, 4, 4, 21, 5 }, { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 8, 8, 12, 5 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 80, 0, 8, 6, 12, 5 }, + { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 21, 5 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 8, 12, 84 }, { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 8, 12, 84 }, { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 4, 4, 4, 21, 84 }, @@ -6959,10 +7435,11 @@ static const Properties uc_properties[] = { { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 12, 2 }, { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 8, 8, 12, 2 }, { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 1, 61, 0, 0, 0, 0, 1, 61, 10, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 223, 0, 0, 0, 0, 1, 223, 10, 0, 0, 8, 7, 12, 3 }, { 28, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 1, 63, 0, 0, 0, 0, 1, 63, 12, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 225, 0, 0, 0, 0, 1, 225, 12, 0, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 8, 6, 12, 3 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 12, 0, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 12, 0, 0, 8, 6, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 13, 0, 0, 8, 7, 12, 3 }, @@ -6970,12 +7447,16 @@ static const Properties uc_properties[] = { { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 6, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 16, 0, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 16, 0, 0, 8, 6, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 65, 0, 0, 0, 0, 1, 65, 13, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 67, 0, 0, 0, 0, 1, 67, 16, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 69, 0, 0, 0, 0, 1, 69, 16, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 71, 0, 0, 0, 0, 1, 71, 16, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 73, 0, 0, 0, 0, 1, 73, 16, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 75, 0, 0, 0, 0, 1, 75, 16, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 227, 0, 0, 0, 0, 1, 227, 13, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 229, 0, 0, 0, 0, 1, 229, 16, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 231, 0, 0, 0, 0, 1, 231, 16, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 233, 0, 0, 0, 0, 1, 233, 16, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 235, 0, 0, 0, 0, 1, 235, 16, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 237, 0, 0, 0, 0, 1, 237, 16, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 239, 0, 0, 0, 0, 1, 239, 17, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 0, 928, 0, 0, 0, 0, 0, 928, 17, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 17, 0, 0, 8, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 17, 0, 0, 8, 6, 12, 3 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 3 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 80, 0, 8, 6, 12, 3 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 8, 8, 12, 3 }, @@ -7006,6 +7487,8 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 14, 9, 11, 71 }, { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 4, 4, 4, 21, 11 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 12, 11 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 18, 11 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 11 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 14, 9, 11, 72 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 14, 9, 11, 72 }, { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 14, 9, 11, 72 }, @@ -7089,9 +7572,91 @@ static const Properties uc_properties[] = { { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 8, 8, 12, 86 }, { 0, 17, 9, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, 4, 4, 21, 86 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 8, 8, 12, 27 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, -928, 0, -928, 0, 0, 16, 0, 0, 8, 6, 12, 3 }, { 28, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 2 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 241, 1, 241, 1, 241, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 243, 1, 243, 1, 243, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 245, 1, 245, 1, 245, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 247, 1, 247, 1, 247, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 249, 1, 249, 1, 249, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 251, 1, 251, 1, 251, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 253, 1, 253, 1, 253, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 255, 1, 255, 1, 255, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 257, 1, 257, 1, 257, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 259, 1, 259, 1, 259, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 261, 1, 261, 1, 261, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 263, 1, 263, 1, 263, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 265, 1, 265, 1, 265, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 267, 1, 267, 1, 267, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 269, 1, 269, 1, 269, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 271, 1, 271, 1, 271, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 273, 1, 273, 1, 273, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 275, 1, 275, 1, 275, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 277, 1, 277, 1, 277, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 279, 1, 279, 1, 279, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 281, 1, 281, 1, 281, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 283, 1, 283, 1, 283, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 285, 1, 285, 1, 285, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 287, 1, 287, 1, 287, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 289, 1, 289, 1, 289, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 291, 1, 291, 1, 291, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 293, 1, 293, 1, 293, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 295, 1, 295, 1, 295, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 297, 1, 297, 1, 297, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 299, 1, 299, 1, 299, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 301, 1, 301, 1, 301, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 303, 1, 303, 1, 303, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 305, 1, 305, 1, 305, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 307, 1, 307, 1, 307, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 309, 1, 309, 1, 309, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 311, 1, 311, 1, 311, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 313, 1, 313, 1, 313, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 315, 1, 315, 1, 315, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 317, 1, 317, 1, 317, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 319, 1, 319, 1, 319, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 321, 1, 321, 1, 321, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 323, 1, 323, 1, 323, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 325, 1, 325, 1, 325, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 327, 1, 327, 1, 327, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 329, 1, 329, 1, 329, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 331, 1, 331, 1, 331, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 333, 1, 333, 1, 333, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 335, 1, 335, 1, 335, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 337, 1, 337, 1, 337, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 339, 1, 339, 1, 339, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 341, 1, 341, 1, 341, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 343, 1, 343, 1, 343, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 345, 1, 345, 1, 345, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 347, 1, 347, 1, 347, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 349, 1, 349, 1, 349, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 351, 1, 351, 1, 351, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 353, 1, 353, 1, 353, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 355, 1, 355, 1, 355, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 357, 1, 357, 1, 357, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 359, 1, 359, 1, 359, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 361, 1, 361, 1, 361, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 363, 1, 363, 1, 363, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 365, 1, 365, 1, 365, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 367, 1, 367, 1, 367, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 369, 1, 369, 1, 369, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 371, 1, 371, 1, 371, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 373, 1, 373, 1, 373, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 375, 1, 375, 1, 375, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 377, 1, 377, 1, 377, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 379, 1, 379, 1, 379, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 381, 1, 381, 1, 381, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 383, 1, 383, 1, 383, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 385, 1, 385, 1, 385, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 387, 1, 387, 1, 387, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 389, 1, 389, 1, 389, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 391, 1, 391, 1, 391, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 393, 1, 393, 1, 393, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 395, 1, 395, 1, 395, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 397, 1, 397, 1, 397, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 399, 1, 399, 1, 399, 17, 0, 0, 8, 6, 12, 28 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 8, 12, 86 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 4, 4, 21, 86 }, { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 4, 4, 4, 21, 86 }, @@ -7116,17 +7681,17 @@ static const Properties uc_properties[] = { { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 85, 0, 0, 8, 14, 37 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 85, 0, 0, 8, 14, 37 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 85, 0, 0, 8, 14, 37 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 89, 1, 86, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 95, 1, 92, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 101, 1, 98, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 108, 1, 104, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 116, 1, 112, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 123, 1, 120, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 135, 1, 132, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 141, 1, 138, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 147, 1, 144, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 153, 1, 150, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 159, 1, 156, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 413, 1, 410, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 419, 1, 416, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 425, 1, 422, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 432, 1, 428, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 440, 1, 436, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 447, 1, 444, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 459, 1, 456, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 465, 1, 462, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 471, 1, 468, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 477, 1, 474, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 483, 1, 480, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 85, 0, 7, 8, 13, 7 }, { 0, 17, 26, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 4, 4, 21, 7 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 85, 0, 7, 8, 13, 7 }, @@ -7254,6 +7819,8 @@ static const Properties uc_properties[] = { { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 118 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 117 }, { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 117 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 128 }, + { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 128 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 8, 8, 12, 64 }, { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 12, 64 }, { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 12, 64 }, @@ -7262,6 +7829,7 @@ static const Properties uc_properties[] = { { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 12, 76 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 8, 8, 12, 98 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 8, 8, 12, 97 }, + { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 97 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 8, 8, 12, 61 }, { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 4, 4, 4, 21, 61 }, { 0, 17, 220, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 4, 4, 4, 21, 61 }, @@ -7305,6 +7873,9 @@ static const Properties uc_properties[] = { { 5, 1, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 121 }, { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 121 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 8, 12, 91 }, + { 14, 1, 0, 0, -1, 0, 0, 64, 0, 0, 0, 0, 0, 64, 17, 0, 0, 8, 7, 12, 130 }, + { 15, 1, 0, 0, -1, 0, 0, 0, 0, -64, 0, -64, 0, 0, 17, 0, 0, 8, 6, 12, 130 }, + { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 130 }, { 5, 5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 12, 8 }, { 5, 5, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 12, 8 }, { 5, 5, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 12, 8 }, @@ -7392,6 +7963,9 @@ static const Properties uc_properties[] = { { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 17, 100 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 12, 100 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 17, 100 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 100 }, + { 0, 17, 7, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 21, 100 }, + { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 21, 100 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 12, 12, 100 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 14, 9, 11, 100 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 14, 9, 11, 100 }, @@ -7404,6 +7978,10 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 14, 9, 11, 100 }, { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 14, 9, 11, 100 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 100 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 18, 100 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 100 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 17, 100 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 12, 17, 100 }, { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 20 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 109 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 7, 4, 4, 21, 109 }, @@ -7412,6 +7990,8 @@ static const Properties uc_properties[] = { { 0, 17, 7, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 4, 4, 4, 21, 109 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 12, 17, 109 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 109 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 129 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 12, 17, 129 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 123 }, { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 4, 4, 4, 21, 123 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 7, 4, 4, 21, 123 }, @@ -7427,6 +8007,7 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 14, 9, 11, 123 }, { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 14, 9, 11, 123 }, { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 14, 9, 11, 123 }, + { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 21, 107 }, { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 4, 4, 4, 21, 107 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 7, 4, 4, 21, 107 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 107 }, @@ -7434,6 +8015,7 @@ static const Properties uc_properties[] = { { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 204, 4, 4, 4, 21, 107 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 7, 4, 4, 21, 107 }, { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 7, 4, 4, 21, 107 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 107 }, { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 4, 4, 4, 21, 107 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 124 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 204, 4, 4, 4, 21, 124 }, @@ -7465,6 +8047,9 @@ static const Properties uc_properties[] = { { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 12, 17, 122 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 6, 122 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 122 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 12, 17, 122 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 122 }, + { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 21, 122 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 114 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 7, 4, 4, 21, 114 }, { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 4, 4, 4, 21, 114 }, @@ -7496,6 +8081,23 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 14, 9, 11, 102 }, { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 14, 9, 11, 102 }, { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 14, 9, 11, 102 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 8, 30, 126 }, + { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 30, 126 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 7, 4, 4, 30, 126 }, + { 0, 17, 9, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 30, 126 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 30, 126 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 12, 17, 126 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 30, 126 }, { 14, 0, 0, 0, -1, 0, 0, 32, 0, 0, 0, 0, 0, 32, 16, 0, 0, 8, 7, 12, 125 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -32, 0, -32, 0, 0, 16, 0, 0, 8, 6, 12, 125 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 14, 9, 11, 125 }, @@ -7513,6 +8115,7 @@ static const Properties uc_properties[] = { { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 119 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 8, 8, 12, 63 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 63 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 63 }, { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 8, 8, 12, 63 }, { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 63 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 17, 63 }, @@ -7520,6 +8123,9 @@ static const Properties uc_properties[] = { { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 8, 12, 81 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 8, 0, 81 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 8, 1, 81 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 127 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 0, 127 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 1, 127 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 8, 8, 12, 84 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 115 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 14, 9, 11, 115 }, @@ -7575,6 +8181,7 @@ static const Properties uc_properties[] = { { 10, 18, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 3, 4, 4, 21, 2 }, { 0, 17, 220, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 4, 4, 4, 21, 1 }, { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 4, 4, 4, 21, 1 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 2 }, { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 4, 4, 4, 21, 4 }, { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 12, 2 }, { 14, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 80, 0, 8, 7, 12, 2 }, @@ -7594,6 +8201,11 @@ static const Properties uc_properties[] = { { 3, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 80, 0, 14, 9, 11, 2 }, { 3, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 80, 0, 14, 9, 11, 2 }, { 3, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 80, 0, 14, 9, 11, 2 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 131 }, + { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 21, 131 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 17, 131 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 12, 17, 131 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 131 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 113 }, { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 113 }, { 0, 17, 220, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 4, 4, 4, 21, 113 }, @@ -7621,6 +8233,8 @@ static const Properties uc_properties[] = { { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 5, 5, 0, 28, 2 }, { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 80, 0, 0, 0, 14, 34 }, { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 80, 0, 0, 0, 14, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 14, 2 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 2 }, { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 12, 2 }, { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 14, 2 }, { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 13, 3, 2 }, @@ -7635,14 +8249,12 @@ static const Properties uc_properties[] = { Q_DECL_CONST_FUNCTION static inline const Properties *qGetProp(uint ucs4) Q_DECL_NOTHROW { - const int index = GET_PROP_INDEX(ucs4); - return uc_properties + index; + return uc_properties + GET_PROP_INDEX(ucs4); } Q_DECL_CONST_FUNCTION static inline const Properties *qGetProp(ushort ucs2) Q_DECL_NOTHROW { - const int index = GET_PROP_INDEX_UCS2(ucs2); - return uc_properties + index; + return uc_properties + GET_PROP_INDEX_UCS2(ucs2); } Q_DECL_CONST_FUNCTION Q_CORE_EXPORT const Properties * QT_FASTCALL properties(uint ucs4) Q_DECL_NOTHROW @@ -7657,26 +8269,26 @@ Q_DECL_CONST_FUNCTION Q_CORE_EXPORT const Properties * QT_FASTCALL properties(us Q_CORE_EXPORT GraphemeBreakClass QT_FASTCALL graphemeBreakClass(uint ucs4) Q_DECL_NOTHROW { - return (GraphemeBreakClass)qGetProp(ucs4)->graphemeBreakClass; + return static_cast<GraphemeBreakClass>(qGetProp(ucs4)->graphemeBreakClass); } Q_CORE_EXPORT WordBreakClass QT_FASTCALL wordBreakClass(uint ucs4) Q_DECL_NOTHROW { - return (WordBreakClass)qGetProp(ucs4)->wordBreakClass; + return static_cast<WordBreakClass>(qGetProp(ucs4)->wordBreakClass); } Q_CORE_EXPORT SentenceBreakClass QT_FASTCALL sentenceBreakClass(uint ucs4) Q_DECL_NOTHROW { - return (SentenceBreakClass)qGetProp(ucs4)->sentenceBreakClass; + return static_cast<SentenceBreakClass>(qGetProp(ucs4)->sentenceBreakClass); } Q_CORE_EXPORT LineBreakClass QT_FASTCALL lineBreakClass(uint ucs4) Q_DECL_NOTHROW { - return (LineBreakClass)qGetProp(ucs4)->lineBreakClass; + return static_cast<LineBreakClass>(qGetProp(ucs4)->lineBreakClass); } -static const ushort specialCaseMap[] = { +static const unsigned short specialCaseMap[] = { 0x0, // placeholder 0x1, 0x2c65, 0x1, 0x2c66, @@ -7694,7 +8306,88 @@ static const ushort specialCaseMap[] = { 0x1, 0x2c6e, 0x1, 0x2c64, 0x1, 0xa7b1, + 0x1, 0xa7b2, 0x1, 0xa7b0, + 0x1, 0xab70, + 0x1, 0xab71, + 0x1, 0xab72, + 0x1, 0xab73, + 0x1, 0xab74, + 0x1, 0xab75, + 0x1, 0xab76, + 0x1, 0xab77, + 0x1, 0xab78, + 0x1, 0xab79, + 0x1, 0xab7a, + 0x1, 0xab7b, + 0x1, 0xab7c, + 0x1, 0xab7d, + 0x1, 0xab7e, + 0x1, 0xab7f, + 0x1, 0xab80, + 0x1, 0xab81, + 0x1, 0xab82, + 0x1, 0xab83, + 0x1, 0xab84, + 0x1, 0xab85, + 0x1, 0xab86, + 0x1, 0xab87, + 0x1, 0xab88, + 0x1, 0xab89, + 0x1, 0xab8a, + 0x1, 0xab8b, + 0x1, 0xab8c, + 0x1, 0xab8d, + 0x1, 0xab8e, + 0x1, 0xab8f, + 0x1, 0xab90, + 0x1, 0xab91, + 0x1, 0xab92, + 0x1, 0xab93, + 0x1, 0xab94, + 0x1, 0xab95, + 0x1, 0xab96, + 0x1, 0xab97, + 0x1, 0xab98, + 0x1, 0xab99, + 0x1, 0xab9a, + 0x1, 0xab9b, + 0x1, 0xab9c, + 0x1, 0xab9d, + 0x1, 0xab9e, + 0x1, 0xab9f, + 0x1, 0xaba0, + 0x1, 0xaba1, + 0x1, 0xaba2, + 0x1, 0xaba3, + 0x1, 0xaba4, + 0x1, 0xaba5, + 0x1, 0xaba6, + 0x1, 0xaba7, + 0x1, 0xaba8, + 0x1, 0xaba9, + 0x1, 0xabaa, + 0x1, 0xabab, + 0x1, 0xabac, + 0x1, 0xabad, + 0x1, 0xabae, + 0x1, 0xabaf, + 0x1, 0xabb0, + 0x1, 0xabb1, + 0x1, 0xabb2, + 0x1, 0xabb3, + 0x1, 0xabb4, + 0x1, 0xabb5, + 0x1, 0xabb6, + 0x1, 0xabb7, + 0x1, 0xabb8, + 0x1, 0xabb9, + 0x1, 0xabba, + 0x1, 0xabbb, + 0x1, 0xabbc, + 0x1, 0xabbd, + 0x1, 0xabbe, + 0x1, 0xabbf, 0x1, 0xa77d, 0x1, 0x6b, 0x1, 0xe5, @@ -7716,6 +8409,87 @@ static const ushort specialCaseMap[] = { 0x1, 0x26c, 0x1, 0x29e, 0x1, 0x287, + 0x1, 0x29d, + 0x1, 0x13a0, + 0x1, 0x13a1, + 0x1, 0x13a2, + 0x1, 0x13a3, + 0x1, 0x13a4, + 0x1, 0x13a5, + 0x1, 0x13a6, + 0x1, 0x13a7, + 0x1, 0x13a8, + 0x1, 0x13a9, + 0x1, 0x13aa, + 0x1, 0x13ab, + 0x1, 0x13ac, + 0x1, 0x13ad, + 0x1, 0x13ae, + 0x1, 0x13af, + 0x1, 0x13b0, + 0x1, 0x13b1, + 0x1, 0x13b2, + 0x1, 0x13b3, + 0x1, 0x13b4, + 0x1, 0x13b5, + 0x1, 0x13b6, + 0x1, 0x13b7, + 0x1, 0x13b8, + 0x1, 0x13b9, + 0x1, 0x13ba, + 0x1, 0x13bb, + 0x1, 0x13bc, + 0x1, 0x13bd, + 0x1, 0x13be, + 0x1, 0x13bf, + 0x1, 0x13c0, + 0x1, 0x13c1, + 0x1, 0x13c2, + 0x1, 0x13c3, + 0x1, 0x13c4, + 0x1, 0x13c5, + 0x1, 0x13c6, + 0x1, 0x13c7, + 0x1, 0x13c8, + 0x1, 0x13c9, + 0x1, 0x13ca, + 0x1, 0x13cb, + 0x1, 0x13cc, + 0x1, 0x13cd, + 0x1, 0x13ce, + 0x1, 0x13cf, + 0x1, 0x13d0, + 0x1, 0x13d1, + 0x1, 0x13d2, + 0x1, 0x13d3, + 0x1, 0x13d4, + 0x1, 0x13d5, + 0x1, 0x13d6, + 0x1, 0x13d7, + 0x1, 0x13d8, + 0x1, 0x13d9, + 0x1, 0x13da, + 0x1, 0x13db, + 0x1, 0x13dc, + 0x1, 0x13dd, + 0x1, 0x13de, + 0x1, 0x13df, + 0x1, 0x13e0, + 0x1, 0x13e1, + 0x1, 0x13e2, + 0x1, 0x13e3, + 0x1, 0x13e4, + 0x1, 0x13e5, + 0x1, 0x13e6, + 0x1, 0x13e7, + 0x1, 0x13e8, + 0x1, 0x13e9, + 0x1, 0x13ea, + 0x1, 0x13eb, + 0x1, 0x13ec, + 0x1, 0x13ed, + 0x1, 0x13ee, + 0x1, 0x13ef, 0x2, 0x53, 0x73, 0x2, 0x53, 0x53, 0x2, 0x69, 0x307, @@ -9631,8 +10405,8 @@ static const unsigned short uc_decomposition_trie[] = { #define GET_DECOMPOSITION_INDEX(ucs4) \ (ucs4 < 0x3400 \ ? (uc_decomposition_trie[uc_decomposition_trie[ucs4>>4] + (ucs4 & 0xf)]) \ - : (ucs4 < 0x30000\ - ? uc_decomposition_trie[uc_decomposition_trie[((ucs4 - 0x3400)>>8) + 0x340] + (ucs4 & 0xff)]\ + : (ucs4 < 0x30000 \ + ? uc_decomposition_trie[uc_decomposition_trie[((ucs4 - 0x3400)>>8) + 0x340] + (ucs4 & 0xff)] \ : 0xffff)) static const unsigned short uc_decomposition_map[] = { @@ -11832,8 +12606,8 @@ static const unsigned short uc_ligature_trie[] = { #define GET_LIGATURE_INDEX(ucs4) \ (ucs4 < 0x3100 \ ? (uc_ligature_trie[uc_ligature_trie[ucs4>>5] + (ucs4 & 0x1f)]) \ - : (ucs4 < 0x12000\ - ? uc_ligature_trie[uc_ligature_trie[((ucs4 - 0x3100)>>8) + 0x188] + (ucs4 & 0xff)]\ + : (ucs4 < 0x12000 \ + ? uc_ligature_trie[uc_ligature_trie[((ucs4 - 0x3100)>>8) + 0x188] + (ucs4 & 0xff)] \ : 0xffff)) static const unsigned short uc_ligature_map[] = { @@ -12098,7 +12872,7 @@ static const NormalizationCorrection uc_normalization_corrections[] = { { 0x2f874, 0x5f33, 7 }, { 0x2f91f, 0x43ab, 7 }, { 0x2f95f, 0x7aae, 7 }, - { 0x2f9bf, 0x4d57, 7 }, + { 0x2f9bf, 0x4d57, 7 } }; enum { NumNormalizationCorrections = 6 }; diff --git a/src/corelib/tools/qunicodetables_p.h b/src/corelib/tools/qunicodetables_p.h index 43c1f4e197..6a2797be0e 100644 --- a/src/corelib/tools/qunicodetables_p.h +++ b/src/corelib/tools/qunicodetables_p.h @@ -31,7 +31,7 @@ ** ****************************************************************************/ -/* This file is autogenerated from the Unicode 7.0 database. Do not edit */ +/* This file is autogenerated from the Unicode 8.0 database. Do not edit */ // // W A R N I N G @@ -51,7 +51,7 @@ QT_BEGIN_NAMESPACE -#define UNICODE_DATA_VERSION QChar::Unicode_7_0 +#define UNICODE_DATA_VERSION QChar::Unicode_8_0 namespace QUnicodeTables { @@ -82,6 +82,38 @@ struct Properties { Q_CORE_EXPORT const Properties * QT_FASTCALL properties(uint ucs4) Q_DECL_NOTHROW; Q_CORE_EXPORT const Properties * QT_FASTCALL properties(ushort ucs2) Q_DECL_NOTHROW; +struct LowercaseTraits +{ + static inline signed short caseDiff(const Properties *prop) + { return prop->lowerCaseDiff; } + static inline bool caseSpecial(const Properties *prop) + { return prop->lowerCaseSpecial; } +}; + +struct UppercaseTraits +{ + static inline signed short caseDiff(const Properties *prop) + { return prop->upperCaseDiff; } + static inline bool caseSpecial(const Properties *prop) + { return prop->upperCaseSpecial; } +}; + +struct TitlecaseTraits +{ + static inline signed short caseDiff(const Properties *prop) + { return prop->titleCaseDiff; } + static inline bool caseSpecial(const Properties *prop) + { return prop->titleCaseSpecial; } +}; + +struct CasefoldTraits +{ + static inline signed short caseDiff(const Properties *prop) + { return prop->caseFoldDiff; } + static inline bool caseSpecial(const Properties *prop) + { return prop->caseFoldSpecial; } +}; + enum GraphemeBreakClass { GraphemeBreak_Other, GraphemeBreak_CR, diff --git a/src/corelib/tools/qunicodetools.cpp b/src/corelib/tools/qunicodetools.cpp index 56576c69f1..0df6b01b13 100644 --- a/src/corelib/tools/qunicodetools.cpp +++ b/src/corelib/tools/qunicodetools.cpp @@ -49,7 +49,7 @@ namespace QUnicodeTools { // ----------------------------------------------------------------------------------------------------- // // The text boundaries determination algorithm. -// See http://www.unicode.org/reports/tr29/tr29-25.html +// See http://www.unicode.org/reports/tr29/tr29-27.html // // ----------------------------------------------------------------------------------------------------- @@ -244,8 +244,9 @@ namespace SB { enum State { Initial, + Lower, Upper, - UpATerm, + LUATerm, ATerm, ATermC, ACS, @@ -260,10 +261,11 @@ enum State { static const uchar breakTable[BAfter + 1][QUnicodeTables::SentenceBreak_Close + 1] = { // Other CR LF Sep Extend Sp Lower Upper OLetter Numeric ATerm SContinue STerm Close - { Initial, BAfterC, BAfter , BAfter , Initial, Initial, Initial, Upper , Initial, Initial, ATerm , Initial, STerm , Initial }, // Initial - { Initial, BAfterC, BAfter , BAfter , Upper , Initial, Initial, Upper , Initial, Initial, UpATerm, STerm , STerm , Initial }, // Upper + { Initial, BAfterC, BAfter , BAfter , Initial, Initial, Lower , Upper , Initial, Initial, ATerm , Initial, STerm , Initial }, // Initial + { Initial, BAfterC, BAfter , BAfter , Lower , Initial, Initial, Initial, Initial, Initial, LUATerm, Initial, STerm , Initial }, // Lower + { Initial, BAfterC, BAfter , BAfter , Upper , Initial, Initial, Upper , Initial, Initial, LUATerm, STerm , STerm , Initial }, // Upper - { Lookup , BAfterC, BAfter , BAfter , UpATerm, ACS , Initial, Upper , Break , Initial, ATerm , STerm , STerm , ATermC }, // UpATerm + { Lookup , BAfterC, BAfter , BAfter , LUATerm, ACS , Initial, Upper , Break , Initial, ATerm , STerm , STerm , ATermC }, // LUATerm { Lookup , BAfterC, BAfter , BAfter , ATerm , ACS , Initial, Break , Break , Initial, ATerm , STerm , STerm , ATermC }, // ATerm { Lookup , BAfterC, BAfter , BAfter , ATermC , ACS , Initial, Break , Break , Lookup , ATerm , STerm , STerm , ATermC }, // ATermC { Lookup , BAfterC, BAfter , BAfter , ACS , ACS , Initial, Break , Break , Lookup , ATerm , STerm , STerm , Lookup }, // ACS @@ -341,7 +343,7 @@ static void getSentenceBreaks(const ushort *string, quint32 len, QCharAttributes // ----------------------------------------------------------------------------------------------------- // // The line breaking algorithm. -// See http://www.unicode.org/reports/tr14/tr14-33.html +// See http://www.unicode.org/reports/tr14/tr14-35.html // // ----------------------------------------------------------------------------------------------------- @@ -408,26 +410,29 @@ inline Class toClass(QUnicodeTables::LineBreakClass lbc, QChar::Category categor /* In order to support the tailored implementation of LB25 properly the following changes were made in the pair table to allow breaks where the numeric expression doesn't match the template (i.e. [^NU](IS|SY)NU): - CL->PO from IB to DB - CP->PO from IB to DB - CL->PR from IB to DB - CP->PR from IB to DB - PO->OP from IB to DB - PR->OP from IB to DB - IS->NU from IB to DB - SY->NU from IB to DB + (CL)(PO) from IB to DB + (CP)(PO) from IB to DB + (CL)(PR) from IB to DB + (CP)(PR) from IB to DB + (PO)(OP) from IB to DB + (PR)(OP) from IB to DB + (IS)(NU) from IB to DB + (SY)(NU) from IB to DB */ -// The following line break classes are not treated by the pair table -// and must be resolved outside: -// AI, BK, CB, CJ, CR, LF, NL, SA, SG, SP, XX +/* In order to implementat LB21a properly a special rule HH has been introduced and + the following changes were made in the pair table to disallow breaks after Hebrew + Hyphen: + (HL)(HY|BA) from IB to CI + (HY|BA)(!CB) from DB to HH +*/ enum Action { ProhibitedBreak, PB = ProhibitedBreak, DirectBreak, DB = DirectBreak, IndirectBreak, IB = IndirectBreak, CombiningIndirectBreak, CI = CombiningIndirectBreak, - CombiningProhibitedBreak, CP = CombiningProhibitedBreak + CombiningProhibitedBreak, CP = CombiningProhibitedBreak, + ProhibitedBreakAfterHebrewPlusHyphen, HH = ProhibitedBreakAfterHebrewPlusHyphen }; static const uchar breakTable[QUnicodeTables::LineBreak_CB + 1][QUnicodeTables::LineBreak_CB + 1] = { @@ -438,18 +443,18 @@ static const uchar breakTable[QUnicodeTables::LineBreak_CB + 1][QUnicodeTables:: /* QU */ { PB, PB, PB, IB, IB, IB, PB, PB, PB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, PB, CI, PB, IB, IB, IB, IB, IB, IB, IB }, /* GL */ { IB, PB, PB, IB, IB, IB, PB, PB, PB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, PB, CI, PB, IB, IB, IB, IB, IB, IB, IB }, /* NS */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, DB, DB, DB, DB, DB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, -/* EX */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, DB, DB, DB, DB, DB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, -/* SY */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, DB, DB, DB, DB, DB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, +/* EX */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, +/* SY */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, DB, DB, IB, DB, DB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, /* IS */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, DB, IB, IB, DB, DB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, /* PR */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, IB, IB, IB, IB, DB, IB, IB, DB, DB, PB, CI, PB, IB, IB, IB, IB, IB, DB, DB }, /* PO */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, IB, IB, IB, DB, DB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, /* NU */ { IB, PB, PB, IB, IB, IB, PB, PB, PB, IB, IB, IB, IB, IB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, /* AL */ { IB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, IB, IB, IB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, -/* HL */ { IB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, IB, IB, IB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, +/* HL */ { IB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, IB, IB, IB, DB, IB, CI, CI, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, /* ID */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, IB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, /* IN */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, -/* HY */ { DB, PB, PB, IB, DB, IB, PB, PB, PB, DB, DB, IB, DB, DB, DB, DB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, -/* BA */ { DB, PB, PB, IB, DB, IB, PB, PB, PB, DB, DB, DB, DB, DB, DB, DB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, +/* HY */ { HH, PB, PB, IB, HH, IB, PB, PB, PB, HH, HH, IB, HH, HH, HH, HH, IB, IB, HH, HH, PB, CI, PB, HH, HH, HH, HH, HH, HH, DB }, +/* BA */ { HH, PB, PB, IB, HH, IB, PB, PB, PB, HH, HH, HH, HH, HH, HH, HH, IB, IB, HH, HH, PB, CI, PB, HH, HH, HH, HH, HH, HH, DB }, /* BB */ { IB, PB, PB, IB, IB, IB, PB, PB, PB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, PB, CI, PB, IB, IB, IB, IB, IB, IB, DB }, /* B2 */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, DB, DB, DB, DB, DB, IB, IB, DB, PB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, /* ZW */ { DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB }, @@ -464,6 +469,10 @@ static const uchar breakTable[QUnicodeTables::LineBreak_CB + 1][QUnicodeTables:: /* CB */ { DB, PB, PB, IB, IB, DB, PB, PB, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB } }; +// The following line break classes are not treated by the pair table +// and must be resolved outside: +// AI, BK, CB, CJ, CR, LF, NL, SA, SG, SP, XX + } // namespace LB static void getLineBreaks(const ushort *string, quint32 len, QCharAttributes *attributes) @@ -555,6 +564,10 @@ static void getLineBreaks(const ushort *string, quint32 len, QCharAttributes *at if (lcls != QUnicodeTables::LineBreak_SP) goto next_no_cls_update; break; + case LB::ProhibitedBreakAfterHebrewPlusHyphen: + if (lcls != QUnicodeTables::LineBreak_HL) + attributes[pos].lineBreak = true; + break; case LB::ProhibitedBreak: // nothing to do default: @@ -659,7 +672,7 @@ Q_CORE_EXPORT void initCharAttributes(const ushort *string, int length, // ---------------------------------------------------------------------------- // -// The Unicode script property. See http://www.unicode.org/reports/tr24/tr24-22.html +// The Unicode script property. See http://www.unicode.org/reports/tr24/tr24-24.html // // ---------------------------------------------------------------------------- diff --git a/src/corelib/tools/tools.pri b/src/corelib/tools/tools.pri index d8c704f304..278b1c4a41 100644 --- a/src/corelib/tools/tools.pri +++ b/src/corelib/tools/tools.pri @@ -156,10 +156,6 @@ else:SOURCES += tools/qelapsedtimer_generic.cpp contains(QT_CONFIG, zlib) { include($$PWD/../../3rdparty/zlib.pri) - corelib_zlib_headers.files = $$PWD/../../3rdparty/zlib/zconf.h\ - $$PWD/../../3rdparty/zlib/zlib.h - corelib_zlib_headers.path = $$[QT_INSTALL_HEADERS]/QtZlib - INSTALLS += corelib_zlib_headers } else { include($$PWD/../../3rdparty/zlib_dependency.pri) } diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp index cebe5ce5f9..cc00f5c172 100644 --- a/src/gui/image/qicon.cpp +++ b/src/gui/image/qicon.cpp @@ -1398,8 +1398,12 @@ QDebug operator<<(QDebug dbg, const QIcon &i) Given base foo.png and a target dpr of 2.5, this function will look for foo@3x.png, then foo@2x, then fall back to foo.png if not found. + + \a sourceDevicePixelRatio will be set to the value of N if the argument is + a non-null pointer */ -QString qt_findAtNxFile(const QString &baseFileName, qreal targetDevicePixelRatio) +QString qt_findAtNxFile(const QString &baseFileName, qreal targetDevicePixelRatio, + qreal *sourceDevicePixelRatio) { if (targetDevicePixelRatio <= 1.0) return baseFileName; @@ -1417,8 +1421,11 @@ QString qt_findAtNxFile(const QString &baseFileName, qreal targetDevicePixelRati for (int n = qCeil(targetDevicePixelRatio); n > 1; --n) { QString atNxfileName = baseFileName; atNxfileName.insert(dotIndex, atNx.arg(n)); - if (QFile::exists(atNxfileName)) + if (QFile::exists(atNxfileName)) { + if (sourceDevicePixelRatio) + *sourceDevicePixelRatio = n; return atNxfileName; + } } return baseFileName; diff --git a/src/gui/image/qicon.h b/src/gui/image/qicon.h index 6808bc2828..989e40bbb5 100644 --- a/src/gui/image/qicon.h +++ b/src/gui/image/qicon.h @@ -140,7 +140,8 @@ Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QIcon &); Q_GUI_EXPORT QDebug operator<<(QDebug dbg, const QIcon &); #endif -Q_GUI_EXPORT QString qt_findAtNxFile(const QString &baseFileName, qreal targetDevicePixelRatio); +Q_GUI_EXPORT QString qt_findAtNxFile(const QString &baseFileName, qreal targetDevicePixelRatio, + qreal *sourceDevicePixelRatio = Q_NULLPTR); QT_END_NAMESPACE diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp index a69aae87f1..798002224a 100644 --- a/src/gui/image/qimage.cpp +++ b/src/gui/image/qimage.cpp @@ -4388,6 +4388,8 @@ QImage QImage::smoothScaled(int w, int h) const { static QImage rotated90(const QImage &image) { QImage out(image.height(), image.width(), image.format()); + out.setDotsPerMeterX(image.dotsPerMeterY()); + out.setDotsPerMeterY(image.dotsPerMeterX()); if (image.colorCount() > 0) out.setColorTable(image.colorTable()); int w = image.width(); @@ -4456,6 +4458,8 @@ static QImage rotated180(const QImage &image) { static QImage rotated270(const QImage &image) { QImage out(image.height(), image.width(), image.format()); + out.setDotsPerMeterX(image.dotsPerMeterY()); + out.setDotsPerMeterY(image.dotsPerMeterX()); if (image.colorCount() > 0) out.setColorTable(image.colorTable()); int w = image.width(); diff --git a/src/gui/image/qpnghandler.pri b/src/gui/image/qpnghandler.pri index 9ab175d628..505d214130 100644 --- a/src/gui/image/qpnghandler.pri +++ b/src/gui/image/qpnghandler.pri @@ -1,9 +1,4 @@ HEADERS += $$PWD/qpnghandler_p.h SOURCES += $$PWD/qpnghandler.cpp -contains(QT_CONFIG, system-png) { - if(unix|mingw): LIBS_PRIVATE += -lpng - else:win32: LIBS += libpng.lib -} else { - include($$PWD/../../3rdparty/libpng.pri) -} +include($$PWD/../../3rdparty/png_dependency.pri) diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 12e5dbd66c..66f1b1dfce 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -128,6 +128,8 @@ Qt::MouseButtons QGuiApplicationPrivate::tabletState = Qt::NoButton; QWindow *QGuiApplicationPrivate::tabletPressTarget = 0; QWindow *QGuiApplicationPrivate::currentMouseWindow = 0; +QString QGuiApplicationPrivate::styleOverride; + Qt::ApplicationState QGuiApplicationPrivate::applicationState = Qt::ApplicationInactive; bool QGuiApplicationPrivate::highDpiScalingUpdated = false; @@ -1288,6 +1290,7 @@ void QGuiApplicationPrivate::init() session_key = QString::fromWCharArray(guidstr); # endif #endif + QString s; int j = argc ? 1 : 0; for (int i=1; i<argc; i++) { if (argv[i] && *argv[i] != '-') { @@ -1330,9 +1333,16 @@ void QGuiApplicationPrivate::init() #endif } else if (arg == "-testability") { loadTestability = true; + } else if (arg.indexOf("-style=", 0) != -1) { + s = QString::fromLocal8Bit(arg.right(arg.length() - 7).toLower()); + } else if (arg == "-style" && i < argc-1) { + s = QString::fromLocal8Bit(argv[++i]).toLower(); } else { argv[j++] = argv[i]; } + + if (!s.isEmpty()) + styleOverride = s; } if (j < argc) { diff --git a/src/gui/kernel/qguiapplication_p.h b/src/gui/kernel/qguiapplication_p.h index 7d8deab507..4d5797a8fa 100644 --- a/src/gui/kernel/qguiapplication_p.h +++ b/src/gui/kernel/qguiapplication_p.h @@ -221,6 +221,7 @@ public: static QFont *app_font; + static QString styleOverride; static QStyleHints *styleHints; static bool obey_desktop_settings; QInputMethod *inputMethod; diff --git a/src/gui/kernel/qplatformwindow.cpp b/src/gui/kernel/qplatformwindow.cpp index ea3b75c81c..8757715c0d 100644 --- a/src/gui/kernel/qplatformwindow.cpp +++ b/src/gui/kernel/qplatformwindow.cpp @@ -484,7 +484,9 @@ QPlatformScreen *QPlatformWindow::screenForGeometry(const QRect &newGeometry) co { QPlatformScreen *currentScreen = screen(); QPlatformScreen *fallback = currentScreen; - QPoint center = newGeometry.center(); + //QRect::center can return a value outside the rectangle if it's empty + const QPoint center = newGeometry.isEmpty() ? newGeometry.topLeft() : newGeometry.center(); + if (!parent() && currentScreen && !currentScreen->geometry().contains(center)) { Q_FOREACH (QPlatformScreen* screen, currentScreen->virtualSiblings()) { if (screen->geometry().contains(center)) diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp index 5c1cd8adef..52843fa113 100644 --- a/src/gui/painting/qdrawhelper.cpp +++ b/src/gui/painting/qdrawhelper.cpp @@ -379,9 +379,9 @@ static const uint *QT_FASTCALL convertARGBPMFromARGB32PM(uint *buffer, const uin template<QImage::Format Format> Q_DECL_CONSTEXPR static inline QPixelLayout pixelLayoutRGB() { return QPixelLayout{ - redWidth<Format>(), redShift<Format>(), - greenWidth<Format>(), greenShift<Format>(), - blueWidth<Format>(), blueShift<Format>(), + uchar(redWidth<Format>()), uchar(redShift<Format>()), + uchar(greenWidth<Format>()), uchar(greenShift<Format>()), + uchar(blueWidth<Format>()), uchar(blueShift<Format>()), 0, 0, false, bitsPerPixel<Format>(), convertToRGB32<Format>, @@ -394,10 +394,10 @@ template<QImage::Format Format> Q_DECL_CONSTEXPR static inline QPixelLayout pixe template<QImage::Format Format> Q_DECL_CONSTEXPR static inline QPixelLayout pixelLayoutARGBPM() { return QPixelLayout{ - redWidth<Format>(), redShift<Format>(), - greenWidth<Format>(), greenShift<Format>(), - blueWidth<Format>(), blueShift<Format>(), - alphaWidth<Format>(), alphaShift<Format>(), + uchar(redWidth<Format>()), uchar(redShift<Format>()), + uchar(greenWidth<Format>()), uchar(greenShift<Format>()), + uchar(blueWidth<Format>()), uchar(blueShift<Format>()), + uchar(alphaWidth<Format>()), uchar(alphaShift<Format>()), true, bitsPerPixel<Format>(), convertARGBPMToARGB32PM<Format>, convertARGBPMFromARGB32PM<Format>, diff --git a/src/gui/painting/qrgba64.h b/src/gui/painting/qrgba64.h index 264ec394cd..fab9506ff2 100644 --- a/src/gui/painting/qrgba64.h +++ b/src/gui/painting/qrgba64.h @@ -161,12 +161,12 @@ public: } private: - static Q_DECL_CONSTEXPR quint64 alphaMask() { return Q_UINT64_C(0xffff) << AlphaShift; } + static Q_DECL_CONSTEXPR Q_ALWAYS_INLINE quint64 alphaMask() { return Q_UINT64_C(0xffff) << AlphaShift; } - static Q_DECL_CONSTEXPR uint div_257_floor(uint x) { return (x - (x >> 8)) >> 8; } - static Q_DECL_CONSTEXPR uint div_257(uint x) { return div_257_floor(x + 128); } - static Q_DECL_CONSTEXPR uint div_65535(uint x) { return (x + (x>>16) + 0x8000U) >> 16; } - Q_DECL_RELAXED_CONSTEXPR QRgba64 unpremultiplied_32bit() const + static Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint div_257_floor(uint x) { return (x - (x >> 8)) >> 8; } + static Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint div_257(uint x) { return div_257_floor(x + 128); } + static Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint div_65535(uint x) { return (x + (x>>16) + 0x8000U) >> 16; } + Q_DECL_RELAXED_CONSTEXPR Q_ALWAYS_INLINE QRgba64 unpremultiplied_32bit() const { if (isOpaque() || isTransparent()) return *this; @@ -176,7 +176,7 @@ private: const quint16 b = (quint32(blue()) * 0xffff + a/2) / a; return fromRgba64(r, g, b, a); } - Q_DECL_RELAXED_CONSTEXPR QRgba64 unpremultiplied_64bit() const + Q_DECL_RELAXED_CONSTEXPR Q_ALWAYS_INLINE QRgba64 unpremultiplied_64bit() const { if (isOpaque() || isTransparent()) return *this; diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp index a0eedee6b9..f267b2d147 100644 --- a/src/gui/text/qfontengine.cpp +++ b/src/gui/text/qfontengine.cpp @@ -370,17 +370,15 @@ bool QFontEngine::supportsScript(QChar::Script script) const return true; } -#ifdef Q_OS_MAC - { +#ifdef QT_ENABLE_HARFBUZZ_NG + if (qt_useHarfbuzzNG()) { +#if defined(Q_OS_DARWIN) // in AAT fonts, 'gsub' table is effectively replaced by 'mort'/'morx' table uint len; if (getSfntTableData(MAKE_TAG('m','o','r','t'), 0, &len) || getSfntTableData(MAKE_TAG('m','o','r','x'), 0, &len)) return true; - } #endif -#ifdef QT_ENABLE_HARFBUZZ_NG - if (qt_useHarfbuzzNG()) { bool ret = false; if (hb_face_t *face = hb_qt_face_get_for_engine(const_cast<QFontEngine *>(this))) { hb_tag_t script_tag_1, script_tag_2; @@ -1837,7 +1835,10 @@ QFontEngine *QFontEngineMulti::loadEngine(int at) request.family = fallbackFamilyAt(at - 1); if (QFontEngine *engine = QFontDatabase::findFont(request, m_script)) { - engine->fontDef = request; + if (request.weight > QFont::Normal) + engine->fontDef.weight = request.weight; + if (request.style > QFont::StyleNormal) + engine->fontDef.style = request.style; return engine; } diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp index 0d28785aa1..8dfabd48ad 100644 --- a/src/gui/text/qfontengine_ft.cpp +++ b/src/gui/text/qfontengine_ft.cpp @@ -534,69 +534,87 @@ QFontEngineFT::Glyph::~Glyph() delete [] data; } -static const uint subpixel_filter[3][3] = { - { 180, 60, 16 }, - { 38, 180, 38 }, - { 16, 60, 180 } +struct LcdFilterDummy +{ + static inline void filterPixel(uchar &, uchar &, uchar &) + {} }; -static inline uint filterPixel(uint red, uint green, uint blue, bool legacyFilter) +struct LcdFilterLegacy { - uint res; - if (legacyFilter) { - uint high = (red*subpixel_filter[0][0] + green*subpixel_filter[0][1] + blue*subpixel_filter[0][2]) >> 8; - uint mid = (red*subpixel_filter[1][0] + green*subpixel_filter[1][1] + blue*subpixel_filter[1][2]) >> 8; - uint low = (red*subpixel_filter[2][0] + green*subpixel_filter[2][1] + blue*subpixel_filter[2][2]) >> 8; - res = (mid << 24) + (high << 16) + (mid << 8) + low; - } else { - uint alpha = green; - res = (alpha << 24) + (red << 16) + (green << 8) + blue; + static inline void filterPixel(uchar &red, uchar &green, uchar &blue) + { + uint r = red, g = green, b = blue; + // intra-pixel filter used by the legacy filter (adopted from _ft_lcd_filter_legacy) + red = (r * uint(65538 * 9/13) + g * uint(65538 * 1/6) + b * uint(65538 * 1/13)) / 65536; + green = (r * uint(65538 * 3/13) + g * uint(65538 * 4/6) + b * uint(65538 * 3/13)) / 65536; + blue = (r * uint(65538 * 1/13) + g * uint(65538 * 1/6) + b * uint(65538 * 9/13)) / 65536; } - return res; -} +}; -static void convertRGBToARGB(const uchar *src, uint *dst, int width, int height, int src_pitch, bool bgr, bool legacyFilter) +template <typename LcdFilter> +static void convertRGBToARGB_helper(const uchar *src, uint *dst, int width, int height, int src_pitch, bool bgr) { - int h = height; const int offs = bgr ? -1 : 1; const int w = width * 3; - while (h--) { + while (height--) { uint *dd = dst; for (int x = 0; x < w; x += 3) { - uint red = src[x+1-offs]; - uint green = src[x+1]; - uint blue = src[x+1+offs]; - *dd = filterPixel(red, green, blue, legacyFilter); - ++dd; + uchar red = src[x + 1 - offs]; + uchar green = src[x + 1]; + uchar blue = src[x + 1 + offs]; + LcdFilter::filterPixel(red, green, blue); + // alpha = green + *dd++ = (green << 24) | (red << 16) | (green << 8) | blue; } dst += width; src += src_pitch; } } -static void convertRGBToARGB_V(const uchar *src, uint *dst, int width, int height, int src_pitch, bool bgr, bool legacyFilter) +static inline void convertRGBToARGB(const uchar *src, uint *dst, int width, int height, int src_pitch, bool bgr, bool legacyFilter) +{ + if (!legacyFilter) + convertRGBToARGB_helper<LcdFilterDummy>(src, dst, width, height, src_pitch, bgr); + else + convertRGBToARGB_helper<LcdFilterLegacy>(src, dst, width, height, src_pitch, bgr); +} + +template <typename LcdFilter> +static void convertRGBToARGB_V_helper(const uchar *src, uint *dst, int width, int height, int src_pitch, bool bgr) { - int h = height; const int offs = bgr ? -src_pitch : src_pitch; - while (h--) { + while (height--) { for (int x = 0; x < width; x++) { - uint red = src[x+src_pitch-offs]; - uint green = src[x+src_pitch]; - uint blue = src[x+src_pitch+offs]; - dst[x] = filterPixel(red, green, blue, legacyFilter); + uchar red = src[x + src_pitch - offs]; + uchar green = src[x + src_pitch]; + uchar blue = src[x + src_pitch + offs]; + LcdFilter::filterPixel(red, green, blue); + // alpha = green + *dst++ = (green << 24) | (red << 16) | (green << 8) | blue; } - dst += width; src += 3*src_pitch; } } -static void convertGRAYToARGB(const uchar *src, uint *dst, int width, int height, int src_pitch) { - for (int y = 0; y < height; ++y) { - int readpos = (y * src_pitch); - int writepos = (y * width); - for (int x = 0; x < width; ++x) { - dst[writepos + x] = (0xFF << 24) + (src[readpos + x] << 16) + (src[readpos + x] << 8) + src[readpos + x]; +static inline void convertRGBToARGB_V(const uchar *src, uint *dst, int width, int height, int src_pitch, bool bgr, bool legacyFilter) +{ + if (!legacyFilter) + convertRGBToARGB_V_helper<LcdFilterDummy>(src, dst, width, height, src_pitch, bgr); + else + convertRGBToARGB_V_helper<LcdFilterLegacy>(src, dst, width, height, src_pitch, bgr); +} + +static inline void convertGRAYToARGB(const uchar *src, uint *dst, int width, int height, int src_pitch) +{ + while (height--) { + const uchar *p = src; + const uchar * const e = p + width; + while (p < e) { + uchar gray = *p++; + *dst++ = (0xFF << 24) | (gray << 16) | (gray << 8) | gray; } + src += src_pitch; } } diff --git a/src/gui/text/qharfbuzzng.cpp b/src/gui/text/qharfbuzzng.cpp index 102c62ea8a..b2edfc00a0 100644 --- a/src/gui/text/qharfbuzzng.cpp +++ b/src/gui/text/qharfbuzzng.cpp @@ -188,7 +188,15 @@ static const hb_script_t _qtscript_to_hbscript[] = { HB_SCRIPT_SIDDHAM, HB_SCRIPT_KHUDAWADI, HB_SCRIPT_TIRHUTA, - HB_SCRIPT_WARANG_CITI + HB_SCRIPT_WARANG_CITI, + + // Unicode 8.0 additions + HB_SCRIPT_AHOM, + HB_SCRIPT_ANATOLIAN_HIEROGLYPHS, + HB_SCRIPT_HATRAN, + HB_SCRIPT_MULTANI, + HB_SCRIPT_OLD_HUNGARIAN, + HB_SCRIPT_SIGNWRITING }; Q_STATIC_ASSERT(QChar::ScriptCount == sizeof(_qtscript_to_hbscript) / sizeof(_qtscript_to_hbscript[0])); diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index 6b98c14205..50a242d81e 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -1120,15 +1120,6 @@ QT_BEGIN_INCLUDE_NAMESPACE QT_END_INCLUDE_NAMESPACE -#if defined(Q_OS_OSX) && !defined(QT_NO_FREETYPE) -static const char *s_shapersForOsxFreeType[] = -{ - "ot", - "fallback", - Q_NULLPTR -}; -#endif - int QTextEngine::shapeTextWithHarfbuzzNG(const QScriptItem &si, const ushort *string, int itemLength, QFontEngine *fontEngine, const QVector<uint> &itemBoundaries, bool kerningEnabled) const { uint glyphs_shaped = 0; @@ -1182,13 +1173,21 @@ int QTextEngine::shapeTextWithHarfbuzzNG(const QScriptItem &si, const ushort *st const int num_features = 1; const char *const *shaper_list = Q_NULLPTR; -#if defined(Q_OS_OSX) && !defined(QT_NO_FREETYPE) - // What's behind QFontEngine::FaceData::user_data isn't compatible between CoreText and - // FreeType font engines - specifically functions in hb-coretext.cc would run into undefined - // behavior with data from the FreeType engine. The OpenType shaper works with that engine. - if (actualFontEngine->type() == QFontEngine::Freetype) - shaper_list = s_shapersForOsxFreeType; +#if defined(Q_OS_DARWIN) + // What's behind QFontEngine::FaceData::user_data isn't compatible between different font engines + // - specifically functions in hb-coretext.cc would run into undefined behavior with data + // from non-CoreText engine. The other shapers works with that engine just fine. + if (actualFontEngine->type() != QFontEngine::Mac) { + static const char *s_shaper_list_without_coretext[] = { + "graphite2", + "ot", + "fallback", + Q_NULLPTR + }; + shaper_list = s_shaper_list_without_coretext; + } #endif + bool shapedOk = hb_shape_full(hb_font, buffer, features, num_features, shaper_list); if (Q_UNLIKELY(!shapedOk)) { hb_buffer_destroy(buffer); @@ -1268,19 +1267,20 @@ int QTextEngine::shapeTextWithHarfbuzzNG(const QScriptItem &si, const ushort *st g.glyphs[i] |= (engineIdx << 24); } -#ifdef Q_OS_MAC - // CTRunGetPosition has a bug which applies matrix on 10.6, so we disable - // scaling the advances for this particular version - if (actualFontEngine->fontDef.stretch != 100 - && QSysInfo::MacintoshVersion != QSysInfo::MV_10_6) { - QFixed stretch = QFixed(int(actualFontEngine->fontDef.stretch)) / QFixed(100); - for (uint i = 0; i < num_glyphs; ++i) - g.advances[i] *= stretch; - } +#ifdef Q_OS_DARWIN + if (actualFontEngine->type() == QFontEngine::Mac) { + // CTRunGetPosition has a bug which applies matrix on 10.6, so we disable + // scaling the advances for this particular version + if (QSysInfo::MacintoshVersion != QSysInfo::MV_10_6 && actualFontEngine->fontDef.stretch != 100) { + QFixed stretch = QFixed(int(actualFontEngine->fontDef.stretch)) / QFixed(100); + for (uint i = 0; i < num_glyphs; ++i) + g.advances[i] *= stretch; + } - if (actualFontEngine->fontDef.styleStrategy & QFont::ForceIntegerMetrics) { - for (uint i = 0; i < num_glyphs; ++i) - g.advances[i] = g.advances[i].round(); + if (actualFontEngine->fontDef.styleStrategy & QFont::ForceIntegerMetrics) { + for (uint i = 0; i < num_glyphs; ++i) + g.advances[i] = g.advances[i].round(); + } } #endif diff --git a/src/gui/text/qtextimagehandler.cpp b/src/gui/text/qtextimagehandler.cpp index 686a00e42a..d7a418e7c8 100644 --- a/src/gui/text/qtextimagehandler.cpp +++ b/src/gui/text/qtextimagehandler.cpp @@ -45,8 +45,10 @@ QT_BEGIN_NAMESPACE -extern QString qt_findAtNxFile(const QString &baseFileName, qreal targetDevicePixelRatio); -static QString resolveFileName(QString fileName, QUrl *url, qreal targetDevicePixelRatio) +extern QString qt_findAtNxFile(const QString &baseFileName, qreal targetDevicePixelRatio, + qreal *sourceDevicePixelRatio); +static QString resolveFileName(QString fileName, QUrl *url, qreal targetDevicePixelRatio, + qreal *sourceDevicePixelRatio) { // We might use the fileName for loading if url loading fails // try to make sure it is a valid file path. @@ -65,7 +67,7 @@ static QString resolveFileName(QString fileName, QUrl *url, qreal targetDevicePi return fileName; // try to find a Nx version - return qt_findAtNxFile(fileName, targetDevicePixelRatio); + return qt_findAtNxFile(fileName, targetDevicePixelRatio, sourceDevicePixelRatio); } @@ -77,7 +79,8 @@ static QPixmap getPixmap(QTextDocument *doc, const QTextImageFormat &format, con if (name.startsWith(QLatin1String(":/"))) // auto-detect resources and convert them to url name.prepend(QLatin1String("qrc")); QUrl url = QUrl(name); - name = resolveFileName(name, &url, devicePixelRatio); + qreal sourcePixelRatio = 1.0; + name = resolveFileName(name, &url, devicePixelRatio, &sourcePixelRatio); const QVariant data = doc->resource(QTextDocument::ImageResource, url); if (data.type() == QVariant::Pixmap || data.type() == QVariant::Image) { pm = qvariant_cast<QPixmap>(data); @@ -103,7 +106,7 @@ static QPixmap getPixmap(QTextDocument *doc, const QTextImageFormat &format, con } if (name.contains(QStringLiteral("@2x"))) - pm.setDevicePixelRatio(2.0); + pm.setDevicePixelRatio(sourcePixelRatio); return pm; } @@ -158,7 +161,8 @@ static QImage getImage(QTextDocument *doc, const QTextImageFormat &format, const if (name.startsWith(QLatin1String(":/"))) // auto-detect resources name.prepend(QLatin1String("qrc")); QUrl url = QUrl(name); - name = resolveFileName(name, &url, devicePixelRatio); + qreal sourcePixelRatio = 1.0; + name = resolveFileName(name, &url, devicePixelRatio, &sourcePixelRatio); const QVariant data = doc->resource(QTextDocument::ImageResource, url); if (data.type() == QVariant::Image) { image = qvariant_cast<QImage>(data); @@ -182,8 +186,8 @@ static QImage getImage(QTextDocument *doc, const QTextImageFormat &format, const doc->addResource(QTextDocument::ImageResource, url, image); } - if (name.contains(QStringLiteral("@2x"))) - image.setDevicePixelRatio(2.0); + if (sourcePixelRatio != 1.0) + image.setDevicePixelRatio(sourcePixelRatio); return image; } diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp index 086140f967..0e5870a235 100644 --- a/src/network/access/qnetworkaccessmanager.cpp +++ b/src/network/access/qnetworkaccessmanager.cpp @@ -976,7 +976,6 @@ QNetworkAccessManager::NetworkAccessibility QNetworkAccessManager::networkAccess else return NotAccessible; } else { - // Network accessibility is either disabled or unknown. if (d->defaultAccessControl) { if (d->online) return d->networkAccessible; @@ -1161,7 +1160,7 @@ QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Opera #ifndef QT_NO_BEARERMANAGEMENT // Return a disabled network reply if network access is disabled. // Except if the scheme is empty or file://. - if (!d->networkAccessible && !isLocalFile) { + if (d->networkAccessible == NotAccessible && !isLocalFile) { return new QDisabledNetworkReply(this, req, op); } diff --git a/src/network/access/qnetworkaccessmanager_p.h b/src/network/access/qnetworkaccessmanager_p.h index 54ae114581..3fc33b5c15 100644 --- a/src/network/access/qnetworkaccessmanager_p.h +++ b/src/network/access/qnetworkaccessmanager_p.h @@ -93,6 +93,8 @@ public: online = (networkConfiguration.state().testFlag(QNetworkConfiguration::Active)); if (online) networkAccessible = QNetworkAccessManager::Accessible; + else if (networkConfiguration.state().testFlag(QNetworkConfiguration::Undefined)) + networkAccessible = QNetworkAccessManager::UnknownAccessibility; else networkAccessible = QNetworkAccessManager::NotAccessible; #endif diff --git a/src/network/kernel/qnetworkinterface_winrt.cpp b/src/network/kernel/qnetworkinterface_winrt.cpp index 88c0eae2f7..18bfcaabda 100644 --- a/src/network/kernel/qnetworkinterface_winrt.cpp +++ b/src/network/kernel/qnetworkinterface_winrt.cpp @@ -36,6 +36,8 @@ #ifndef QT_NO_NETWORKINTERFACE +#include <qfunctions_winrt.h> + #include <wrl.h> #include <windows.foundation.h> #include <windows.foundation.collections.h> @@ -72,6 +74,53 @@ QString QNetworkInterfaceManager::interfaceNameFromIndex(uint index) return QString::number(index); } +static QNetworkInterfacePrivate *interfaceFromProfile(IConnectionProfile *profile, QList<HostNameInfo> *hostList) +{ + if (!profile) + return 0; + + QNetworkInterfacePrivate *iface = new QNetworkInterfacePrivate; + + NetworkConnectivityLevel connectivityLevel; + HRESULT hr = profile->GetNetworkConnectivityLevel(&connectivityLevel); + Q_ASSERT_SUCCEEDED(hr); + if (connectivityLevel != NetworkConnectivityLevel_None) + iface->flags = QNetworkInterface::IsUp | QNetworkInterface::IsRunning; + + ComPtr<INetworkAdapter> adapter; + hr = profile->get_NetworkAdapter(&adapter); + Q_ASSERT_SUCCEEDED(hr); + UINT32 type; + hr = adapter->get_IanaInterfaceType(&type); + Q_ASSERT_SUCCEEDED(hr); + if (type == 23) + iface->flags |= QNetworkInterface::IsPointToPoint; + GUID id; + hr = adapter->get_NetworkAdapterId(&id); + Q_ASSERT_SUCCEEDED(hr); + OLECHAR adapterName[39]={0}; + StringFromGUID2(id, adapterName, 39); + iface->name = QString::fromWCharArray(adapterName); + + // According to http://stackoverflow.com/questions/12936193/how-unique-is-the-ethernet-network-adapter-id-in-winrt-it-is-derived-from-the-m + // obtaining the MAC address using WinRT API is impossible + // iface->hardwareAddress = ? + + for (int i = 0; i < hostList->length(); ++i) { + const HostNameInfo hostInfo = hostList->at(i); + if (id != hostInfo.adapterId) + continue; + + QNetworkAddressEntry entry; + entry.setIp(QHostAddress(hostInfo.address)); + entry.setPrefixLength(hostInfo.prefixLength); + iface->addressEntries << entry; + + hostList->takeAt(i); + --i; + } + return iface; +} static QList<QNetworkInterfacePrivate *> interfaceListing() { @@ -80,36 +129,46 @@ static QList<QNetworkInterfacePrivate *> interfaceListing() QList<HostNameInfo> hostList; ComPtr<INetworkInformationStatics> hostNameStatics; - GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_Connectivity_NetworkInformation).Get(), &hostNameStatics); + HRESULT hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_Connectivity_NetworkInformation).Get(), &hostNameStatics); + Q_ASSERT_SUCCEEDED(hr); ComPtr<IVectorView<HostName *>> hostNames; - hostNameStatics->GetHostNames(&hostNames); + hr = hostNameStatics->GetHostNames(&hostNames); + Q_ASSERT_SUCCEEDED(hr); if (!hostNames) return interfaces; unsigned int hostNameCount; - hostNames->get_Size(&hostNameCount); + hr = hostNames->get_Size(&hostNameCount); + Q_ASSERT_SUCCEEDED(hr); for (unsigned i = 0; i < hostNameCount; ++i) { HostNameInfo hostInfo; ComPtr<IHostName> hostName; - hostNames->GetAt(i, &hostName); + hr = hostNames->GetAt(i, &hostName); + Q_ASSERT_SUCCEEDED(hr); HostNameType type; - hostName->get_Type(&type); + hr = hostName->get_Type(&type); + Q_ASSERT_SUCCEEDED(hr); if (type == HostNameType_DomainName) continue; ComPtr<IIPInformation> ipInformation; - hostName->get_IPInformation(&ipInformation); + hr = hostName->get_IPInformation(&ipInformation); + Q_ASSERT_SUCCEEDED(hr); ComPtr<INetworkAdapter> currentAdapter; - ipInformation->get_NetworkAdapter(¤tAdapter); + hr = ipInformation->get_NetworkAdapter(¤tAdapter); + Q_ASSERT_SUCCEEDED(hr); - currentAdapter->get_NetworkAdapterId(&hostInfo.adapterId); + hr = currentAdapter->get_NetworkAdapterId(&hostInfo.adapterId); + Q_ASSERT_SUCCEEDED(hr); ComPtr<IReference<unsigned char>> prefixLengthReference; - ipInformation->get_PrefixLength(&prefixLengthReference); + hr = ipInformation->get_PrefixLength(&prefixLengthReference); + Q_ASSERT_SUCCEEDED(hr); - prefixLengthReference->get_Value(&hostInfo.prefixLength); + hr = prefixLengthReference->get_Value(&hostInfo.prefixLength); + Q_ASSERT_SUCCEEDED(hr); // invalid prefixes if ((type == HostNameType_Ipv4 && hostInfo.prefixLength > 32) @@ -117,7 +176,8 @@ static QList<QNetworkInterfacePrivate *> interfaceListing() continue; HString name; - hostName->get_CanonicalName(name.GetAddressOf()); + hr = hostName->get_CanonicalName(name.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); UINT32 length; PCWSTR rawString = name.GetRawBuffer(&length); hostInfo.address = QString::fromWCharArray(rawString, length); @@ -126,54 +186,35 @@ static QList<QNetworkInterfacePrivate *> interfaceListing() } INetworkInformationStatics *networkInfoStatics; - GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_Connectivity_NetworkInformation).Get(), &networkInfoStatics); + hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_Connectivity_NetworkInformation).Get(), &networkInfoStatics); + Q_ASSERT_SUCCEEDED(hr); + ComPtr<IConnectionProfile> connectionProfile; + hr = networkInfoStatics->GetInternetConnectionProfile(&connectionProfile); + Q_ASSERT_SUCCEEDED(hr); + QNetworkInterfacePrivate *iface = interfaceFromProfile(connectionProfile.Get(), &hostList); + if (iface) { + iface->index = 0; + interfaces << iface; + } + ComPtr<IVectorView<ConnectionProfile *>> connectionProfiles; - networkInfoStatics->GetConnectionProfiles(&connectionProfiles); + hr = networkInfoStatics->GetConnectionProfiles(&connectionProfiles); + Q_ASSERT_SUCCEEDED(hr); if (!connectionProfiles) return interfaces; unsigned int size; - connectionProfiles->get_Size(&size); + hr = connectionProfiles->get_Size(&size); + Q_ASSERT_SUCCEEDED(hr); for (unsigned int i = 0; i < size; ++i) { - QNetworkInterfacePrivate *iface = new QNetworkInterfacePrivate; - interfaces << iface; - ComPtr<IConnectionProfile> profile; - connectionProfiles->GetAt(i, &profile); - - NetworkConnectivityLevel connectivityLevel; - profile->GetNetworkConnectivityLevel(&connectivityLevel); - if (connectivityLevel != NetworkConnectivityLevel_None) - iface->flags = QNetworkInterface::IsUp | QNetworkInterface::IsRunning; - - ComPtr<INetworkAdapter> adapter; - profile->get_NetworkAdapter(&adapter); - UINT32 type; - adapter->get_IanaInterfaceType(&type); - if (type == 23) - iface->flags |= QNetworkInterface::IsPointToPoint; - GUID id; - adapter->get_NetworkAdapterId(&id); - OLECHAR adapterName[39]={0}; - StringFromGUID2(id, adapterName, 39); - iface->name = QString::fromWCharArray(adapterName); - - // According to http://stackoverflow.com/questions/12936193/how-unique-is-the-ethernet-network-adapter-id-in-winrt-it-is-derived-from-the-m - // obtaining the MAC address using WinRT API is impossible - // iface->hardwareAddress = ? - - for (int i = 0; i < hostList.length(); ++i) { - const HostNameInfo hostInfo = hostList.at(i); - if (id != hostInfo.adapterId) - continue; - - QNetworkAddressEntry entry; - entry.setIp(QHostAddress(hostInfo.address)); - entry.setPrefixLength(hostInfo.prefixLength); - iface->addressEntries << entry; - - hostList.takeAt(i); - --i; + hr = connectionProfiles->GetAt(i, &profile); + Q_ASSERT_SUCCEEDED(hr); + + iface = interfaceFromProfile(profile.Get(), &hostList); + if (iface) { + iface->index = i + 1; + interfaces << iface; } } return interfaces; diff --git a/src/network/socket/qnativesocketengine_unix.cpp b/src/network/socket/qnativesocketengine_unix.cpp index cba1ac52be..6aff1d25b2 100644 --- a/src/network/socket/qnativesocketengine_unix.cpp +++ b/src/network/socket/qnativesocketengine_unix.cpp @@ -899,8 +899,10 @@ qint64 QNativeSocketEnginePrivate::nativeReceiveDatagram(char *data, qint64 maxS #if defined (QNATIVESOCKETENGINE_DEBUG) qDebug("QNativeSocketEnginePrivate::nativeReceiveDatagram(%p \"%s\", %lli, %s, %i) == %lli", data, qt_prettyDebug(data, qMin(recvResult, ssize_t(16)), recvResult).data(), maxSize, - address ? address->toString().toLatin1().constData() : "(nil)", - port ? *port : 0, (qint64) recvResult); + (recvResult != -1 && options != QAbstractSocketEngine::WantNone) + ? header->senderAddress.toString().toLatin1().constData() : "(unknown)", + (recvResult != -1 && options != QAbstractSocketEngine::WantNone) + ? header->senderPort : 0, (qint64) recvResult); #endif return qint64(maxSize ? recvResult : recvResult == -1 ? -1 : 0); @@ -996,8 +998,9 @@ qint64 QNativeSocketEnginePrivate::nativeSendDatagram(const char *data, qint64 l #if defined (QNATIVESOCKETENGINE_DEBUG) qDebug("QNativeSocketEngine::sendDatagram(%p \"%s\", %lli, \"%s\", %i) == %lli", data, - qt_prettyDebug(data, qMin<int>(len, 16), len).data(), len, host.toString().toLatin1().constData(), - port, (qint64) sentBytes); + qt_prettyDebug(data, qMin<int>(len, 16), len).data(), len, + header.destinationAddress.toString().toLatin1().constData(), + header.destinationPort, (qint64) sentBytes); #endif return qint64(sentBytes); diff --git a/src/network/socket/qnativesocketengine_winrt.cpp b/src/network/socket/qnativesocketengine_winrt.cpp index d41bd4d313..e9fa227733 100644 --- a/src/network/socket/qnativesocketengine_winrt.cpp +++ b/src/network/socket/qnativesocketengine_winrt.cpp @@ -47,11 +47,13 @@ #include <private/qthread_p.h> #include <private/qabstractsocket_p.h> +#include <private/qeventdispatcher_winrt_p.h> #ifndef QT_NO_SSL #include <QSslSocket> #endif +#include <functional> #include <wrl.h> #include <windows.foundation.collections.h> #include <windows.storage.streams.h> @@ -150,16 +152,10 @@ static AsyncStatus opStatus(const ComPtr<T> &op) { ComPtr<IAsyncInfo> info; HRESULT hr = op.As(&info); - if (FAILED(hr)) { - qErrnoWarning(hr, "Failed to cast op to IAsyncInfo."); - return Error; - } + Q_ASSERT_SUCCEEDED(hr); AsyncStatus status; hr = info->get_Status(&status); - if (FAILED(hr)) { - qErrnoWarning(hr, "Failed to get AsyncStatus."); - return Error; - } + Q_ASSERT_SUCCEEDED(hr); return status; } @@ -265,25 +261,26 @@ bool QNativeSocketEngine::connectToHostByName(const QString &name, quint16 port) Q_D(QNativeSocketEngine); HStringReference hostNameRef(reinterpret_cast<LPCWSTR>(name.utf16())); ComPtr<IHostNameFactory> hostNameFactory; - GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_HostName).Get(), - &hostNameFactory); + HRESULT hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_HostName).Get(), + &hostNameFactory); + Q_ASSERT_SUCCEEDED(hr); ComPtr<IHostName> remoteHost; - if (FAILED(hostNameFactory->CreateHostName(hostNameRef.Get(), &remoteHost))) { - qWarning("QNativeSocketEnginePrivate::nativeConnect:: Could not create hostname"); - return false; - } + hr = hostNameFactory->CreateHostName(hostNameRef.Get(), &remoteHost); + RETURN_FALSE_IF_FAILED("QNativeSocketEngine::connectToHostByName: Could not create hostname."); const QString portString = QString::number(port); HStringReference portReference(reinterpret_cast<LPCWSTR>(portString.utf16())); - HRESULT hr = E_FAIL; if (d->socketType == QAbstractSocket::TcpSocket) hr = d->tcpSocket()->ConnectAsync(remoteHost.Get(), portReference.Get(), &d->connectOp); else if (d->socketType == QAbstractSocket::UdpSocket) hr = d->udpSocket()->ConnectAsync(remoteHost.Get(), portReference.Get(), &d->connectOp); - if (FAILED(hr)) { - qWarning("QNativeSocketEnginePrivate::nativeConnect:: Could not obtain connect action"); + if (hr == E_ACCESSDENIED) { + qErrnoWarning(hr, "QNativeSocketEngine::connectToHostByName: Unable to connect to host. \ + Please check your manifest capabilities."); return false; } + Q_ASSERT_SUCCEEDED(hr); + d->socketState = QAbstractSocket::ConnectingState; hr = d->connectOp->put_Completed(Callback<IAsyncActionCompletedHandler>( d, &QNativeSocketEnginePrivate::handleConnectToHost).Get()); @@ -295,68 +292,54 @@ bool QNativeSocketEngine::connectToHostByName(const QString &name, quint16 port) bool QNativeSocketEngine::bind(const QHostAddress &address, quint16 port) { Q_D(QNativeSocketEngine); + HRESULT hr; ComPtr<IHostName> hostAddress; + if (address != QHostAddress::Any && address != QHostAddress::AnyIPv4 && address != QHostAddress::AnyIPv6) { ComPtr<IHostNameFactory> hostNameFactory; - GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_HostName).Get(), + hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_HostName).Get(), &hostNameFactory); + Q_ASSERT_SUCCEEDED(hr); const QString addressString = address.toString(); HStringReference addressRef(reinterpret_cast<LPCWSTR>(addressString.utf16())); - hostNameFactory->CreateHostName(addressRef.Get(), &hostAddress); + hr = hostNameFactory->CreateHostName(addressRef.Get(), &hostAddress); + RETURN_FALSE_IF_FAILED("QNativeSocketEngine::bind: Could not create hostname."); } - HRESULT hr; QString portQString = port ? QString::number(port) : QString(); HStringReference portString(reinterpret_cast<LPCWSTR>(portQString.utf16())); ComPtr<IAsyncAction> op; if (d->socketType == QAbstractSocket::TcpSocket) { - if (!d->tcpListener - && FAILED(RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_Networking_Sockets_StreamSocketListener).Get(), - &d->tcpListener))) { - qWarning("Failed to create listener"); - return false; + if (!d->tcpListener) { + hr = RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_Networking_Sockets_StreamSocketListener).Get(), + &d->tcpListener); + Q_ASSERT_SUCCEEDED(hr); } - d->tcpListener->add_ConnectionReceived(Callback<ClientConnectedHandler>(d, &QNativeSocketEnginePrivate::handleClientConnection).Get(), &d->connectionToken); + hr = QEventDispatcherWinRT::runOnXamlThread([d]() { + return d->tcpListener->add_ConnectionReceived( + Callback<ClientConnectedHandler>(d, &QNativeSocketEnginePrivate::handleClientConnection).Get(), + &d->connectionToken); + }); + Q_ASSERT_SUCCEEDED(hr); hr = d->tcpListener->BindEndpointAsync(hostAddress.Get(), portString.Get(), &op); - if (FAILED(hr)) { - qErrnoWarning(hr, "Unable to bind socket."); // ### Set error message - return false; - } } else if (d->socketType == QAbstractSocket::UdpSocket) { hr = d->udpSocket()->BindEndpointAsync(hostAddress.Get(), portString.Get(), &op); - if (FAILED(hr)) { - qErrnoWarning(hr, "Unable to bind socket."); // ### Set error message - return false; - } - hr = op->put_Completed(Callback<IAsyncActionCompletedHandler>(d, &QNativeSocketEnginePrivate::handleBindCompleted).Get()); - if (FAILED(hr)) { - qErrnoWarning(hr, "Unable to set bind callback."); - return false; - } } - - if (op) { - while (opStatus(op) == Started) - d->eventLoop.processEvents(); - - AsyncStatus status = opStatus(op); - if (status == Error || status == Canceled) - return false; - - hr = op->GetResults(); - if (FAILED(hr)) { - qErrnoWarning(hr, "Failed to bind socket"); - return false; - } - - d->socketState = QAbstractSocket::BoundState; - d->fetchConnectionParameters(); - return true; + if (hr == E_ACCESSDENIED) { + qErrnoWarning(hr, "Unable to bind socket. Please check your manifest capabilities."); + return false; } + Q_ASSERT_SUCCEEDED(hr); - return false; + hr = op->put_Completed(Callback<IAsyncActionCompletedHandler>(d, &QNativeSocketEnginePrivate::handleBindCompleted).Get()); + Q_ASSERT_SUCCEEDED(hr); + hr = QWinRTFunctions::await(op); + Q_ASSERT_SUCCEEDED(hr); + + d->socketState = QAbstractSocket::BoundState; + return d->fetchConnectionParameters(); } bool QNativeSocketEngine::listen() @@ -430,27 +413,36 @@ void QNativeSocketEngine::close() d->notifyOnWrite = false; d->notifyOnException = false; + HRESULT hr; if (d->connectOp) { ComPtr<IAsyncInfo> info; - d->connectOp.As(&info); + hr = d->connectOp.As(&info); + Q_ASSERT_SUCCEEDED(hr); if (info) { - info->Cancel(); - info->Close(); + hr = info->Cancel(); + Q_ASSERT_SUCCEEDED(hr); + hr = info->Close(); + Q_ASSERT_SUCCEEDED(hr); } } if (d->socketDescriptor != -1) { ComPtr<IClosable> socket; if (d->socketType == QAbstractSocket::TcpSocket) { - d->tcpSocket()->QueryInterface(IID_PPV_ARGS(&socket)); - d->tcpSocket()->Release(); + hr = d->tcpSocket()->QueryInterface(IID_PPV_ARGS(&socket)); + Q_ASSERT_SUCCEEDED(hr); + hr = d->tcpSocket()->Release(); + Q_ASSERT_SUCCEEDED(hr); } else if (d->socketType == QAbstractSocket::UdpSocket) { - d->udpSocket()->QueryInterface(IID_PPV_ARGS(&socket)); - d->udpSocket()->Release(); + hr = d->udpSocket()->QueryInterface(IID_PPV_ARGS(&socket)); + Q_ASSERT_SUCCEEDED(hr); + hr = d->udpSocket()->Release(); + Q_ASSERT_SUCCEEDED(hr); } if (socket) { - socket->Close(); + hr = socket->Close(); + Q_ASSERT_SUCCEEDED(hr); d->socketDescriptor = -1; } d->socketDescriptor = -1; @@ -531,7 +523,7 @@ qint64 QNativeSocketEngine::write(const char *data, qint64 len) hr = d->tcpSocket()->get_OutputStream(&stream); else if (d->socketType == QAbstractSocket::UdpSocket) hr = d->udpSocket()->get_OutputStream(&stream); - RETURN_IF_FAILED("Failed to get output stream to socket", return -1); + Q_ASSERT_SUCCEEDED(hr); qint64 bytesWritten = writeIOStream(stream, data, len); if (bytesWritten < 0) @@ -580,20 +572,21 @@ qint64 QNativeSocketEngine::writeDatagram(const char *data, qint64 len, const QI HRESULT hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_HostName).Get(), &hostNameFactory); - RETURN_IF_FAILED("Could not obtain hostname factory", return -1); + Q_ASSERT_SUCCEEDED(hr); const QString addressString = header.destinationAddress.toString(); HStringReference hostNameRef(reinterpret_cast<LPCWSTR>(addressString.utf16())); - hostNameFactory->CreateHostName(hostNameRef.Get(), &remoteHost); + hr = hostNameFactory->CreateHostName(hostNameRef.Get(), &remoteHost); + RETURN_IF_FAILED("QNativeSocketEngine::writeDatagram: Could not create hostname.", return -1); ComPtr<IAsyncOperation<IOutputStream *>> streamOperation; ComPtr<IOutputStream> stream; const QString portString = QString::number(header.destinationPort); HStringReference portRef(reinterpret_cast<LPCWSTR>(portString.utf16())); hr = d->udpSocket()->GetOutputStreamAsync(remoteHost.Get(), portRef.Get(), &streamOperation); - RETURN_IF_FAILED("Failed to get output stream to socket", return -1); + Q_ASSERT_SUCCEEDED(hr); hr = QWinRTFunctions::await(streamOperation, stream.GetAddressOf()); - RETURN_IF_FAILED("Failed to get output stream to socket", return -1); + Q_ASSERT_SUCCEEDED(hr); return writeIOStream(stream, data, len); } @@ -778,26 +771,23 @@ void QNativeSocketEngine::establishRead() bool QNativeSocketEnginePrivate::createNewSocket(QAbstractSocket::SocketType socketType, QAbstractSocket::NetworkLayerProtocol &socketProtocol) { Q_UNUSED(socketProtocol); + HRESULT hr; + switch (socketType) { case QAbstractSocket::TcpSocket: { ComPtr<IStreamSocket> socket; - HRESULT hr = RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_Networking_Sockets_StreamSocket).Get(), &socket); - if (FAILED(hr)) { - qWarning("Failed to create StreamSocket instance"); - return false; - } + hr = RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_Networking_Sockets_StreamSocket).Get(), &socket); + Q_ASSERT_SUCCEEDED(hr); socketDescriptor = qintptr(socket.Detach()); break; } case QAbstractSocket::UdpSocket: { ComPtr<IDatagramSocket> socket; - HRESULT hr = RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_Networking_Sockets_DatagramSocket).Get(), &socket); - if (FAILED(hr)) { - qWarning("Failed to create stream socket"); - return false; - } + hr = RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_Networking_Sockets_DatagramSocket).Get(), &socket); + Q_ASSERT_SUCCEEDED(hr); socketDescriptor = qintptr(socket.Detach()); - udpSocket()->add_MessageReceived(Callback<DatagramReceivedHandler>(this, &QNativeSocketEnginePrivate::handleNewDatagram).Get(), &connectionToken); + hr = udpSocket()->add_MessageReceived(Callback<DatagramReceivedHandler>(this, &QNativeSocketEnginePrivate::handleNewDatagram).Get(), &connectionToken); + Q_ASSERT_SUCCEEDED(hr); break; } default: @@ -834,10 +824,12 @@ QNativeSocketEnginePrivate::~QNativeSocketEnginePrivate() if (socketDescriptor == -1 || connectionToken.value == -1) return; + HRESULT hr; if (socketType == QAbstractSocket::UdpSocket) - udpSocket()->remove_MessageReceived(connectionToken); + hr = udpSocket()->remove_MessageReceived(connectionToken); else if (socketType == QAbstractSocket::TcpSocket) - tcpListener->remove_ConnectionReceived(connectionToken); + hr = tcpListener->remove_ConnectionReceived(connectionToken); + Q_ASSERT_SUCCEEDED(hr); } void QNativeSocketEnginePrivate::setError(QAbstractSocket::SocketError error, ErrorString errorString) const @@ -1064,56 +1056,66 @@ bool QNativeSocketEnginePrivate::fetchConnectionParameters() peerPort = 0; peerAddress.clear(); + HRESULT hr; if (socketType == QAbstractSocket::TcpSocket) { ComPtr<IHostName> hostName; HString tmpHString; ComPtr<IStreamSocketInformation> info; - if (FAILED(tcpSocket()->get_Information(&info))) { - qWarning("QNativeSocketEnginePrivate::fetchConnectionParameters: Could not obtain socket info"); - return false; - } - info->get_LocalAddress(&hostName); + hr = tcpSocket()->get_Information(&info); + Q_ASSERT_SUCCEEDED(hr); + hr = info->get_LocalAddress(&hostName); + Q_ASSERT_SUCCEEDED(hr); if (hostName) { - hostName->get_CanonicalName(tmpHString.GetAddressOf()); + hr = hostName->get_CanonicalName(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); localAddress.setAddress(qt_QStringFromHString(tmpHString)); - info->get_LocalPort(tmpHString.GetAddressOf()); + hr = info->get_LocalPort(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); localPort = qt_QStringFromHString(tmpHString).toInt(); } if (!localPort && tcpListener) { ComPtr<IStreamSocketListenerInformation> listenerInfo = 0; - tcpListener->get_Information(&listenerInfo); - listenerInfo->get_LocalPort(tmpHString.GetAddressOf()); + hr = tcpListener->get_Information(&listenerInfo); + Q_ASSERT_SUCCEEDED(hr); + hr = listenerInfo->get_LocalPort(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); localPort = qt_QStringFromHString(tmpHString).toInt(); - localAddress == QHostAddress::Any; + localAddress = QHostAddress::Any; } info->get_RemoteAddress(&hostName); if (hostName) { - hostName->get_CanonicalName(tmpHString.GetAddressOf()); + hr = hostName->get_CanonicalName(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); peerAddress.setAddress(qt_QStringFromHString(tmpHString)); - info->get_RemotePort(tmpHString.GetAddressOf()); + hr = info->get_RemotePort(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); peerPort = qt_QStringFromHString(tmpHString).toInt(); } } else if (socketType == QAbstractSocket::UdpSocket) { ComPtr<IHostName> hostName; HString tmpHString; ComPtr<IDatagramSocketInformation> info; - if (FAILED(udpSocket()->get_Information(&info))) { - qWarning("QNativeSocketEnginePrivate::fetchConnectionParameters: Could not obtain socket information"); - return false; - } - info->get_LocalAddress(&hostName); + hr = udpSocket()->get_Information(&info); + Q_ASSERT_SUCCEEDED(hr); + hr = info->get_LocalAddress(&hostName); + Q_ASSERT_SUCCEEDED(hr); if (hostName) { - hostName->get_CanonicalName(tmpHString.GetAddressOf()); + hr = hostName->get_CanonicalName(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); localAddress.setAddress(qt_QStringFromHString(tmpHString)); - info->get_LocalPort(tmpHString.GetAddressOf()); + hr = info->get_LocalPort(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); localPort = qt_QStringFromHString(tmpHString).toInt(); } - info->get_RemoteAddress(&hostName); + hr = info->get_RemoteAddress(&hostName); + Q_ASSERT_SUCCEEDED(hr); if (hostName) { - hostName->get_CanonicalName(tmpHString.GetAddressOf()); + hr = hostName->get_CanonicalName(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); peerAddress.setAddress(qt_QStringFromHString(tmpHString)); - info->get_RemotePort(tmpHString.GetAddressOf()); + hr = info->get_RemotePort(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); peerPort = qt_QStringFromHString(tmpHString).toInt(); } } @@ -1174,12 +1176,16 @@ void QNativeSocketEnginePrivate::handleConnectionEstablished(IAsyncAction *actio // The callback might be triggered several times if we do not cancel/reset it here if (connectOp) { ComPtr<IAsyncInfo> info; - connectOp.As(&info); + hr = connectOp.As(&info); + Q_ASSERT_SUCCEEDED(hr); if (info) { - info->Cancel(); - info->Close(); + hr = info->Cancel(); + Q_ASSERT_SUCCEEDED(hr); + hr = info->Close(); + Q_ASSERT_SUCCEEDED(hr); } - connectOp.Reset(); + hr = connectOp.Reset(); + Q_ASSERT_SUCCEEDED(hr); } socketState = QAbstractSocket::ConnectedState; diff --git a/src/platformsupport/eventdispatchers/eventdispatchers.pri b/src/platformsupport/eventdispatchers/eventdispatchers.pri index 6e16a46b34..a0b37cae1a 100644 --- a/src/platformsupport/eventdispatchers/eventdispatchers.pri +++ b/src/platformsupport/eventdispatchers/eventdispatchers.pri @@ -6,6 +6,12 @@ SOURCES +=\ HEADERS +=\ $$PWD/qunixeventdispatcher_qpa_p.h\ $$PWD/qgenericunixeventdispatcher_p.h\ +} else: win32 { +SOURCES +=\ + $$PWD/qwindowsguieventdispatcher.cpp + +HEADERS +=\ + $$PWD/qwindowsguieventdispatcher_p.h } contains(QT_CONFIG, glib) { diff --git a/src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp b/src/platformsupport/eventdispatchers/qwindowsguieventdispatcher.cpp index 0bfa0239aa..f57d16f51d 100644 --- a/src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp +++ b/src/platformsupport/eventdispatchers/qwindowsguieventdispatcher.cpp @@ -32,17 +32,13 @@ ** ****************************************************************************/ -#include "qwindowsguieventdispatcher.h" -#include "qwindowscontext.h" +#include "qwindowsguieventdispatcher_p.h" #include <qpa/qwindowsysteminterface.h> #include <QtCore/QCoreApplication> -#include <QtCore/QStack> #include <QtCore/QDebug> -#include <windowsx.h> - QT_BEGIN_NAMESPACE /*! @@ -69,11 +65,7 @@ bool QWindowsGuiEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags fl { const QEventLoop::ProcessEventsFlags oldFlags = m_flags; m_flags = flags; - if (QWindowsContext::verbose > 2 && lcQpaEvents().isDebugEnabled()) - qCDebug(lcQpaEvents) << '>' << __FUNCTION__ << objectName() << flags; const bool rc = QEventDispatcherWin32::processEvents(flags); - if (QWindowsContext::verbose > 2 && lcQpaEvents().isDebugEnabled()) - qCDebug(lcQpaEvents) << '<' << __FUNCTION__ << "returns" << rc; m_flags = oldFlags; return rc; } @@ -100,10 +92,6 @@ messageDebugEntries[] = { {WM_DESTROY, "WM_DESTROY", true}, {WM_MOVE, "WM_MOVE", true}, {WM_SIZE, "WM_SIZE", true}, - {WM_MOUSEACTIVATE,"WM_MOUSEACTIVATE", true}, - {WM_CHILDACTIVATE, "WM_CHILDACTIVATE", true}, - {WM_PARENTNOTIFY, "WM_PARENTNOTIFY", true}, - {WM_ENTERIDLE, "WM_ENTERIDLE", false}, {WM_GETICON, "WM_GETICON", false}, {WM_KEYDOWN, "WM_KEYDOWN", true}, {WM_SYSKEYDOWN, "WM_SYSKEYDOWN", true}, @@ -119,16 +107,13 @@ messageDebugEntries[] = { {WM_CHAR, "WM_CHAR", true}, {WM_DEADCHAR, "WM_DEADCHAR", true}, {WM_ACTIVATE, "WM_ACTIVATE", true}, - {WM_GETMINMAXINFO, "WM_GETMINMAXINFO", true}, {WM_SETFOCUS, "WM_SETFOCUS", true}, {WM_KILLFOCUS, "WM_KILLFOCUS", true}, {WM_ENABLE, "WM_ENABLE", true}, {WM_SHOWWINDOW, "WM_SHOWWINDOW", true}, - {WM_WINDOWPOSCHANGING, "WM_WINDOWPOSCHANGING", true}, {WM_WINDOWPOSCHANGED, "WM_WINDOWPOSCHANGED", true}, {WM_SETCURSOR, "WM_SETCURSOR", false}, {WM_GETFONT, "WM_GETFONT", true}, - {WM_NCMOUSEMOVE, "WM_NCMOUSEMOVE", true}, {WM_LBUTTONDOWN, "WM_LBUTTONDOWN", true}, {WM_LBUTTONUP, "WM_LBUTTONUP", true}, {WM_LBUTTONDBLCLK, "WM_LBUTTONDBLCLK", true}, @@ -143,18 +128,6 @@ messageDebugEntries[] = { {WM_XBUTTONUP, "WM_XBUTTONUP", true}, {WM_XBUTTONDBLCLK, "WM_XBUTTONDBLCLK", true}, {WM_MOUSEHWHEEL, "WM_MOUSEHWHEEL", true}, - {WM_NCCREATE, "WM_NCCREATE", true}, - {WM_NCCALCSIZE, "WM_NCCALCSIZE", true}, - {WM_NCACTIVATE, "WM_NCACTIVATE", true}, - {WM_NCMOUSELEAVE, "WM_NCMOUSELEAVE", true}, - {WM_NCLBUTTONDOWN, "WM_NCLBUTTONDOWN", true}, - {WM_NCLBUTTONUP, "WM_NCLBUTTONUP", true}, - {WM_ACTIVATEAPP, "WM_ACTIVATEAPP", true}, - {WM_NCPAINT, "WM_NCPAINT", true}, - {WM_ERASEBKGND, "WM_ERASEBKGND", true}, - {WM_MOUSEMOVE, "WM_MOUSEMOVE", true}, - {WM_MOUSELEAVE, "WM_MOUSELEAVE", true}, - {WM_NCHITTEST, "WM_NCHITTEST", false}, {WM_IME_SETCONTEXT, "WM_IME_SETCONTEXT", true}, {WM_INPUTLANGCHANGE, "WM_INPUTLANGCHANGE", true}, {WM_IME_NOTIFY, "WM_IME_NOTIFY", true}, @@ -163,9 +136,6 @@ messageDebugEntries[] = { #endif {WM_IME_SETCONTEXT, "WM_IME_SETCONTEXT", true}, {WM_IME_NOTIFY, "WM_IME_NOTIFY", true}, - {WM_TOUCH, "WM_TOUCH", true}, - {WM_CHANGECBCHAIN, "WM_CHANGECBCHAIN", true}, - {WM_DRAWCLIPBOARD, "WM_DRAWCLIPBOARD", true}, {WM_RENDERFORMAT, "WM_RENDERFORMAT", true}, {WM_RENDERALLFORMATS, "WM_RENDERALLFORMATS", true}, {WM_DESTROYCLIPBOARD, "WM_DESTROYCLIPBOARD", true}, @@ -179,7 +149,33 @@ messageDebugEntries[] = { {WM_QUERYENDSESSION, "WM_QUERYENDSESSION", true}, {WM_ENDSESSION, "WM_ENDSESSION", true}, #endif +#ifndef Q_OS_WINCE + {WM_MOUSEACTIVATE,"WM_MOUSEACTIVATE", true}, + {WM_CHILDACTIVATE, "WM_CHILDACTIVATE", true}, + {WM_PARENTNOTIFY, "WM_PARENTNOTIFY", true}, + {WM_ENTERIDLE, "WM_ENTERIDLE", false}, + {WM_GETMINMAXINFO, "WM_GETMINMAXINFO", true}, + {WM_WINDOWPOSCHANGING, "WM_WINDOWPOSCHANGING", true}, + {WM_NCCREATE, "WM_NCCREATE", true}, + {WM_NCCALCSIZE, "WM_NCCALCSIZE", true}, + {WM_NCACTIVATE, "WM_NCACTIVATE", true}, + {WM_NCMOUSEMOVE, "WM_NCMOUSEMOVE", true}, + {WM_NCMOUSELEAVE, "WM_NCMOUSELEAVE", true}, + {WM_NCLBUTTONDOWN, "WM_NCLBUTTONDOWN", true}, + {WM_NCLBUTTONUP, "WM_NCLBUTTONUP", true}, + {WM_ACTIVATEAPP, "WM_ACTIVATEAPP", true}, + {WM_NCPAINT, "WM_NCPAINT", true}, + {WM_ERASEBKGND, "WM_ERASEBKGND", true}, + {WM_MOUSEMOVE, "WM_MOUSEMOVE", true}, + {WM_MOUSELEAVE, "WM_MOUSELEAVE", true}, + {WM_NCHITTEST, "WM_NCHITTEST", false}, +#ifdef WM_TOUCH + {WM_TOUCH, "WM_TOUCH", true}, +#endif + {WM_CHANGECBCHAIN, "WM_CHANGECBCHAIN", true}, {WM_DISPLAYCHANGE, "WM_DISPLAYCHANGE", true}, + {WM_DRAWCLIPBOARD, "WM_DRAWCLIPBOARD", true}, +#endif // !Q_OS_WINCE {WM_THEMECHANGED, "WM_THEMECHANGED", true} }; diff --git a/src/plugins/platforms/windows/qwindowsguieventdispatcher.h b/src/platformsupport/eventdispatchers/qwindowsguieventdispatcher_p.h index 3389139461..1e9c906cc8 100644 --- a/src/plugins/platforms/windows/qwindowsguieventdispatcher.h +++ b/src/platformsupport/eventdispatchers/qwindowsguieventdispatcher_p.h @@ -34,7 +34,16 @@ #ifndef QWINDOWSGUIEVENTDISPATCHER_H #define QWINDOWSGUIEVENTDISPATCHER_H -#include "qtwindows_additional.h" +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the QLibrary class. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// #include <QtCore/private/qeventdispatcher_win_p.h> diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp index 8e7a393613..2a39fc1bbd 100644 --- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp +++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp @@ -243,7 +243,13 @@ static const char *specialLanguages[] = { "sa", // Siddham "sd", // Khudawadi "mai", // Tirhuta - "hoc" // WarangCiti + "hoc", // WarangCiti + "", // Ahom + "", // AnatolianHieroglyphs + "", // Hatran + "", // Multani + "", // OldHungarian + "" // SignWriting }; Q_STATIC_ASSERT(sizeof(specialLanguages) / sizeof(const char *) == QChar::ScriptCount); diff --git a/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp b/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp index e12cda25ba..60fb7e2cce 100644 --- a/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp +++ b/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp @@ -609,8 +609,9 @@ QVariant QGnomeTheme::themeHint(QPlatformTheme::ThemeHint hint) const case QPlatformTheme::DialogButtonBoxLayout: return QVariant(QPlatformDialogHelper::GnomeLayout); case QPlatformTheme::SystemIconThemeName: + return QVariant(QStringLiteral("Adwaita")); case QPlatformTheme::SystemIconFallbackThemeName: - return QVariant(QString(QStringLiteral("gnome"))); + return QVariant(QStringLiteral("gnome")); case QPlatformTheme::IconThemeSearchPaths: return QVariant(QGenericUnixTheme::xdgIconThemePaths()); case QPlatformTheme::StyleNames: { diff --git a/src/plugins/bearer/bearer.pro b/src/plugins/bearer/bearer.pro index 2239d52737..a1434fc2ea 100644 --- a/src/plugins/bearer/bearer.pro +++ b/src/plugins/bearer/bearer.pro @@ -8,7 +8,7 @@ TEMPLATE = subdirs #win32:SUBDIRS += nla win32:SUBDIRS += generic blackberry:SUBDIRS += blackberry -win32:!wince: SUBDIRS += nativewifi +win32:!wince:!winrt: SUBDIRS += nativewifi mac:contains(QT_CONFIG, corewlan):SUBDIRS += corewlan mac:SUBDIRS += generic android:!android-no-sdk:SUBDIRS += android diff --git a/src/plugins/bearer/generic/qgenericengine.cpp b/src/plugins/bearer/generic/qgenericengine.cpp index 93b27f16f1..7f56846179 100644 --- a/src/plugins/bearer/generic/qgenericengine.cpp +++ b/src/plugins/bearer/generic/qgenericengine.cpp @@ -44,7 +44,7 @@ #include <QtCore/qdebug.h> #include <QtCore/private/qcoreapplication_p.h> -#ifdef Q_OS_WIN +#if defined(Q_OS_WIN32) || defined(Q_OS_WINCE) #include "../platformdefs_win.h" #endif @@ -55,6 +55,24 @@ typedef ULONG NDIS_OID, *PNDIS_OID; # endif #endif // Q_OS_WINCE +#ifdef Q_OS_WINRT +#include <qfunctions_winrt.h> + +#include <wrl.h> +#include <windows.foundation.h> +#include <windows.foundation.collections.h> +#include <windows.networking.connectivity.h> + +using namespace Microsoft::WRL; +using namespace Microsoft::WRL::Wrappers; +using namespace ABI::Windows::Foundation; +using namespace ABI::Windows::Foundation::Collections; +using namespace ABI::Windows::Networking; +using namespace ABI::Windows::Networking::Connectivity; +// needed as interface is used as parameter name in qGetInterfaceType +#undef interface +#endif // Q_OS_WINRT + #ifdef Q_OS_LINUX #include <sys/socket.h> #include <sys/ioctl.h> @@ -68,7 +86,7 @@ QT_BEGIN_NAMESPACE #ifndef QT_NO_NETWORKINTERFACE static QNetworkConfiguration::BearerType qGetInterfaceType(const QString &interface) { -#if defined(Q_OS_WIN) +#if defined(Q_OS_WIN32) || defined(Q_OS_WINCE) DWORD bytesWritten; NDIS_MEDIUM medium; NDIS_PHYSICAL_MEDIUM physicalMedium; @@ -163,6 +181,84 @@ static QNetworkConfiguration::BearerType qGetInterfaceType(const QString &interf if (result >= 0 && request.ifr_hwaddr.sa_family == ARPHRD_ETHER) return QNetworkConfiguration::BearerEthernet; +#elif defined(Q_OS_WINRT) + ComPtr<INetworkInformationStatics> networkInfoStatics; + HRESULT hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_Connectivity_NetworkInformation).Get(), &networkInfoStatics); + Q_ASSERT_SUCCEEDED(hr); + ComPtr<IVectorView<ConnectionProfile *>> connectionProfiles; + hr = networkInfoStatics->GetConnectionProfiles(&connectionProfiles); + Q_ASSERT_SUCCEEDED(hr); + if (!connectionProfiles) + return QNetworkConfiguration::BearerUnknown; + + unsigned int size; + hr = connectionProfiles->get_Size(&size); + Q_ASSERT_SUCCEEDED(hr); + for (unsigned int i = 0; i < size; ++i) { + ComPtr<IConnectionProfile> profile; + hr = connectionProfiles->GetAt(i, &profile); + Q_ASSERT_SUCCEEDED(hr); + + ComPtr<INetworkAdapter> adapter; + hr = profile->get_NetworkAdapter(&adapter); + Q_ASSERT_SUCCEEDED(hr); + GUID id; + hr = adapter->get_NetworkAdapterId(&id); + Q_ASSERT_SUCCEEDED(hr); + OLECHAR adapterName[39]={0}; + int length = StringFromGUID2(id, adapterName, 39); + // "length - 1" as we have to remove the null terminator from it in order to compare + if (!length + || QString::fromRawData(reinterpret_cast<const QChar *>(adapterName), length - 1) != interface) + continue; + + ComPtr<IConnectionProfile2> profile2; + hr = profile.As(&profile2); + Q_ASSERT_SUCCEEDED(hr); + boolean isWLan; + hr = profile2->get_IsWlanConnectionProfile(&isWLan); + Q_ASSERT_SUCCEEDED(hr); + if (isWLan) + return QNetworkConfiguration::BearerWLAN; + + boolean isWWan; + hr = profile2->get_IsWwanConnectionProfile(&isWWan); + Q_ASSERT_SUCCEEDED(hr); + if (isWWan) { + ComPtr<IWwanConnectionProfileDetails> details; + hr = profile2->get_WwanConnectionProfileDetails(&details); + Q_ASSERT_SUCCEEDED(hr); + WwanDataClass dataClass; + hr = details->GetCurrentDataClass(&dataClass); + Q_ASSERT_SUCCEEDED(hr); + switch (dataClass) { + case WwanDataClass_Edge: + case WwanDataClass_Gprs: + return QNetworkConfiguration::Bearer2G; + case WwanDataClass_Umts: + return QNetworkConfiguration::BearerWCDMA; + case WwanDataClass_LteAdvanced: + return QNetworkConfiguration::BearerLTE; + case WwanDataClass_Hsdpa: + case WwanDataClass_Hsupa: + return QNetworkConfiguration::BearerHSPA; + case WwanDataClass_Cdma1xRtt: + case WwanDataClass_Cdma3xRtt: + case WwanDataClass_CdmaUmb: + return QNetworkConfiguration::BearerCDMA2000; + case WwanDataClass_Cdma1xEvdv: + case WwanDataClass_Cdma1xEvdo: + case WwanDataClass_Cdma1xEvdoRevA: + case WwanDataClass_Cdma1xEvdoRevB: + return QNetworkConfiguration::BearerEVDO; + case WwanDataClass_Custom: + case WwanDataClass_None: + default: + return QNetworkConfiguration::BearerUnknown; + } + } + return QNetworkConfiguration::BearerEthernet; + } #else Q_UNUSED(interface); #endif @@ -243,9 +339,11 @@ void QGenericEngine::doRequestUpdate() if (interface.flags() & QNetworkInterface::IsLoopBack) continue; +#ifndef Q_OS_WINRT // ignore WLAN interface handled in separate engine if (qGetInterfaceType(interface.name()) == QNetworkConfiguration::BearerWLAN) continue; +#endif uint identifier; if (interface.index()) diff --git a/src/plugins/platforms/cocoa/qnsview.h b/src/plugins/platforms/cocoa/qnsview.h index be7602a815..e754855e7f 100644 --- a/src/plugins/platforms/cocoa/qnsview.h +++ b/src/plugins/platforms/cocoa/qnsview.h @@ -75,6 +75,7 @@ Q_FORWARD_DECLARE_OBJC_CLASS(QT_MANGLE_NAMESPACE(QNSViewMouseMoveHelper)); QT_MANGLE_NAMESPACE(QNSViewMouseMoveHelper) *m_mouseMoveHelper; bool m_resendKeyEvent; bool m_scrolling; + bool m_updatingDrag; bool m_exposedOnMoveToWindow; NSEvent *m_currentlyInterpretedKeyEvent; bool m_isMenuView; diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm index faa048874f..f414193bdb 100644 --- a/src/plugins/platforms/cocoa/qnsview.mm +++ b/src/plugins/platforms/cocoa/qnsview.mm @@ -153,6 +153,7 @@ static NSString *_q_NSWindowDidChangeOcclusionStateNotification = nil; m_mouseMoveHelper = [[QT_MANGLE_NAMESPACE(QNSViewMouseMoveHelper) alloc] initWithView:self]; m_resendKeyEvent = false; m_scrolling = false; + m_updatingDrag = false; m_currentlyInterpretedKeyEvent = 0; if (!touchDevice) { @@ -1464,8 +1465,10 @@ static QTabletEvent::TabletDevice wacomTabletDevice(NSEvent *theEvent) // Popups implicitly grab key events; forward to the active popup if there is one. // This allows popups to e.g. intercept shortcuts and close the popup in response. - if (QCocoaWindow *popup = QCocoaIntegration::instance()->activePopupWindow()) - window = popup->window(); + if (QCocoaWindow *popup = QCocoaIntegration::instance()->activePopupWindow()) { + if (!popup->m_windowFlags.testFlag(Qt::ToolTip)) + window = popup->window(); + } if (eventType == QEvent::KeyPress) { @@ -1917,6 +1920,9 @@ static QPoint mapWindowCoordinates(QWindow *source, QWindow *target, QPoint poin // Make sure the cursor is updated correctly if the mouse does not move and window is under cursor // by creating a fake move event + if (m_updatingDrag) + return; + const QPoint mousePos(QCursor::pos()); CGEventRef moveEvent(CGEventCreateMouseEvent( NULL, kCGEventMouseMoved, @@ -1934,7 +1940,11 @@ static QPoint mapWindowCoordinates(QWindow *source, QWindow *target, QPoint poin - (NSDragOperation)draggingUpdated:(id <NSDraggingInfo>)sender { - return [self handleDrag : sender]; + m_updatingDrag = true; + const NSDragOperation ret([self handleDrag : sender]); + m_updatingDrag = false; + + return ret; } // Sends drag update to Qt, return the action diff --git a/src/plugins/platforms/direct2d/qwindowsdirect2dintegration.cpp b/src/plugins/platforms/direct2d/qwindowsdirect2dintegration.cpp index 20dde476c1..b86dfa3546 100644 --- a/src/plugins/platforms/direct2d/qwindowsdirect2dintegration.cpp +++ b/src/plugins/platforms/direct2d/qwindowsdirect2dintegration.cpp @@ -219,12 +219,11 @@ QWindowsDirect2DIntegration::~QWindowsDirect2DIntegration() return static_cast<QWindowsDirect2DIntegration *>(QWindowsIntegration::instance()); } - QPlatformWindow *QWindowsDirect2DIntegration::createPlatformWindow(QWindow *window) const - { - QWindowsWindowData data = createWindowData(window); - return data.hwnd ? new QWindowsDirect2DWindow(window, data) - : Q_NULLPTR; - } + +QWindowsWindow *QWindowsDirect2DIntegration::createPlatformWindowHelper(QWindow *window, const QWindowsWindowData &data) const +{ + return new QWindowsDirect2DWindow(window, data); +} QPlatformNativeInterface *QWindowsDirect2DIntegration::nativeInterface() const { diff --git a/src/plugins/platforms/direct2d/qwindowsdirect2dintegration.h b/src/plugins/platforms/direct2d/qwindowsdirect2dintegration.h index 6b7b3fbea2..64042cab0a 100644 --- a/src/plugins/platforms/direct2d/qwindowsdirect2dintegration.h +++ b/src/plugins/platforms/direct2d/qwindowsdirect2dintegration.h @@ -52,7 +52,6 @@ public: static QWindowsDirect2DIntegration *instance(); - QPlatformWindow *createPlatformWindow(QWindow *window) const Q_DECL_OVERRIDE; QPlatformNativeInterface *nativeInterface() const Q_DECL_OVERRIDE; QPlatformPixmap *createPlatformPixmap(QPlatformPixmap::PixelType type) const Q_DECL_OVERRIDE; QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const Q_DECL_OVERRIDE; @@ -60,6 +59,9 @@ public: QWindowsDirect2DContext *direct2DContext() const; +protected: + QWindowsWindow *createPlatformWindowHelper(QWindow *window, const QWindowsWindowData &) const Q_DECL_OVERRIDE; + private: explicit QWindowsDirect2DIntegration(const QStringList ¶mList); bool init(); diff --git a/src/plugins/platforms/eglfs/eglfs_device_lib.pro b/src/plugins/platforms/eglfs/eglfs_device_lib.pro index 22a32663c7..4fe2ce4897 100644 --- a/src/plugins/platforms/eglfs/eglfs_device_lib.pro +++ b/src/plugins/platforms/eglfs/eglfs_device_lib.pro @@ -6,13 +6,6 @@ TARGET = QtEglDeviceIntegration CONFIG += no_module_headers internal_module -MODULE_INCLUDES = \ - \$\$QT_MODULE_INCLUDE_BASE \ - \$\$QT_MODULE_INCLUDE_BASE/QtQGui -MODULE_PRIVATE_INCLUDES = \ - \$\$QT_MODULE_INCLUDE_BASE/QtGui/$$QT.gui.VERSION \ - \$\$QT_MODULE_INCLUDE_BASE/QtGui/$$QT.gui.VERSION/QtGui - load(qt_module) QT += core-private gui-private platformsupport-private diff --git a/src/plugins/platforms/ios/qiosfileengineassetslibrary.mm b/src/plugins/platforms/ios/qiosfileengineassetslibrary.mm index 761a89c989..bb12c164d6 100644 --- a/src/plugins/platforms/ios/qiosfileengineassetslibrary.mm +++ b/src/plugins/platforms/ios/qiosfileengineassetslibrary.mm @@ -48,20 +48,29 @@ static QThreadStorage<QPointer<QIOSAssetData> > g_assetDataCache; static const int kBufferSize = 10; static ALAsset *kNoAsset = 0; -static void ensureAuthorizationDialogNotBlocked() +static bool ensureAuthorizationDialogNotBlocked() { if ([ALAssetsLibrary authorizationStatus] != ALAuthorizationStatusNotDetermined) - return; + return true; + if (static_cast<QCoreApplicationPrivate *>(QObjectPrivate::get(qApp))->in_exec) - return; - - // Since authorization status has not been determined, the user will be asked - // to authorize the app. But since main has not finished, the dialog will be held - // back until the launch completes. To avoid a dead-lock below, we start an event - // loop to complete the launch. - QEventLoop loop; - QTimer::singleShot(1, &loop, &QEventLoop::quit); - loop.exec(); + return true; + + if ([NSThread isMainThread]) { + // The dialog is about to show, but since main has not finished, the dialog will be held + // back until the launch completes. This is problematic since we cannot successfully return + // back to the caller before the asset is ready, which also includes showing the dialog. To + // work around this, we create an event loop to that will complete the launch (return from the + // applicationDidFinishLaunching callback). But this will only work if we're on the main thread. + QEventLoop loop; + QTimer::singleShot(1, &loop, &QEventLoop::quit); + loop.exec(); + } else { + NSLog(@"QIOSFileEngine: unable to show assets authorization dialog from non-gui thread before QApplication is executing."); + return false; + } + + return true; } // ------------------------------------------------------------------------- @@ -80,8 +89,10 @@ public: , m_writeIndex(0) , m_nextAssetReady(false) { - ensureAuthorizationDialogNotBlocked(); - startEnumerate(); + if (!ensureAuthorizationDialogNotBlocked()) + writeAsset(kNoAsset); + else + startEnumerate(); } ~QIOSAssetEnumerator() @@ -186,7 +197,8 @@ public: , m_assetUrl(assetUrl) , m_assetLibrary(0) { - ensureAuthorizationDialogNotBlocked(); + if (!ensureAuthorizationDialogNotBlocked()) + return; if (QIOSAssetData *assetData = g_assetDataCache.localData()) { // It's a common pattern that QFiles pointing to the same path are created and destroyed diff --git a/src/plugins/platforms/minimalegl/qminimaleglintegration.cpp b/src/plugins/platforms/minimalegl/qminimaleglintegration.cpp index ef96985f1a..1bcb22618e 100644 --- a/src/plugins/platforms/minimalegl/qminimaleglintegration.cpp +++ b/src/plugins/platforms/minimalegl/qminimaleglintegration.cpp @@ -37,7 +37,15 @@ #include "qminimaleglbackingstore.h" #include <QtPlatformSupport/private/qgenericunixfontdatabase_p.h> -#include <QtPlatformSupport/private/qgenericunixeventdispatcher_p.h> + +#if defined(Q_OS_UNIX) +# include <QtPlatformSupport/private/qgenericunixeventdispatcher_p.h> +#elif defined(Q_OS_WINRT) +# include <QtCore/private/qeventdispatcher_winrt_p.h> +# include <QtGui/qpa/qwindowsysteminterface.h> +#elif defined(Q_OS_WIN) +# include <QtPlatformSupport/private/qwindowsguieventdispatcher_p.h> +#endif #include <qpa/qplatformwindow.h> #include <QtGui/QSurfaceFormat> @@ -48,6 +56,29 @@ QT_BEGIN_NAMESPACE +#ifdef Q_OS_WINRT +namespace { +class QWinRTEventDispatcher : public QEventDispatcherWinRT { +public: + QWinRTEventDispatcher() {} + +protected: + bool hasPendingEvents() Q_DECL_OVERRIDE + { + return QEventDispatcherWinRT::hasPendingEvents() || QWindowSystemInterface::windowSystemEventsQueued(); + } + + bool sendPostedEvents(QEventLoop::ProcessEventsFlags flags) + { + bool didProcess = QEventDispatcherWinRT::sendPostedEvents(flags); + if (!(flags & QEventLoop::ExcludeUserInputEvents)) + didProcess |= QWindowSystemInterface::sendWindowSystemEvents(flags); + return didProcess; + } +}; +} // anonymous namespace +#endif // Q_OS_WINRT + QMinimalEglIntegration::QMinimalEglIntegration() : mFontDb(new QGenericUnixFontDatabase()), mScreen(new QMinimalEglScreen(EGL_DEFAULT_DISPLAY)) { @@ -104,7 +135,15 @@ QPlatformFontDatabase *QMinimalEglIntegration::fontDatabase() const QAbstractEventDispatcher *QMinimalEglIntegration::createEventDispatcher() const { +#if defined(Q_OS_UNIX) return createUnixEventDispatcher(); +#elif defined(Q_OS_WINRT) + return new QWinRTEventDispatcher; +#elif defined(Q_OS_WIN) + return new QWindowsGuiEventDispatcher; +#else + return Q_NULLPTR; +#endif } QVariant QMinimalEglIntegration::styleHint(QPlatformIntegration::StyleHint hint) const diff --git a/src/plugins/platforms/windows/openglblacklists/default.json b/src/plugins/platforms/windows/openglblacklists/default.json index 5d8bd56a1e..a5d42719a9 100644 --- a/src/plugins/platforms/windows/openglblacklists/default.json +++ b/src/plugins/platforms/windows/openglblacklists/default.json @@ -47,7 +47,7 @@ "id": 4, "description": "Intel HD Graphics 3000 crashes when initializing the OpenGL driver (QTBUG-42240)", "vendor_id": "0x8086", - "device_id": [ "0x0102", "0x0116" ], + "device_id": [ "0x0102", "0x0106", "0x010A", "0x0112", "0x0116", "0x0122", "0x0126" ], "os": { "type": "win" }, diff --git a/src/plugins/platforms/windows/qwindowsclipboard.cpp b/src/plugins/platforms/windows/qwindowsclipboard.cpp index 8936b96b1f..25cfd12b44 100644 --- a/src/plugins/platforms/windows/qwindowsclipboard.cpp +++ b/src/plugins/platforms/windows/qwindowsclipboard.cpp @@ -35,7 +35,6 @@ #include "qwindowscontext.h" #include "qwindowsole.h" #include "qwindowsmime.h" -#include "qwindowsguieventdispatcher.h" #include <QtGui/QGuiApplication> #include <QtGui/QClipboard> @@ -48,6 +47,8 @@ #include <QtCore/QVariant> #include <QtCore/QUrl> +#include <QtPlatformSupport/private/qwindowsguieventdispatcher_p.h> + QT_BEGIN_NAMESPACE static const char formatTextPlainC[] = "text/plain"; diff --git a/src/plugins/platforms/windows/qwindowscontext.cpp b/src/plugins/platforms/windows/qwindowscontext.cpp index 02accfae01..5cda6379de 100644 --- a/src/plugins/platforms/windows/qwindowscontext.cpp +++ b/src/plugins/platforms/windows/qwindowscontext.cpp @@ -36,7 +36,6 @@ #include "qwindowsintegration.h" #include "qwindowswindow.h" #include "qwindowskeymapper.h" -#include "qwindowsguieventdispatcher.h" #include "qwindowsmousehandler.h" #include "qtwindowsglobal.h" #include "qwindowsmime.h" @@ -66,6 +65,8 @@ #include <QtCore/QScopedArrayPointer> #include <QtCore/private/qsystemlibrary_p.h> +#include <QtPlatformSupport/private/qwindowsguieventdispatcher_p.h> + #include <stdlib.h> #include <stdio.h> #include <windowsx.h> diff --git a/src/plugins/platforms/windows/qwindowseglcontext.cpp b/src/plugins/platforms/windows/qwindowseglcontext.cpp index 02073f5098..21eba6da7e 100644 --- a/src/plugins/platforms/windows/qwindowseglcontext.cpp +++ b/src/plugins/platforms/windows/qwindowseglcontext.cpp @@ -39,7 +39,7 @@ #include <QtGui/QOpenGLContext> #if defined(QT_OPENGL_ES_2_ANGLE) || defined(QT_OPENGL_DYNAMIC) -# include <QtANGLE/EGL/eglext.h> +# include <EGL/eglext.h> #endif QT_BEGIN_NAMESPACE diff --git a/src/plugins/platforms/windows/qwindowsintegration.cpp b/src/plugins/platforms/windows/qwindowsintegration.cpp index 2f61baa8a1..81525775c6 100644 --- a/src/plugins/platforms/windows/qwindowsintegration.cpp +++ b/src/plugins/platforms/windows/qwindowsintegration.cpp @@ -44,7 +44,6 @@ # include "qwindowsfontdatabase_ft.h" #endif #include "qwindowsfontdatabase.h" -#include "qwindowsguieventdispatcher.h" #ifndef QT_NO_CLIPBOARD # include "qwindowsclipboard.h" # ifndef QT_NO_DRAGANDDROP @@ -67,7 +66,8 @@ #include <QtGui/private/qhighdpiscaling_p.h> #include <QtGui/qpa/qplatforminputcontextfactory_p.h> -#include <QtCore/private/qeventdispatcher_win_p.h> +#include <QtPlatformSupport/private/qwindowsguieventdispatcher_p.h> + #include <QtCore/QDebug> #include <QtCore/QVariant> @@ -291,7 +291,7 @@ bool QWindowsIntegration::hasCapability(QPlatformIntegration::Capability cap) co return false; } -QWindowsWindowData QWindowsIntegration::createWindowData(QWindow *window) const +QPlatformWindow *QWindowsIntegration::createPlatformWindow(QWindow *window) const { QWindowsWindowData requested; requested.flags = window->flags(); @@ -310,22 +310,30 @@ QWindowsWindowData QWindowsIntegration::createWindowData(QWindow *window) const << "\n Obtained : " << obtained.geometry << " margins=" << obtained.frame << " handle=" << obtained.hwnd << ' ' << obtained.flags << '\n'; - if (obtained.hwnd) { - if (requested.flags != obtained.flags) - window->setFlags(obtained.flags); - // Trigger geometry change signals of QWindow. - if ((obtained.flags & Qt::Desktop) != Qt::Desktop && requested.geometry != obtained.geometry) + if (Q_UNLIKELY(!obtained.hwnd)) + return Q_NULLPTR; + + QWindowsWindow *result = createPlatformWindowHelper(window, obtained); + Q_ASSERT(result); + + if (requested.flags != obtained.flags) + window->setFlags(obtained.flags); + // Trigger geometry/screen change signals of QWindow. + if ((obtained.flags & Qt::Desktop) != Qt::Desktop) { + if (requested.geometry != obtained.geometry) QWindowSystemInterface::handleGeometryChange(window, obtained.geometry); + QPlatformScreen *screen = result->screenForGeometry(obtained.geometry); + if (screen && result->screen() != screen) + QWindowSystemInterface::handleWindowScreenChanged(window, screen->screen()); } - return obtained; + return result; } -QPlatformWindow *QWindowsIntegration::createPlatformWindow(QWindow *window) const +// Overridden to return a QWindowsDirect2DWindow in Direct2D plugin. +QWindowsWindow *QWindowsIntegration::createPlatformWindowHelper(QWindow *window, const QWindowsWindowData &data) const { - QWindowsWindowData data = createWindowData(window); - return data.hwnd ? new QWindowsWindow(window, data) - : Q_NULLPTR; + return new QWindowsWindow(window, data); } #ifndef QT_NO_OPENGL diff --git a/src/plugins/platforms/windows/qwindowsintegration.h b/src/plugins/platforms/windows/qwindowsintegration.h index fa5192ba03..cb10bf08f5 100644 --- a/src/plugins/platforms/windows/qwindowsintegration.h +++ b/src/plugins/platforms/windows/qwindowsintegration.h @@ -62,7 +62,6 @@ public: bool hasCapability(QPlatformIntegration::Capability cap) const; - QWindowsWindowData createWindowData(QWindow *window) const; QPlatformWindow *createPlatformWindow(QWindow *window) const; #ifndef QT_NO_OPENGL QPlatformOpenGLContext *createPlatformOpenGLContext(QOpenGLContext *context) const Q_DECL_OVERRIDE; @@ -101,6 +100,9 @@ public: QPlatformSessionManager *createPlatformSessionManager(const QString &id, const QString &key) const Q_DECL_OVERRIDE; #endif +protected: + virtual QWindowsWindow *createPlatformWindowHelper(QWindow *window, const QWindowsWindowData &) const; + private: QScopedPointer<QWindowsIntegrationPrivate> d; diff --git a/src/plugins/platforms/windows/qwindowskeymapper.cpp b/src/plugins/platforms/windows/qwindowskeymapper.cpp index f8e2ded228..4c0b94e6e7 100644 --- a/src/plugins/platforms/windows/qwindowskeymapper.cpp +++ b/src/plugins/platforms/windows/qwindowskeymapper.cpp @@ -35,7 +35,6 @@ #include "qwindowscontext.h" #include "qwindowsintegration.h" #include "qwindowswindow.h" -#include "qwindowsguieventdispatcher.h" #include "qwindowsinputcontext.h" #include <QtGui/QWindow> @@ -43,6 +42,7 @@ #include <private/qguiapplication_p.h> #include <private/qhighdpiscaling_p.h> #include <QtGui/QKeyEvent> +#include <QtPlatformSupport/private/qwindowsguieventdispatcher_p.h> #if defined(WM_APPCOMMAND) # ifndef FAPPCOMMAND_MOUSE diff --git a/src/plugins/platforms/windows/qwindowswindow.h b/src/plugins/platforms/windows/qwindowswindow.h index 583d3a4267..40d7a3f076 100644 --- a/src/plugins/platforms/windows/qwindowswindow.h +++ b/src/plugins/platforms/windows/qwindowswindow.h @@ -143,6 +143,8 @@ public: QWindowsWindow(QWindow *window, const QWindowsWindowData &data); ~QWindowsWindow(); + using QPlatformWindow::screenForGeometry; + QSurfaceFormat format() const Q_DECL_OVERRIDE { return m_format; } void setGeometry(const QRect &rect) Q_DECL_OVERRIDE; QRect geometry() const Q_DECL_OVERRIDE { return m_data.geometry; } diff --git a/src/plugins/platforms/windows/windows.pri b/src/plugins/platforms/windows/windows.pri index 6e5789a86e..29297116da 100644 --- a/src/plugins/platforms/windows/windows.pri +++ b/src/plugins/platforms/windows/windows.pri @@ -29,7 +29,6 @@ SOURCES += \ $$PWD/qwindowsfontengine.cpp \ $$PWD/qwindowsfontdatabase.cpp \ $$PWD/qwindowsmousehandler.cpp \ - $$PWD/qwindowsguieventdispatcher.cpp \ $$PWD/qwindowsole.cpp \ $$PWD/qwindowsmime.cpp \ $$PWD/qwindowsinternalmimedata.cpp \ @@ -51,7 +50,6 @@ HEADERS += \ $$PWD/qwindowsfontengine.h \ $$PWD/qwindowsfontdatabase.h \ $$PWD/qwindowsmousehandler.h \ - $$PWD/qwindowsguieventdispatcher.h \ $$PWD/qtwindowsglobal.h \ $$PWD/qtwindows_additional.h \ $$PWD/qwindowsole.h \ diff --git a/src/plugins/platforms/winrt/qwinrtcursor.cpp b/src/plugins/platforms/winrt/qwinrtcursor.cpp index 707f3bf0ba..1a511f103f 100644 --- a/src/plugins/platforms/winrt/qwinrtcursor.cpp +++ b/src/plugins/platforms/winrt/qwinrtcursor.cpp @@ -161,15 +161,19 @@ void QWinRTCursor::changeCursor(QCursor *windowCursor, QWindow *window) QPoint QWinRTCursor::pos() const { - ICoreWindow *coreWindow = - static_cast<QWinRTScreen *>(QGuiApplication::primaryScreen()->handle())->coreWindow(); - HRESULT hr; + const QWinRTScreen *screen = static_cast<QWinRTScreen *>(QGuiApplication::primaryScreen()->handle()); + Q_ASSERT(screen); + ICoreWindow *coreWindow = screen->coreWindow(); + Q_ASSERT(coreWindow); Point point; - hr = QEventDispatcherWinRT::runOnXamlThread([coreWindow, &point]() { + HRESULT hr = QEventDispatcherWinRT::runOnXamlThread([coreWindow, &point]() { return coreWindow->get_PointerPosition(&point); }); - RETURN_IF_FAILED("Failed to get native cursor position", QPoint()); - return QPoint(point.X, point.Y); + Q_ASSERT_SUCCEEDED(hr); + const QPoint position = QPoint(point.X, point.Y) * screen->scaleFactor(); + // If no cursor get_PointerPosition returns SHRT_MIN for x and y + return position.x() == SHRT_MIN && position.y() == SHRT_MIN || FAILED(hr) ? QPointF(Q_INFINITY, Q_INFINITY).toPoint() + : position; } QT_END_NAMESPACE diff --git a/src/plugins/platforms/winrt/qwinrtfiledialoghelper.cpp b/src/plugins/platforms/winrt/qwinrtfiledialoghelper.cpp index 05b1fd76b1..b0f377147e 100644 --- a/src/plugins/platforms/winrt/qwinrtfiledialoghelper.cpp +++ b/src/plugins/platforms/winrt/qwinrtfiledialoghelper.cpp @@ -239,20 +239,24 @@ static bool pickFiles(IFileOpenPicker *picker, QWinRTFileDialogHelper *helper, b eventDispatcher->installEventFilter(helper); return true; #else - if (singleFile) { - ComPtr<IAsyncOperation<StorageFile *>> op; - hr = picker->PickSingleFileAsync(&op); - RETURN_FALSE_IF_FAILED("Failed to open single file picker"); - hr = op->put_Completed(Callback<SingleFileHandler>(helper, &QWinRTFileDialogHelper::onSingleFilePicked).Get()); - RETURN_FALSE_IF_FAILED("Failed to attach file picker callback"); - } else { - ComPtr<IAsyncOperation<IVectorView<StorageFile *> *>> op; - hr = picker->PickMultipleFilesAsync(&op); - RETURN_FALSE_IF_FAILED("Failed to open multi file picker"); - hr = op->put_Completed(Callback<MultipleFileHandler>(helper, &QWinRTFileDialogHelper::onMultipleFilesPicked).Get()); - RETURN_FALSE_IF_FAILED("Failed to attach multi file callback"); - } - return true; + hr = QEventDispatcherWinRT::runOnXamlThread([picker, helper, singleFile]() { + HRESULT hr; + if (singleFile) { + ComPtr<IAsyncOperation<StorageFile *>> op; + hr = picker->PickSingleFileAsync(&op); + RETURN_HR_IF_FAILED("Failed to open single file picker"); + hr = op->put_Completed(Callback<SingleFileHandler>(helper, &QWinRTFileDialogHelper::onSingleFilePicked).Get()); + RETURN_HR_IF_FAILED("Failed to attach file picker callback"); + } else { + ComPtr<IAsyncOperation<IVectorView<StorageFile *> *>> op; + hr = picker->PickMultipleFilesAsync(&op); + RETURN_HR_IF_FAILED("Failed to open multi file picker"); + hr = op->put_Completed(Callback<MultipleFileHandler>(helper, &QWinRTFileDialogHelper::onMultipleFilesPicked).Get()); + RETURN_HR_IF_FAILED("Failed to attach multi file callback"); + } + return S_OK; + }); + return SUCCEEDED(hr); #endif } @@ -274,13 +278,17 @@ static bool pickFolder(IFolderPicker *picker, QWinRTFileDialogHelper *helper) Q_ASSERT(eventDispatcher); eventDispatcher->installEventFilter(helper); #else - ComPtr<IAsyncOperation<StorageFolder *>> op; - hr = picker->PickSingleFolderAsync(&op); - RETURN_FALSE_IF_FAILED("Failed to open folder picker"); - hr = op->put_Completed(Callback<SingleFolderHandler>(helper, &QWinRTFileDialogHelper::onSingleFolderPicked).Get()); - RETURN_FALSE_IF_FAILED("Failed to attach folder picker callback"); + hr = QEventDispatcherWinRT::runOnXamlThread([picker, helper]() { + HRESULT hr; + ComPtr<IAsyncOperation<StorageFolder *>> op; + hr = picker->PickSingleFolderAsync(&op); + RETURN_HR_IF_FAILED("Failed to open folder picker"); + hr = op->put_Completed(Callback<SingleFolderHandler>(helper, &QWinRTFileDialogHelper::onSingleFolderPicked).Get()); + RETURN_HR_IF_FAILED("Failed to attach folder picker callback"); + return S_OK; + }); #endif - return true; + return SUCCEEDED(hr); } static bool pickSaveFile(IFileSavePicker *picker, QWinRTFileDialogHelper *helper) @@ -301,13 +309,17 @@ static bool pickSaveFile(IFileSavePicker *picker, QWinRTFileDialogHelper *helper Q_ASSERT(eventDispatcher); eventDispatcher->installEventFilter(helper); #else - ComPtr<IAsyncOperation<StorageFile *>> op; - hr = picker->PickSaveFileAsync(&op); - RETURN_FALSE_IF_FAILED("Failed to open save file picker"); - hr = op->put_Completed(Callback<SingleFileHandler>(helper, &QWinRTFileDialogHelper::onSingleFilePicked).Get()); - RETURN_FALSE_IF_FAILED("Failed to attach save file picker callback"); + hr = QEventDispatcherWinRT::runOnXamlThread([picker, helper]() { + HRESULT hr; + ComPtr<IAsyncOperation<StorageFile *>> op; + hr = picker->PickSaveFileAsync(&op); + RETURN_HR_IF_FAILED("Failed to open save file picker"); + hr = op->put_Completed(Callback<SingleFileHandler>(helper, &QWinRTFileDialogHelper::onSingleFilePicked).Get()); + RETURN_HR_IF_FAILED("Failed to attach save file picker callback"); + return S_OK; + }); #endif - return true; + return SUCCEEDED(hr); } class QWinRTFileDialogHelperPrivate @@ -423,7 +435,12 @@ bool QWinRTFileDialogHelper::show(Qt::WindowFlags windowFlags, Qt::WindowModalit filterTitle.length()); boolean replaced; hr = choices->Insert(namedFilterRef.Get(), entry.Get(), &replaced); - RETURN_FALSE_IF_FAILED("Failed to insert file extension choice entry"); + // Only print a warning as * or *.* is not a valid choice on Windows 10 + // but used on a regular basis on all other platforms + if (FAILED(hr)) { + qWarning("Failed to insert file extension choice entry: %s: %s", + qPrintable(filterTitle), qPrintable(qt_error_string(hr))); + } } } diff --git a/src/plugins/platforms/winrt/qwinrtinputcontext.cpp b/src/plugins/platforms/winrt/qwinrtinputcontext.cpp index 750233c94f..9d8792a6db 100644 --- a/src/plugins/platforms/winrt/qwinrtinputcontext.cpp +++ b/src/plugins/platforms/winrt/qwinrtinputcontext.cpp @@ -54,6 +54,14 @@ typedef ITypedEventHandler<InputPane*, InputPaneVisibilityEventArgs*> InputPaneV QT_BEGIN_NAMESPACE +inline QRectF getInputPaneRect(IInputPane *pane, qreal scaleFactor) +{ + Rect rect; + pane->get_OccludedRect(&rect); + return QRectF(qRound(rect.X * scaleFactor), qRound(rect.Y * scaleFactor), + qRound(rect.Width * scaleFactor), qRound(rect.Height * scaleFactor)); +} + /*! \class QWinRTInputContext \brief Manages Input Method visibility @@ -87,7 +95,7 @@ QWinRTInputContext::QWinRTInputContext(QWinRTScreen *screen) inputPane->add_Hiding(Callback<InputPaneVisibilityHandler>( this, &QWinRTInputContext::onHiding).Get(), &hideToken); - handleVisibilityChange(inputPane); + m_keyboardRect = getInputPaneRect(inputPane, m_screen->scaleFactor()); m_isInputPanelVisible = !m_keyboardRect.isEmpty(); } else { qWarning(Q_FUNC_INFO ": failed to retrieve InputPane."); @@ -120,10 +128,7 @@ HRESULT QWinRTInputContext::onHiding(IInputPane *pane, IInputPaneVisibilityEvent HRESULT QWinRTInputContext::handleVisibilityChange(IInputPane *pane) { - Rect rect; - pane->get_OccludedRect(&rect); - const QRectF keyboardRect = QRectF(qRound(rect.X * m_screen->scaleFactor()), qRound(rect.Y * m_screen->scaleFactor()), - qRound(rect.Width * m_screen->scaleFactor()), qRound(rect.Height * m_screen->scaleFactor())); + const QRectF keyboardRect = getInputPaneRect(pane, m_screen->scaleFactor()); if (m_keyboardRect != keyboardRect) { m_keyboardRect = keyboardRect; emitKeyboardRectChanged(); diff --git a/src/plugins/platforms/winrt/qwinrtscreen.cpp b/src/plugins/platforms/winrt/qwinrtscreen.cpp index 8ba71d88e7..158917184c 100644 --- a/src/plugins/platforms/winrt/qwinrtscreen.cpp +++ b/src/plugins/platforms/winrt/qwinrtscreen.cpp @@ -507,11 +507,7 @@ QWinRTScreen::QWinRTScreen() hr = d->displayInformation->get_NativeOrientation(&displayOrientation); Q_ASSERT_SUCCEEDED(hr); d->nativeOrientation = static_cast<Qt::ScreenOrientation>(static_cast<int>(qtOrientationsFromNative(displayOrientation))); - - // Set initial orientation & pixel density - onDpiChanged(Q_NULLPTR, Q_NULLPTR); d->orientation = d->nativeOrientation; - onOrientationChanged(Q_NULLPTR, Q_NULLPTR); ComPtr<IApplicationViewStatics2> applicationViewStatics; hr = RoGetActivationFactory(HString::MakeReference(RuntimeClass_Windows_UI_ViewManagement_ApplicationView).Get(), @@ -699,7 +695,8 @@ Xaml::IDependencyObject *QWinRTScreen::canvas() const void QWinRTScreen::setStatusBarVisibility(bool visible, QWindow *window) { Q_D(QWinRTScreen); - if (!window || (window->flags() & Qt::WindowType_Mask) != Qt::Window) + const Qt::WindowFlags windowType = window->flags() & Qt::WindowType_Mask; + if (!window || (windowType != Qt::Window && windowType != Qt::Dialog)) return; QEventDispatcherWinRT::runOnXamlThread([d, visible]() { @@ -756,6 +753,8 @@ void QWinRTScreen::initialize() Q_ASSERT_SUCCEEDED(hr); hr = d->displayInformation->add_DpiChanged(Callback<DisplayInformationHandler>(this, &QWinRTScreen::onDpiChanged).Get(), &d->displayTokens[&IDisplayInformation::remove_DpiChanged]); Q_ASSERT_SUCCEEDED(hr); + onDpiChanged(Q_NULLPTR, Q_NULLPTR); + onOrientationChanged(Q_NULLPTR, Q_NULLPTR); onVisibilityChanged(nullptr, nullptr); } diff --git a/src/plugins/platforms/winrt/qwinrtwindow.cpp b/src/plugins/platforms/winrt/qwinrtwindow.cpp index 0d43e76c1a..bec94c1e51 100644 --- a/src/plugins/platforms/winrt/qwinrtwindow.cpp +++ b/src/plugins/platforms/winrt/qwinrtwindow.cpp @@ -207,7 +207,8 @@ void QWinRTWindow::setGeometry(const QRect &rect) Q_D(QWinRTWindow); const Qt::WindowFlags windowFlags = window()->flags(); - if (window()->isTopLevel() && (windowFlags & Qt::WindowType_Mask) == Qt::Window) { + const Qt::WindowFlags windowType = windowFlags & Qt::WindowType_Mask; + if (window()->isTopLevel() && (windowType == Qt::Window || windowType == Qt::Dialog)) { QPlatformWindow::setGeometry(windowFlags & Qt::MaximizeUsingFullscreenGeometryHint ? d->screen->geometry() : d->screen->availableGeometry()); QWindowSystemInterface::handleGeometryChange(window(), geometry()); diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/xcb_glx.pro b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/xcb_glx.pro index 57cd81ec3b..1c577e5dc9 100644 --- a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/xcb_glx.pro +++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/xcb_glx.pro @@ -17,6 +17,8 @@ contains(QT_CONFIG, xcb-glx) { LIBS += -lxcb-glx } +LIBS += $$QMAKE_LIBS_DYNLOAD + HEADERS += \ qxcbglxintegration.h \ qxcbglxwindow.h \ diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp index a20d957138..901764bbf8 100644 --- a/src/plugins/platforms/xcb/qxcbconnection.cpp +++ b/src/plugins/platforms/xcb/qxcbconnection.cpp @@ -263,8 +263,7 @@ void QXcbConnection::updateScreens(const xcb_randr_notify_event_t *event) // Known screen removed -> delete it m_screens.removeOne(screen); - foreach (QXcbScreen *otherScreen, m_screens) - otherScreen->removeVirtualSibling((QPlatformScreen *) screen); + virtualDesktop->removeScreen(screen); QXcbIntegration::instance()->destroyScreen(screen); @@ -283,9 +282,7 @@ void QXcbConnection::updateScreens(const xcb_randr_notify_event_t *event) qCDebug(lcQpaScreen) << "output" << screen->name() << "is connected and enabled"; screen->setPrimary(checkOutputIsPrimary(output.window, output.output)); - foreach (QXcbScreen *otherScreen, m_screens) - if (otherScreen->root() == output.window) - otherScreen->addVirtualSibling(screen); + virtualDesktop->addScreen(screen); m_screens << screen; QXcbIntegration::instance()->screenAdded(screen, screen->isPrimary()); @@ -308,8 +305,7 @@ void QXcbConnection::updateScreens(const xcb_randr_notify_event_t *event) if (outputInfo->crtc == XCB_NONE) { qCDebug(lcQpaScreen) << "output" << screen->name() << "has been disabled"; m_screens.removeOne(screen); - foreach (QXcbScreen *otherScreen, m_screens) - otherScreen->removeVirtualSibling((QPlatformScreen *) screen); + virtualDesktop->removeScreen(screen); QXcbIntegration::instance()->destroyScreen(screen); } else { qCDebug(lcQpaScreen) << "output" << screen->name() << "has been temporarily disabled for the mode switch"; @@ -443,8 +439,7 @@ void QXcbConnection::initializeScreens() } } } - foreach (QPlatformScreen* s, siblings) - ((QXcbScreen*)s)->setVirtualSiblings(siblings); + virtualDesktop->setScreens(siblings); xcb_screen_next(&it); ++xcbScreenNumber; } // for each xcb screen @@ -460,7 +455,7 @@ void QXcbConnection::initializeScreens() QXcbVirtualDesktop *virtualDesktop = m_virtualDesktops.value(0); if (virtualDesktop && !hasOutputs && !virtualDesktop->size().isEmpty() && m_screens.isEmpty()) { QXcbScreen *screen = createScreen(virtualDesktop, 0, Q_NULLPTR); - screen->setVirtualSiblings(QList<QPlatformScreen *>() << screen); + virtualDesktop->setScreens(QList<QPlatformScreen *>() << screen); m_screens << screen; primaryScreen = screen; primaryScreen->setPrimary(true); @@ -1126,8 +1121,17 @@ void QXcbConnection::handleXcbEvent(xcb_generic_event_t *event) handled = false; break; case XCB_PROPERTY_NOTIFY: - HANDLE_PLATFORM_WINDOW_EVENT(xcb_property_notify_event_t, window, handlePropertyNotifyEvent); + { + xcb_property_notify_event_t *pn = (xcb_property_notify_event_t *)event; + if (pn->atom == atom(QXcbAtom::_NET_WORKAREA)) { + QXcbVirtualDesktop *virtualDesktop = virtualDesktopForRootWindow(pn->window); + if (virtualDesktop) + virtualDesktop->updateWorkArea(); + } else { + HANDLE_PLATFORM_WINDOW_EVENT(xcb_property_notify_event_t, window, handlePropertyNotifyEvent); + } break; + } #if defined(XCB_USE_XINPUT2) case XCB_GE_GENERIC: // Here the windowEventListener is invoked from xi2HandleEvent() diff --git a/src/plugins/platforms/xcb/qxcbscreen.cpp b/src/plugins/platforms/xcb/qxcbscreen.cpp index 4f71ac8693..55bae05523 100644 --- a/src/plugins/platforms/xcb/qxcbscreen.cpp +++ b/src/plugins/platforms/xcb/qxcbscreen.cpp @@ -58,6 +58,8 @@ QXcbVirtualDesktop::QXcbVirtualDesktop(QXcbConnection *connection, xcb_screen_t cmAtomName += QByteArray::number(m_number); m_net_wm_cm_atom = connection->internAtom(cmAtomName.constData()); m_compositingActive = connection->getSelectionOwner(m_net_wm_cm_atom); + + m_workArea = getWorkArea(); } QXcbVirtualDesktop::~QXcbVirtualDesktop() @@ -74,6 +76,11 @@ QXcbScreen *QXcbVirtualDesktop::screenAt(const QPoint &pos) const return Q_NULLPTR; } +void QXcbVirtualDesktop::addScreen(QPlatformScreen *s) +{ + ((QXcbScreen *) s)->isPrimary() ? m_screens.prepend(s) : m_screens.append(s); +} + QXcbXSettings *QXcbVirtualDesktop::xSettings() const { if (!m_xSettings) { @@ -107,6 +114,40 @@ void QXcbVirtualDesktop::subscribeToXFixesSelectionNotify() } } +QRect QXcbVirtualDesktop::getWorkArea() const +{ + QRect r; + xcb_get_property_reply_t * workArea = + xcb_get_property_reply(xcb_connection(), + xcb_get_property_unchecked(xcb_connection(), false, screen()->root, + atom(QXcbAtom::_NET_WORKAREA), + XCB_ATOM_CARDINAL, 0, 1024), NULL); + if (workArea && workArea->type == XCB_ATOM_CARDINAL && workArea->format == 32 && workArea->value_len >= 4) { + // If workArea->value_len > 4, the remaining ones seem to be for WM's virtual desktops + // (don't mess with QXcbVirtualDesktop which represents an X screen). + // But QScreen doesn't know about that concept. In reality there could be a + // "docked" panel (with _NET_WM_STRUT_PARTIAL atom set) on just one desktop. + // But for now just assume the first 4 values give us the geometry of the + // "work area", AKA "available geometry" + uint32_t *geom = (uint32_t*)xcb_get_property_value(workArea); + r = QRect(geom[0], geom[1], geom[2], geom[3]); + } else { + r = QRect(QPoint(), size()); + } + free(workArea); + return r; +} + +void QXcbVirtualDesktop::updateWorkArea() +{ + QRect workArea = getWorkArea(); + if (m_workArea != workArea) { + m_workArea = workArea; + foreach (QPlatformScreen *screen, m_screens) + ((QXcbScreen *)screen)->updateAvailableGeometry(); + } +} + QXcbScreen::QXcbScreen(QXcbConnection *connection, QXcbVirtualDesktop *virtualDesktop, xcb_randr_output_t outputId, xcb_randr_get_output_info_reply_t *output, QString outputName) @@ -450,7 +491,6 @@ void QXcbScreen::updateGeometry(xcb_timestamp_t timestamp) void QXcbScreen::updateGeometry(const QRect &geom, uint8_t rotation) { QRect xGeometry = geom; - QRect xAvailableGeometry = xGeometry; switch (rotation) { case XCB_RANDR_ROTATION_ROTATE_0: // xrandr --rotate normal m_orientation = Qt::LandscapeOrientation; @@ -479,34 +519,23 @@ void QXcbScreen::updateGeometry(const QRect &geom, uint8_t rotation) Q_MM_PER_INCH * xGeometry.width() / dpi.second); } - xcb_get_property_reply_t * workArea = - xcb_get_property_reply(xcb_connection(), - xcb_get_property_unchecked(xcb_connection(), false, screen()->root, - atom(QXcbAtom::_NET_WORKAREA), - XCB_ATOM_CARDINAL, 0, 1024), NULL); - - if (workArea && workArea->type == XCB_ATOM_CARDINAL && workArea->format == 32 && workArea->value_len >= 4) { - // If workArea->value_len > 4, the remaining ones seem to be for virtual desktops. - // But QScreen doesn't know about that concept. In reality there could be a - // "docked" panel (with _NET_WM_STRUT_PARTIAL atom set) on just one desktop. - // But for now just assume the first 4 values give us the geometry of the - // "work area", AKA "available geometry" - uint32_t *geom = (uint32_t*)xcb_get_property_value(workArea); - QRect virtualAvailableGeometry(geom[0], geom[1], geom[2], geom[3]); - // Take the intersection of the desktop's available geometry with this screen's geometry - // to get the part of the available geometry which belongs to this screen. - xAvailableGeometry = xGeometry & virtualAvailableGeometry; - } - free(workArea); - qreal dpi = xGeometry.width() / physicalSize().width() * qreal(25.4); m_pixelDensity = qRound(dpi/96); m_geometry = QRect(xGeometry.topLeft(), xGeometry.size()); m_nativeGeometry = QRect(xGeometry.topLeft(), xGeometry.size()); - m_availableGeometry = QRect(xAvailableGeometry.topLeft(), xAvailableGeometry.size()); + m_availableGeometry = xGeometry & m_virtualDesktop->workArea(); QWindowSystemInterface::handleScreenGeometryChange(QPlatformScreen::screen(), m_geometry, m_availableGeometry); } +void QXcbScreen::updateAvailableGeometry() +{ + QRect availableGeometry = m_geometry & m_virtualDesktop->workArea(); + if (m_availableGeometry != availableGeometry) { + m_availableGeometry = availableGeometry; + QWindowSystemInterface::handleScreenGeometryChange(QPlatformScreen::screen(), m_geometry, m_availableGeometry); + } +} + void QXcbScreen::updateRefreshRate(xcb_randr_mode_t mode) { if (!connection()->hasXRandr()) diff --git a/src/plugins/platforms/xcb/qxcbscreen.h b/src/plugins/platforms/xcb/qxcbscreen.h index 51c92a40ae..c68c290791 100644 --- a/src/plugins/platforms/xcb/qxcbscreen.h +++ b/src/plugins/platforms/xcb/qxcbscreen.h @@ -68,20 +68,33 @@ public: xcb_window_t root() const { return m_screen->root; } QXcbScreen *screenAt(const QPoint &pos) const; + QList<QPlatformScreen *> screens() const { return m_screens; } + void setScreens(QList<QPlatformScreen *> sl) { m_screens = sl; } + void removeScreen(QPlatformScreen *s) { m_screens.removeOne(s); } + void addScreen(QPlatformScreen *s); + QXcbXSettings *xSettings() const; bool compositingActive() const; + QRect workArea() const { return m_workArea; } + void updateWorkArea(); + void handleXFixesSelectionNotify(xcb_xfixes_selection_notify_event_t *notify_event); void subscribeToXFixesSelectionNotify(); private: + QRect getWorkArea() const; + xcb_screen_t *m_screen; int m_number; + QList<QPlatformScreen *> m_screens; QXcbXSettings *m_xSettings; xcb_atom_t m_net_wm_cm_atom; bool m_compositingActive; + + QRect m_workArea; }; class Q_XCB_EXPORT QXcbScreen : public QXcbObject, public QPlatformScreen @@ -110,10 +123,7 @@ public: QPlatformCursor *cursor() const Q_DECL_OVERRIDE; qreal refreshRate() const Q_DECL_OVERRIDE { return m_refreshRate; } Qt::ScreenOrientation orientation() const Q_DECL_OVERRIDE { return m_orientation; } - QList<QPlatformScreen *> virtualSiblings() const Q_DECL_OVERRIDE { return m_siblings; } - void setVirtualSiblings(QList<QPlatformScreen *> sl) { m_siblings = sl; } - void removeVirtualSibling(QPlatformScreen *s) { m_siblings.removeOne(s); } - void addVirtualSibling(QPlatformScreen *s) { ((QXcbScreen *) s)->isPrimary() ? m_siblings.prepend(s) : m_siblings.append(s); } + QList<QPlatformScreen *> virtualSiblings() const Q_DECL_OVERRIDE { return m_virtualDesktop->screens(); } QXcbVirtualDesktop *virtualDesktop() const { return m_virtualDesktop; } void setPrimary(bool primary) { m_primary = primary; } @@ -139,6 +149,7 @@ public: void handleScreenChange(xcb_randr_screen_change_notify_event_t *change_event); void updateGeometry(const QRect &geom, uint8_t rotation); void updateGeometry(xcb_timestamp_t timestamp = XCB_TIME_CURRENT_TIME); + void updateAvailableGeometry(); void updateRefreshRate(xcb_randr_mode_t mode); void readXResources(); @@ -171,7 +182,6 @@ private: QRect m_availableGeometry; QSize m_virtualSize; QSizeF m_virtualSizeMillimeters; - QList<QPlatformScreen *> m_siblings; Qt::ScreenOrientation m_orientation; QString m_windowManagerName; bool m_syncRequestSupported; diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp index b691c7550f..bcc571c3c8 100644 --- a/src/plugins/platforms/xcb/qxcbwindow.cpp +++ b/src/plugins/platforms/xcb/qxcbwindow.cpp @@ -2378,8 +2378,6 @@ void QXcbWindow::handlePropertyNotifyEvent(const xcb_property_notify_event_t *ev return; } else if (event->atom == atom(QXcbAtom::_NET_FRAME_EXTENTS)) { m_dirtyFrameMargins = true; - } else if (event->atom == atom(QXcbAtom::_NET_WORKAREA) && xcbScreen() && event->window == xcbScreen()->root()) { - xcbScreen()->updateGeometry(event->time); } } diff --git a/src/plugins/platforms/xcb/xcb_qpa_lib.pro b/src/plugins/platforms/xcb/xcb_qpa_lib.pro index 12987567ff..60eb8a02e3 100644 --- a/src/plugins/platforms/xcb/xcb_qpa_lib.pro +++ b/src/plugins/platforms/xcb/xcb_qpa_lib.pro @@ -1,13 +1,6 @@ TARGET = QtXcbQpa CONFIG += no_module_headers internal_module -MODULE_INCLUDES = \ - \$\$QT_MODULE_INCLUDE_BASE \ - \$\$QT_MODULE_INCLUDE_BASE/QtQGui -MODULE_PRIVATE_INCLUDES = \ - \$\$QT_MODULE_INCLUDE_BASE/QtGui/$$QT.gui.VERSION \ - \$\$QT_MODULE_INCLUDE_BASE/QtGui/$$QT.gui.VERSION/QtGui - load(qt_module) QT += core-private gui-private platformsupport-private @@ -47,8 +40,6 @@ HEADERS = \ qxcbxsettings.h \ qxcbsystemtraytracker.h -LIBS += $$QMAKE_LIBS_DYNLOAD - DEFINES += QT_BUILD_XCB_PLUGIN # needed by Xcursor ... contains(QT_CONFIG, xcb-xlib) { diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro index dd5345e67e..03b7dc266b 100644 --- a/src/plugins/plugins.pro +++ b/src/plugins/plugins.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs load(qfeatures) SUBDIRS *= sqldrivers -!winrt:qtHaveModule(network):!contains(QT_DISABLED_FEATURES, bearermanagement): SUBDIRS += bearer +qtHaveModule(network):!contains(QT_DISABLED_FEATURES, bearermanagement): SUBDIRS += bearer qtHaveModule(gui) { SUBDIRS *= platforms platforminputcontexts platformthemes !contains(QT_DISABLED_FEATURES, imageformatplugin): SUBDIRS *= imageformats diff --git a/src/sql/doc/snippets/sqldatabase/sqldatabase.cpp b/src/sql/doc/snippets/sqldatabase/sqldatabase.cpp index 0938fa775d..068a2c04f1 100644 --- a/src/sql/doc/snippets/sqldatabase/sqldatabase.cpp +++ b/src/sql/doc/snippets/sqldatabase/sqldatabase.cpp @@ -239,8 +239,9 @@ void QSqlQueryModel_snippets() } //! [21] - QSqlQueryModel model; - model.setQuery("SELECT * FROM employee"); + QSqlTableModel model; + model.setTable("employee"); + model.select(); int salary = model.record(4).value("salary").toInt(); //! [21] Q_UNUSED(salary); diff --git a/src/sql/drivers/psql/qsql_psql.cpp b/src/sql/drivers/psql/qsql_psql.cpp index f4e40b6582..5dcabb0646 100644 --- a/src/sql/drivers/psql/qsql_psql.cpp +++ b/src/sql/drivers/psql/qsql_psql.cpp @@ -449,7 +449,7 @@ QVariant QPSQLResult::data(int i) case QVariant::ByteArray: { size_t len; unsigned char *data = PQunescapeBytea((const unsigned char*)val, &len); - QByteArray ba((const char*)data, len); + QByteArray ba(reinterpret_cast<const char *>(data), int(len)); qPQfreemem(data); return QVariant(ba); } diff --git a/src/src.pro b/src/src.pro index a970391382..df5c85fa53 100644 --- a/src/src.pro +++ b/src/src.pro @@ -2,6 +2,9 @@ TEMPLATE = subdirs load(qfeatures) +src_qtzlib.file = $$PWD/corelib/qtzlib.pro +src_qtzlib.target = sub-zlib + src_tools_bootstrap.subdir = tools/bootstrap src_tools_bootstrap.target = sub-bootstrap src_tools_bootstrap.CONFIG = host_build @@ -125,6 +128,7 @@ src_plugins.depends = src_sql src_xml src_network src_android.subdir = $$PWD/android # this order is important +contains(QT_CONFIG, zlib)|cross_compile: SUBDIRS += src_qtzlib SUBDIRS += src_tools_bootstrap src_tools_moc src_tools_rcc !contains(QT_DISABLED_FEATURES, regularexpression):pcre { SUBDIRS += src_3rdparty_pcre diff --git a/src/testlib/qtestmouse.h b/src/testlib/qtestmouse.h index c422a990ef..c5969a1603 100644 --- a/src/testlib/qtestmouse.h +++ b/src/testlib/qtestmouse.h @@ -95,7 +95,7 @@ namespace QTest } if (pos.isNull()) - pos = window->geometry().center(); + pos = QPoint(window->width() / 2, window->height() / 2); QTEST_ASSERT(uint(stateKey) == 0 || stateKey & Qt::KeyboardModifierMask); diff --git a/src/testlib/qtesttable.cpp b/src/testlib/qtesttable.cpp index 497b2649c5..d20bdd8467 100644 --- a/src/testlib/qtesttable.cpp +++ b/src/testlib/qtesttable.cpp @@ -38,37 +38,30 @@ #include <QtCore/qmetaobject.h> #include <string.h> +#include <vector> +#include <algorithm> QT_BEGIN_NAMESPACE class QTestTablePrivate { public: - struct ElementList - { - ElementList(): elementName(0), elementType(0), next(0) {} - const char *elementName; - int elementType; - ElementList *next; - }; + struct Element { + Element() : name(Q_NULLPTR), type(0) {} + Element(const char *n, int t) : name(n), type(t) {} - struct DataList - { - DataList(): data(0), next(0) {} - QTestData *data; - DataList *next; + const char *name; + int type; }; - QTestTablePrivate(): list(0), dataList(0) {} - ~QTestTablePrivate(); + typedef std::vector<Element> ElementList; + ElementList elementList; - ElementList *list; - DataList *dataList; + typedef std::vector<QTestData *> DataList; + DataList dataList; - void addColumn(int elemType, const char *elemName); - void addRow(QTestData *data); - ElementList *elementAt(int index); - QTestData *dataAt(int index); + void addColumn(int elemType, const char *elemName) { elementList.push_back(Element(elemName, elemType)); } + void addRow(QTestData *data) { dataList.push_back(data); } static QTestTable *currentTestTable; static QTestTable *gTable; @@ -77,74 +70,6 @@ public: QTestTable *QTestTablePrivate::currentTestTable = 0; QTestTable *QTestTablePrivate::gTable = 0; -QTestTablePrivate::ElementList *QTestTablePrivate::elementAt(int index) -{ - ElementList *iter = list; - for (int i = 0; i < index; ++i) { - if (!iter) - return 0; - iter = iter->next; - } - return iter; -} - -QTestData *QTestTablePrivate::dataAt(int index) -{ - DataList *iter = dataList; - for (int i = 0; i < index; ++i) { - if (!iter) - return 0; - iter = iter->next; - } - return iter ? iter->data : 0; -} - -QTestTablePrivate::~QTestTablePrivate() -{ - DataList *dit = dataList; - while (dit) { - DataList *next = dit->next; - delete dit->data; - delete dit; - dit = next; - } - ElementList *iter = list; - while (iter) { - ElementList *next = iter->next; - delete iter; - iter = next; - } -} - -void QTestTablePrivate::addColumn(int elemType, const char *elemName) -{ - ElementList *item = new ElementList; - item->elementName = elemName; - item->elementType = elemType; - if (!list) { - list = item; - return; - } - ElementList *last = list; - while (last->next != 0) - last = last->next; - last->next = item; -} - -void QTestTablePrivate::addRow(QTestData *data) -{ - DataList *item = new DataList; - item->data = data; - if (!dataList) { - dataList = item; - return; - } - DataList *last = dataList; - while (last->next != 0) - last = last->next; - last->next = item; -} - void QTestTable::addColumn(int type, const char *name) { QTEST_ASSERT(type); @@ -155,30 +80,17 @@ void QTestTable::addColumn(int type, const char *name) int QTestTable::elementCount() const { - QTestTablePrivate::ElementList *item = d->list; - int count = 0; - while (item) { - ++count; - item = item->next; - } - return count; + return int(d->elementList.size()); } - int QTestTable::dataCount() const { - QTestTablePrivate::DataList *item = d->dataList; - int count = 0; - while (item) { - ++count; - item = item->next; - } - return count; + return int(d->dataList.size()); } bool QTestTable::isEmpty() const { - return !d->list; + return d->elementList.empty(); } QTestData *QTestTable::newData(const char *tag) @@ -202,38 +114,43 @@ QTestTable::~QTestTable() int QTestTable::elementTypeId(int index) const { - QTestTablePrivate::ElementList *item = d->elementAt(index); - if (!item) - return -1; - return item->elementType; + return size_t(index) < d->elementList.size() ? d->elementList[index].type : -1; } const char *QTestTable::dataTag(int index) const { - QTestTablePrivate::ElementList *item = d->elementAt(index); - if (!item) - return 0; - return item->elementName; + return size_t(index) < d->elementList.size() ? d->elementList[index].name : Q_NULLPTR; } QTestData *QTestTable::testData(int index) const { - return d->dataAt(index); + return size_t(index) < d->dataList.size() ? d->dataList[index] : Q_NULLPTR; } +class NamePredicate : public std::unary_function<QTestTablePrivate::Element, bool> +{ +public: + explicit NamePredicate(const char *needle) : m_needle(needle) {} + + bool operator()(const QTestTablePrivate::Element &e) const + { return !strcmp(e.name, m_needle); } + +private: + const char *m_needle; +}; + int QTestTable::indexOf(const char *elementName) const { + typedef QTestTablePrivate::ElementList::const_iterator It; + QTEST_ASSERT(elementName); - QTestTablePrivate::ElementList *item = d->list; - int i = 0; - while (item) { - if (strcmp(elementName, item->elementName) == 0) - return i; - item = item->next; - ++i; - } - return -1; + const QTestTablePrivate::ElementList &elementList = d->elementList; + + const It it = std::find_if(elementList.begin(), elementList.end(), + NamePredicate(elementName)); + return it != elementList.end() ? + int(it - elementList.begin()) : -1; } QTestTable *QTestTable::globalTestTable() diff --git a/src/tools/bootstrap/bootstrap.pro b/src/tools/bootstrap/bootstrap.pro index b6b16dcd3d..ca05f804a2 100644 --- a/src/tools/bootstrap/bootstrap.pro +++ b/src/tools/bootstrap/bootstrap.pro @@ -39,10 +39,7 @@ MODULE_PRIVATE_INCLUDES = \ # We need the forwarding headers before their respective modules are built, # so do a minimal syncqt run. CONFIG += minimal_syncqt -QMAKE_SYNCQT_OPTIONS = -module QtCore -module QtDBus -module QtXml -contains(QT_CONFIG, zlib): \ - QMAKE_SYNCQT_OPTIONS += -module QtZlib -QMAKE_SYNCQT_OPTIONS += -version $$QT_VERSION +QMAKE_SYNCQT_OPTIONS = -module QtCore -module QtDBus -module QtXml -version $$QT_VERSION load(qt_module) diff --git a/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc b/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc index 8f0f0f32c7..9e6bd1b62d 100644 --- a/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc +++ b/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc @@ -843,7 +843,7 @@ \l{#selected-ps}{:selected}, and \l{#checked-ps}{:checked} pseudo states. - Sort indicator in can be styled using the + The sort indicator can be styled using the \l{#up-arrow-sub}{::up-arrow} and the \l{#down-arrow-sub}{::down-arrow} Sub-control. diff --git a/src/widgets/itemviews/qtablewidget.cpp b/src/widgets/itemviews/qtablewidget.cpp index a10b95f701..cd38f4b282 100644 --- a/src/widgets/itemviews/qtablewidget.cpp +++ b/src/widgets/itemviews/qtablewidget.cpp @@ -2029,6 +2029,8 @@ QTableWidgetItem *QTableWidget::horizontalHeaderItem(int column) const /*! Sets the horizontal header item for column \a column to \a item. + If necessary, the column count is increased to fit the item. + The previous header item (if there was one) is deleted. */ void QTableWidget::setHorizontalHeaderItem(int column, QTableWidgetItem *item) { diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp index 7b51028e6e..70c91b9aa4 100644 --- a/src/widgets/kernel/qapplication.cpp +++ b/src/widgets/kernel/qapplication.cpp @@ -399,8 +399,6 @@ void qt_cleanup(); QStyle *QApplicationPrivate::app_style = 0; // default application style bool QApplicationPrivate::overrides_native_style = false; // whether native QApplication style is // overridden, i.e. not native -QString QApplicationPrivate::styleOverride; // style override - #ifndef QT_NO_STYLE_STYLESHEET QString QApplicationPrivate::styleSheet; // default application stylesheet #endif @@ -466,6 +464,13 @@ QDesktopWidget *qt_desktopWidget = 0; // root window widgets */ void QApplicationPrivate::process_cmdline() { + if (!styleOverride.isEmpty()) { + if (app_style) { + delete app_style; + app_style = 0; + } + } + // process platform-indep command line if (!qt_is_gui_used || !argc) return; @@ -481,13 +486,8 @@ void QApplicationPrivate::process_cmdline() QByteArray arg = argv[i]; if (arg.startsWith("--")) arg.remove(0, 1); - QString s; if (arg == "-qdevel" || arg == "-qdebug") { // obsolete argument - } else if (arg.indexOf("-style=", 0) != -1) { - s = QString::fromLocal8Bit(arg.right(arg.length() - 7).toLower()); - } else if (arg == "-style" && i < argc-1) { - s = QString::fromLocal8Bit(argv[++i]).toLower(); #ifndef QT_NO_STYLE_STYLESHEET } else if (arg == "-stylesheet" && i < argc -1) { styleSheet = QLatin1String("file:///"); @@ -501,13 +501,6 @@ void QApplicationPrivate::process_cmdline() } else { argv[j++] = argv[i]; } - if (!s.isEmpty()) { - if (app_style) { - delete app_style; - app_style = 0; - } - styleOverride = s; - } } if(j < argc) { diff --git a/src/widgets/kernel/qapplication_p.h b/src/widgets/kernel/qapplication_p.h index ba8d7ff63c..75d86a5eba 100644 --- a/src/widgets/kernel/qapplication_p.h +++ b/src/widgets/kernel/qapplication_p.h @@ -219,8 +219,6 @@ public: static QApplicationPrivate *instance() { return self; } - static QString styleOverride; - #ifdef QT_KEYPAD_NAVIGATION static QWidget *oldEditFocus; static Qt::NavigationMode navigationMode; diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index efa032453f..14eb368973 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -4711,9 +4711,11 @@ QFont QWidgetPrivate::naturalWidgetFont(uint inheritedMask) const if (QWidget *p = q->parentWidget()) { if (!p->testAttribute(Qt::WA_StyleSheet) || useStyleSheetPropagationInWidgetStyles) { if (!naturalFont.isCopyOf(QApplication::font())) { - QFont inheritedFont = p->font(); - inheritedFont.resolve(inheritedMask); - naturalFont = inheritedFont.resolve(naturalFont); + if (inheritedMask != 0) { + QFont inheritedFont = p->font(); + inheritedFont.resolve(inheritedMask); + naturalFont = inheritedFont.resolve(naturalFont); + } // else nothing to do (naturalFont = naturalFont) } else { naturalFont = p->font(); } @@ -4721,9 +4723,11 @@ QFont QWidgetPrivate::naturalWidgetFont(uint inheritedMask) const } #ifndef QT_NO_GRAPHICSVIEW else if (extra && extra->proxyWidget) { - QFont inheritedFont = extra->proxyWidget->font(); - inheritedFont.resolve(inheritedMask); - naturalFont = inheritedFont.resolve(naturalFont); + if (inheritedMask != 0) { + QFont inheritedFont = extra->proxyWidget->font(); + inheritedFont.resolve(inheritedMask); + naturalFont = inheritedFont.resolve(naturalFont); + } // else nothing to do (naturalFont = naturalFont) } #endif //QT_NO_GRAPHICSVIEW } diff --git a/src/widgets/styles/qstyle.cpp b/src/widgets/styles/qstyle.cpp index 5f9f0b8e75..9bca11b992 100644 --- a/src/widgets/styles/qstyle.cpp +++ b/src/widgets/styles/qstyle.cpp @@ -898,7 +898,7 @@ void QStyle::drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, \value CE_ToolBoxTabLabel The toolbox's tab label. \value CE_HeaderEmptyArea The area of a header view where there are no header sections. - \value CE_ShapedFrame The frame with the shape specified in the QStyleOptionFrameV3; see QFrame. + \value CE_ShapedFrame The frame with the shape specified in the QStyleOptionFrame; see QFrame. \omitvalue CE_ColumnViewGrip @@ -1036,7 +1036,7 @@ void QStyle::drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, \omitvalue SE_ViewItemCheckIndicator \value SE_FrameContents Area for a frame's contents. - \value SE_ShapedFrameContents Area for a frame's contents using the shape in QStyleOptionFrameV3; see QFrame + \value SE_ShapedFrameContents Area for a frame's contents using the shape in QStyleOptionFrame; see QFrame \value SE_FrameLayoutItem Area that counts for the parent layout. \value SE_HeaderArrow Area for the sort indicator for a header. diff --git a/src/widgets/styles/qstyleoption.cpp b/src/widgets/styles/qstyleoption.cpp index cab56e329e..d66dbec472 100644 --- a/src/widgets/styles/qstyleoption.cpp +++ b/src/widgets/styles/qstyleoption.cpp @@ -475,6 +475,7 @@ QStyleOptionFocusRect::QStyleOptionFocusRect(int version) /*! \typedef QStyleOptionFrameV2 \relates QStyleOptionFrame + \obsolete Synonym for QStyleOptionFrame. */ @@ -482,6 +483,7 @@ QStyleOptionFocusRect::QStyleOptionFocusRect(int version) /*! \typedef QStyleOptionFrameV3 \relates QStyleOptionFrame + \obsolete Synonym for QStyleOptionFrame. */ @@ -1253,6 +1255,7 @@ QStyleOptionToolBar::QStyleOptionToolBar(int version) /*! \typedef QStyleOptionTabV2 \relates QStyleOptionTab + \obsolete Synonym for QStyleOptionTab. */ @@ -1260,6 +1263,7 @@ QStyleOptionToolBar::QStyleOptionToolBar(int version) /*! \typedef QStyleOptionTabV3 \relates QStyleOptionTab + \obsolete Synonym for QStyleOptionTab. */ @@ -1497,6 +1501,7 @@ QStyleOptionTab::QStyleOptionTab(int version) /*! \typedef QStyleOptionProgressBarV2 \relates QStyleOptionProgressBar + \obsolete Synonym for QStyleOptionProgressBar. */ @@ -2270,6 +2275,7 @@ QStyleOptionSpinBox::QStyleOptionSpinBox(int version) /*! \typedef QStyleOptionDockWidgetV2 \relates QStyleOptionDockWidget + \obsolete Synonym for QStyleOptionDockWidget. */ @@ -2675,6 +2681,7 @@ QStyleOptionComboBox::QStyleOptionComboBox(int version) /*! \typedef QStyleOptionToolBoxV2 \relates QStyleOptionToolBox + \obsolete Synonym for QStyleOptionToolBox. */ @@ -3012,6 +3019,7 @@ QStyleOptionTitleBar::QStyleOptionTitleBar(int version) /*! \typedef QStyleOptionViewItemV2 \relates QStyleOptionViewItem + \obsolete Synonym for QStyleOptionViewItem. */ @@ -3019,6 +3027,7 @@ QStyleOptionTitleBar::QStyleOptionTitleBar(int version) /*! \typedef QStyleOptionViewItemV3 \relates QStyleOptionViewItem + \obsolete Synonym for QStyleOptionViewItem. */ @@ -3026,6 +3035,7 @@ QStyleOptionTitleBar::QStyleOptionTitleBar(int version) /*! \typedef QStyleOptionViewItemV4 \relates QStyleOptionViewItem + \obsolete Synonym for QStyleOptionViewItem. */ @@ -3298,6 +3308,7 @@ QStyleOptionViewItem::QStyleOptionViewItem(int version) /*! \typedef QStyleOptionTabWidgetFrameV2 \relates QStyleOptionTabWidgetFrame + \obsolete Synonym for QStyleOptionTabWidgetFrame. */ @@ -3447,6 +3458,7 @@ QStyleOptionTabWidgetFrame::QStyleOptionTabWidgetFrame(int version) /*! \typedef QStyleOptionTabBarBaseV2 \relates QStyleOptionTabBarBase + \obsolete Synonym for QStyleOptionTabBarBase. */ diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp index 2a1742b652..deffad432f 100644 --- a/src/widgets/widgets/qcombobox.cpp +++ b/src/widgets/widgets/qcombobox.cpp @@ -3244,6 +3244,9 @@ void QComboBox::keyReleaseEvent(QKeyEvent *e) #ifndef QT_NO_WHEELEVENT void QComboBox::wheelEvent(QWheelEvent *e) { +#ifdef Q_OS_DARWIN + Q_UNUSED(e); +#else Q_D(QComboBox); if (!d->viewContainer()->isVisible()) { int newIndex = currentIndex(); @@ -3264,6 +3267,7 @@ void QComboBox::wheelEvent(QWheelEvent *e) } e->accept(); } +#endif } #endif |