summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason McDonald <jason.mcdonald@nokia.com>2009-04-16 01:14:26 (GMT)
committerJason McDonald <jason.mcdonald@nokia.com>2009-04-16 01:14:26 (GMT)
commit91edfd0bf779bdf835bd5dff8151db96c319bee9 (patch)
tree42148169b2be7fd5c25da5e1c065c9aaa34235a5
parent5174ef058693fb3c5420bd9ed555ebf0dfc758a2 (diff)
parent287d5e7b349dac0cfdb74e9747752fcadc432064 (diff)
downloadQt-91edfd0bf779bdf835bd5dff8151db96c319bee9.zip
Qt-91edfd0bf779bdf835bd5dff8151db96c319bee9.tar.gz
Qt-91edfd0bf779bdf835bd5dff8151db96c319bee9.tar.bz2
Merge branch '4.5' of git@scm.dev.nokia.troll.no:qt/qt into 4.5
-rwxr-xr-xconfigure3
-rw-r--r--configure.exebin1134592 -> 860160 bytes
-rw-r--r--dist/changes-4.5.1138
-rw-r--r--doc/src/examples/qxmlstreambookmarks.qdoc5
-rw-r--r--doc/src/qnamespace.qdoc2
-rw-r--r--examples/layouts/flowlayout/flowlayout.cpp63
-rw-r--r--examples/layouts/flowlayout/flowlayout.h9
-rw-r--r--src/3rdparty/webkit/VERSION2
-rw-r--r--src/3rdparty/webkit/WebCore/ChangeLog48
-rw-r--r--src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.c5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/ColorData.c5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/DocTypeStrings.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/HTMLEntityNames.c5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/tokenizer.cpp2315
-rw-r--r--src/3rdparty/webkit/WebCore/page/DOMWindow.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/page/DOMWindow.h2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp55
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp16
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp28
-rw-r--r--src/corelib/io/qsettings.cpp4
-rw-r--r--src/corelib/io/qtemporaryfile.cpp2
-rw-r--r--src/corelib/kernel/qcoreevent.h1
-rw-r--r--src/corelib/tools/qstring.cpp34
-rw-r--r--src/corelib/tools/qvector.h2
-rw-r--r--src/gui/accessible/qaccessiblewidget.cpp13
-rw-r--r--src/gui/dialogs/qfiledialog.cpp16
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp31
-rw-r--r--src/gui/itemviews/qsortfilterproxymodel.cpp3
-rw-r--r--src/gui/kernel/qcocoapanel_mac.mm8
-rw-r--r--src/gui/kernel/qcocoaview_mac.mm21
-rw-r--r--src/gui/kernel/qcocoawindow_mac.mm7
-rw-r--r--src/gui/painting/qtransform.cpp26
-rw-r--r--src/gui/painting/qwindowsurface.cpp7
-rw-r--r--src/gui/styles/gtksymbols.cpp1
-rw-r--r--src/gui/styles/qgtkstyle.cpp11
-rw-r--r--src/gui/widgets/qcocoamenu_mac.mm6
-rw-r--r--src/gui/widgets/qmenu.cpp4
-rw-r--r--src/gui/widgets/qtabbar.cpp90
-rw-r--r--src/gui/widgets/qtabbar_p.h33
-rw-r--r--src/network/socket/qabstractsocket.cpp2
-rw-r--r--src/opengl/opengl.pro10
-rw-r--r--src/opengl/qgl.cpp4
-rw-r--r--src/opengl/qgl_mac.mm30
-rw-r--r--src/opengl/qgl_p.h1
-rw-r--r--tests/auto/qaccessibility/tst_qaccessibility.cpp52
-rw-r--r--tests/auto/qfiledialog/tst_qfiledialog.cpp16
-rw-r--r--tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp117
-rw-r--r--tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp26
-rw-r--r--tests/auto/qitemdelegate/tst_qitemdelegate.cpp1
-rw-r--r--tests/auto/qmenu/tst_qmenu.cpp34
-rw-r--r--tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp87
-rw-r--r--tests/auto/qstring/tst_qstring.cpp4
-rw-r--r--tools/designer/src/components/propertyeditor/designerpropertymanager.cpp2
-rw-r--r--tools/designer/src/lib/shared/actioneditor.cpp8
-rw-r--r--tools/designer/src/lib/shared/actionrepository.cpp17
-rw-r--r--tools/designer/src/lib/shared/actionrepository_p.h7
-rw-r--r--tools/designer/src/lib/shared/newactiondialog.cpp4
-rw-r--r--tools/designer/src/lib/shared/newactiondialog_p.h2
-rw-r--r--tools/linguist/shared/profileevaluator.cpp11
-rw-r--r--tools/linguist/shared/ui.cpp24
61 files changed, 2568 insertions, 925 deletions
diff --git a/configure b/configure
index 730c84a..a3a7b2d 100755
--- a/configure
+++ b/configure
@@ -6213,6 +6213,9 @@ QT_BUILD_KEY_COMPAT=
if [ "$QT_CROSS_COMPILE" = "no" ]; then
# previous versions of Qt used a build key built from the uname
QT_BUILD_KEY_COMPAT="$CFG_USER_BUILD_KEY $UNAME_MACHINE $UNAME_SYSTEM $COMPILER $BUILD_OPTIONS"
+ if [ -n "$QT_NAMESPACE" ]; then
+ QT_BUILD_KEY_COMPAT="$QT_BUILD_KEY_COMPAT $QT_NAMESPACE"
+ fi
fi
# strip out leading/trailing/extra whitespace
QT_BUILD_KEY=`echo $QT_BUILD_KEY | sed -e "s, *, ,g" -e "s,^ *,," -e "s, *$,,"`
diff --git a/configure.exe b/configure.exe
index 13ca0e5..ff71f08 100644
--- a/configure.exe
+++ b/configure.exe
Binary files differ
diff --git a/dist/changes-4.5.1 b/dist/changes-4.5.1
index e8595ff..0b06315 100644
--- a/dist/changes-4.5.1
+++ b/dist/changes-4.5.1
@@ -25,6 +25,9 @@ General Improvements
- Documentation and Examples
+- Embedded Dialogs demo
+ * [246517] Fixed warnings and bugs in hover handling on Mac OS X
+
Third party components
----------------------
@@ -43,9 +46,20 @@ Third party components
- QAbstractSocket
* [192037] Emit disconnected only if we were connected before
+- QAccessible
+ * [241161] Fixed bug in browsing menus with the keyboard.
+ * [221731] Fixed bug where the accessibility plugin could crash if there
+ was an "&" at the end or spin forever if a label had a sequence of "&&".
+
+- QAtomicInt
+ * [216492] Fix compilation on 64-bit PowerPC machines with gcc 4.3.
+
- QAuthenticator
* [237979] fix implemenation of md5-sess
+- QByteArray
+ * [246233] QByteArray::fromHex() fails with input of size 1
+
- QColorDialog
* [247349] Fixed bug causing the wrong alpha value to be returned.
@@ -56,9 +70,16 @@ Third party components
* [250064] Fixed focus policy propagation regression.
* [246056] Fixed assertion failure in setCompletionPrefix().
+- QtConcurrent
+ * [244718] Reduce the number of calls to QThread::idealThreadCount().
+
- QDirIterator
* [247645] Fix a bug that may loose all cached data inside the QFileInfo
+- QFile
+ * [244500] QFile::rename() doesn't always return false when the method fails
+ * [244485] Renaming a file does not change QFile::fileName()
+
- QFileInfo
* [205244] return valid file info also for relative UNC paths
@@ -69,14 +90,34 @@ Third party components
- QGraphicsItem
* [247890] Cached QGraphicsItems are not updated if update() is called when they are hidden
- * [250272] When an item is deleted it does not get removed from the sceneeventfilters meaning a crash can occur
+ * [250272] When an item is deleted it does not get removed from the
+ sceneeventfilters meaning a crash can occur
+ * Fixed slowdown regression in QGraphicsItem::ItemCoordinateCache
+
+- QGraphicsGridLayout
+ * [242472] Fix a bug where the calculation of the maximum width of a column
+ was not calculated correctly.
+
+- QGraphicsScene
+ * [243707] Fixed crash when adding child before parent to scene
-QGraphicsView
* [245766] Rubber Band drag mode not updated correctly when scrolling
+- QGraphicsWidget
+ * [246215] Fixed a regression where we could cache the wrong size hint
+ because we called the virtual sizeHint() from the constructor.
+
- QHttp
* [208445] cancel request upon receiving unknown authentication method
+- QHostAddress
+ * [247330] Fix compilation on MinGW by adding a missing QPair include.
+
+- QLocalSocket
+ * Fix a bug that would cause QLocalSocket to disconnect 30 seconds
+ after a succesful delayed connection on UNIX.
+
- QMacStyle
* [248769] Fix regression where QMacStyle would only draw tabs when passed a QStyleOptionTabV3.
* Adjust the opacity value for popups.
@@ -84,6 +125,14 @@ Third party components
- QMainWindow
* [248048] Fix a regression that would cause tooltips to disappear when using the unified toolbar.
+- QMetaType
+ * [248890] Detailed description of QMetaType no longer contradicts
+ documentation of QMetaType::type()
+
+- QMutex
+ * Fix performance regression for contended mutexes as reported on
+ the qt4-preview-feedback list.
+
- QPainter
* [247492] Fix rendering bug in raster paint engine causing one-pixel
offset when drawing premultiplied ARGB32 images on RGB16 images.
@@ -100,6 +149,10 @@ Third party components
* [249175] Fix QPixmap::fromImage() of monochrome images to result in
black/white pixels and not transparent/white pixels.
+- QProcess
+ * [247865] Fix a crash when calling QProcess::start() and
+ startDetached() with an empty program string.
+
- QScrollBar
* [247985] Stylesheet: added ability to style scrollbar menus.
@@ -115,6 +168,9 @@ Third party components
* [245668] set also protocol, verifyMode and verifyDepth in
setSslConfiguration()
+- QString
+ * [249517] Fixed regression in replace(int, int, QChar) when string is empty
+
- QStyleSheetStyle
* Improved support for setting background and foreground roles in styles
such as the text color in a combo box popup on Mac and Cleanlooks, or
@@ -123,14 +179,30 @@ Third party components
* Fixed crash while styling the title bar of a QMdiArea.
* [246542] Fixed QToolButton::hover{ color:.... }
+- QThread
+ * [249997] Add documentation indicating that the priority set by
+ the programmer may be ignored, for example on Linux.
+
- QTreeView
* Fixed crash that may occurs when event are processed just after QSortFilterProxyModel
has been invalidated
* [246025] Fixed auto-expand that occurs while quicly collapsing an item after clicking on a child
- * [248805] Calling programatically QTreeView::sortByColumn was not working if manual
+ * [248805] Calling programatically QTreeView::sortByColumn was not working if manual
sorting is disabled
* [248163] Fixed possible crash in the paintEvent when spans are used.
+- QWidget
+ * [250388] Fixed potential crash in QWidget::scroll() when using the raster
+ graphics system.
+
+- QWidget
+ * [246852] Better handling WindowMaximizeButtonHint for widget with
+ layouts.
+
+-QLocale
+ * String-to-number conversion functions are now ignore trailing and
+ leading whitespaces in all locales as it is documented.
+
- QWizard
* [248107] Fixed bug on Vista causing Back button to connect twice to the back() signal.
@@ -158,6 +230,37 @@ Third party components
Qt for Linux/X11
----------------
+ * Proper resetting input contexts when switching between multiple
+ input context plugins.
+
+ * [244337] Improved input method handling when the widgets native
+ window id is recreated.
+
+ * Input methods preedit strings are properly reset when user
+ switches focus without commiting a string.
+
+ * [244607] Current focus widget is properly set and input method is
+ properly initialized when showing a toplevel that accepts
+ keyboard input.
+
+ * Unicode conversion functions will handle Latin-1 character set
+ only if they are used before QCoreApplication/QApplication is
+ constructed.
+
+ * Improved handling of failed unicode conversion.
+
+ * [232632] Fixed reparenting widgets to a difference X11 screen.
+
+ * [241888] The background of the drag-n-drop cursor is respected
+ according to the stylesheet.
+
+ * Fixed clipboard handling when the user manually creates an
+ instance of the QDesktopWidget.
+
+ * [226048] Fixed emitting a QDesktopWidget::resized() signal when
+ new screen appears or screen geometry is changed without
+ affecting the whole desktop geometry.
+
- Phonon/GStreamer
* [244259] Fixed a problem where the backend would fail to indicate an
error when streaming fails.
@@ -169,13 +272,13 @@ Qt for Linux/X11
CD playback.
- QGtkStyle
- * The system palette is no longer strictly forced. Also behavior related
+ * The system palette is no longer strictly forced. Also behavior related
to system theme changes have been improved.
* [249363] QFrame is now styled as a GtkScrolledWindow.
* [247653] Fixed a compilation issue on solaris.
- * Fixed palette and styling issues with the background color of
+ * Fixed palette and styling issues with the background color of
combo box popups.
- * [239829] Disabled alt-key navigation for QGtkStyle to follow
+ * [239829] Disabled alt-key navigation for QGtkStyle to follow
GTK+ behavior.
* [238196] Allow middle click to set scrollbar position to follow
GTK+ behavior.
@@ -199,6 +302,9 @@ Qt for Linux/X11
Qt for Windows
--------------
+ * [243583] Improved drag-and-drop handling when switching mouse
+ buttons fast.
+
- QCoreApplication
* [247401] Fixed a bug that would cause a restarted timer to fire
too early, causing Javascript in QtWebKit to consume 100% CPU on
@@ -232,13 +338,24 @@ Qt for Mac OS X
* Modify the colliding mice example to work better with coalesced updates.
* Fixed a bug where the drag cursor was not updated when modifier keys are used.
* [247947] Fixed a crash in drag and drop.
+ * The command + h shortcut is now enabled. (Hides the current window.)
-- Fix a crash when showing a widget that is window modal but has no parent.
-- [248803] Showing two dialogs at the same time don't get shared activation.
-- Added QSysInfo::MV_10_6 as an enum to test against.
-- Various compile fixes for Snow Leopard (preliminary support).
+- QDesktopWidget
+ * [244004] Support multiple screens that have different sizes properly.
+
+- macdeployqt
+ * The binary packages now includes the macdeployqt tool.
+ * macdeployqt now runs 'strip' on the deployed binaries.
+ * Fixed issue preventing the QtSvg from being deployed.
+- configure script
+ * Now supports "-arch i386" as an alias for "-arch x86".
+ * Detects invalid arch arguemnts and exits.
+- Fix a crash when showing a widget that is window modal but has no parent.
+- [248803] Showing two dialogs at the same time don't get shared activation.
+- Added QSysInfo::MV_10_6 as an enum to test against.
+- Various compile fixes for Snow Leopard (preliminary support).
- The uninstall-qt.py script included in the binary package no longer complains about removing itself multiple times.
- Document a bit clearer how qt_mac_set_dock_menu() works.
@@ -293,6 +410,7 @@ Qt for Windows CE
- moc
+ * [240368] moc parsing issue with "unsigned" subphrase
- uic
* [244998] Fixed include file generation for phonon widgets.
@@ -306,6 +424,8 @@ Qt for Windows CE
- qmake
* [248806] Ensure that the Xcode generator includes the right path to frameworks.
+ * [201495] Comment processing in qmake prevented file from being moc'ed
+ * On Mac OS, properly escape file names in QMAKE_BUNDLE_DATA
- configure
diff --git a/doc/src/examples/qxmlstreambookmarks.qdoc b/doc/src/examples/qxmlstreambookmarks.qdoc
index 7059043..fb3a1c1 100644
--- a/doc/src/examples/qxmlstreambookmarks.qdoc
+++ b/doc/src/examples/qxmlstreambookmarks.qdoc
@@ -103,8 +103,9 @@
The \c read() function accepts a QIODevice and sets it using
\l{QXmlStreamReader::setDevice()}{setDevice()}. The actual process
- of reading only takes place in event the file is a valid XBEL 1.0
- file. Otherwise, the \l{QXmlStreamReader::raiseError()}
+ of reading only takes place if the file is a valid XBEL 1.0 file.
+ Note that the XML input needs to be well-formed to be accepted by
+ QXmlStreamReader. Otherwise, the \l{QXmlStreamReader::raiseError()}
{raiseError()} function is used to display an error message.
\snippet examples/xml/streambookmarks/xbelreader.cpp 1
diff --git a/doc/src/qnamespace.qdoc b/doc/src/qnamespace.qdoc
index e6a1a36..d9f001e 100644
--- a/doc/src/qnamespace.qdoc
+++ b/doc/src/qnamespace.qdoc
@@ -142,7 +142,7 @@
QAction::iconVisibleInMenu property.
Menus that are currently open or menus already created in the native
- Mac OS X menubar MAY NOT pick up a change in this attribute. Changes
+ Mac OS X menubar \e{may not} pick up a change in this attribute. Changes
in the QAction::iconVisibleInMenu property will always be picked up.
\value AA_NativeWindows Ensures that widgets have native windows.
diff --git a/examples/layouts/flowlayout/flowlayout.cpp b/examples/layouts/flowlayout/flowlayout.cpp
index d1e857d..be6b476 100644
--- a/examples/layouts/flowlayout/flowlayout.cpp
+++ b/examples/layouts/flowlayout/flowlayout.cpp
@@ -43,16 +43,16 @@
#include "flowlayout.h"
-FlowLayout::FlowLayout(QWidget *parent, int margin, int spacing)
- : QLayout(parent)
+FlowLayout::FlowLayout(QWidget *parent, int margin, int hSpacing, int vSpacing)
+ : QLayout(parent), m_hSpace(hSpacing), m_vSpace(vSpacing)
{
setMargin(margin);
- setSpacing(spacing);
}
-FlowLayout::FlowLayout(int spacing)
+FlowLayout::FlowLayout(int margin, int hSpacing, int vSpacing)
+ : m_hSpace(hSpacing), m_vSpace(vSpacing)
{
- setSpacing(spacing);
+ setMargin(margin);
}
FlowLayout::~FlowLayout()
@@ -67,6 +67,24 @@ void FlowLayout::addItem(QLayoutItem *item)
itemList.append(item);
}
+int FlowLayout::horizontalSpacing() const
+{
+ if (m_hSpace >= 0) {
+ return m_hSpace;
+ } else {
+ return smartSpacing(QStyle::PM_LayoutHorizontalSpacing);
+ }
+}
+
+int FlowLayout::verticalSpacing() const
+{
+ if (m_vSpace >= 0) {
+ return m_vSpace;
+ } else {
+ return smartSpacing(QStyle::PM_LayoutVerticalSpacing);
+ }
+}
+
int FlowLayout::count() const
{
return itemList.size();
@@ -125,20 +143,27 @@ QSize FlowLayout::minimumSize() const
int FlowLayout::doLayout(const QRect &rect, bool testOnly) const
{
- int x = rect.x();
- int y = rect.y();
+ int left, top, right, bottom;
+ getContentsMargins(&left, &top, &right, &bottom);
+ QRect effectiveRect = rect.adjusted(+left, +top, -right, -bottom);
+ int x = effectiveRect.x();
+ int y = effectiveRect.y();
int lineHeight = 0;
QLayoutItem *item;
foreach (item, itemList) {
QWidget *wid = item->widget();
- int spaceX = spacing() + wid->style()->layoutSpacing(
+ int spaceX = horizontalSpacing();
+ if (spaceX == -1)
+ spaceX = wid->style()->layoutSpacing(
QSizePolicy::PushButton, QSizePolicy::PushButton, Qt::Horizontal);
- int spaceY = spacing() + wid->style()->layoutSpacing(
+ int spaceY = verticalSpacing();
+ if (spaceY == -1)
+ spaceY = wid->style()->layoutSpacing(
QSizePolicy::PushButton, QSizePolicy::PushButton, Qt::Vertical);
int nextX = x + item->sizeHint().width() + spaceX;
- if (nextX - spaceX > rect.right() && lineHeight > 0) {
- x = rect.x();
+ if (nextX - spaceX > effectiveRect.right() && lineHeight > 0) {
+ x = effectiveRect.x();
y = y + lineHeight + spaceY;
nextX = x + item->sizeHint().width() + spaceX;
lineHeight = 0;
@@ -150,5 +175,19 @@ int FlowLayout::doLayout(const QRect &rect, bool testOnly) const
x = nextX;
lineHeight = qMax(lineHeight, item->sizeHint().height());
}
- return y + lineHeight - rect.y();
+ return y + lineHeight - rect.y() + bottom;
}
+
+int FlowLayout::smartSpacing(QStyle::PixelMetric pm) const
+{
+ QObject *parent = this->parent();
+ if (!parent) {
+ return -1;
+ } else if (parent->isWidgetType()) {
+ QWidget *pw = static_cast<QWidget *>(parent);
+ return pw->style()->pixelMetric(pm, 0, pw);
+ } else {
+ return static_cast<QLayout *>(parent)->spacing();
+ }
+}
+
diff --git a/examples/layouts/flowlayout/flowlayout.h b/examples/layouts/flowlayout/flowlayout.h
index f864d8e..9940e55 100644
--- a/examples/layouts/flowlayout/flowlayout.h
+++ b/examples/layouts/flowlayout/flowlayout.h
@@ -49,11 +49,13 @@
class FlowLayout : public QLayout
{
public:
- FlowLayout(QWidget *parent, int margin = -1, int spacing = 0);
- FlowLayout(int spacing = 0);
+ FlowLayout(QWidget *parent, int margin = -1, int hSpacing = -1, int vSpacing = -1);
+ FlowLayout(int margin = -1, int hSpacing = -1, int vSpacing = -1);
~FlowLayout();
void addItem(QLayoutItem *item);
+ int horizontalSpacing() const;
+ int verticalSpacing() const;
Qt::Orientations expandingDirections() const;
bool hasHeightForWidth() const;
int heightForWidth(int) const;
@@ -66,8 +68,11 @@ public:
private:
int doLayout(const QRect &rect, bool testOnly) const;
+ int smartSpacing(QStyle::PixelMetric pm) const;
QList<QLayoutItem *> itemList;
+ int m_hSpace;
+ int m_vSpace;
};
#endif
diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION
index 9decb66..1762ecd 100644
--- a/src/3rdparty/webkit/VERSION
+++ b/src/3rdparty/webkit/VERSION
@@ -8,4 +8,4 @@ The commit imported was from the
and has the sha1 checksum
- f72c14123c593dc9d649d25b7186334bba0026b5
+ e446518445c51c56471e41b1697e2a9e9f3adf36
diff --git a/src/3rdparty/webkit/WebCore/ChangeLog b/src/3rdparty/webkit/WebCore/ChangeLog
index d0382f2..3774ea5 100644
--- a/src/3rdparty/webkit/WebCore/ChangeLog
+++ b/src/3rdparty/webkit/WebCore/ChangeLog
@@ -1,3 +1,51 @@
+2009-02-03 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Sam Weinig.
+
+ This is a follow up of r40546. Call toImage() once speeds up ImageBuffer::getImageData()
+
+ * platform/graphics/qt/ImageBufferQt.cpp:
+ (WebCore::ImageBuffer::getImageData):
+
+2009-02-03 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Sam Weinig and Oliver Hunt.
+
+ Added getImageData() support for QtWebKit.
+
+ [QT] lacks getImageData / putImageData support in Canvas
+ https://bugs.webkit.org/show_bug.cgi?id=22186
+
+ * platform/graphics/qt/ImageBufferQt.cpp:
+ (WebCore::ImageBuffer::getImageData):
+
+2009-04-14 Benjamin C Meyer <benjamin.meyer@torchmobile.com>
+
+ Reviewed by George Staikos.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25099
+
+ When creating a QNetworkRequest make sure to populate the
+ CacheLoadControlAttribute with the value set by the ResourceRequest::cachePolicy() so that the cache will be used as WebKit expects.
+
+ * WebKit/qt/tests/qwebpage/tst_qwebpage.cpp:
+ (tst_QWebPage::requestCache):
+
+ * platform/network/qt/ResourceRequestQt.cpp:
+ (WebCore::ResourceRequest::toNetworkRequest):
+
+2009-04-07 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Darin Adler
+
+ While working on <rdar://problem/5968249>, noticed some glaring problems with LocalStorage.
+
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::localStorage): Return the cached m_localStorage object if it exists to
+ avoid creating multiple representations for the same underlying StorageArea.
+ * page/DOMWindow.h:
+ (WebCore::DOMWindow::optionalLocalStorage): Return m_localStorage, not m_sessionStorage.
+
2009-04-06 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
Reviewed by Simon Hausmann.
diff --git a/src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.cpp b/src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.cpp
index ca4ea5a..25313ac 100644
--- a/src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.cpp
+++ b/src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.cpp
@@ -1,4 +1,4 @@
-/* ANSI-C code produced by gperf version 3.0.2 */
+/* ANSI-C code produced by gperf version 3.0.3 */
/* Command-line: gperf -a -L ANSI-C -E -C -c -o -t --key-positions='*' -NfindProp -Hhash_prop -Wwordlist_prop -D -s 2 CSSPropertyNames.gperf */
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
@@ -217,6 +217,9 @@ hash_prop (register const char *str, register unsigned int len)
#ifdef __GNUC__
__inline
+#ifdef __GNUC_STDC_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
#endif
const struct props *
findProp (register const char *str, register unsigned int len)
diff --git a/src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.c b/src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.c
index d0433e0..5ff0858 100644
--- a/src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.c
+++ b/src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.c
@@ -1,4 +1,4 @@
-/* ANSI-C code produced by gperf version 3.0.2 */
+/* ANSI-C code produced by gperf version 3.0.3 */
/* Command-line: gperf -L ANSI-C -E -C -n -o -t --key-positions='*' -NfindValue -Hhash_val -Wwordlist_value -D CSSValueKeywords.gperf */
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
@@ -179,6 +179,9 @@ hash_val (register const char *str, register unsigned int len)
#ifdef __GNUC__
__inline
+#ifdef __GNUC_STDC_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
#endif
const struct css_value *
findValue (register const char *str, register unsigned int len)
diff --git a/src/3rdparty/webkit/WebCore/generated/ColorData.c b/src/3rdparty/webkit/WebCore/generated/ColorData.c
index 18d9926..478566c 100644
--- a/src/3rdparty/webkit/WebCore/generated/ColorData.c
+++ b/src/3rdparty/webkit/WebCore/generated/ColorData.c
@@ -1,5 +1,5 @@
#include <string.h>// bogus
-/* ANSI-C code produced by gperf version 3.0.2 */
+/* ANSI-C code produced by gperf version 3.0.3 */
/* Command-line: gperf -CDEot -L ANSI-C --key-positions='*' -N findColor -D -s 2 */
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
@@ -141,6 +141,9 @@ hash (register const char *str, register unsigned int len)
#ifdef __GNUC__
__inline
+#ifdef __GNUC_STDC_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
#endif
const struct NamedColor *
findColor (register const char *str, register unsigned int len)
diff --git a/src/3rdparty/webkit/WebCore/generated/DocTypeStrings.cpp b/src/3rdparty/webkit/WebCore/generated/DocTypeStrings.cpp
index ad63b9e..686629c 100644
--- a/src/3rdparty/webkit/WebCore/generated/DocTypeStrings.cpp
+++ b/src/3rdparty/webkit/WebCore/generated/DocTypeStrings.cpp
@@ -1,5 +1,5 @@
#include <string.h>// bogus
-/* ANSI-C code produced by gperf version 3.0.2 */
+/* ANSI-C code produced by gperf version 3.0.3 */
/* Command-line: gperf -CEot -L ANSI-C --key-positions='*' -N findDoctypeEntry -F ,PubIDInfo::eAlmostStandards,PubIDInfo::eAlmostStandards */
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
@@ -331,6 +331,9 @@ hash (register const char *str, register unsigned int len)
#ifdef __GNUC__
__inline
+#ifdef __GNUC_STDC_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
#endif
const struct PubIDInfo *
findDoctypeEntry (register const char *str, register unsigned int len)
diff --git a/src/3rdparty/webkit/WebCore/generated/HTMLEntityNames.c b/src/3rdparty/webkit/WebCore/generated/HTMLEntityNames.c
index 470c4cd..993e106 100644
--- a/src/3rdparty/webkit/WebCore/generated/HTMLEntityNames.c
+++ b/src/3rdparty/webkit/WebCore/generated/HTMLEntityNames.c
@@ -1,4 +1,4 @@
-/* ANSI-C code produced by gperf version 3.0.2 */
+/* ANSI-C code produced by gperf version 3.0.3 */
/* Command-line: gperf -a -L ANSI-C -C -G -c -o -t --key-positions='*' -N findEntity -D -s 2 */
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
@@ -520,6 +520,9 @@ static const short lookup[] =
#ifdef __GNUC__
__inline
+#ifdef __GNUC_STDC_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
#endif
const struct Entity *
findEntity (register const char *str, register unsigned int len)
diff --git a/src/3rdparty/webkit/WebCore/generated/tokenizer.cpp b/src/3rdparty/webkit/WebCore/generated/tokenizer.cpp
index 1da1a0b..8462f51 100644
--- a/src/3rdparty/webkit/WebCore/generated/tokenizer.cpp
+++ b/src/3rdparty/webkit/WebCore/generated/tokenizer.cpp
@@ -78,42 +78,42 @@ static yyconst flex_int16_t yy_accept[479] =
{ 0,
0, 0, 0, 0, 0, 0, 69, 67, 2, 2,
67, 67, 67, 67, 67, 67, 67, 67, 67, 56,
- 67, 67, 67, 67, 15, 15, 15, 67, 67, 66,
+ 67, 67, 15, 15, 15, 67, 67, 67, 67, 66,
15, 15, 15, 65, 15, 2, 0, 0, 0, 14,
- 0, 0, 0, 0, 18, 18, 8, 0, 0, 9,
- 0, 0, 0, 15, 15, 15, 57, 0, 55, 0,
- 0, 56, 0, 54, 54, 54, 54, 54, 54, 54,
- 54, 54, 54, 16, 54, 54, 51, 54, 0, 0,
- 0, 35, 35, 35, 35, 35, 35, 35, 15, 15,
- 7, 62, 15, 0, 0, 15, 15, 0, 15, 6,
+ 0, 0, 0, 18, 18, 0, 8, 0, 0, 9,
+ 0, 0, 15, 15, 15, 0, 57, 0, 55, 0,
+ 0, 56, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 16, 54, 54, 51, 54, 0, 54, 0, 0,
+ 35, 35, 35, 35, 35, 35, 35, 0, 62, 15,
+ 0, 0, 15, 15, 0, 15, 15, 15, 7, 6,
5, 15, 15, 15, 15, 0, 0, 0, 14, 0,
- 0, 0, 18, 18, 18, 0, 18, 0, 0, 14,
- 0, 0, 4, 16, 15, 0, 0, 54, 54, 54,
- 0, 54, 41, 54, 37, 39, 54, 52, 43, 54,
- 42, 50, 54, 45, 44, 40, 54, 54, 0, 35,
- 35, 35, 35, 0, 35, 35, 35, 35, 35, 35,
- 15, 15, 15, 16, 15, 15, 63, 63, 15, 12,
- 10, 15, 13, 0, 0, 0, 17, 18, 18, 18,
- 17, 0, 0, 15, 0, 1, 54, 54, 54, 54,
- 46, 54, 53, 16, 47, 54, 3, 35, 35, 35,
-
- 35, 35, 35, 35, 35, 35, 35, 15, 15, 58,
- 0, 63, 63, 63, 62, 11, 0, 0, 0, 18,
- 18, 18, 0, 15, 0, 0, 54, 54, 54, 48,
- 49, 35, 35, 35, 35, 35, 35, 35, 35, 20,
- 15, 15, 64, 63, 63, 63, 63, 0, 0, 0,
- 0, 60, 0, 0, 0, 0, 18, 18, 18, 0,
- 15, 54, 54, 38, 35, 35, 35, 35, 35, 35,
- 21, 35, 15, 15, 64, 63, 63, 63, 63, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,
- 0, 0, 0, 0, 17, 18, 18, 17, 0, 15,
-
- 54, 54, 35, 35, 35, 35, 35, 19, 35, 15,
- 15, 64, 63, 63, 63, 63, 63, 63, 0, 59,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 18, 18, 0, 15, 54, 54, 35,
- 35, 35, 23, 35, 35, 15, 64, 63, 63, 63,
+ 0, 0, 18, 18, 0, 18, 18, 0, 0, 14,
+ 0, 0, 4, 16, 15, 0, 0, 54, 0, 41,
+ 54, 37, 39, 54, 52, 43, 54, 42, 50, 54,
+ 45, 44, 40, 54, 54, 54, 54, 54, 0, 35,
+ 35, 0, 35, 35, 35, 35, 35, 35, 35, 35,
+ 15, 15, 16, 15, 15, 63, 63, 15, 15, 12,
+ 10, 15, 13, 0, 0, 0, 17, 17, 18, 18,
+ 18, 0, 0, 15, 0, 1, 54, 54, 46, 54,
+ 53, 16, 47, 54, 54, 54, 3, 35, 35, 35,
+
+ 35, 35, 35, 35, 35, 35, 35, 15, 58, 0,
+ 63, 63, 63, 62, 15, 11, 0, 0, 0, 18,
+ 18, 18, 0, 15, 0, 0, 54, 48, 49, 54,
+ 54, 35, 35, 35, 35, 35, 35, 35, 20, 35,
+ 15, 64, 63, 63, 63, 63, 0, 0, 0, 0,
+ 60, 0, 15, 0, 0, 0, 18, 18, 18, 0,
+ 15, 54, 54, 38, 35, 35, 35, 35, 35, 21,
+ 35, 35, 15, 64, 63, 63, 63, 63, 63, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 60, 0,
+ 0, 15, 0, 0, 17, 17, 18, 18, 0, 15,
+
+ 54, 54, 35, 35, 35, 35, 19, 35, 35, 15,
+ 64, 63, 63, 63, 63, 63, 63, 0, 59, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 15, 0, 0, 18, 18, 0, 15, 54, 54, 35,
+ 35, 23, 35, 35, 35, 15, 64, 63, 63, 63,
63, 63, 63, 63, 0, 59, 0, 0, 0, 59,
0, 0, 0, 0, 18, 15, 54, 35, 35, 35,
35, 64, 0, 0, 0, 36, 15, 35, 35, 35,
@@ -122,7 +122,7 @@ static yyconst flex_int16_t yy_accept[479] =
35, 35, 35, 35, 35, 35, 35, 35, 0, 0,
0, 0, 0, 0, 35, 35, 35, 35, 25, 35,
- 35, 35, 0, 0, 0, 61, 0, 0, 26, 35,
+ 35, 35, 0, 61, 0, 0, 0, 0, 26, 35,
35, 35, 35, 27, 35, 0, 0, 0, 0, 31,
35, 35, 35, 35, 0, 0, 0, 35, 35, 35,
35, 0, 0, 35, 35, 29, 35, 0, 0, 35,
@@ -138,437 +138,909 @@ static yyconst flex_int32_t yy_ec[256] =
1, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 12, 18, 19, 20, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 12, 22, 23,
- 24, 25, 26, 27, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 12, 28, 12, 29, 30, 12, 31, 32, 33, 34,
-
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 12, 59, 1, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
-
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 12, 54, 12, 55, 56, 12, 57, 58, 59, 60,
+
+ 61, 62, 63, 64, 65, 37, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 12, 84, 1, 85, 85, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 85, 85
} ;
-static yyconst flex_int32_t yy_meta[61] =
+static yyconst flex_int32_t yy_meta[86] =
{ 0,
- 1, 2, 3, 3, 3, 4, 5, 5, 5, 5,
- 5, 5, 5, 6, 7, 5, 5, 8, 5, 5,
- 9, 5, 5, 5, 5, 10, 5, 11, 5, 11,
- 12, 12, 12, 12, 12, 12, 11, 11, 11, 11,
- 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
- 11, 11, 11, 11, 11, 11, 5, 5, 5, 11
+ 1, 2, 3, 4, 4, 5, 6, 7, 6, 6,
+ 6, 6, 7, 8, 9, 6, 6, 10, 6, 6,
+ 11, 6, 6, 6, 6, 12, 6, 13, 13, 13,
+ 13, 13, 13, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 6, 14, 13, 13, 13, 13,
+ 13, 13, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 6, 6, 6, 14
} ;
-static yyconst flex_int16_t yy_base[517] =
+static yyconst flex_int16_t yy_base[550] =
{ 0,
- 0, 0, 39, 41, 1573, 1566, 1594, 2399, 62, 71,
- 76, 61, 69, 1560, 78, 1559, 89, 1561, 1565, 132,
- 1573, 91, 123, 1555, 80, 104, 97, 1554, 1551, 2399,
- 85, 176, 175, 2399, 177, 193, 204, 1531, 84, 2399,
- 242, 110, 180, 196, 1545, 205, 2399, 113, 277, 2399,
- 1547, 72, 221, 133, 206, 234, 181, 1555, 1548, 1530,
- 1528, 0, 268, 118, 1515, 221, 60, 240, 92, 230,
- 95, 223, 244, 267, 238, 286, 1512, 268, 1521, 279,
- 294, 1510, 278, 190, 290, 232, 292, 293, 308, 335,
- 2399, 2399, 317, 326, 1516, 351, 336, 356, 366, 2399,
-
- 2399, 320, 367, 369, 370, 1478, 393, 327, 345, 420,
- 455, 398, 1495, 490, 1481, 446, 481, 372, 365, 386,
- 525, 560, 2399, 325, 388, 1491, 387, 1477, 595, 1476,
- 516, 399, 1475, 34, 1472, 1461, 378, 1438, 1430, 318,
- 1429, 1426, 323, 1424, 1423, 1422, 231, 387, 1430, 377,
- 1411, 630, 1396, 551, 382, 108, 415, 408, 419, 412,
- 586, 436, 665, 1400, 624, 456, 419, 1382, 457, 490,
- 491, 625, 492, 1362, 526, 656, 672, 681, 1378, 716,
- 707, 527, 723, 561, 1374, 2399, 732, 1346, 767, 437,
- 1322, 410, 1312, 445, 1311, 546, 2399, 469, 758, 1303,
-
- 802, 576, 482, 580, 470, 440, 472, 793, 809, 2399,
- 818, 515, 1288, 1273, 853, 552, 1205, 839, 855, 861,
- 877, 883, 899, 645, 1227, 483, 905, 921, 612, 1183,
- 1168, 609, 927, 943, 626, 517, 628, 508, 629, 1167,
- 949, 965, 971, 550, 1167, 1157, 1123, 1006, 1020, 666,
- 682, 2399, 1047, 1091, 1006, 1038, 1055, 1063, 1071, 1079,
- 632, 1087, 1095, 1105, 539, 1103, 1111, 542, 543, 681,
- 1097, 683, 1119, 1127, 1135, 585, 1091, 1083, 1067, 1039,
- 721, 752, 772, 1170, 717, 1205, 1184, 1217, 1244, 1258,
- 1285, 1320, 984, 1244, 2399, 1276, 1311, 917, 1328, 767,
-
- 1336, 1344, 733, 1352, 1360, 734, 578, 899, 582, 1395,
- 1381, 1397, 623, 853, 822, 794, 793, 760, 807, 2399,
- 875, 788, 1432, 1459, 1494, 818, 769, 1440, 1529, 1564,
- 1438, 702, 1485, 919, 1520, 1555, 849, 963, 1572, 587,
- 1299, 1580, 706, 441, 614, 1615, 1601, 715, 2399, 2399,
- 2399, 2399, 2399, 2399, 1473, 839, 856, 1617, 1652, 804,
- 852, 1638, 1654, 633, 1480, 871, 1508, 1650, 1542, 644,
- 834, 1673, 1679, 1695, 1701, 2399, 1015, 872, 915, 916,
- 877, 959, 704, 616, 586, 2399, 1717, 1723, 1739, 1002,
- 1148, 514, 961, 989, 990, 1016, 1745, 1761, 1767, 1802,
-
- 1137, 1008, 1018, 1017, 985, 1129, 878, 1038, 1790, 1806,
- 1829, 1211, 1827, 1849, 944, 1057, 1152, 787, 584, 615,
- 1196, 918, 1863, 1890, 1279, 2399, 1869, 1867, 516, 1199,
- 1154, 943, 1242, 515, 653, 1904, 1906, 1941, 1968, 480,
- 945, 1200, 1149, 1214, 1927, 1949, 1947, 1239, 1301, 1207,
- 1302, 1974, 1990, 1392, 1267, 411, 1354, 1996, 2012, 1310,
- 376, 1241, 1039, 2018, 2034, 1338, 348, 1377, 2040, 1216,
- 1391, 1421, 1394, 324, 1226, 1376, 263, 2399, 2075, 2080,
- 2091, 2096, 2101, 2110, 2117, 2128, 2137, 2142, 2153, 2165,
- 2167, 2176, 2181, 2190, 2195, 2204, 2213, 2225, 2234, 2243,
-
- 2248, 2260, 2265, 2276, 2281, 2292, 2303, 2314, 2319, 2330,
- 2341, 2346, 2357, 2366, 2377, 2386
+ 0, 0, 64, 66, 54, 56, 1407, 6578, 93, 98,
+ 107, 83, 155, 1376, 77, 1350, 99, 1345, 1328, 207,
+ 1334, 275, 100, 108, 125, 326, 1315, 1313, 1312, 6578,
+ 141, 110, 151, 6578, 105, 197, 295, 89, 107, 6578,
+ 387, 120, 0, 429, 1281, 471, 6578, 117, 532, 6578,
+ 1283, 269, 137, 176, 281, 574, 283, 1289, 1292, 1246,
+ 1257, 0, 1221, 249, 135, 282, 276, 153, 91, 169,
+ 299, 308, 318, 266, 1219, 320, 616, 102, 1246, 348,
+ 1209, 316, 127, 359, 346, 347, 375, 658, 6578, 208,
+ 700, 1241, 400, 409, 1220, 397, 327, 761, 6578, 6578,
+
+ 6578, 411, 419, 414, 424, 248, 368, 355, 356, 822,
+ 883, 0, 1191, 925, 967, 1190, 1028, 381, 421, 464,
+ 1089, 1150, 6578, 214, 456, 1225, 312, 1151, 1192, 1142,
+ 442, 1139, 1134, 452, 1131, 1104, 458, 1082, 1060, 358,
+ 1046, 1028, 1027, 462, 453, 1000, 1253, 469, 1023, 463,
+ 986, 1295, 492, 486, 500, 484, 502, 513, 969, 1356,
+ 425, 1417, 1001, 545, 494, 193, 993, 543, 1459, 544,
+ 554, 558, 555, 508, 398, 1520, 0, 1562, 956, 1623,
+ 1684, 570, 1745, 563, 993, 6578, 948, 1806, 935, 520,
+ 921, 498, 914, 546, 1848, 564, 6578, 585, 913, 1909,
+
+ 568, 576, 586, 606, 631, 640, 1951, 2012, 6578, 0,
+ 203, 924, 907, 694, 2054, 565, 543, 2115, 0, 2157,
+ 2218, 2279, 2340, 669, 912, 505, 2401, 856, 840, 2443,
+ 612, 615, 2504, 608, 557, 639, 682, 668, 839, 2546,
+ 2607, 0, 288, 863, 841, 819, 741, 794, 573, 418,
+ 6578, 2668, 2710, 620, 2771, 0, 2813, 2874, 2935, 2996,
+ 3057, 3131, 3173, 3234, 670, 3295, 718, 719, 729, 763,
+ 684, 3337, 3398, 0, 456, 782, 777, 760, 742, 829,
+ 649, 834, 3459, 572, 3520, 854, 894, 915, 920, 3581,
+ 3642, 3684, 593, 3745, 6578, 697, 3806, 3867, 3928, 3989,
+
+ 4050, 4111, 730, 4172, 731, 683, 672, 759, 4214, 4275,
+ 0, 762, 682, 429, 417, 414, 411, 859, 6578, 650,
+ 838, 957, 4336, 4397, 607, 926, 988, 4458, 4519, 4580,
+ 1002, 672, 1010, 4622, 4664, 1042, 752, 4706, 4767, 756,
+ 4828, 376, 812, 847, 1069, 1033, 0, 387, 6578, 6578,
+ 6578, 6578, 6578, 6578, 1122, 924, 963, 4870, 1162, 1049,
+ 1050, 4912, 4973, 678, 1063, 850, 1074, 5005, 1103, 841,
+ 989, 0, 5062, 5104, 5146, 6578, 1066, 1080, 1081, 1084,
+ 1108, 1137, 877, 328, 273, 6578, 5188, 5230, 5272, 641,
+ 1140, 884, 916, 836, 1105, 1161, 5314, 5356, 1233, 1286,
+
+ 1147, 1138, 919, 1206, 1165, 1186, 1141, 1207, 1291, 1263,
+ 1316, 1345, 1327, 5398, 1086, 1029, 1225, 1133, 258, 1247,
+ 1248, 1310, 1388, 6578, 1427, 5440, 1449, 5501, 242, 1311,
+ 1341, 1324, 1326, 173, 1317, 1454, 5562, 1480, 5604, 170,
+ 1061, 1328, 1355, 1372, 1552, 5646, 5688, 1351, 1374, 1389,
+ 1409, 5730, 5772, 1419, 1456, 154, 1453, 5814, 5856, 1457,
+ 112, 897, 793, 5898, 1557, 1418, 109, 1348, 1582, 1550,
+ 1477, 1481, 1485, 90, 1564, 1458, 39, 6578, 5959, 5964,
+ 5977, 5982, 5987, 5994, 6004, 6017, 296, 6022, 6032, 6045,
+ 6059, 651, 6064, 6074, 6079, 6089, 6099, 6103, 571, 6112,
+
+ 6125, 6138, 6152, 6166, 6176, 6186, 6191, 6203, 657, 6217,
+ 758, 6222, 6234, 6247, 801, 6261, 859, 6266, 6278, 6291,
+ 6304, 6317, 6330, 1086, 6335, 6348, 1120, 6353, 6365, 6378,
+ 6391, 6404, 6417, 6430, 6435, 6448, 1216, 6453, 6465, 6478,
+ 6491, 6504, 6517, 1219, 1220, 6530, 6543, 6553, 6563
} ;
-static yyconst flex_int16_t yy_def[517] =
+static yyconst flex_int16_t yy_def[550] =
{ 0,
478, 1, 1, 1, 1, 1, 478, 478, 478, 478,
478, 479, 480, 478, 481, 478, 482, 478, 478, 478,
- 478, 483, 484, 478, 485, 485, 485, 478, 478, 478,
- 485, 485, 485, 478, 485, 478, 478, 478, 479, 478,
- 486, 480, 478, 487, 488, 488, 478, 481, 489, 478,
- 478, 478, 484, 485, 485, 485, 20, 490, 478, 491,
- 478, 20, 492, 493, 493, 493, 493, 493, 493, 493,
- 493, 493, 493, 493, 493, 493, 493, 493, 478, 483,
- 494, 495, 495, 495, 495, 495, 495, 495, 485, 485,
- 478, 478, 485, 496, 478, 485, 485, 478, 485, 478,
-
- 478, 485, 485, 485, 485, 478, 479, 479, 479, 479,
- 486, 478, 488, 46, 488, 497, 46, 481, 481, 481,
- 481, 489, 478, 478, 485, 490, 498, 493, 493, 493,
- 499, 493, 493, 493, 493, 493, 493, 493, 493, 493,
+ 478, 483, 484, 484, 484, 485, 478, 478, 478, 478,
+ 484, 484, 484, 478, 484, 478, 478, 478, 479, 478,
+ 486, 480, 487, 488, 488, 489, 478, 481, 490, 478,
+ 478, 478, 484, 484, 484, 485, 20, 491, 478, 492,
+ 478, 20, 493, 493, 493, 493, 493, 493, 493, 493,
+ 493, 493, 493, 493, 493, 493, 494, 493, 478, 483,
+ 495, 495, 495, 495, 495, 495, 495, 496, 478, 484,
+ 497, 478, 484, 484, 498, 484, 484, 484, 478, 478,
+
+ 478, 484, 484, 484, 484, 478, 479, 479, 479, 479,
+ 486, 499, 488, 488, 500, 488, 114, 501, 501, 501,
+ 501, 502, 478, 478, 484, 503, 504, 493, 505, 493,
+ 493, 493, 493, 493, 493, 493, 493, 493, 493, 493,
493, 493, 493, 493, 493, 493, 493, 493, 478, 495,
- 495, 495, 495, 500, 495, 495, 495, 495, 495, 495,
- 90, 485, 90, 478, 485, 485, 501, 478, 485, 485,
- 485, 485, 485, 478, 479, 110, 478, 114, 488, 114,
- 46, 481, 121, 485, 502, 478, 129, 493, 129, 493,
- 493, 493, 493, 493, 493, 493, 478, 495, 152, 495,
-
- 152, 495, 495, 495, 495, 495, 495, 90, 163, 478,
- 478, 503, 478, 478, 504, 485, 478, 110, 478, 114,
- 180, 46, 121, 485, 502, 498, 129, 189, 493, 493,
- 493, 495, 152, 201, 495, 495, 495, 495, 495, 495,
- 90, 163, 478, 505, 478, 478, 478, 504, 504, 506,
- 507, 478, 508, 478, 110, 478, 114, 180, 46, 121,
- 485, 129, 189, 493, 495, 152, 201, 495, 495, 495,
- 495, 495, 90, 163, 478, 509, 478, 478, 478, 478,
- 478, 506, 478, 510, 507, 511, 504, 504, 504, 504,
- 504, 508, 478, 110, 478, 114, 180, 488, 121, 485,
-
- 129, 189, 495, 152, 201, 495, 495, 495, 495, 485,
- 163, 478, 512, 478, 478, 478, 478, 478, 478, 478,
- 506, 506, 506, 506, 510, 507, 507, 507, 507, 511,
- 291, 478, 110, 488, 180, 121, 485, 493, 189, 495,
- 495, 201, 495, 495, 495, 485, 478, 478, 478, 478,
- 478, 478, 478, 478, 506, 506, 506, 324, 507, 507,
- 507, 329, 291, 478, 488, 485, 493, 495, 495, 495,
- 495, 478, 324, 329, 291, 478, 485, 495, 495, 495,
- 495, 495, 495, 495, 495, 478, 324, 329, 291, 485,
- 495, 495, 495, 495, 495, 495, 324, 329, 291, 513,
-
- 495, 495, 495, 495, 495, 495, 495, 495, 324, 329,
- 513, 411, 514, 515, 495, 495, 495, 495, 495, 495,
- 495, 495, 515, 515, 478, 478, 515, 516, 495, 495,
- 495, 495, 495, 495, 495, 515, 424, 515, 424, 495,
- 495, 495, 495, 495, 424, 515, 439, 495, 495, 495,
- 495, 424, 439, 495, 495, 495, 495, 424, 439, 495,
- 495, 495, 495, 424, 439, 495, 495, 495, 439, 495,
+ 495, 506, 495, 495, 495, 495, 495, 495, 495, 495,
+ 484, 98, 478, 484, 484, 507, 478, 484, 98, 484,
+ 484, 484, 484, 478, 508, 508, 509, 114, 488, 114,
+ 114, 501, 501, 484, 510, 478, 493, 147, 493, 493,
+ 493, 493, 493, 493, 147, 493, 478, 495, 495, 160,
+
+ 495, 495, 495, 495, 495, 495, 160, 98, 478, 511,
+ 512, 478, 478, 513, 98, 484, 478, 514, 515, 114,
+ 114, 114, 501, 484, 510, 516, 147, 493, 493, 147,
+ 493, 495, 160, 495, 495, 495, 495, 495, 495, 160,
+ 98, 517, 518, 478, 478, 478, 519, 519, 520, 521,
+ 478, 522, 98, 478, 523, 524, 525, 525, 258, 526,
+ 98, 147, 147, 147, 495, 160, 495, 495, 495, 495,
+ 495, 160, 98, 527, 528, 478, 478, 478, 478, 478,
+ 520, 478, 529, 530, 531, 532, 532, 532, 532, 532,
+ 533, 98, 478, 534, 478, 535, 535, 297, 536, 98,
+
+ 147, 301, 495, 160, 495, 495, 495, 495, 160, 98,
+ 537, 538, 478, 478, 478, 478, 478, 478, 478, 539,
+ 539, 539, 539, 540, 541, 541, 541, 541, 542, 543,
+ 300, 478, 534, 297, 298, 536, 300, 301, 301, 495,
+ 160, 495, 495, 495, 495, 300, 544, 478, 478, 478,
+ 478, 478, 478, 478, 539, 539, 539, 323, 541, 541,
+ 541, 328, 543, 478, 335, 300, 339, 495, 495, 495,
+ 495, 545, 323, 328, 363, 478, 300, 495, 495, 495,
+ 495, 495, 495, 495, 495, 478, 323, 328, 363, 300,
+ 495, 495, 495, 495, 495, 495, 323, 328, 543, 546,
+
+ 495, 495, 495, 495, 495, 495, 495, 495, 539, 541,
+ 546, 546, 547, 548, 495, 495, 495, 495, 495, 495,
+ 495, 495, 478, 478, 547, 549, 547, 547, 495, 495,
+ 495, 495, 495, 495, 495, 547, 428, 547, 428, 495,
+ 495, 495, 495, 495, 547, 437, 428, 495, 495, 495,
+ 495, 437, 428, 495, 495, 495, 495, 437, 428, 495,
+ 495, 495, 495, 437, 547, 495, 495, 495, 547, 495,
495, 495, 495, 495, 495, 495, 495, 0, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
- 478, 478, 478, 478, 478, 478
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478
} ;
-static yyconst flex_int16_t yy_nxt[2460] =
+static yyconst flex_int16_t yy_nxt[6664] =
{ 0,
8, 9, 10, 9, 9, 9, 11, 12, 13, 14,
8, 8, 15, 8, 8, 16, 8, 17, 18, 19,
- 20, 8, 21, 8, 8, 8, 22, 23, 24, 25,
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
- 25, 25, 25, 26, 25, 25, 25, 25, 25, 25,
- 27, 25, 25, 25, 25, 25, 8, 28, 29, 25,
- 30, 131, 30, 36, 36, 36, 36, 36, 40, 31,
- 191, 31, 36, 36, 36, 36, 36, 37, 37, 37,
- 37, 37, 32, 33, 32, 33, 42, 131, 41, 43,
- 40, 40, 52, 92, 134, 34, 44, 34, 92, 46,
-
- 46, 46, 46, 46, 46, 49, 51, 94, 80, 52,
- 92, 41, 94, 98, 38, 124, 53, 92, 81, 131,
- 95, 96, 131, 83, 94, 40, 84, 478, 102, 85,
- 478, 94, 55, 86, 87, 154, 88, 44, 139, 137,
- 49, 56, 59, 90, 99, 131, 92, 132, 97, 60,
- 61, 203, 62, 90, 90, 90, 90, 90, 90, 63,
- 94, 64, 65, 65, 66, 67, 68, 65, 69, 70,
- 71, 65, 72, 65, 73, 74, 65, 75, 65, 76,
- 77, 78, 65, 65, 65, 65, 65, 65, 92, 92,
- 92, 65, 95, 96, 36, 36, 36, 36, 36, 478,
-
- 112, 57, 94, 94, 94, 37, 37, 37, 37, 37,
- 112, 112, 112, 112, 112, 112, 114, 154, 104, 92,
- 103, 105, 95, 96, 65, 117, 114, 114, 114, 114,
- 114, 114, 116, 94, 156, 117, 117, 117, 117, 117,
- 117, 90, 38, 39, 39, 39, 107, 92, 131, 109,
- 131, 90, 90, 90, 90, 90, 90, 131, 131, 154,
- 140, 94, 110, 133, 195, 131, 158, 131, 125, 111,
- 144, 131, 110, 110, 110, 110, 110, 110, 48, 48,
- 48, 118, 135, 95, 143, 138, 141, 145, 129, 120,
- 154, 146, 142, 136, 131, 131, 478, 121, 129, 129,
-
- 129, 129, 129, 129, 122, 154, 81, 121, 121, 121,
- 121, 121, 121, 131, 152, 155, 147, 154, 148, 154,
- 154, 92, 159, 160, 152, 152, 152, 152, 152, 152,
- 92, 150, 157, 92, 40, 94, 89, 89, 89, 89,
- 89, 95, 95, 194, 94, 131, 163, 94, 92, 92,
- 131, 154, 40, 170, 41, 161, 163, 163, 163, 163,
- 163, 163, 94, 94, 92, 161, 161, 161, 161, 161,
- 161, 165, 41, 193, 48, 154, 167, 40, 94, 92,
- 92, 168, 92, 92, 40, 166, 167, 167, 167, 167,
- 167, 167, 49, 94, 94, 39, 94, 94, 40, 49,
-
- 40, 92, 127, 154, 154, 131, 186, 169, 192, 154,
- 172, 198, 202, 49, 131, 94, 171, 173, 177, 184,
- 41, 108, 175, 175, 175, 108, 131, 40, 177, 177,
- 177, 177, 177, 177, 196, 154, 211, 131, 154, 154,
- 176, 205, 154, 230, 213, 190, 154, 41, 207, 92,
- 176, 176, 176, 176, 176, 176, 39, 39, 39, 107,
- 204, 206, 109, 94, 131, 194, 180, 154, 154, 210,
- 215, 229, 131, 370, 239, 110, 180, 180, 180, 180,
- 180, 180, 111, 94, 94, 110, 110, 110, 110, 110,
- 110, 113, 113, 113, 113, 113, 154, 154, 226, 154,
-
- 232, 181, 186, 92, 210, 92, 240, 154, 238, 154,
- 178, 181, 181, 181, 181, 181, 181, 94, 94, 94,
- 178, 178, 178, 178, 178, 178, 119, 182, 182, 182,
- 119, 236, 211, 40, 269, 154, 189, 40, 271, 40,
- 245, 154, 154, 154, 154, 183, 189, 189, 189, 189,
- 189, 189, 49, 41, 49, 183, 183, 183, 183, 183,
- 183, 48, 48, 48, 118, 92, 154, 211, 403, 154,
- 154, 201, 120, 131, 92, 277, 306, 303, 307, 94,
- 121, 201, 201, 201, 201, 201, 201, 122, 94, 231,
- 121, 121, 121, 121, 121, 121, 128, 128, 128, 128,
-
- 128, 224, 211, 154, 368, 154, 208, 154, 344, 154,
- 314, 154, 345, 154, 154, 187, 208, 208, 208, 208,
- 208, 208, 131, 235, 237, 187, 187, 187, 187, 187,
- 187, 151, 151, 151, 151, 151, 154, 92, 92, 131,
- 211, 154, 154, 154, 165, 92, 371, 433, 349, 265,
- 199, 94, 94, 154, 264, 154, 154, 154, 92, 94,
- 199, 199, 199, 199, 199, 199, 162, 162, 162, 162,
- 162, 154, 94, 283, 268, 270, 218, 272, 384, 216,
- 154, 300, 376, 261, 444, 209, 218, 218, 218, 218,
- 218, 218, 219, 284, 283, 209, 209, 209, 209, 209,
-
- 209, 220, 219, 219, 219, 219, 219, 219, 154, 286,
- 154, 220, 220, 220, 220, 220, 220, 179, 179, 179,
- 179, 179, 281, 281, 281, 281, 281, 222, 309, 283,
- 308, 154, 211, 154, 396, 252, 221, 222, 222, 222,
- 222, 222, 222, 223, 286, 364, 221, 221, 221, 221,
- 221, 221, 227, 223, 223, 223, 223, 223, 223, 283,
- 154, 154, 227, 227, 227, 227, 227, 227, 188, 188,
- 188, 188, 188, 319, 319, 319, 319, 319, 233, 284,
- 92, 283, 340, 343, 337, 354, 320, 228, 233, 233,
- 233, 233, 233, 233, 94, 283, 286, 228, 228, 228,
-
- 228, 228, 228, 200, 200, 200, 200, 200, 319, 319,
- 319, 319, 319, 241, 154, 284, 283, 432, 353, 352,
- 285, 320, 234, 241, 241, 241, 241, 241, 241, 242,
- 283, 286, 234, 234, 234, 234, 234, 234, 243, 242,
- 242, 242, 242, 242, 242, 286, 283, 351, 243, 243,
- 243, 243, 243, 243, 248, 248, 248, 248, 248, 255,
- 250, 154, 92, 283, 283, 251, 284, 252, 385, 255,
- 255, 255, 255, 255, 255, 256, 94, 282, 350, 286,
- 253, 257, 283, 284, 92, 256, 256, 256, 256, 256,
- 256, 257, 257, 257, 257, 257, 257, 258, 94, 154,
-
- 366, 377, 284, 259, 154, 154, 391, 258, 258, 258,
- 258, 258, 258, 259, 259, 259, 259, 259, 259, 260,
- 113, 113, 113, 113, 113, 262, 154, 394, 421, 260,
- 260, 260, 260, 260, 260, 262, 262, 262, 262, 262,
- 262, 263, 154, 154, 116, 154, 116, 266, 435, 392,
- 393, 263, 263, 263, 263, 263, 263, 266, 266, 266,
- 266, 266, 266, 267, 128, 128, 128, 128, 128, 273,
- 154, 154, 154, 267, 267, 267, 267, 267, 267, 273,
- 273, 273, 273, 273, 273, 274, 154, 448, 154, 442,
- 131, 275, 429, 395, 404, 274, 274, 274, 274, 274,
-
- 274, 275, 275, 275, 275, 275, 275, 248, 248, 248,
- 248, 248, 154, 250, 332, 400, 154, 154, 251, 419,
- 252, 281, 281, 281, 281, 281, 294, 478, 92, 94,
- 405, 406, 478, 253, 252, 154, 294, 294, 294, 294,
- 294, 294, 94, 154, 154, 154, 416, 253, 281, 281,
- 281, 281, 287, 417, 289, 418, 468, 407, 295, 289,
- 289, 290, 390, 408, 318, 154, 154, 291, 295, 295,
- 295, 295, 295, 295, 292, 296, 422, 291, 291, 291,
- 291, 291, 291, 297, 154, 296, 296, 296, 296, 296,
- 296, 298, 317, 297, 297, 297, 297, 297, 297, 299,
-
- 430, 298, 298, 298, 298, 298, 298, 301, 316, 299,
- 299, 299, 299, 299, 299, 302, 315, 301, 301, 301,
- 301, 301, 301, 304, 154, 302, 302, 302, 302, 302,
- 302, 305, 131, 304, 304, 304, 304, 304, 304, 310,
- 293, 305, 305, 305, 305, 305, 305, 311, 280, 310,
- 310, 310, 310, 310, 310, 312, 154, 311, 311, 311,
- 311, 311, 311, 420, 154, 312, 312, 312, 312, 312,
- 312, 282, 282, 282, 321, 154, 154, 323, 415, 154,
- 401, 154, 279, 402, 441, 281, 281, 281, 281, 281,
- 324, 478, 278, 450, 154, 131, 478, 325, 252, 431,
-
- 324, 324, 324, 324, 324, 324, 285, 285, 285, 326,
- 131, 253, 478, 478, 478, 478, 478, 328, 281, 281,
- 281, 281, 281, 154, 478, 329, 154, 154, 478, 478,
- 434, 252, 330, 440, 154, 329, 329, 329, 329, 329,
- 329, 154, 226, 154, 253, 281, 281, 281, 281, 281,
- 449, 478, 254, 154, 456, 451, 478, 472, 252, 281,
- 281, 281, 281, 281, 333, 478, 154, 476, 154, 154,
- 478, 253, 252, 454, 333, 333, 333, 333, 333, 333,
- 425, 425, 425, 425, 425, 253, 287, 287, 287, 287,
- 287, 443, 478, 426, 154, 467, 334, 478, 247, 252,
-
- 151, 151, 151, 151, 151, 331, 334, 334, 334, 334,
- 334, 334, 253, 246, 462, 331, 331, 331, 331, 331,
- 331, 281, 281, 281, 281, 287, 154, 289, 154, 154,
- 154, 335, 289, 289, 290, 455, 457, 154, 131, 131,
- 291, 335, 335, 335, 335, 335, 335, 292, 336, 131,
- 291, 291, 291, 291, 291, 291, 338, 466, 336, 336,
- 336, 336, 336, 336, 339, 154, 338, 338, 338, 338,
- 338, 338, 341, 131, 339, 339, 339, 339, 339, 339,
- 342, 154, 341, 341, 341, 341, 341, 341, 470, 226,
- 342, 342, 342, 342, 342, 342, 89, 89, 89, 89,
-
- 89, 346, 463, 154, 154, 116, 217, 214, 92, 460,
- 471, 346, 346, 346, 346, 346, 346, 347, 154, 154,
- 164, 154, 94, 154, 477, 473, 475, 347, 347, 347,
- 347, 347, 347, 355, 319, 319, 319, 355, 154, 283,
- 461, 359, 319, 319, 319, 359, 356, 197, 154, 131,
- 131, 131, 283, 131, 360, 474, 131, 131, 363, 284,
- 322, 357, 357, 357, 322, 131, 283, 286, 363, 363,
- 363, 363, 363, 363, 355, 319, 319, 319, 355, 358,
- 283, 179, 179, 179, 179, 179, 284, 356, 131, 358,
- 358, 358, 358, 358, 358, 282, 282, 282, 321, 131,
-
- 284, 323, 131, 131, 131, 39, 127, 116, 116, 188,
- 188, 188, 188, 188, 324, 39, 39, 39, 39, 39,
- 39, 325, 116, 174, 324, 324, 324, 324, 324, 324,
- 327, 361, 361, 361, 327, 131, 164, 154, 149, 131,
- 365, 283, 131, 200, 200, 200, 200, 200, 57, 362,
- 365, 365, 365, 365, 365, 365, 286, 63, 59, 362,
- 362, 362, 362, 362, 362, 285, 285, 285, 326, 154,
- 127, 123, 116, 106, 101, 48, 328, 100, 91, 79,
- 58, 57, 50, 47, 329, 48, 48, 48, 48, 48,
- 48, 330, 367, 478, 329, 329, 329, 329, 329, 329,
-
- 369, 35, 367, 367, 367, 367, 367, 367, 35, 478,
- 369, 369, 369, 369, 369, 369, 162, 162, 162, 162,
- 162, 372, 478, 478, 478, 478, 478, 478, 92, 478,
- 478, 372, 372, 372, 372, 372, 372, 373, 478, 478,
- 478, 478, 94, 478, 478, 478, 478, 373, 373, 373,
- 373, 373, 373, 359, 319, 319, 319, 359, 374, 478,
- 478, 478, 478, 478, 283, 478, 360, 478, 374, 374,
- 374, 374, 374, 374, 375, 478, 478, 154, 478, 286,
- 478, 478, 478, 378, 375, 375, 375, 375, 375, 375,
- 379, 478, 380, 386, 478, 478, 478, 381, 382, 387,
-
- 478, 383, 478, 386, 386, 386, 386, 386, 386, 387,
- 387, 387, 387, 387, 387, 388, 478, 478, 478, 478,
- 478, 389, 478, 478, 478, 388, 388, 388, 388, 388,
- 388, 389, 389, 389, 389, 389, 389, 397, 478, 478,
- 478, 478, 478, 398, 478, 478, 478, 397, 397, 397,
- 397, 397, 397, 398, 398, 398, 398, 398, 398, 399,
- 478, 478, 478, 478, 478, 409, 478, 478, 478, 399,
- 399, 399, 399, 399, 399, 409, 409, 409, 409, 409,
- 409, 410, 478, 478, 478, 478, 478, 249, 478, 478,
- 478, 410, 410, 410, 410, 410, 410, 249, 249, 249,
-
- 249, 249, 249, 411, 411, 411, 411, 411, 478, 478,
- 282, 478, 478, 478, 478, 478, 478, 478, 478, 412,
- 282, 282, 282, 282, 282, 282, 285, 478, 478, 413,
- 411, 411, 411, 411, 411, 478, 285, 285, 285, 285,
- 285, 285, 478, 478, 478, 478, 412, 424, 478, 478,
- 425, 425, 425, 425, 425, 478, 413, 424, 424, 424,
- 424, 424, 424, 426, 425, 425, 425, 425, 425, 478,
- 425, 425, 425, 425, 425, 478, 428, 426, 478, 478,
- 478, 478, 478, 426, 478, 478, 478, 439, 478, 478,
- 428, 436, 436, 436, 436, 436, 428, 439, 439, 439,
-
- 439, 439, 439, 478, 426, 425, 425, 425, 425, 425,
- 437, 478, 478, 478, 478, 478, 478, 428, 426, 478,
- 437, 437, 437, 437, 437, 437, 445, 478, 478, 478,
- 478, 428, 478, 478, 478, 478, 445, 445, 445, 445,
- 445, 445, 425, 425, 425, 425, 425, 452, 478, 478,
- 425, 425, 425, 425, 425, 426, 478, 452, 452, 452,
- 452, 452, 452, 426, 478, 478, 478, 453, 428, 446,
- 446, 446, 446, 446, 478, 478, 428, 453, 453, 453,
- 453, 453, 453, 478, 478, 478, 478, 478, 447, 478,
- 478, 478, 478, 478, 458, 478, 478, 478, 447, 447,
-
- 447, 447, 447, 447, 458, 458, 458, 458, 458, 458,
- 459, 478, 478, 478, 478, 478, 464, 478, 478, 478,
- 459, 459, 459, 459, 459, 459, 464, 464, 464, 464,
- 464, 464, 465, 478, 478, 478, 478, 478, 427, 478,
- 478, 478, 465, 465, 465, 465, 465, 465, 427, 427,
- 427, 427, 427, 427, 469, 478, 478, 478, 478, 478,
- 427, 478, 478, 478, 469, 469, 469, 469, 469, 469,
- 427, 427, 427, 427, 427, 427, 39, 478, 39, 39,
- 39, 39, 39, 39, 39, 39, 39, 45, 45, 478,
- 45, 45, 48, 478, 48, 48, 48, 48, 48, 48,
-
- 48, 48, 48, 54, 54, 478, 54, 54, 82, 478,
- 478, 82, 82, 89, 89, 89, 89, 89, 89, 89,
- 89, 89, 93, 478, 93, 93, 478, 93, 93, 108,
+ 20, 8, 21, 8, 8, 8, 22, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 24, 23, 23, 23, 23, 23, 23, 25, 23, 23,
+ 23, 23, 23, 26, 27, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 24, 23,
+ 23, 23, 23, 23, 23, 25, 23, 23, 23, 23,
+ 23, 8, 28, 29, 23, 30, 35, 30, 35, 40,
+ 40, 31, 152, 31, 36, 36, 36, 36, 36, 36,
+
+ 36, 36, 36, 36, 32, 33, 32, 33, 37, 37,
+ 37, 37, 37, 89, 40, 35, 51, 35, 89, 52,
+ 31, 89, 31, 89, 92, 93, 92, 93, 106, 40,
+ 49, 136, 32, 33, 32, 33, 41, 478, 89, 54,
+ 478, 95, 38, 152, 129, 34, 105, 34, 55, 94,
+ 89, 103, 56, 91, 89, 129, 106, 148, 91, 136,
+ 41, 91, 152, 91, 89, 152, 131, 54, 154, 96,
+ 49, 38, 42, 46, 105, 43, 55, 94, 91, 103,
+ 152, 102, 44, 44, 44, 44, 44, 44, 129, 89,
+ 91, 104, 92, 93, 91, 131, 154, 96, 36, 36,
+
+ 36, 36, 36, 137, 91, 135, 129, 152, 46, 102,
+ 210, 44, 44, 44, 44, 44, 44, 59, 212, 104,
+ 210, 89, 129, 152, 60, 61, 152, 62, 244, 91,
+ 92, 92, 137, 135, 63, 63, 64, 65, 66, 63,
+ 67, 68, 69, 63, 70, 63, 71, 72, 63, 73,
+ 63, 74, 75, 76, 63, 63, 63, 63, 63, 63,
+ 77, 91, 78, 63, 63, 64, 65, 66, 63, 67,
+ 68, 69, 70, 63, 71, 72, 63, 73, 63, 74,
+ 75, 76, 63, 63, 63, 63, 63, 63, 130, 52,
+ 174, 63, 80, 144, 89, 152, 37, 37, 37, 37,
+
+ 37, 478, 129, 57, 82, 210, 112, 83, 112, 124,
+ 84, 152, 125, 276, 85, 86, 130, 87, 174, 129,
+ 134, 132, 144, 63, 92, 140, 152, 127, 88, 129,
+ 38, 186, 133, 82, 91, 129, 83, 124, 138, 84,
+ 89, 125, 85, 86, 139, 87, 98, 141, 134, 132,
+ 153, 63, 129, 98, 98, 98, 98, 98, 98, 38,
+ 133, 129, 40, 40, 142, 478, 138, 145, 143, 152,
+ 39, 129, 139, 129, 157, 40, 141, 156, 192, 153,
+ 91, 152, 98, 98, 98, 98, 98, 98, 39, 39,
+ 39, 107, 142, 40, 109, 145, 143, 150, 155, 152,
+
+ 152, 88, 158, 157, 210, 40, 156, 110, 41, 41,
+ 89, 129, 152, 89, 110, 110, 110, 110, 110, 110,
+ 164, 41, 89, 478, 89, 150, 155, 89, 152, 152,
+ 282, 158, 89, 40, 49, 168, 354, 89, 89, 353,
+ 111, 170, 352, 110, 110, 110, 110, 110, 110, 114,
+ 91, 41, 172, 91, 351, 165, 114, 114, 114, 114,
+ 114, 114, 91, 168, 91, 171, 478, 91, 173, 89,
+ 170, 285, 91, 210, 49, 189, 40, 91, 91, 190,
+ 172, 313, 115, 165, 184, 114, 114, 114, 114, 114,
+ 114, 117, 193, 171, 198, 129, 173, 194, 117, 117,
+
+ 117, 117, 117, 117, 189, 129, 129, 209, 190, 91,
+ 191, 129, 196, 184, 204, 129, 152, 49, 192, 201,
+ 226, 193, 129, 198, 186, 194, 202, 117, 117, 117,
+ 117, 117, 117, 48, 48, 48, 118, 152, 191, 152,
+ 196, 205, 203, 204, 120, 152, 206, 91, 201, 217,
+ 228, 129, 121, 152, 202, 152, 214, 89, 89, 121,
+ 121, 121, 121, 121, 121, 164, 152, 209, 89, 205,
+ 203, 89, 478, 129, 268, 206, 89, 217, 89, 228,
+ 282, 177, 40, 177, 282, 122, 229, 254, 121, 121,
+ 121, 121, 121, 121, 98, 231, 91, 91, 91, 129,
+
+ 224, 98, 98, 98, 98, 98, 98, 91, 91, 216,
+ 152, 91, 234, 232, 229, 254, 91, 129, 91, 282,
+ 332, 152, 235, 49, 231, 285, 283, 236, 224, 152,
+ 98, 98, 98, 98, 98, 98, 147, 216, 152, 152,
+ 234, 237, 232, 147, 147, 147, 147, 147, 147, 332,
+ 235, 264, 265, 267, 400, 236, 282, 282, 90, 152,
+ 285, 152, 238, 63, 63, 129, 293, 219, 152, 219,
+ 237, 239, 147, 147, 147, 147, 147, 147, 160, 264,
+ 265, 267, 89, 269, 152, 160, 160, 160, 160, 160,
+ 160, 238, 152, 152, 293, 247, 247, 247, 247, 247,
+
+ 239, 249, 283, 283, 261, 303, 250, 350, 251, 270,
+ 343, 269, 364, 271, 160, 160, 160, 160, 160, 160,
+ 162, 152, 91, 152, 376, 152, 308, 162, 162, 162,
+ 162, 162, 162, 261, 303, 152, 152, 152, 270, 343,
+ 364, 271, 247, 247, 247, 247, 247, 252, 249, 305,
+ 115, 306, 376, 250, 308, 251, 162, 162, 162, 162,
+ 162, 162, 97, 97, 97, 97, 97, 317, 242, 90,
+ 242, 152, 152, 368, 89, 307, 340, 342, 305, 210,
+ 306, 169, 152, 152, 152, 316, 344, 349, 169, 169,
+ 169, 169, 169, 169, 252, 280, 280, 280, 280, 280,
+
+ 366, 478, 315, 307, 340, 342, 478, 314, 251, 152,
+ 468, 256, 152, 256, 91, 344, 152, 169, 169, 169,
+ 169, 169, 169, 108, 175, 175, 175, 108, 366, 40,
+ 280, 280, 280, 280, 280, 318, 318, 318, 318, 318,
+ 478, 370, 176, 251, 279, 282, 152, 252, 319, 176,
+ 176, 176, 176, 176, 176, 280, 280, 280, 280, 280,
+ 318, 318, 318, 318, 318, 152, 278, 90, 251, 274,
+ 370, 274, 384, 319, 405, 41, 371, 377, 176, 176,
+ 176, 176, 176, 176, 39, 39, 39, 107, 277, 152,
+ 109, 283, 152, 129, 152, 280, 280, 280, 280, 280,
+
+ 152, 384, 405, 110, 396, 371, 377, 252, 251, 129,
+ 110, 110, 110, 110, 110, 110, 280, 280, 280, 280,
+ 280, 280, 280, 280, 280, 280, 478, 226, 478, 251,
+ 152, 282, 246, 396, 251, 403, 111, 152, 282, 110,
+ 110, 110, 110, 110, 110, 178, 404, 252, 467, 245,
+ 152, 417, 178, 178, 178, 178, 178, 178, 355, 318,
+ 318, 318, 355, 403, 282, 478, 152, 129, 252, 152,
+ 282, 356, 152, 252, 129, 404, 467, 283, 115, 285,
+ 417, 178, 178, 178, 178, 178, 178, 180, 129, 359,
+ 318, 318, 318, 359, 180, 180, 180, 180, 180, 180,
+
+ 282, 129, 360, 97, 97, 97, 97, 97, 226, 115,
+ 283, 108, 175, 175, 175, 108, 283, 40, 213, 90,
+ 385, 163, 152, 180, 180, 180, 180, 180, 180, 116,
+ 116, 116, 116, 116, 161, 161, 161, 161, 161, 152,
+ 197, 285, 152, 119, 182, 182, 182, 119, 181, 385,
+ 90, 478, 478, 129, 40, 181, 181, 181, 181, 181,
+ 181, 282, 282, 41, 179, 179, 179, 179, 179, 430,
+ 159, 159, 159, 159, 159, 187, 187, 187, 187, 187,
+ 129, 129, 152, 90, 181, 181, 181, 181, 181, 181,
+ 119, 182, 182, 182, 119, 49, 295, 430, 295, 129,
+
+ 448, 40, 285, 285, 199, 199, 199, 199, 199, 183,
+ 390, 391, 392, 129, 152, 393, 183, 183, 183, 183,
+ 183, 183, 152, 355, 318, 318, 318, 355, 448, 282,
+ 311, 429, 311, 152, 152, 129, 356, 152, 390, 152,
+ 391, 392, 49, 406, 393, 183, 183, 183, 183, 183,
+ 183, 48, 48, 48, 118, 394, 152, 129, 152, 429,
+ 432, 152, 120, 359, 318, 318, 318, 359, 395, 401,
+ 121, 406, 402, 416, 282, 283, 360, 121, 121, 121,
+ 121, 121, 121, 394, 129, 415, 152, 129, 421, 432,
+ 152, 152, 129, 152, 152, 129, 419, 395, 401, 407,
+
+ 152, 402, 416, 122, 129, 408, 121, 121, 121, 121,
+ 121, 121, 188, 415, 152, 285, 421, 420, 152, 188,
+ 188, 188, 188, 188, 188, 419, 347, 407, 347, 372,
+ 386, 372, 386, 408, 286, 286, 286, 286, 286, 152,
+ 127, 418, 422, 115, 115, 167, 420, 251, 188, 188,
+ 188, 188, 188, 188, 146, 146, 146, 146, 146, 152,
+ 152, 163, 152, 149, 326, 361, 361, 361, 326, 431,
+ 418, 422, 129, 195, 129, 282, 433, 57, 152, 434,
+ 195, 195, 195, 195, 195, 195, 252, 411, 411, 411,
+ 411, 411, 321, 357, 357, 357, 321, 431, 282, 77,
+
+ 152, 152, 59, 412, 127, 433, 129, 123, 434, 195,
+ 195, 195, 195, 195, 195, 200, 285, 411, 411, 411,
+ 411, 411, 200, 200, 200, 200, 200, 200, 423, 423,
+ 423, 423, 423, 412, 115, 101, 100, 435, 99, 414,
+ 79, 424, 440, 58, 283, 444, 478, 478, 478, 478,
+ 478, 200, 200, 200, 200, 200, 200, 159, 159, 159,
+ 159, 159, 478, 152, 152, 57, 435, 442, 441, 414,
+ 152, 440, 443, 50, 444, 449, 207, 152, 471, 152,
+ 426, 152, 454, 207, 207, 207, 207, 207, 207, 423,
+ 423, 423, 423, 423, 152, 442, 450, 441, 414, 47,
+
+ 443, 152, 424, 449, 152, 455, 478, 471, 152, 152,
+ 451, 454, 207, 207, 207, 207, 207, 207, 161, 161,
+ 161, 161, 161, 478, 450, 152, 478, 152, 423, 423,
+ 423, 423, 423, 456, 455, 478, 460, 208, 451, 478,
+ 457, 424, 152, 478, 208, 208, 208, 208, 208, 208,
+ 423, 423, 423, 423, 423, 423, 423, 423, 423, 423,
+ 478, 456, 152, 424, 461, 470, 478, 478, 424, 457,
+ 478, 152, 152, 208, 208, 208, 208, 208, 208, 215,
+ 426, 423, 423, 423, 423, 423, 215, 215, 215, 215,
+ 215, 215, 461, 470, 424, 478, 478, 478, 463, 478,
+
+ 462, 466, 426, 477, 478, 478, 152, 426, 473, 152,
+ 152, 152, 474, 478, 475, 215, 215, 215, 215, 215,
+ 215, 108, 175, 175, 175, 108, 463, 40, 462, 466,
+ 152, 477, 478, 426, 152, 478, 478, 473, 152, 478,
+ 218, 474, 478, 475, 478, 478, 478, 218, 218, 218,
+ 218, 218, 218, 423, 423, 423, 423, 423, 438, 438,
+ 438, 438, 438, 478, 478, 478, 424, 478, 478, 478,
+ 478, 424, 478, 41, 478, 478, 218, 218, 218, 218,
+ 218, 218, 220, 445, 445, 445, 445, 445, 472, 220,
+ 220, 220, 220, 220, 220, 478, 424, 478, 478, 478,
+
+ 478, 478, 476, 152, 478, 426, 478, 478, 478, 478,
+ 426, 478, 478, 478, 478, 478, 472, 152, 220, 220,
+ 220, 220, 220, 220, 179, 179, 179, 179, 179, 478,
+ 476, 478, 478, 478, 478, 426, 478, 478, 478, 478,
+ 478, 478, 478, 221, 478, 478, 478, 478, 478, 478,
+ 221, 221, 221, 221, 221, 221, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 221,
+ 221, 221, 221, 221, 221, 116, 116, 116, 116, 116,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 222, 478, 478, 478, 478, 478,
+ 478, 222, 222, 222, 222, 222, 222, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 222, 222, 222, 222, 222, 222, 119, 182, 182, 182,
+ 119, 478, 478, 478, 478, 478, 478, 40, 478, 478,
+ 478, 478, 478, 478, 478, 223, 478, 478, 478, 478,
+ 478, 478, 223, 223, 223, 223, 223, 223, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 49, 478,
+
+ 478, 223, 223, 223, 223, 223, 223, 187, 187, 187,
+ 187, 187, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 227, 478, 478, 478,
+ 478, 478, 478, 227, 227, 227, 227, 227, 227, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 227, 227, 227, 227, 227, 227, 230, 478,
+ 478, 478, 478, 478, 478, 230, 230, 230, 230, 230,
+ 230, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 230, 230, 230, 230, 230, 230,
+ 199, 199, 199, 199, 199, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 233,
+ 478, 478, 478, 478, 478, 478, 233, 233, 233, 233,
+ 233, 233, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 233, 233, 233, 233, 233,
+ 233, 240, 478, 478, 478, 478, 478, 478, 240, 240,
+ 240, 240, 240, 240, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 478, 478, 478, 240, 240, 240,
+ 240, 240, 240, 161, 161, 161, 161, 161, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 241, 478, 478, 478, 478, 478, 478, 241,
+ 241, 241, 241, 241, 241, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 241, 241,
+ 241, 241, 241, 241, 253, 478, 478, 478, 478, 478,
+ 478, 253, 253, 253, 253, 253, 253, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 253, 253, 253, 253, 253, 253, 108, 175, 175, 175,
+ 108, 478, 40, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 255, 478, 478, 478, 478,
+ 478, 478, 255, 255, 255, 255, 255, 255, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 41, 478,
+ 478, 255, 255, 255, 255, 255, 255, 257, 478, 478,
+ 478, 478, 478, 478, 257, 257, 257, 257, 257, 257,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 257, 257, 257, 257, 257, 257, 179,
+ 179, 179, 179, 179, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 258, 478,
+ 478, 478, 478, 478, 478, 258, 258, 258, 258, 258,
+ 258, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 258, 258, 258, 258, 258, 258,
+ 116, 116, 116, 116, 116, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 259,
+
+ 478, 478, 478, 478, 478, 478, 259, 259, 259, 259,
+ 259, 259, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 259, 259, 259, 259, 259,
+ 259, 119, 182, 182, 182, 119, 478, 478, 478, 478,
+ 478, 478, 40, 478, 478, 478, 478, 478, 478, 478,
+ 260, 478, 478, 478, 478, 478, 478, 260, 260, 260,
+ 260, 260, 260, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 49, 478, 478, 260, 260, 260, 260,
+
+ 260, 260, 187, 187, 187, 187, 187, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 262, 478, 478, 478, 478, 478, 478, 262, 262,
+ 262, 262, 262, 262, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 262, 262, 262,
+ 262, 262, 262, 263, 478, 478, 478, 478, 478, 478,
+ 263, 263, 263, 263, 263, 263, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 263,
+
+ 263, 263, 263, 263, 263, 199, 199, 199, 199, 199,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 266, 478, 478, 478, 478, 478,
+ 478, 266, 266, 266, 266, 266, 266, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 266, 266, 266, 266, 266, 266, 272, 478, 478, 478,
+ 478, 478, 478, 272, 272, 272, 272, 272, 272, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 272, 272, 272, 272, 272, 272, 161, 161,
+ 161, 161, 161, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 273, 478, 478,
+ 478, 478, 478, 478, 273, 273, 273, 273, 273, 273,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 273, 273, 273, 273, 273, 273, 280,
+ 280, 280, 280, 286, 478, 288, 478, 478, 478, 478,
+ 288, 288, 289, 478, 478, 478, 478, 478, 290, 478,
+ 478, 478, 478, 478, 478, 290, 290, 290, 290, 290,
+
+ 290, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 291, 478, 478, 290, 290, 290, 290, 290, 290,
+ 292, 478, 478, 478, 478, 478, 478, 292, 292, 292,
+ 292, 292, 292, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 292, 292, 292, 292,
+ 292, 292, 108, 175, 175, 175, 108, 478, 40, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 294, 478, 478, 478, 478, 478, 478, 294, 294,
+
+ 294, 294, 294, 294, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 41, 478, 478, 294, 294, 294,
+ 294, 294, 294, 296, 478, 478, 478, 478, 478, 478,
+ 296, 296, 296, 296, 296, 296, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 115, 478, 478, 296,
+ 296, 296, 296, 296, 296, 179, 179, 179, 179, 179,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 297, 478, 478, 478, 478, 478,
+
+ 478, 297, 297, 297, 297, 297, 297, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 115, 478, 478,
+ 297, 297, 297, 297, 297, 297, 116, 116, 116, 116,
+ 116, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 298, 478, 478, 478, 478,
+ 478, 478, 298, 298, 298, 298, 298, 298, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 298, 298, 298, 298, 298, 298, 119, 182, 182,
+
+ 182, 119, 478, 478, 478, 478, 478, 478, 40, 478,
+ 478, 478, 478, 478, 478, 478, 299, 478, 478, 478,
+ 478, 478, 478, 299, 299, 299, 299, 299, 299, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 49,
+ 478, 478, 299, 299, 299, 299, 299, 299, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 90, 478, 478,
+ 478, 478, 478, 478, 90, 90, 90, 90, 90, 90,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 300, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 90, 90, 90, 90, 90, 90, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 300, 187, 187, 187, 187, 187, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 301, 478, 478, 478, 478, 478, 478, 301, 301,
+ 301, 301, 301, 301, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 301, 301, 301,
+ 301, 301, 301, 302, 478, 478, 478, 478, 478, 478,
+
+ 302, 302, 302, 302, 302, 302, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 302,
+ 302, 302, 302, 302, 302, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 128, 478, 478, 478, 478, 478,
+ 478, 128, 128, 128, 128, 128, 128, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 128, 128, 128, 128, 128, 128, 199, 199, 199, 199,
+
+ 199, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 304, 478, 478, 478, 478,
+ 478, 478, 304, 304, 304, 304, 304, 304, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 304, 304, 304, 304, 304, 304, 309, 478, 478,
+ 478, 478, 478, 478, 309, 309, 309, 309, 309, 309,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 309, 309, 309, 309, 309, 309, 161,
+
+ 161, 161, 161, 161, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 310, 478,
+ 478, 478, 478, 478, 478, 310, 310, 310, 310, 310,
+ 310, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 310, 310, 310, 310, 310, 310,
+ 281, 281, 281, 320, 478, 478, 322, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 323,
+ 478, 478, 478, 478, 478, 478, 323, 323, 323, 323,
+ 323, 323, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 324, 478, 478, 323, 323, 323, 323, 323,
+ 323, 284, 284, 284, 325, 478, 478, 478, 478, 478,
+ 478, 478, 327, 478, 478, 478, 478, 478, 478, 478,
+ 328, 478, 478, 478, 478, 478, 478, 328, 328, 328,
+ 328, 328, 328, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 329, 478, 478, 328, 328, 328, 328,
+ 328, 328, 286, 286, 286, 286, 286, 478, 478, 478,
+ 478, 478, 478, 478, 478, 251, 478, 478, 478, 478,
+
+ 478, 330, 478, 478, 478, 478, 478, 478, 330, 330,
+ 330, 330, 330, 330, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 252, 478, 478, 330, 330, 330,
+ 330, 330, 330, 280, 280, 280, 280, 286, 478, 288,
+ 478, 478, 478, 478, 288, 288, 289, 478, 478, 478,
+ 478, 478, 290, 478, 478, 478, 478, 478, 478, 290,
+ 290, 290, 290, 290, 290, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 291, 478, 478, 290, 290,
+
+ 290, 290, 290, 290, 331, 478, 478, 478, 478, 478,
+ 478, 331, 331, 331, 331, 331, 331, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 331, 331, 331, 331, 331, 331, 108, 175, 175, 175,
+ 108, 478, 40, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 333, 478, 478, 478, 478,
+ 478, 478, 333, 333, 333, 333, 333, 333, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 41, 478,
+
+ 478, 333, 333, 333, 333, 333, 333, 179, 179, 179,
+ 179, 179, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 334, 478, 478, 478,
+ 478, 478, 478, 334, 334, 334, 334, 334, 334, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 115,
+ 478, 478, 334, 334, 334, 334, 334, 334, 116, 116,
+ 116, 116, 116, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 335, 478, 478,
+ 478, 478, 478, 478, 335, 335, 335, 335, 335, 335,
+
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 335, 335, 335, 335, 335, 335, 119,
+ 182, 182, 182, 119, 478, 478, 478, 478, 478, 478,
+ 40, 478, 478, 478, 478, 478, 478, 478, 336, 478,
+ 478, 478, 478, 478, 478, 336, 336, 336, 336, 336,
+ 336, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 49, 478, 478, 336, 336, 336, 336, 336, 336,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 478, 478, 337, 478, 478, 90,
+ 478, 478, 478, 478, 478, 478, 90, 90, 90, 90,
+ 90, 90, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 90, 90, 90, 90, 90,
+ 90, 187, 187, 187, 187, 187, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 338, 478, 478, 478, 478, 478, 478, 338, 338, 338,
+ 338, 338, 338, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 478, 478, 338, 338, 338, 338,
+ 338, 338, 146, 146, 146, 146, 146, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 339, 478, 478, 478, 478, 478, 478, 339, 339,
+ 339, 339, 339, 339, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 339, 339, 339,
+ 339, 339, 339, 199, 199, 199, 199, 199, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 341, 478, 478, 478, 478, 478, 478, 341,
+
+ 341, 341, 341, 341, 341, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 341, 341,
+ 341, 341, 341, 341, 345, 478, 478, 478, 478, 478,
+ 478, 345, 345, 345, 345, 345, 345, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 345, 345, 345, 345, 345, 345, 161, 161, 161, 161,
+ 161, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 346, 478, 478, 478, 478,
+
+ 478, 478, 346, 346, 346, 346, 346, 346, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 346, 346, 346, 346, 346, 346, 321, 357, 357,
+ 357, 321, 478, 282, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 358, 478, 478, 478,
+ 478, 478, 478, 358, 358, 358, 358, 358, 358, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 283,
+ 478, 478, 358, 358, 358, 358, 358, 358, 281, 281,
+
+ 281, 320, 478, 478, 322, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 323, 478, 478,
+ 478, 478, 478, 478, 323, 323, 323, 323, 323, 323,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 324, 478, 478, 323, 323, 323, 323, 323, 323, 326,
+ 361, 361, 361, 326, 478, 478, 478, 478, 478, 478,
+ 282, 478, 478, 478, 478, 478, 478, 478, 362, 478,
+ 478, 478, 478, 478, 478, 362, 362, 362, 362, 362,
+ 362, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 285, 478, 478, 362, 362, 362, 362, 362, 362,
+ 284, 284, 284, 325, 478, 478, 478, 478, 478, 478,
+ 478, 327, 478, 478, 478, 478, 478, 478, 478, 328,
+ 478, 478, 478, 478, 478, 478, 328, 328, 328, 328,
+ 328, 328, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 329, 478, 478, 328, 328, 328, 328, 328,
+ 328, 286, 286, 286, 286, 286, 478, 478, 478, 478,
+ 478, 478, 478, 478, 251, 478, 478, 478, 478, 478,
+
+ 363, 478, 478, 478, 478, 478, 478, 363, 363, 363,
+ 363, 363, 363, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 252, 478, 478, 363, 363, 363, 363,
+ 363, 363, 365, 478, 478, 478, 478, 478, 478, 365,
+ 365, 365, 365, 365, 365, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 365, 365,
+ 365, 365, 365, 365, 113, 478, 478, 478, 478, 478,
+ 478, 113, 113, 113, 113, 113, 113, 478, 478, 478,
+
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 113, 113, 113, 113, 113, 113, 367, 478, 478, 478,
+ 478, 478, 478, 367, 367, 367, 367, 367, 367, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 367, 367, 367, 367, 367, 367, 146, 146,
+ 146, 146, 146, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 128, 478, 478,
+ 478, 478, 478, 478, 128, 128, 128, 128, 128, 128,
+
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 128, 128, 128, 128, 128, 128, 199,
+ 199, 199, 199, 199, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 369, 478,
+ 478, 478, 478, 478, 478, 369, 369, 369, 369, 369,
+ 369, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 369, 369, 369, 369, 369, 369,
+ 373, 478, 478, 478, 478, 478, 478, 373, 373, 373,
+
+ 373, 373, 373, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 373, 373, 373, 373,
+ 373, 373, 374, 478, 478, 478, 478, 478, 478, 374,
+ 374, 374, 374, 374, 374, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 374, 374,
+ 374, 374, 374, 374, 286, 286, 286, 286, 286, 478,
+ 478, 478, 478, 478, 478, 478, 478, 251, 478, 478,
+ 478, 478, 478, 375, 478, 478, 478, 478, 478, 478,
+
+ 375, 375, 375, 375, 375, 375, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 252, 478, 478, 375,
+ 375, 375, 375, 375, 375, 378, 478, 478, 478, 478,
+ 478, 478, 379, 478, 380, 478, 478, 478, 478, 381,
+ 382, 478, 478, 383, 478, 478, 478, 478, 152, 478,
+ 478, 478, 478, 478, 378, 478, 478, 478, 478, 478,
+ 379, 478, 380, 478, 478, 478, 478, 381, 382, 478,
+ 478, 383, 387, 478, 478, 478, 478, 478, 478, 387,
+ 387, 387, 387, 387, 387, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 387, 387,
+ 387, 387, 387, 387, 388, 478, 478, 478, 478, 478,
+ 478, 388, 388, 388, 388, 388, 388, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 388, 388, 388, 388, 388, 388, 389, 478, 478, 478,
+ 478, 478, 478, 389, 389, 389, 389, 389, 389, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 389, 389, 389, 389, 389, 389, 397, 478,
+ 478, 478, 478, 478, 478, 397, 397, 397, 397, 397,
+ 397, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 397, 397, 397, 397, 397, 397,
+ 398, 478, 478, 478, 478, 478, 478, 398, 398, 398,
+ 398, 398, 398, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 398, 398, 398, 398,
+ 398, 398, 399, 478, 478, 478, 478, 478, 478, 399,
+
+ 399, 399, 399, 399, 399, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 399, 399,
+ 399, 399, 399, 399, 409, 478, 478, 478, 478, 478,
+ 478, 409, 409, 409, 409, 409, 409, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 409, 409, 409, 409, 409, 409, 410, 478, 478, 478,
+ 478, 478, 478, 410, 410, 410, 410, 410, 410, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 410, 410, 410, 410, 410, 410, 428, 478,
+ 478, 478, 478, 478, 478, 428, 428, 428, 428, 428,
+ 428, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 428, 428, 428, 428, 428, 428,
+ 437, 478, 478, 478, 478, 478, 478, 437, 437, 437,
+ 437, 437, 437, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 437, 437, 437, 437,
+
+ 437, 437, 438, 438, 438, 438, 438, 478, 478, 478,
+ 478, 478, 478, 478, 478, 424, 478, 478, 478, 478,
+ 478, 439, 478, 478, 478, 478, 478, 478, 439, 439,
+ 439, 439, 439, 439, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 426, 478, 478, 439, 439, 439,
+ 439, 439, 439, 445, 445, 445, 445, 445, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 446, 478, 478, 478, 478, 478, 478, 446,
+ 446, 446, 446, 446, 446, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 446, 446,
+ 446, 446, 446, 446, 447, 478, 478, 478, 478, 478,
+ 478, 447, 447, 447, 447, 447, 447, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 447, 447, 447, 447, 447, 447, 452, 478, 478, 478,
+ 478, 478, 478, 452, 452, 452, 452, 452, 452, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 452, 452, 452, 452, 452, 452, 453, 478,
+ 478, 478, 478, 478, 478, 453, 453, 453, 453, 453,
+ 453, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 453, 453, 453, 453, 453, 453,
+ 458, 478, 478, 478, 478, 478, 478, 458, 458, 458,
+ 458, 458, 458, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 458, 458, 458, 458,
+ 458, 458, 459, 478, 478, 478, 478, 478, 478, 459,
+
+ 459, 459, 459, 459, 459, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 459, 459,
+ 459, 459, 459, 459, 464, 478, 478, 478, 478, 478,
+ 478, 464, 464, 464, 464, 464, 464, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 464, 464, 464, 464, 464, 464, 465, 478, 478, 478,
+ 478, 478, 478, 465, 465, 465, 465, 465, 465, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 465, 465, 465, 465, 465, 465, 469, 478,
+ 478, 478, 478, 478, 478, 469, 469, 469, 469, 469,
+ 469, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 469, 469, 469, 469, 469, 469,
+ 39, 478, 478, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 45, 45, 478, 45, 45, 48, 478,
+ 478, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 53, 53, 478, 53, 53, 81, 478, 478, 81,
+
+ 81, 90, 478, 90, 90, 478, 90, 90, 97, 97,
+ 97, 97, 97, 97, 97, 97, 97, 97, 108, 108,
108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
- 113, 113, 113, 113, 113, 113, 113, 113, 113, 115,
- 115, 478, 115, 115, 119, 119, 119, 119, 119, 119,
- 119, 119, 119, 119, 119, 126, 126, 126, 126, 126,
- 126, 126, 126, 126, 126, 126, 126, 65, 65, 128,
- 128, 128, 128, 128, 128, 128, 128, 128, 130, 130,
- 478, 130, 130, 151, 151, 151, 151, 151, 151, 151,
-
- 151, 151, 153, 153, 478, 153, 153, 162, 162, 162,
- 162, 162, 162, 162, 162, 162, 179, 179, 179, 179,
- 179, 179, 179, 179, 179, 185, 185, 185, 185, 185,
- 185, 185, 185, 185, 185, 185, 185, 188, 188, 188,
- 188, 188, 188, 188, 188, 188, 200, 200, 200, 200,
- 200, 200, 200, 200, 200, 212, 212, 212, 478, 212,
+ 108, 113, 113, 478, 113, 113, 116, 116, 116, 116,
+ 116, 116, 116, 116, 116, 116, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119, 119, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 128, 128, 478, 128, 128, 146, 146,
+ 146, 146, 146, 146, 146, 146, 146, 146, 151, 151,
+ 478, 151, 151, 159, 159, 159, 159, 159, 159, 159,
+
+ 159, 159, 159, 161, 161, 161, 161, 161, 161, 161,
+ 161, 161, 161, 166, 166, 166, 179, 179, 179, 179,
+ 179, 179, 179, 179, 179, 179, 48, 48, 478, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 185, 185, 185, 185,
+ 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
+ 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
+
+ 211, 211, 211, 211, 39, 478, 478, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 225, 225, 225,
225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
- 225, 225, 244, 244, 244, 478, 244, 249, 249, 249,
- 249, 478, 249, 249, 249, 249, 249, 249, 276, 276,
- 276, 478, 276, 282, 478, 282, 282, 282, 282, 282,
-
- 282, 282, 282, 282, 285, 478, 285, 285, 285, 285,
- 285, 285, 285, 285, 285, 288, 288, 288, 288, 288,
- 288, 288, 288, 288, 288, 288, 313, 313, 313, 478,
- 313, 322, 322, 322, 322, 322, 322, 322, 322, 322,
- 322, 322, 327, 327, 327, 327, 327, 327, 327, 327,
- 327, 327, 327, 348, 348, 348, 478, 348, 414, 414,
- 414, 478, 478, 478, 414, 478, 478, 414, 414, 423,
- 423, 423, 423, 423, 423, 423, 423, 423, 427, 427,
- 427, 478, 478, 427, 427, 427, 478, 427, 427, 438,
- 438, 438, 438, 438, 438, 438, 438, 438, 7, 478,
+ 225, 243, 243, 243, 243, 248, 248, 248, 248, 248,
+ 248, 478, 248, 248, 248, 248, 248, 248, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+ 185, 185, 185, 185, 185, 275, 275, 275, 275, 248,
+ 248, 248, 248, 248, 248, 478, 248, 248, 248, 248,
+ 248, 248, 281, 478, 478, 281, 281, 281, 281, 281,
+
+ 281, 281, 281, 281, 281, 284, 478, 478, 284, 284,
+ 284, 284, 284, 284, 284, 284, 284, 284, 287, 287,
+ 287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
+ 287, 39, 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 113, 113, 478, 113, 113, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 312, 312, 312, 312, 321, 321, 321, 321,
+ 321, 321, 321, 321, 321, 321, 321, 321, 321, 284,
+ 478, 478, 284, 284, 284, 284, 284, 284, 284, 284,
+ 284, 284, 326, 326, 326, 326, 326, 326, 326, 326,
+
+ 326, 326, 326, 326, 326, 248, 248, 248, 248, 248,
+ 478, 478, 248, 248, 248, 248, 248, 248, 287, 287,
+ 287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
+ 287, 39, 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 113, 113, 478, 113, 113, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 348, 348, 348, 348, 281, 281, 478, 281,
+ 281, 281, 281, 281, 281, 281, 281, 281, 281, 321,
+ 321, 321, 321, 321, 321, 321, 321, 321, 321, 321,
+ 321, 321, 284, 284, 478, 284, 284, 284, 284, 284,
+
+ 284, 284, 284, 284, 284, 326, 326, 326, 326, 326,
+ 326, 326, 326, 326, 326, 326, 326, 326, 248, 248,
+ 248, 248, 248, 478, 478, 248, 248, 248, 248, 248,
+ 248, 413, 413, 413, 413, 478, 478, 478, 478, 413,
+ 478, 478, 413, 413, 425, 425, 425, 425, 478, 478,
+ 478, 425, 425, 425, 478, 425, 425, 427, 427, 427,
+ 427, 427, 427, 427, 427, 427, 427, 436, 436, 436,
+ 436, 436, 436, 436, 436, 436, 436, 7, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
- 478, 478, 478, 478, 478, 478, 478, 478, 478
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478
} ;
-static yyconst flex_int16_t yy_chk[2460] =
+static yyconst flex_int16_t yy_chk[6664] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -576,270 +1048,733 @@ static yyconst flex_int16_t yy_chk[2460] =
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 3, 134, 4, 9, 9, 9, 9, 9, 12, 3,
- 134, 4, 10, 10, 10, 10, 10, 11, 11, 11,
- 11, 11, 3, 3, 4, 4, 13, 67, 12, 13,
- 15, 39, 52, 25, 67, 3, 13, 4, 31, 13,
-
- 13, 13, 13, 13, 13, 15, 17, 25, 22, 17,
- 27, 39, 31, 27, 11, 52, 17, 26, 22, 69,
- 26, 26, 71, 22, 27, 48, 22, 42, 31, 22,
- 42, 26, 17, 22, 22, 156, 22, 42, 71, 69,
- 48, 17, 20, 23, 27, 64, 54, 64, 26, 20,
- 20, 156, 20, 23, 23, 23, 23, 23, 23, 20,
- 54, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 3, 5, 4, 6, 15,
+ 12, 3, 477, 4, 9, 9, 9, 9, 9, 10,
+
+ 10, 10, 10, 10, 3, 3, 4, 4, 11, 11,
+ 11, 11, 11, 23, 39, 5, 17, 6, 35, 17,
+ 3, 24, 4, 32, 24, 24, 32, 32, 38, 48,
+ 15, 69, 3, 3, 4, 4, 12, 42, 25, 17,
+ 42, 25, 11, 474, 69, 3, 35, 4, 17, 24,
+ 53, 32, 17, 23, 31, 78, 38, 78, 35, 69,
+ 39, 24, 467, 32, 33, 461, 65, 17, 83, 25,
+ 48, 11, 13, 42, 35, 13, 17, 24, 25, 32,
+ 83, 31, 13, 13, 13, 13, 13, 13, 65, 54,
+ 53, 33, 54, 54, 31, 65, 83, 25, 36, 36,
+
+ 36, 36, 36, 70, 33, 68, 68, 456, 13, 31,
+ 166, 13, 13, 13, 13, 13, 13, 20, 166, 33,
+ 211, 90, 70, 440, 20, 20, 434, 20, 211, 54,
+ 124, 124, 70, 68, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 33, 32,
- 35, 20, 32, 32, 36, 36, 36, 36, 36, 57,
-
- 43, 57, 33, 32, 35, 37, 37, 37, 37, 37,
- 43, 43, 43, 43, 43, 43, 44, 84, 33, 55,
- 32, 35, 55, 55, 57, 46, 44, 44, 44, 44,
- 44, 44, 46, 55, 84, 46, 46, 46, 46, 46,
- 46, 53, 37, 41, 41, 41, 41, 56, 66, 41,
- 72, 53, 53, 53, 53, 53, 53, 70, 147, 86,
- 72, 56, 41, 66, 147, 75, 86, 68, 56, 41,
- 75, 73, 41, 41, 41, 41, 41, 41, 49, 49,
- 49, 49, 68, 74, 74, 70, 73, 75, 63, 49,
- 477, 75, 73, 68, 74, 78, 80, 49, 63, 63,
-
- 63, 63, 63, 63, 49, 83, 80, 49, 49, 49,
- 49, 49, 49, 76, 81, 83, 76, 85, 78, 87,
- 88, 89, 87, 88, 81, 81, 81, 81, 81, 81,
- 93, 80, 85, 102, 108, 89, 90, 90, 90, 90,
- 90, 124, 124, 143, 93, 140, 94, 102, 90, 97,
- 143, 474, 109, 102, 108, 90, 94, 94, 94, 94,
- 94, 94, 90, 97, 96, 90, 90, 90, 90, 90,
- 90, 96, 109, 140, 118, 467, 98, 119, 96, 99,
- 103, 98, 104, 105, 118, 97, 98, 98, 98, 98,
- 98, 98, 119, 99, 103, 107, 104, 105, 120, 118,
-
- 107, 125, 127, 461, 150, 137, 127, 99, 137, 155,
- 104, 150, 155, 120, 148, 125, 103, 105, 112, 125,
- 107, 110, 110, 110, 110, 110, 132, 110, 112, 112,
- 112, 112, 112, 112, 148, 158, 167, 192, 456, 160,
- 110, 158, 157, 192, 167, 132, 159, 110, 160, 162,
- 110, 110, 110, 110, 110, 110, 111, 111, 111, 111,
- 157, 159, 111, 162, 190, 194, 116, 206, 344, 166,
- 169, 190, 194, 344, 206, 111, 116, 116, 116, 116,
- 116, 116, 111, 166, 169, 111, 111, 111, 111, 111,
- 111, 114, 114, 114, 114, 114, 198, 205, 226, 207,
-
- 198, 117, 226, 170, 171, 173, 207, 440, 205, 203,
- 114, 117, 117, 117, 117, 117, 117, 170, 171, 173,
- 114, 114, 114, 114, 114, 114, 121, 121, 121, 121,
- 121, 203, 212, 175, 236, 238, 131, 121, 238, 182,
- 212, 392, 434, 429, 236, 121, 131, 131, 131, 131,
- 131, 131, 121, 175, 182, 121, 121, 121, 121, 121,
- 121, 122, 122, 122, 122, 216, 265, 244, 392, 268,
- 269, 154, 122, 196, 184, 244, 268, 265, 269, 216,
- 122, 154, 154, 154, 154, 154, 154, 122, 184, 196,
- 122, 122, 122, 122, 122, 122, 129, 129, 129, 129,
-
- 129, 184, 276, 202, 340, 307, 161, 204, 307, 309,
- 276, 419, 309, 385, 340, 129, 161, 161, 161, 161,
- 161, 161, 129, 202, 204, 129, 129, 129, 129, 129,
- 129, 152, 152, 152, 152, 152, 232, 165, 172, 229,
- 313, 345, 420, 384, 165, 261, 345, 420, 313, 232,
- 152, 165, 172, 235, 229, 237, 239, 152, 224, 261,
- 152, 152, 152, 152, 152, 152, 163, 163, 163, 163,
- 163, 370, 224, 250, 235, 237, 176, 239, 370, 172,
- 435, 261, 364, 224, 435, 163, 176, 176, 176, 176,
- 176, 176, 177, 250, 251, 163, 163, 163, 163, 163,
-
- 163, 178, 177, 177, 177, 177, 177, 177, 270, 251,
- 272, 178, 178, 178, 178, 178, 178, 180, 180, 180,
- 180, 180, 281, 281, 281, 281, 281, 181, 272, 285,
- 270, 383, 348, 343, 383, 281, 180, 181, 181, 181,
- 181, 181, 181, 183, 285, 332, 180, 180, 180, 180,
- 180, 180, 187, 183, 183, 183, 183, 183, 183, 282,
- 303, 306, 187, 187, 187, 187, 187, 187, 189, 189,
- 189, 189, 189, 283, 283, 283, 283, 283, 199, 282,
- 300, 327, 303, 306, 300, 318, 283, 189, 199, 199,
- 199, 199, 199, 199, 300, 322, 327, 189, 189, 189,
-
- 189, 189, 189, 201, 201, 201, 201, 201, 319, 319,
- 319, 319, 319, 208, 418, 322, 360, 418, 317, 316,
- 326, 319, 201, 208, 208, 208, 208, 208, 208, 209,
- 326, 360, 201, 201, 201, 201, 201, 201, 211, 209,
- 209, 209, 209, 209, 209, 326, 356, 315, 211, 211,
- 211, 211, 211, 211, 215, 215, 215, 215, 215, 218,
- 215, 371, 337, 357, 361, 215, 356, 215, 371, 218,
- 218, 218, 218, 218, 218, 219, 337, 321, 314, 361,
- 215, 220, 321, 357, 366, 219, 219, 219, 219, 219,
- 219, 220, 220, 220, 220, 220, 220, 221, 366, 378,
-
- 337, 366, 321, 222, 381, 407, 378, 221, 221, 221,
- 221, 221, 221, 222, 222, 222, 222, 222, 222, 223,
- 334, 334, 334, 334, 334, 227, 308, 381, 407, 223,
- 223, 223, 223, 223, 223, 227, 227, 227, 227, 227,
- 227, 228, 379, 380, 298, 422, 334, 233, 422, 379,
- 380, 228, 228, 228, 228, 228, 228, 233, 233, 233,
- 233, 233, 233, 234, 338, 338, 338, 338, 338, 241,
- 432, 415, 441, 234, 234, 234, 234, 234, 234, 241,
- 241, 241, 241, 241, 241, 242, 382, 441, 393, 432,
- 338, 243, 415, 382, 393, 242, 242, 242, 242, 242,
-
- 242, 243, 243, 243, 243, 243, 243, 248, 248, 248,
- 248, 248, 405, 248, 293, 390, 394, 395, 248, 405,
- 248, 249, 249, 249, 249, 249, 255, 249, 377, 390,
- 394, 395, 249, 248, 249, 402, 255, 255, 255, 255,
- 255, 255, 377, 396, 404, 403, 402, 249, 253, 253,
- 253, 253, 253, 403, 253, 404, 463, 396, 256, 253,
- 253, 253, 377, 396, 280, 408, 463, 253, 256, 256,
- 256, 256, 256, 256, 253, 257, 408, 253, 253, 253,
- 253, 253, 253, 258, 416, 257, 257, 257, 257, 257,
- 257, 259, 279, 258, 258, 258, 258, 258, 258, 260,
-
- 416, 259, 259, 259, 259, 259, 259, 262, 278, 260,
- 260, 260, 260, 260, 260, 263, 277, 262, 262, 262,
- 262, 262, 262, 266, 271, 263, 263, 263, 263, 263,
- 263, 267, 264, 266, 266, 266, 266, 266, 266, 273,
- 254, 267, 267, 267, 267, 267, 267, 274, 247, 273,
- 273, 273, 273, 273, 273, 275, 406, 274, 274, 274,
- 274, 274, 274, 406, 401, 275, 275, 275, 275, 275,
- 275, 284, 284, 284, 284, 391, 443, 284, 401, 417,
- 391, 431, 246, 391, 431, 287, 287, 287, 287, 287,
- 284, 287, 245, 443, 240, 231, 287, 284, 287, 417,
-
- 284, 284, 284, 284, 284, 284, 286, 286, 286, 286,
- 230, 287, 412, 412, 412, 412, 412, 286, 288, 288,
- 288, 288, 288, 421, 288, 286, 430, 442, 412, 288,
- 421, 288, 286, 430, 450, 286, 286, 286, 286, 286,
- 286, 444, 225, 470, 288, 289, 289, 289, 289, 289,
- 442, 289, 217, 475, 450, 444, 289, 470, 289, 290,
- 290, 290, 290, 290, 294, 290, 448, 475, 462, 433,
- 290, 289, 290, 448, 294, 294, 294, 294, 294, 294,
- 425, 425, 425, 425, 425, 290, 291, 291, 291, 291,
- 291, 433, 291, 425, 455, 462, 296, 291, 214, 291,
-
- 341, 341, 341, 341, 341, 291, 296, 296, 296, 296,
- 296, 296, 291, 213, 455, 291, 291, 291, 291, 291,
- 291, 292, 292, 292, 292, 292, 341, 292, 449, 451,
- 200, 297, 292, 292, 292, 449, 451, 460, 195, 193,
- 292, 297, 297, 297, 297, 297, 297, 292, 299, 191,
- 292, 292, 292, 292, 292, 292, 301, 460, 299, 299,
- 299, 299, 299, 299, 302, 466, 301, 301, 301, 301,
- 301, 301, 304, 188, 302, 302, 302, 302, 302, 302,
- 305, 457, 304, 304, 304, 304, 304, 304, 466, 185,
- 305, 305, 305, 305, 305, 305, 310, 310, 310, 310,
-
- 310, 311, 457, 476, 468, 179, 174, 168, 310, 454,
- 468, 311, 311, 311, 311, 311, 311, 312, 471, 454,
- 164, 473, 310, 153, 476, 471, 473, 312, 312, 312,
- 312, 312, 312, 323, 323, 323, 323, 323, 151, 323,
- 454, 328, 328, 328, 328, 328, 323, 149, 472, 146,
- 145, 144, 328, 142, 328, 472, 141, 139, 331, 323,
- 324, 324, 324, 324, 324, 138, 324, 328, 331, 331,
- 331, 331, 331, 331, 355, 355, 355, 355, 355, 324,
- 355, 365, 365, 365, 365, 365, 324, 355, 136, 324,
- 324, 324, 324, 324, 324, 325, 325, 325, 325, 135,
-
- 355, 325, 133, 130, 128, 333, 126, 365, 115, 367,
- 367, 367, 367, 367, 325, 333, 333, 333, 333, 333,
- 333, 325, 113, 106, 325, 325, 325, 325, 325, 325,
- 329, 329, 329, 329, 329, 367, 95, 82, 79, 77,
- 335, 329, 65, 369, 369, 369, 369, 369, 61, 329,
- 335, 335, 335, 335, 335, 335, 329, 60, 59, 329,
- 329, 329, 329, 329, 329, 330, 330, 330, 330, 369,
- 58, 51, 45, 38, 29, 336, 330, 28, 24, 21,
- 19, 18, 16, 14, 330, 336, 336, 336, 336, 336,
- 336, 330, 339, 7, 330, 330, 330, 330, 330, 330,
-
- 342, 6, 339, 339, 339, 339, 339, 339, 5, 0,
- 342, 342, 342, 342, 342, 342, 346, 346, 346, 346,
- 346, 347, 0, 0, 0, 0, 0, 0, 346, 0,
- 0, 347, 347, 347, 347, 347, 347, 358, 0, 0,
- 0, 0, 346, 0, 0, 0, 0, 358, 358, 358,
- 358, 358, 358, 359, 359, 359, 359, 359, 362, 0,
- 0, 0, 0, 0, 359, 0, 359, 0, 362, 362,
- 362, 362, 362, 362, 363, 0, 0, 368, 0, 359,
- 0, 0, 0, 368, 363, 363, 363, 363, 363, 363,
- 368, 0, 368, 372, 0, 0, 0, 368, 368, 373,
-
- 0, 368, 0, 372, 372, 372, 372, 372, 372, 373,
- 373, 373, 373, 373, 373, 374, 0, 0, 0, 0,
- 0, 375, 0, 0, 0, 374, 374, 374, 374, 374,
- 374, 375, 375, 375, 375, 375, 375, 387, 0, 0,
- 0, 0, 0, 388, 0, 0, 0, 387, 387, 387,
- 387, 387, 387, 388, 388, 388, 388, 388, 388, 389,
- 0, 0, 0, 0, 0, 397, 0, 0, 0, 389,
- 389, 389, 389, 389, 389, 397, 397, 397, 397, 397,
- 397, 398, 0, 0, 0, 0, 0, 399, 0, 0,
- 0, 398, 398, 398, 398, 398, 398, 399, 399, 399,
-
- 399, 399, 399, 400, 400, 400, 400, 400, 0, 0,
- 409, 0, 0, 0, 0, 0, 0, 0, 0, 400,
- 409, 409, 409, 409, 409, 409, 410, 0, 0, 400,
- 411, 411, 411, 411, 411, 0, 410, 410, 410, 410,
- 410, 410, 0, 0, 0, 0, 411, 413, 0, 0,
- 414, 414, 414, 414, 414, 0, 411, 413, 413, 413,
- 413, 413, 413, 414, 423, 423, 423, 423, 423, 0,
- 427, 427, 427, 427, 427, 0, 414, 423, 0, 0,
- 0, 0, 0, 427, 0, 0, 0, 428, 0, 0,
- 423, 424, 424, 424, 424, 424, 427, 428, 428, 428,
-
- 428, 428, 428, 0, 424, 436, 436, 436, 436, 436,
- 424, 0, 0, 0, 0, 0, 0, 424, 436, 0,
- 424, 424, 424, 424, 424, 424, 437, 0, 0, 0,
- 0, 436, 0, 0, 0, 0, 437, 437, 437, 437,
- 437, 437, 438, 438, 438, 438, 438, 445, 0, 0,
- 446, 446, 446, 446, 446, 438, 0, 445, 445, 445,
- 445, 445, 445, 446, 0, 0, 0, 447, 438, 439,
- 439, 439, 439, 439, 0, 0, 446, 447, 447, 447,
- 447, 447, 447, 0, 0, 0, 0, 0, 439, 0,
- 0, 0, 0, 0, 452, 0, 0, 0, 439, 439,
-
- 439, 439, 439, 439, 452, 452, 452, 452, 452, 452,
- 453, 0, 0, 0, 0, 0, 458, 0, 0, 0,
- 453, 453, 453, 453, 453, 453, 458, 458, 458, 458,
- 458, 458, 459, 0, 0, 0, 0, 0, 464, 0,
- 0, 0, 459, 459, 459, 459, 459, 459, 464, 464,
- 464, 464, 464, 464, 465, 0, 0, 0, 0, 0,
- 469, 0, 0, 0, 465, 465, 465, 465, 465, 465,
- 469, 469, 469, 469, 469, 469, 479, 0, 479, 479,
- 479, 479, 479, 479, 479, 479, 479, 480, 480, 0,
- 480, 480, 481, 0, 481, 481, 481, 481, 481, 481,
-
- 481, 481, 481, 482, 482, 0, 482, 482, 483, 0,
- 0, 483, 483, 484, 484, 484, 484, 484, 484, 484,
- 484, 484, 485, 0, 485, 485, 0, 485, 485, 486,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 90, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 64, 52,
+ 106, 20, 22, 74, 55, 429, 37, 37, 37, 37,
+
+ 37, 57, 64, 57, 22, 243, 487, 22, 487, 52,
+ 22, 419, 55, 243, 22, 22, 64, 22, 106, 74,
+ 67, 66, 74, 57, 72, 72, 385, 127, 22, 67,
+ 37, 127, 66, 22, 55, 66, 22, 52, 71, 22,
+ 97, 55, 22, 22, 71, 22, 26, 73, 67, 66,
+ 82, 57, 71, 26, 26, 26, 26, 26, 26, 37,
+ 66, 72, 108, 109, 73, 80, 71, 76, 73, 82,
+ 107, 73, 71, 76, 86, 107, 73, 85, 140, 82,
+ 97, 384, 26, 26, 26, 26, 26, 26, 41, 41,
+ 41, 41, 73, 118, 41, 76, 73, 80, 84, 85,
+
+ 86, 80, 87, 86, 348, 175, 85, 41, 108, 109,
+ 96, 140, 84, 93, 41, 41, 41, 41, 41, 41,
+ 93, 107, 94, 119, 102, 80, 84, 104, 87, 342,
+ 250, 87, 103, 119, 118, 96, 317, 105, 161, 316,
+ 41, 102, 315, 41, 41, 41, 41, 41, 41, 44,
+ 96, 175, 104, 93, 314, 94, 44, 44, 44, 44,
+ 44, 44, 94, 96, 102, 103, 120, 104, 105, 125,
+ 102, 250, 103, 275, 119, 131, 120, 105, 161, 134,
+ 104, 275, 44, 94, 125, 44, 44, 44, 44, 44,
+ 44, 46, 144, 103, 150, 131, 105, 145, 46, 46,
+
+ 46, 46, 46, 46, 131, 134, 145, 165, 134, 125,
+ 137, 137, 148, 125, 156, 144, 150, 120, 192, 153,
+ 226, 144, 148, 150, 226, 145, 154, 46, 46, 46,
+ 46, 46, 46, 49, 49, 49, 49, 156, 137, 154,
+ 148, 157, 155, 156, 49, 153, 158, 165, 153, 174,
+ 190, 192, 49, 155, 154, 157, 168, 170, 164, 49,
+ 49, 49, 49, 49, 49, 164, 158, 171, 173, 157,
+ 155, 172, 182, 190, 235, 158, 184, 174, 216, 190,
+ 249, 499, 182, 499, 284, 49, 194, 217, 49, 49,
+ 49, 49, 49, 49, 56, 196, 168, 170, 164, 194,
+
+ 184, 56, 56, 56, 56, 56, 56, 171, 173, 172,
+ 235, 172, 201, 198, 194, 217, 184, 196, 216, 325,
+ 293, 201, 202, 182, 196, 284, 249, 203, 184, 202,
+ 56, 56, 56, 56, 56, 56, 77, 172, 198, 203,
+ 201, 204, 198, 77, 77, 77, 77, 77, 77, 293,
+ 202, 231, 232, 234, 390, 203, 281, 320, 390, 204,
+ 325, 234, 205, 492, 492, 231, 254, 509, 232, 509,
+ 204, 206, 77, 77, 77, 77, 77, 77, 88, 231,
+ 232, 234, 224, 236, 205, 88, 88, 88, 88, 88,
+ 88, 205, 236, 206, 254, 214, 214, 214, 214, 214,
+
+ 206, 214, 281, 320, 224, 265, 214, 313, 214, 237,
+ 306, 236, 332, 238, 88, 88, 88, 88, 88, 88,
+ 91, 238, 224, 265, 364, 307, 271, 91, 91, 91,
+ 91, 91, 91, 224, 265, 237, 306, 271, 237, 306,
+ 332, 238, 247, 247, 247, 247, 247, 214, 247, 267,
+ 296, 268, 364, 247, 271, 247, 91, 91, 91, 91,
+ 91, 91, 98, 98, 98, 98, 98, 279, 511, 337,
+ 511, 267, 268, 340, 98, 269, 303, 305, 267, 312,
+ 268, 98, 269, 303, 305, 278, 308, 312, 98, 98,
+ 98, 98, 98, 98, 247, 248, 248, 248, 248, 248,
+
+ 337, 248, 277, 269, 303, 305, 248, 276, 248, 340,
+ 463, 515, 308, 515, 98, 308, 270, 98, 98, 98,
+ 98, 98, 98, 110, 110, 110, 110, 110, 337, 110,
+ 280, 280, 280, 280, 280, 282, 282, 282, 282, 282,
+ 321, 343, 110, 280, 246, 321, 463, 248, 282, 110,
+ 110, 110, 110, 110, 110, 286, 286, 286, 286, 286,
+ 318, 318, 318, 318, 318, 343, 245, 366, 286, 517,
+ 343, 517, 370, 318, 394, 110, 344, 366, 110, 110,
+ 110, 110, 110, 110, 111, 111, 111, 111, 244, 394,
+ 111, 321, 239, 229, 370, 287, 287, 287, 287, 287,
+
+ 344, 370, 394, 111, 383, 344, 366, 286, 287, 228,
+ 111, 111, 111, 111, 111, 111, 288, 288, 288, 288,
+ 288, 289, 289, 289, 289, 289, 356, 225, 326, 288,
+ 383, 356, 213, 383, 289, 392, 111, 392, 326, 111,
+ 111, 111, 111, 111, 111, 114, 393, 287, 462, 212,
+ 462, 403, 114, 114, 114, 114, 114, 114, 322, 322,
+ 322, 322, 322, 392, 322, 357, 199, 193, 288, 393,
+ 357, 322, 403, 289, 191, 393, 462, 356, 114, 326,
+ 403, 114, 114, 114, 114, 114, 114, 115, 189, 327,
+ 327, 327, 327, 327, 115, 115, 115, 115, 115, 115,
+
+ 327, 187, 327, 331, 331, 331, 331, 331, 185, 179,
+ 322, 333, 333, 333, 333, 333, 357, 333, 167, 331,
+ 371, 163, 159, 115, 115, 115, 115, 115, 115, 117,
+ 117, 117, 117, 117, 346, 346, 346, 346, 346, 151,
+ 149, 327, 371, 336, 336, 336, 336, 336, 117, 371,
+ 346, 360, 361, 146, 336, 117, 117, 117, 117, 117,
+ 117, 360, 361, 333, 365, 365, 365, 365, 365, 416,
+ 345, 345, 345, 345, 345, 367, 367, 367, 367, 367,
+ 143, 142, 416, 377, 117, 117, 117, 117, 117, 117,
+ 121, 121, 121, 121, 121, 336, 524, 416, 524, 141,
+
+ 441, 121, 360, 361, 369, 369, 369, 369, 369, 121,
+ 377, 378, 379, 139, 441, 380, 121, 121, 121, 121,
+ 121, 121, 345, 355, 355, 355, 355, 355, 441, 355,
+ 527, 415, 527, 378, 379, 138, 355, 380, 377, 415,
+ 378, 379, 121, 395, 380, 121, 121, 121, 121, 121,
+ 121, 122, 122, 122, 122, 381, 369, 136, 395, 415,
+ 418, 381, 122, 359, 359, 359, 359, 359, 382, 391,
+ 122, 395, 391, 402, 359, 355, 359, 122, 122, 122,
+ 122, 122, 122, 381, 135, 401, 418, 133, 407, 418,
+ 382, 402, 132, 391, 407, 130, 405, 382, 391, 396,
+
+ 401, 391, 402, 122, 128, 396, 122, 122, 122, 122,
+ 122, 122, 129, 401, 396, 359, 407, 406, 405, 129,
+ 129, 129, 129, 129, 129, 405, 537, 396, 537, 544,
+ 545, 544, 545, 396, 399, 399, 399, 399, 399, 406,
+ 126, 404, 408, 116, 113, 95, 406, 399, 129, 129,
+ 129, 129, 129, 129, 147, 147, 147, 147, 147, 404,
+ 408, 92, 81, 79, 410, 410, 410, 410, 410, 417,
+ 404, 408, 75, 147, 63, 410, 420, 61, 417, 421,
+ 147, 147, 147, 147, 147, 147, 399, 400, 400, 400,
+ 400, 400, 409, 409, 409, 409, 409, 417, 409, 60,
+
+ 420, 421, 59, 400, 58, 420, 147, 51, 421, 147,
+ 147, 147, 147, 147, 147, 152, 410, 411, 411, 411,
+ 411, 411, 152, 152, 152, 152, 152, 152, 413, 413,
+ 413, 413, 413, 411, 45, 29, 28, 422, 27, 400,
+ 21, 413, 430, 19, 409, 435, 412, 412, 412, 412,
+ 412, 152, 152, 152, 152, 152, 152, 160, 160, 160,
+ 160, 160, 412, 422, 430, 18, 422, 432, 431, 411,
+ 435, 430, 433, 16, 435, 442, 160, 432, 468, 433,
+ 413, 442, 448, 160, 160, 160, 160, 160, 160, 423,
+ 423, 423, 423, 423, 431, 432, 443, 431, 412, 14,
+
+ 433, 468, 423, 442, 448, 449, 7, 468, 443, 160,
+ 444, 448, 160, 160, 160, 160, 160, 160, 162, 162,
+ 162, 162, 162, 0, 443, 444, 0, 449, 425, 425,
+ 425, 425, 425, 450, 449, 0, 454, 162, 444, 0,
+ 451, 425, 450, 0, 162, 162, 162, 162, 162, 162,
+ 427, 427, 427, 427, 427, 436, 436, 436, 436, 436,
+ 0, 450, 451, 427, 454, 466, 0, 0, 436, 451,
+ 0, 466, 454, 162, 162, 162, 162, 162, 162, 169,
+ 425, 438, 438, 438, 438, 438, 169, 169, 169, 169,
+ 169, 169, 454, 466, 438, 0, 0, 0, 457, 0,
+
+ 455, 460, 427, 476, 0, 0, 457, 436, 471, 455,
+ 460, 476, 472, 0, 473, 169, 169, 169, 169, 169,
+ 169, 176, 176, 176, 176, 176, 457, 176, 455, 460,
+ 471, 476, 0, 438, 472, 0, 0, 471, 473, 0,
+ 176, 472, 0, 473, 0, 0, 0, 176, 176, 176,
+ 176, 176, 176, 445, 445, 445, 445, 445, 465, 465,
+ 465, 465, 465, 0, 0, 0, 445, 0, 0, 0,
+ 0, 465, 0, 176, 0, 0, 176, 176, 176, 176,
+ 176, 176, 178, 469, 469, 469, 469, 469, 470, 178,
+ 178, 178, 178, 178, 178, 0, 469, 0, 0, 0,
+
+ 0, 0, 475, 470, 0, 445, 0, 0, 0, 0,
+ 465, 0, 0, 0, 0, 0, 470, 475, 178, 178,
+ 178, 178, 178, 178, 180, 180, 180, 180, 180, 0,
+ 475, 0, 0, 0, 0, 469, 0, 0, 0, 0,
+ 0, 0, 0, 180, 0, 0, 0, 0, 0, 0,
+ 180, 180, 180, 180, 180, 180, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 180,
+ 180, 180, 180, 180, 180, 181, 181, 181, 181, 181,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 181, 0, 0, 0, 0, 0,
+ 0, 181, 181, 181, 181, 181, 181, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 181, 181, 181, 181, 181, 181, 183, 183, 183, 183,
+ 183, 0, 0, 0, 0, 0, 0, 183, 0, 0,
+ 0, 0, 0, 0, 0, 183, 0, 0, 0, 0,
+ 0, 0, 183, 183, 183, 183, 183, 183, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 183, 0,
+
+ 0, 183, 183, 183, 183, 183, 183, 188, 188, 188,
+ 188, 188, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 188, 0, 0, 0,
+ 0, 0, 0, 188, 188, 188, 188, 188, 188, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 188, 188, 188, 188, 188, 188, 195, 0,
+ 0, 0, 0, 0, 0, 195, 195, 195, 195, 195,
+ 195, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 195, 195, 195, 195, 195, 195,
+ 200, 200, 200, 200, 200, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 200,
+ 0, 0, 0, 0, 0, 0, 200, 200, 200, 200,
+ 200, 200, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 200, 200, 200, 200, 200,
+ 200, 207, 0, 0, 0, 0, 0, 0, 207, 207,
+ 207, 207, 207, 207, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 207, 207, 207,
+ 207, 207, 207, 208, 208, 208, 208, 208, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 208, 0, 0, 0, 0, 0, 0, 208,
+ 208, 208, 208, 208, 208, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 208, 208,
+ 208, 208, 208, 208, 215, 0, 0, 0, 0, 0,
+ 0, 215, 215, 215, 215, 215, 215, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 215, 215, 215, 215, 215, 215, 218, 218, 218, 218,
+ 218, 0, 218, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 218, 0, 0, 0, 0,
+ 0, 0, 218, 218, 218, 218, 218, 218, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 218, 0,
+ 0, 218, 218, 218, 218, 218, 218, 220, 0, 0,
+ 0, 0, 0, 0, 220, 220, 220, 220, 220, 220,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 220, 220, 220, 220, 220, 220, 221,
+ 221, 221, 221, 221, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 221, 0,
+ 0, 0, 0, 0, 0, 221, 221, 221, 221, 221,
+ 221, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 221, 221, 221, 221, 221, 221,
+ 222, 222, 222, 222, 222, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 222,
+
+ 0, 0, 0, 0, 0, 0, 222, 222, 222, 222,
+ 222, 222, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 222, 222, 222, 222, 222,
+ 222, 223, 223, 223, 223, 223, 0, 0, 0, 0,
+ 0, 0, 223, 0, 0, 0, 0, 0, 0, 0,
+ 223, 0, 0, 0, 0, 0, 0, 223, 223, 223,
+ 223, 223, 223, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 223, 0, 0, 223, 223, 223, 223,
+
+ 223, 223, 227, 227, 227, 227, 227, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 227, 0, 0, 0, 0, 0, 0, 227, 227,
+ 227, 227, 227, 227, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 227, 227, 227,
+ 227, 227, 227, 230, 0, 0, 0, 0, 0, 0,
+ 230, 230, 230, 230, 230, 230, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 230,
+
+ 230, 230, 230, 230, 230, 233, 233, 233, 233, 233,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 233, 0, 0, 0, 0, 0,
+ 0, 233, 233, 233, 233, 233, 233, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 233, 233, 233, 233, 233, 233, 240, 0, 0, 0,
+ 0, 0, 0, 240, 240, 240, 240, 240, 240, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 240, 240, 240, 240, 240, 240, 241, 241,
+ 241, 241, 241, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 241, 0, 0,
+ 0, 0, 0, 0, 241, 241, 241, 241, 241, 241,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 241, 241, 241, 241, 241, 241, 252,
+ 252, 252, 252, 252, 0, 252, 0, 0, 0, 0,
+ 252, 252, 252, 0, 0, 0, 0, 0, 252, 0,
+ 0, 0, 0, 0, 0, 252, 252, 252, 252, 252,
+
+ 252, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 252, 0, 0, 252, 252, 252, 252, 252, 252,
+ 253, 0, 0, 0, 0, 0, 0, 253, 253, 253,
+ 253, 253, 253, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 253, 253, 253, 253,
+ 253, 253, 255, 255, 255, 255, 255, 0, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 255, 0, 0, 0, 0, 0, 0, 255, 255,
+
+ 255, 255, 255, 255, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 255, 0, 0, 255, 255, 255,
+ 255, 255, 255, 257, 0, 0, 0, 0, 0, 0,
+ 257, 257, 257, 257, 257, 257, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 257, 0, 0, 257,
+ 257, 257, 257, 257, 257, 258, 258, 258, 258, 258,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 258, 0, 0, 0, 0, 0,
+
+ 0, 258, 258, 258, 258, 258, 258, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 258, 0, 0,
+ 258, 258, 258, 258, 258, 258, 259, 259, 259, 259,
+ 259, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 259, 0, 0, 0, 0,
+ 0, 0, 259, 259, 259, 259, 259, 259, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 259, 259, 259, 259, 259, 259, 260, 260, 260,
+
+ 260, 260, 0, 0, 0, 0, 0, 0, 260, 0,
+ 0, 0, 0, 0, 0, 0, 260, 0, 0, 0,
+ 0, 0, 0, 260, 260, 260, 260, 260, 260, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 260,
+ 0, 0, 260, 260, 260, 260, 260, 260, 261, 261,
+ 261, 261, 261, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 261, 0, 0,
+ 0, 0, 0, 0, 261, 261, 261, 261, 261, 261,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 261, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 261, 261, 261, 261, 261, 261, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 261, 262, 262, 262, 262, 262, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 262, 0, 0, 0, 0, 0, 0, 262, 262,
+ 262, 262, 262, 262, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 262, 262, 262,
+ 262, 262, 262, 263, 0, 0, 0, 0, 0, 0,
+
+ 263, 263, 263, 263, 263, 263, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 263,
+ 263, 263, 263, 263, 263, 264, 264, 264, 264, 264,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 264, 0, 0, 0, 0, 0,
+ 0, 264, 264, 264, 264, 264, 264, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 264, 264, 264, 264, 264, 264, 266, 266, 266, 266,
+
+ 266, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 266, 0, 0, 0, 0,
+ 0, 0, 266, 266, 266, 266, 266, 266, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 266, 266, 266, 266, 266, 266, 272, 0, 0,
+ 0, 0, 0, 0, 272, 272, 272, 272, 272, 272,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 272, 272, 272, 272, 272, 272, 273,
+
+ 273, 273, 273, 273, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 273, 0,
+ 0, 0, 0, 0, 0, 273, 273, 273, 273, 273,
+ 273, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 273, 273, 273, 273, 273, 273,
+ 283, 283, 283, 283, 0, 0, 283, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 283,
+ 0, 0, 0, 0, 0, 0, 283, 283, 283, 283,
+ 283, 283, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 283, 0, 0, 283, 283, 283, 283, 283,
+ 283, 285, 285, 285, 285, 0, 0, 0, 0, 0,
+ 0, 0, 285, 0, 0, 0, 0, 0, 0, 0,
+ 285, 0, 0, 0, 0, 0, 0, 285, 285, 285,
+ 285, 285, 285, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 285, 0, 0, 285, 285, 285, 285,
+ 285, 285, 290, 290, 290, 290, 290, 0, 0, 0,
+ 0, 0, 0, 0, 0, 290, 0, 0, 0, 0,
+
+ 0, 290, 0, 0, 0, 0, 0, 0, 290, 290,
+ 290, 290, 290, 290, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 290, 0, 0, 290, 290, 290,
+ 290, 290, 290, 291, 291, 291, 291, 291, 0, 291,
+ 0, 0, 0, 0, 291, 291, 291, 0, 0, 0,
+ 0, 0, 291, 0, 0, 0, 0, 0, 0, 291,
+ 291, 291, 291, 291, 291, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 291, 0, 0, 291, 291,
+
+ 291, 291, 291, 291, 292, 0, 0, 0, 0, 0,
+ 0, 292, 292, 292, 292, 292, 292, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 292, 292, 292, 292, 292, 292, 294, 294, 294, 294,
+ 294, 0, 294, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 294, 0, 0, 0, 0,
+ 0, 0, 294, 294, 294, 294, 294, 294, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 294, 0,
+
+ 0, 294, 294, 294, 294, 294, 294, 297, 297, 297,
+ 297, 297, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 297, 0, 0, 0,
+ 0, 0, 0, 297, 297, 297, 297, 297, 297, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 297,
+ 0, 0, 297, 297, 297, 297, 297, 297, 298, 298,
+ 298, 298, 298, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 298, 0, 0,
+ 0, 0, 0, 0, 298, 298, 298, 298, 298, 298,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 298, 298, 298, 298, 298, 298, 299,
+ 299, 299, 299, 299, 0, 0, 0, 0, 0, 0,
+ 299, 0, 0, 0, 0, 0, 0, 0, 299, 0,
+ 0, 0, 0, 0, 0, 299, 299, 299, 299, 299,
+ 299, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 299, 0, 0, 299, 299, 299, 299, 299, 299,
+ 300, 300, 300, 300, 300, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 300, 0, 0, 300,
+ 0, 0, 0, 0, 0, 0, 300, 300, 300, 300,
+ 300, 300, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 300, 300, 300, 300, 300,
+ 300, 301, 301, 301, 301, 301, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 301, 0, 0, 0, 0, 0, 0, 301, 301, 301,
+ 301, 301, 301, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 301, 301, 301, 301,
+ 301, 301, 302, 302, 302, 302, 302, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 302, 0, 0, 0, 0, 0, 0, 302, 302,
+ 302, 302, 302, 302, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 302, 302, 302,
+ 302, 302, 302, 304, 304, 304, 304, 304, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 304, 0, 0, 0, 0, 0, 0, 304,
+
+ 304, 304, 304, 304, 304, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 304, 304,
+ 304, 304, 304, 304, 309, 0, 0, 0, 0, 0,
+ 0, 309, 309, 309, 309, 309, 309, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 309, 309, 309, 309, 309, 309, 310, 310, 310, 310,
+ 310, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 310, 0, 0, 0, 0,
+
+ 0, 0, 310, 310, 310, 310, 310, 310, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 310, 310, 310, 310, 310, 310, 323, 323, 323,
+ 323, 323, 0, 323, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 323, 0, 0, 0,
+ 0, 0, 0, 323, 323, 323, 323, 323, 323, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 323,
+ 0, 0, 323, 323, 323, 323, 323, 323, 324, 324,
+
+ 324, 324, 0, 0, 324, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 324, 0, 0,
+ 0, 0, 0, 0, 324, 324, 324, 324, 324, 324,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 324, 0, 0, 324, 324, 324, 324, 324, 324, 328,
+ 328, 328, 328, 328, 0, 0, 0, 0, 0, 0,
+ 328, 0, 0, 0, 0, 0, 0, 0, 328, 0,
+ 0, 0, 0, 0, 0, 328, 328, 328, 328, 328,
+ 328, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 328, 0, 0, 328, 328, 328, 328, 328, 328,
+ 329, 329, 329, 329, 0, 0, 0, 0, 0, 0,
+ 0, 329, 0, 0, 0, 0, 0, 0, 0, 329,
+ 0, 0, 0, 0, 0, 0, 329, 329, 329, 329,
+ 329, 329, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 329, 0, 0, 329, 329, 329, 329, 329,
+ 329, 330, 330, 330, 330, 330, 0, 0, 0, 0,
+ 0, 0, 0, 0, 330, 0, 0, 0, 0, 0,
+
+ 330, 0, 0, 0, 0, 0, 0, 330, 330, 330,
+ 330, 330, 330, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 330, 0, 0, 330, 330, 330, 330,
+ 330, 330, 334, 0, 0, 0, 0, 0, 0, 334,
+ 334, 334, 334, 334, 334, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 334, 334,
+ 334, 334, 334, 334, 335, 0, 0, 0, 0, 0,
+ 0, 335, 335, 335, 335, 335, 335, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 335, 335, 335, 335, 335, 335, 338, 0, 0, 0,
+ 0, 0, 0, 338, 338, 338, 338, 338, 338, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 338, 338, 338, 338, 338, 338, 339, 339,
+ 339, 339, 339, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 339, 0, 0,
+ 0, 0, 0, 0, 339, 339, 339, 339, 339, 339,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 339, 339, 339, 339, 339, 339, 341,
+ 341, 341, 341, 341, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 341, 0,
+ 0, 0, 0, 0, 0, 341, 341, 341, 341, 341,
+ 341, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 341, 341, 341, 341, 341, 341,
+ 358, 0, 0, 0, 0, 0, 0, 358, 358, 358,
+
+ 358, 358, 358, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 358, 358, 358, 358,
+ 358, 358, 362, 0, 0, 0, 0, 0, 0, 362,
+ 362, 362, 362, 362, 362, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 362, 362,
+ 362, 362, 362, 362, 363, 363, 363, 363, 363, 0,
+ 0, 0, 0, 0, 0, 0, 0, 363, 0, 0,
+ 0, 0, 0, 363, 0, 0, 0, 0, 0, 0,
+
+ 363, 363, 363, 363, 363, 363, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 363, 0, 0, 363,
+ 363, 363, 363, 363, 363, 368, 0, 0, 0, 0,
+ 0, 0, 368, 0, 368, 0, 0, 0, 0, 368,
+ 368, 0, 0, 368, 0, 0, 0, 0, 368, 0,
+ 0, 0, 0, 0, 368, 0, 0, 0, 0, 0,
+ 368, 0, 368, 0, 0, 0, 0, 368, 368, 0,
+ 0, 368, 373, 0, 0, 0, 0, 0, 0, 373,
+ 373, 373, 373, 373, 373, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 373, 373,
+ 373, 373, 373, 373, 374, 0, 0, 0, 0, 0,
+ 0, 374, 374, 374, 374, 374, 374, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 374, 374, 374, 374, 374, 374, 375, 0, 0, 0,
+ 0, 0, 0, 375, 375, 375, 375, 375, 375, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 375, 375, 375, 375, 375, 375, 387, 0,
+ 0, 0, 0, 0, 0, 387, 387, 387, 387, 387,
+ 387, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 387, 387, 387, 387, 387, 387,
+ 388, 0, 0, 0, 0, 0, 0, 388, 388, 388,
+ 388, 388, 388, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 388, 388, 388, 388,
+ 388, 388, 389, 0, 0, 0, 0, 0, 0, 389,
+
+ 389, 389, 389, 389, 389, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 389, 389,
+ 389, 389, 389, 389, 397, 0, 0, 0, 0, 0,
+ 0, 397, 397, 397, 397, 397, 397, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 397, 397, 397, 397, 397, 397, 398, 0, 0, 0,
+ 0, 0, 0, 398, 398, 398, 398, 398, 398, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 398, 398, 398, 398, 398, 398, 414, 0,
+ 0, 0, 0, 0, 0, 414, 414, 414, 414, 414,
+ 414, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 414, 414, 414, 414, 414, 414,
+ 426, 0, 0, 0, 0, 0, 0, 426, 426, 426,
+ 426, 426, 426, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 426, 426, 426, 426,
+
+ 426, 426, 428, 428, 428, 428, 428, 0, 0, 0,
+ 0, 0, 0, 0, 0, 428, 0, 0, 0, 0,
+ 0, 428, 0, 0, 0, 0, 0, 0, 428, 428,
+ 428, 428, 428, 428, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 428, 0, 0, 428, 428, 428,
+ 428, 428, 428, 437, 437, 437, 437, 437, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 437, 0, 0, 0, 0, 0, 0, 437,
+ 437, 437, 437, 437, 437, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 437, 437,
+ 437, 437, 437, 437, 439, 0, 0, 0, 0, 0,
+ 0, 439, 439, 439, 439, 439, 439, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 439, 439, 439, 439, 439, 439, 446, 0, 0, 0,
+ 0, 0, 0, 446, 446, 446, 446, 446, 446, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 446, 446, 446, 446, 446, 446, 447, 0,
+ 0, 0, 0, 0, 0, 447, 447, 447, 447, 447,
+ 447, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 447, 447, 447, 447, 447, 447,
+ 452, 0, 0, 0, 0, 0, 0, 452, 452, 452,
+ 452, 452, 452, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 452, 452, 452, 452,
+ 452, 452, 453, 0, 0, 0, 0, 0, 0, 453,
+
+ 453, 453, 453, 453, 453, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 453, 453,
+ 453, 453, 453, 453, 458, 0, 0, 0, 0, 0,
+ 0, 458, 458, 458, 458, 458, 458, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 458, 458, 458, 458, 458, 458, 459, 0, 0, 0,
+ 0, 0, 0, 459, 459, 459, 459, 459, 459, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 459, 459, 459, 459, 459, 459, 464, 0,
+ 0, 0, 0, 0, 0, 464, 464, 464, 464, 464,
+ 464, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 464, 464, 464, 464, 464, 464,
+ 479, 0, 0, 479, 479, 479, 479, 479, 479, 479,
+ 479, 479, 479, 480, 480, 0, 480, 480, 481, 0,
+ 0, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 482, 482, 0, 482, 482, 483, 0, 0, 483,
+
+ 483, 484, 0, 484, 484, 0, 484, 484, 485, 485,
+ 485, 485, 485, 485, 485, 485, 485, 485, 486, 486,
486, 486, 486, 486, 486, 486, 486, 486, 486, 486,
- 487, 487, 487, 487, 487, 487, 487, 487, 487, 488,
- 488, 0, 488, 488, 489, 489, 489, 489, 489, 489,
- 489, 489, 489, 489, 489, 490, 490, 490, 490, 490,
- 490, 490, 490, 490, 490, 490, 490, 491, 491, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 493, 493,
- 0, 493, 493, 494, 494, 494, 494, 494, 494, 494,
-
- 494, 494, 495, 495, 0, 495, 495, 496, 496, 496,
- 496, 496, 496, 496, 496, 496, 497, 497, 497, 497,
- 497, 497, 497, 497, 497, 498, 498, 498, 498, 498,
- 498, 498, 498, 498, 498, 498, 498, 499, 499, 499,
- 499, 499, 499, 499, 499, 499, 500, 500, 500, 500,
- 500, 500, 500, 500, 500, 501, 501, 501, 0, 501,
+ 486, 488, 488, 0, 488, 488, 489, 489, 489, 489,
+ 489, 489, 489, 489, 489, 489, 490, 490, 490, 490,
+ 490, 490, 490, 490, 490, 490, 490, 490, 490, 491,
+ 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
+ 491, 491, 491, 493, 493, 0, 493, 493, 494, 494,
+ 494, 494, 494, 494, 494, 494, 494, 494, 495, 495,
+ 0, 495, 495, 496, 496, 496, 496, 496, 496, 496,
+
+ 496, 496, 496, 497, 497, 497, 497, 497, 497, 497,
+ 497, 497, 497, 498, 498, 498, 500, 500, 500, 500,
+ 500, 500, 500, 500, 500, 500, 501, 501, 0, 501,
+ 501, 501, 501, 501, 501, 501, 501, 501, 501, 502,
502, 502, 502, 502, 502, 502, 502, 502, 502, 502,
- 502, 502, 503, 503, 503, 0, 503, 504, 504, 504,
- 504, 0, 504, 504, 504, 504, 504, 504, 505, 505,
- 505, 0, 505, 506, 0, 506, 506, 506, 506, 506,
-
- 506, 506, 506, 506, 507, 0, 507, 507, 507, 507,
- 507, 507, 507, 507, 507, 508, 508, 508, 508, 508,
- 508, 508, 508, 508, 508, 508, 509, 509, 509, 0,
- 509, 510, 510, 510, 510, 510, 510, 510, 510, 510,
- 510, 510, 511, 511, 511, 511, 511, 511, 511, 511,
- 511, 511, 511, 512, 512, 512, 0, 512, 513, 513,
- 513, 0, 0, 0, 513, 0, 0, 513, 513, 514,
- 514, 514, 514, 514, 514, 514, 514, 514, 515, 515,
- 515, 0, 0, 515, 515, 515, 0, 515, 515, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 478, 478,
+ 502, 502, 503, 503, 503, 503, 503, 503, 503, 503,
+ 503, 503, 503, 503, 503, 503, 504, 504, 504, 504,
+ 504, 504, 504, 504, 504, 504, 504, 504, 504, 504,
+ 505, 505, 505, 505, 505, 505, 505, 505, 505, 505,
+ 506, 506, 506, 506, 506, 506, 506, 506, 506, 506,
+
+ 507, 507, 507, 507, 508, 0, 0, 508, 508, 508,
+ 508, 508, 508, 508, 508, 508, 508, 510, 510, 510,
+ 510, 510, 510, 510, 510, 510, 510, 510, 510, 510,
+ 510, 512, 512, 512, 512, 513, 513, 513, 513, 513,
+ 513, 0, 513, 513, 513, 513, 513, 513, 514, 514,
+ 514, 514, 514, 514, 514, 514, 514, 514, 514, 514,
+ 514, 516, 516, 516, 516, 516, 516, 516, 516, 516,
+ 516, 516, 516, 516, 516, 518, 518, 518, 518, 519,
+ 519, 519, 519, 519, 519, 0, 519, 519, 519, 519,
+ 519, 519, 520, 0, 0, 520, 520, 520, 520, 520,
+
+ 520, 520, 520, 520, 520, 521, 0, 0, 521, 521,
+ 521, 521, 521, 521, 521, 521, 521, 521, 522, 522,
+ 522, 522, 522, 522, 522, 522, 522, 522, 522, 522,
+ 522, 523, 523, 523, 523, 523, 523, 523, 523, 523,
+ 523, 523, 523, 523, 525, 525, 0, 525, 525, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 528, 528, 528, 528, 529, 529, 529, 529,
+ 529, 529, 529, 529, 529, 529, 529, 529, 529, 530,
+ 0, 0, 530, 530, 530, 530, 530, 530, 530, 530,
+ 530, 530, 531, 531, 531, 531, 531, 531, 531, 531,
+
+ 531, 531, 531, 531, 531, 532, 532, 532, 532, 532,
+ 0, 0, 532, 532, 532, 532, 532, 532, 533, 533,
+ 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
+ 533, 534, 534, 534, 534, 534, 534, 534, 534, 534,
+ 534, 534, 534, 534, 535, 535, 0, 535, 535, 536,
+ 536, 536, 536, 536, 536, 536, 536, 536, 536, 536,
+ 536, 536, 538, 538, 538, 538, 539, 539, 0, 539,
+ 539, 539, 539, 539, 539, 539, 539, 539, 539, 540,
+ 540, 540, 540, 540, 540, 540, 540, 540, 540, 540,
+ 540, 540, 541, 541, 0, 541, 541, 541, 541, 541,
+
+ 541, 541, 541, 541, 541, 542, 542, 542, 542, 542,
+ 542, 542, 542, 542, 542, 542, 542, 542, 543, 543,
+ 543, 543, 543, 0, 0, 543, 543, 543, 543, 543,
+ 543, 546, 546, 546, 546, 0, 0, 0, 0, 546,
+ 0, 0, 546, 546, 547, 547, 547, 547, 0, 0,
+ 0, 547, 547, 547, 0, 547, 547, 548, 548, 548,
+ 548, 548, 548, 548, 548, 548, 548, 549, 549, 549,
+ 549, 549, 549, 549, 549, 549, 549, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
- 478, 478, 478, 478, 478, 478, 478, 478, 478
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478
} ;
#line 1 "<stdin>"
@@ -878,7 +1813,7 @@ YY_DECL
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
++yy_cp;
}
- while ( yy_base[yy_current_state] != 2399 );
+ while ( yy_base[yy_current_state] != 6578 );
yy_find_action:
yy_act = yy_accept[yy_current_state];
@@ -1250,7 +2185,7 @@ YY_RULE_SETUP
#line 110 "<stdin>"
ECHO;
YY_BREAK
-#line 1761 "<stdout>"
+#line 2738 "<stdout>"
case YY_STATE_EOF(INITIAL):
case YY_END_OF_BUFFER:
case YY_STATE_EOF(mediaquery):
diff --git a/src/3rdparty/webkit/WebCore/page/DOMWindow.cpp b/src/3rdparty/webkit/WebCore/page/DOMWindow.cpp
index 42d2e90..dd14fb9 100644
--- a/src/3rdparty/webkit/WebCore/page/DOMWindow.cpp
+++ b/src/3rdparty/webkit/WebCore/page/DOMWindow.cpp
@@ -333,6 +333,9 @@ Storage* DOMWindow::sessionStorage() const
Storage* DOMWindow::localStorage() const
{
+ if (m_localStorage)
+ return m_localStorage.get();
+
Document* document = this->document();
if (!document)
return 0;
diff --git a/src/3rdparty/webkit/WebCore/page/DOMWindow.h b/src/3rdparty/webkit/WebCore/page/DOMWindow.h
index 0277441..e7fab18 100644
--- a/src/3rdparty/webkit/WebCore/page/DOMWindow.h
+++ b/src/3rdparty/webkit/WebCore/page/DOMWindow.h
@@ -265,7 +265,7 @@ namespace WebCore {
Location* optionalLocation() const { return m_location.get(); }
#if ENABLE(DOM_STORAGE)
Storage* optionalSessionStorage() const { return m_sessionStorage.get(); }
- Storage* optionalLocalStorage() const { return m_sessionStorage.get(); }
+ Storage* optionalLocalStorage() const { return m_localStorage.get(); }
#endif
#if ENABLE(OFFLINE_WEB_APPLICATIONS)
DOMApplicationCache* optionalApplicationCache() const { return m_applicationCache.get(); }
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp
index d4ab59f..cea255e 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp
@@ -35,6 +35,8 @@
#include "StillImageQt.h"
#include <QBuffer>
+#include <QColor>
+#include <QImage>
#include <QImageWriter>
#include <QPainter>
#include <QPixmap>
@@ -79,10 +81,57 @@ Image* ImageBuffer::image() const
return m_image.get();
}
-PassRefPtr<ImageData> ImageBuffer::getImageData(const IntRect&) const
+PassRefPtr<ImageData> ImageBuffer::getImageData(const IntRect& rect) const
{
- notImplemented();
- return 0;
+ PassRefPtr<ImageData> result = ImageData::create(rect.width(), rect.height());
+ unsigned char* data = result->data()->data();
+
+ if (rect.x() < 0 || rect.y() < 0 || (rect.x() + rect.width()) > m_size.width() || (rect.y() + rect.height()) > m_size.height())
+ memset(data, 0, result->data()->length());
+
+ int originx = rect.x();
+ int destx = 0;
+ if (originx < 0) {
+ destx = -originx;
+ originx = 0;
+ }
+ int endx = rect.x() + rect.width();
+ if (endx > m_size.width())
+ endx = m_size.width();
+ int numColumns = endx - originx;
+
+ int originy = rect.y();
+ int desty = 0;
+ if (originy < 0) {
+ desty = -originy;
+ originy = 0;
+ }
+ int endy = rect.y() + rect.height();
+ if (endy > m_size.height())
+ endy = m_size.height();
+ int numRows = endy - originy;
+
+ QImage image = m_data.m_pixmap.toImage();
+ if (image.format() != QImage::Format_ARGB32)
+ image = image.convertToFormat(QImage::Format_ARGB32);
+ ASSERT(image);
+
+ unsigned destBytesPerRow = 4 * rect.width();
+ unsigned char* destRows = data + desty * destBytesPerRow + destx * 4;
+ for (int y = 0; y < numRows; ++y) {
+ for (int x = 0; x < numColumns; x++) {
+ QRgb value = image.pixel(x + originx, y + originy);
+ int basex = x * 4;
+
+ destRows[basex] = qRed(value);
+ destRows[basex + 1] = qGreen(value);
+ destRows[basex + 2] = qBlue(value);
+ destRows[basex + 3] = qAlpha(value);
+ }
+ destRows += destBytesPerRow;
+ }
+
+ return result;
}
void ImageBuffer::putImageData(ImageData*, const IntRect&, const IntPoint&)
diff --git a/src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp b/src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp
index 9308878..c8f6ad5 100644
--- a/src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp
@@ -41,6 +41,22 @@ QNetworkRequest ResourceRequest::toNetworkRequest() const
request.setRawHeader(name, value);
}
+ switch (cachePolicy()) {
+ case ReloadIgnoringCacheData:
+ request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysNetwork);
+ break;
+ case ReturnCacheDataElseLoad:
+ request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache);
+ break;
+ case ReturnCacheDataDontLoad:
+ request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysCache);
+ break;
+ case UseProtocolCachePolicy:
+ // QNetworkRequest::PreferNetwork
+ default:
+ break;
+ }
+
return request;
}
diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
index d85e880..fe74fac 100644
--- a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
@@ -106,6 +106,8 @@ private slots:
void textSelection();
void textEditing();
+ void requestCache();
+
private:
@@ -989,6 +991,32 @@ void tst_QWebPage::textEditing()
delete page;
}
+void tst_QWebPage::requestCache()
+{
+ TestPage page;
+ QSignalSpy loadSpy(&page, SIGNAL(loadFinished(bool)));
+
+ page.mainFrame()->setUrl(QString("data:text/html,<a href=\"data:text/html,Reached\" target=\"_blank\">Click me</a>"));
+ QTRY_COMPARE(loadSpy.count(), 1);
+ QTRY_COMPARE(page.navigations.count(), 1);
+
+ page.mainFrame()->setUrl(QString("data:text/html,<a href=\"data:text/html,Reached\" target=\"_blank\">Click me2</a>"));
+ QTRY_COMPARE(loadSpy.count(), 2);
+ QTRY_COMPARE(page.navigations.count(), 2);
+
+ page.triggerAction(QWebPage::Stop);
+ QVERIFY(page.history()->canGoBack());
+ page.triggerAction(QWebPage::Back);
+
+ QTRY_COMPARE(loadSpy.count(), 3);
+ QTRY_COMPARE(page.navigations.count(), 3);
+ QCOMPARE(page.navigations.at(0).request.attribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferNetwork).toInt(),
+ (int)QNetworkRequest::PreferNetwork);
+ QCOMPARE(page.navigations.at(1).request.attribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferNetwork).toInt(),
+ (int)QNetworkRequest::PreferNetwork);
+ QCOMPARE(page.navigations.at(2).request.attribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferNetwork).toInt(),
+ (int)QNetworkRequest::PreferCache);
+}
QTEST_MAIN(tst_QWebPage)
#include "tst_qwebpage.moc"
diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp
index 62b4ed5..484e79a 100644
--- a/src/corelib/io/qsettings.cpp
+++ b/src/corelib/io/qsettings.cpp
@@ -2330,6 +2330,10 @@ void QConfFileSettingsPrivate::ensureSectionParsed(QConfFile *confFile,
\o \c{HKEY_LOCAL_MACHINE\Software\MySoft}
\endlist
+ \note On Windows, for 32-bit programs running in WOW64 mode, settings are
+ stored in the following registry path:
+ \c{HKEY_LOCAL_MACHINE\Software\WOW6432node}.
+
If the file format is IniFormat, the following files are
used on Unix and Mac OS X:
diff --git a/src/corelib/io/qtemporaryfile.cpp b/src/corelib/io/qtemporaryfile.cpp
index 3cfce83..6a7b067 100644
--- a/src/corelib/io/qtemporaryfile.cpp
+++ b/src/corelib/io/qtemporaryfile.cpp
@@ -268,11 +268,13 @@ static int _gettemp(char *path, int *doopen, int domkdir, int slen)
/*NOTREACHED*/
}
+#ifndef Q_WS_WIN
static int qt_mkstemps(char *path, int slen)
{
int fd = 0;
return (_gettemp(path, &fd, 0, slen) ? fd : -1);
}
+#endif
//************* QTemporaryFileEngine
class QTemporaryFileEngine : public QFSFileEngine
diff --git a/src/corelib/kernel/qcoreevent.h b/src/corelib/kernel/qcoreevent.h
index 5487703..fa472e6 100644
--- a/src/corelib/kernel/qcoreevent.h
+++ b/src/corelib/kernel/qcoreevent.h
@@ -264,6 +264,7 @@ public:
GrabKeyboard = 188,
UngrabKeyboard = 189,
CocoaRequestModal = 190, // Internal for requesting an application modal Cocoa Window
+ MacGLClearDrawable = 191, // Internal Cocoa, the window has changed, so we must clear
// 512 reserved for Qt Jambi's MetaCall event
// 513 reserved for Qt Jambi's DeleteOnMainThread event
diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp
index 9c637ac..375d672 100644
--- a/src/corelib/tools/qstring.cpp
+++ b/src/corelib/tools/qstring.cpp
@@ -579,7 +579,7 @@ const QString::Null QString::null = { };
'\\0' character for a null string (\e not a null pointer), and
QString() compares equal to QString(""). We recommend that you
always use the isEmpty() function and avoid isNull().
-
+
\section1 Argument Formats
In member functions where an argument \e format can be specified
@@ -1433,7 +1433,7 @@ QString &QString::append(QChar ch)
truncated at the specified \a position.
\snippet doc/src/snippets/qstring/main.cpp 37
-
+
\sa insert(), replace()
*/
QString &QString::remove(int pos, int len)
@@ -1552,7 +1552,7 @@ QString &QString::replace(int pos, int len, const QChar *unicode, int size)
return *this;
if (pos + len > d->size)
len = d->size - pos;
-
+
uint index = pos;
replace_helper(&index, 1, len, unicode, size);
return *this;
@@ -1561,15 +1561,13 @@ QString &QString::replace(int pos, int len, const QChar *unicode, int size)
/*!
\fn QString &QString::replace(int position, int n, QChar after)
\overload replace()
-
+
Replaces \a n characters beginning at index \a position with the
character \a after and returns a reference to this string.
*/
QString &QString::replace(int pos, int len, QChar after)
{
- uint index = pos;
- replace_helper(&index, 1, len, &after, 1);
- return *this;
+ return replace(pos, len, &after, 1);
}
/*!
@@ -1602,7 +1600,7 @@ void QString::replace_helper(uint *indices, int nIndices, int blen, const QChar
{
if (blen == alen) {
detach();
- for (int i = 0; i < nIndices; ++i)
+ for (int i = 0; i < nIndices; ++i)
memcpy(d->data + indices[i], after, alen * sizeof(QChar));
} else if (alen < blen) {
detach();
@@ -1633,7 +1631,7 @@ void QString::replace_helper(uint *indices, int nIndices, int blen, const QChar
int newLen = d->size + adjust;
int moveend = d->size;
resize(newLen);
-
+
while (nIndices) {
--nIndices;
int movestart = indices[nIndices] + blen;
@@ -1685,7 +1683,7 @@ QString &QString::replace(const QChar *before, int blen,
memcpy(copy, before, blen*sizeof(QChar));
b = copy;
}
-
+
QStringMatcher matcher(b, blen, cs);
int index = 0;
@@ -1712,7 +1710,7 @@ QString &QString::replace(const QChar *before, int blen,
// index has to be adjusted in case we get back into the loop above.
index += pos*(alen-blen);
}
-
+
if (a != after)
::free((QChar *)a);
if (b != before)
@@ -2250,7 +2248,7 @@ int QString::indexOf(const QLatin1String &str, int from, Qt::CaseSensitivity cs)
QVarLengthArray<ushort> s(len);
for (int i = 0; i < len; ++i)
s[i] = str.latin1()[i];
-
+
return qFindString(unicode(), length(), from, (const QChar *)s.data(), len, cs);
}
@@ -2346,7 +2344,7 @@ static int lastIndexOfHelper(const ushort *haystack, int from, const ushort *nee
/*
See indexOf() for explanations.
*/
-
+
const ushort *end = haystack;
haystack += from;
const int sl_minus_1 = sl-1;
@@ -2408,7 +2406,7 @@ int QString::lastIndexOf(const QString &str, int from, Qt::CaseSensitivity cs) c
const int sl = str.d->size;
if (sl == 1)
return lastIndexOf(QChar(str.d->data[0]), from, cs);
-
+
const int l = d->size;
if (from < 0)
from += l;
@@ -2446,7 +2444,7 @@ int QString::lastIndexOf(const QLatin1String &str, int from, Qt::CaseSensitivity
const int sl = qstrlen(str.latin1());
if (sl == 1)
return lastIndexOf(QLatin1Char(str.latin1()[0]), from, cs);
-
+
const int l = d->size;
if (from < 0)
from += l;
@@ -5995,7 +5993,7 @@ QString QString::normalized(QString::NormalizationForm mode, QChar::UnicodeVersi
}
if (simple)
return *this;
-
+
QString s = *this;
if (version != CURRENT_VERSION) {
for (int i = 0; i < NumNormalizationCorrections; ++i) {
@@ -6207,7 +6205,7 @@ static QString replaceArgEscapes(const QString &s, const ArgEscapeData &d, int f
/*!
Returns a copy of this string with the lowest numbered place marker
replaced by string \a a, i.e., \c %1, \c %2, ..., \c %99.
-
+
\a fieldWidth specifies the minimum amount of space that argument \a
a shall occupy. If \a a requires less space than \a fieldWidth, it
is padded to \a fieldWidth with character \a fillChar. A positive
@@ -6819,7 +6817,7 @@ void QString::updateProperties() const
Appends the given \a ch character onto the end of this string.
*/
-/*!
+/*!
\fn std::string QString::toStdString() const
Returns a std::string object with the data contained in this
diff --git a/src/corelib/tools/qvector.h b/src/corelib/tools/qvector.h
index 6bea03b..3fd52ee 100644
--- a/src/corelib/tools/qvector.h
+++ b/src/corelib/tools/qvector.h
@@ -98,6 +98,8 @@ struct QVectorTypedData
T array[1];
};
+class QRegion;
+
template <typename T>
class QVector
{
diff --git a/src/gui/accessible/qaccessiblewidget.cpp b/src/gui/accessible/qaccessiblewidget.cpp
index 4b2b2ab..753ac57 100644
--- a/src/gui/accessible/qaccessiblewidget.cpp
+++ b/src/gui/accessible/qaccessiblewidget.cpp
@@ -131,9 +131,16 @@ QString Q_GUI_EXPORT qt_accHotKey(const QString &text)
int fa = 0;
QChar ac;
while ((fa = text.indexOf(QLatin1Char('&'), fa)) != -1) {
- if (fa == text.length() - 1 || text.at(fa+1) != QLatin1Char('&')) {
- ac = text.at(fa+1);
- break;
+ ++fa;
+ if (fa < text.length()) {
+ // ignore "&&"
+ if (text.at(fa) == QLatin1Char('&')) {
+ ++fa;
+ continue;
+ } else {
+ ac = text.at(fa);
+ break;
+ }
}
}
if (ac.isNull())
diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp
index 5131271..b20321f 100644
--- a/src/gui/dialogs/qfiledialog.cpp
+++ b/src/gui/dialogs/qfiledialog.cpp
@@ -957,25 +957,29 @@ void QFileDialog::setNameFilters(const QStringList &filters)
{
Q_D(QFileDialog);
d->defaultFileTypes = (filters == QStringList(QFileDialog::tr("All Files (*)")));
- d->nameFilters = filters;
+ QStringList cleanedFilters;
+ for (int i = 0; i < filters.count(); ++i) {
+ cleanedFilters << filters[i].simplified();
+ }
+ d->nameFilters = cleanedFilters;
if (d->nativeDialogInUse){
- d->setNameFilters_sys(filters);
+ d->setNameFilters_sys(cleanedFilters);
return;
}
d->qFileDialogUi->fileTypeCombo->clear();
- if (filters.isEmpty())
+ if (cleanedFilters.isEmpty())
return;
if (testOption(HideNameFilterDetails)) {
QStringList strippedFilters;
- for (int i = 0; i < filters.count(); ++i) {
- strippedFilters.append(filters[i].mid(0, filters[i].indexOf(QLatin1String(" ("))));
+ for (int i = 0; i < cleanedFilters.count(); ++i) {
+ strippedFilters.append(cleanedFilters[i].mid(0, cleanedFilters[i].indexOf(QLatin1String(" ("))));
}
d->qFileDialogUi->fileTypeCombo->addItems(strippedFilters);
} else {
- d->qFileDialogUi->fileTypeCombo->addItems(filters);
+ d->qFileDialogUi->fileTypeCombo->addItems(cleanedFilters);
}
d->_q_useNameFilter(0);
}
diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index b520a3f..d1b8393 100644
--- a/src/gui/graphicsview/qgraphicsitem.cpp
+++ b/src/gui/graphicsview/qgraphicsitem.cpp
@@ -4223,9 +4223,9 @@ QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QRectF &rect
*/
QPolygonF QGraphicsItem::mapToParent(const QRectF &rect) const
{
- if (!d_ptr->hasTransform)
- return QPolygonF(rect.translated(d_ptr->pos));
- return transform().map(rect.translated(d_ptr->pos));
+ QPolygonF p = !d_ptr->hasTransform ? rect : transform().map(rect);
+ p.translate(d_ptr->pos);
+ return p;
}
/*!
@@ -4292,8 +4292,8 @@ QRectF QGraphicsItem::mapRectToItem(const QGraphicsItem *item, const QRectF &rec
*/
QRectF QGraphicsItem::mapRectToParent(const QRectF &rect) const
{
- QRectF r = rect.translated(d_ptr->pos.x(), d_ptr->pos.y());
- return !d_ptr->hasTransform ? r : transform().mapRect(r);
+ QRectF r = !d_ptr->hasTransform ? rect : transform().mapRect(rect);
+ return r.translated(d_ptr->pos);
}
/*!
@@ -4424,9 +4424,9 @@ QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPolygonF &p
*/
QPolygonF QGraphicsItem::mapToParent(const QPolygonF &polygon) const
{
- QPolygonF p = polygon;
+ QPolygonF p = !d_ptr->hasTransform ? polygon : transform().map(polygon);
p.translate(d_ptr->pos);
- return d_ptr->hasTransform ? transform().map(p) : p;
+ return p;
}
/*!
@@ -4468,7 +4468,10 @@ QPainterPath QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPainterP
*/
QPainterPath QGraphicsItem::mapToParent(const QPainterPath &path) const
{
- return d_ptr->parent ? itemTransform(d_ptr->parent).map(path) : mapToScene(path);
+ QTransform x = QTransform::fromTranslate(d_ptr->pos.x(), d_ptr->pos.y());
+ if (d_ptr->hasTransform)
+ x = transform() * x;
+ return x.map(path);
}
/*!
@@ -5697,12 +5700,11 @@ void QGraphicsItem::removeFromIndex()
*/
void QGraphicsItem::prepareGeometryChange()
{
- if (!d_ptr->scene)
- return;
-
- d_ptr->updateHelper(QRectF(), false, /*maybeDirtyClipPath=*/!d_ptr->inSetPosHelper);
- QGraphicsScenePrivate *scenePrivate = d_ptr->scene->d_func();
- scenePrivate->removeFromIndex(this);
+ if (d_ptr->scene) {
+ d_ptr->updateHelper(QRectF(), false, /*maybeDirtyClipPath=*/!d_ptr->inSetPosHelper);
+ QGraphicsScenePrivate *scenePrivate = d_ptr->scene->d_func();
+ scenePrivate->removeFromIndex(this);
+ }
if (d_ptr->inSetPosHelper)
return;
@@ -8487,6 +8489,7 @@ void QGraphicsSimpleTextItem::setText(const QString &text)
return;
d->text = text;
d->updateBoundingRect();
+ update();
}
/*!
diff --git a/src/gui/itemviews/qsortfilterproxymodel.cpp b/src/gui/itemviews/qsortfilterproxymodel.cpp
index 10bcb9a..b0137d2 100644
--- a/src/gui/itemviews/qsortfilterproxymodel.cpp
+++ b/src/gui/itemviews/qsortfilterproxymodel.cpp
@@ -274,6 +274,9 @@ IndexMap::const_iterator QSortFilterProxyModelPrivate::create_mapping(
Mapping *m = new Mapping;
+ if (model->canFetchMore(source_parent))
+ model->fetchMore(source_parent);
+
int source_rows = model->rowCount(source_parent);
for (int i = 0; i < source_rows; ++i) {
if (q->filterAcceptsRow(i, source_parent))
diff --git a/src/gui/kernel/qcocoapanel_mac.mm b/src/gui/kernel/qcocoapanel_mac.mm
index 95e20af..c69826f 100644
--- a/src/gui/kernel/qcocoapanel_mac.mm
+++ b/src/gui/kernel/qcocoapanel_mac.mm
@@ -49,8 +49,10 @@
#include <QtGui/QWidget>
+QT_FORWARD_DECLARE_CLASS(QWidget);
+QT_BEGIN_NAMESPACE
extern Qt::MouseButton cocoaButton2QtButton(NSInteger buttonNum); // qcocoaview.mm
-
+QT_END_NAMESPACE
QT_USE_NAMESPACE
@implementation QT_MANGLE_NAMESPACE(QCocoaPanel)
@@ -108,7 +110,7 @@ QT_USE_NAMESPACE
[self retain];
QWidget *widget = [[QT_MANGLE_NAMESPACE(QCocoaWindowDelegate) sharedDelegate] qt_qwidgetForWindow:self];
- QCocoaView *view = static_cast<QCocoaView *>(qt_mac_nativeview_for(widget));
+ QT_MANGLE_NAMESPACE(QCocoaView) *view = static_cast<QT_MANGLE_NAMESPACE(QCocoaView) *>(qt_mac_nativeview_for(widget));
Qt::MouseButton mouseButton = cocoaButton2QtButton([event buttonNumber]);
// sometimes need to redirect mouse events to the popup.
@@ -172,7 +174,7 @@ QT_USE_NAMESPACE
+ (Class)frameViewClassForStyleMask:(NSUInteger)styleMask
{
if (styleMask & QtMacCustomizeWindow)
- return [QCocoaWindowCustomThemeFrame class];
+ return [QT_MANGLE_NAMESPACE(QCocoaWindowCustomThemeFrame) class];
return [super frameViewClassForStyleMask:styleMask];
}
diff --git a/src/gui/kernel/qcocoaview_mac.mm b/src/gui/kernel/qcocoaview_mac.mm
index bcbd1bf..7668d66 100644
--- a/src/gui/kernel/qcocoaview_mac.mm
+++ b/src/gui/kernel/qcocoaview_mac.mm
@@ -944,6 +944,27 @@ extern "C" {
}
}
+- (void)viewWillMoveToWindow:(NSWindow *)window
+{
+ if (qwidget->windowFlags() & Qt::MSWindowsOwnDC
+ && (window != [self window])) { // OpenGL Widget
+ // Create a stupid ClearDrawable Event
+ QEvent event(QEvent::MacGLClearDrawable);
+ qApp->sendEvent(qwidget, &event);
+ }
+}
+
+- (void)viewDidMoveToWindow
+{
+ if (qwidget->windowFlags() & Qt::MSWindowsOwnDC && [self window]) {
+ // call update paint event
+ qwidgetprivate->needWindowChange = true;
+ QEvent event(QEvent::MacGLWindowChange);
+ qApp->sendEvent(qwidget, &event);
+ }
+}
+
+
// NSTextInput Protocol implementation
- (void) insertText:(id)aString
diff --git a/src/gui/kernel/qcocoawindow_mac.mm b/src/gui/kernel/qcocoawindow_mac.mm
index 972e477..89f481f 100644
--- a/src/gui/kernel/qcocoawindow_mac.mm
+++ b/src/gui/kernel/qcocoawindow_mac.mm
@@ -53,9 +53,10 @@
#include <QtGui/QWidget>
QT_FORWARD_DECLARE_CLASS(QWidget);
-QT_USE_NAMESPACE
-
+QT_BEGIN_NAMESPACE
extern Qt::MouseButton cocoaButton2QtButton(NSInteger buttonNum); // qcocoaview.mm
+QT_END_NAMESPACE
+QT_USE_NAMESPACE
@implementation NSWindow (QT_MANGLE_NAMESPACE(QWidgetIntegration))
@@ -130,7 +131,7 @@ extern Qt::MouseButton cocoaButton2QtButton(NSInteger buttonNum); // qcocoaview.
[self retain];
QWidget *widget = [[QT_MANGLE_NAMESPACE(QCocoaWindowDelegate) sharedDelegate] qt_qwidgetForWindow:self];
- QCocoaView *view = static_cast<QCocoaView *>(qt_mac_nativeview_for(widget));
+ QT_MANGLE_NAMESPACE(QCocoaView) *view = static_cast<QT_MANGLE_NAMESPACE(QCocoaView) *>(qt_mac_nativeview_for(widget));
Qt::MouseButton mouseButton = cocoaButton2QtButton([event buttonNumber]);
// sometimes need to redirect mouse events to the popup.
diff --git a/src/gui/painting/qtransform.cpp b/src/gui/painting/qtransform.cpp
index fa808d0..39e429d 100644
--- a/src/gui/painting/qtransform.cpp
+++ b/src/gui/painting/qtransform.cpp
@@ -1715,13 +1715,12 @@ QRect QTransform::mapRect(const QRect &rect) const
return QRect(x, y, w, h);
} else if (t < TxProject) {
// see mapToPolygon for explanations of the algorithm.
- qreal x0 = 0, y0 = 0;
- qreal x, y;
- MAP(rect.left(), rect.top(), x0, y0);
- qreal xmin = x0;
- qreal ymin = y0;
- qreal xmax = x0;
- qreal ymax = y0;
+ qreal x = 0, y = 0;
+ MAP(rect.left(), rect.top(), x, y);
+ qreal xmin = x;
+ qreal ymin = y;
+ qreal xmax = x;
+ qreal ymax = y;
MAP(rect.right() + 1, rect.top(), x, y);
xmin = qMin(xmin, x);
ymin = qMin(ymin, y);
@@ -1782,13 +1781,12 @@ QRectF QTransform::mapRect(const QRectF &rect) const
}
return QRectF(x, y, w, h);
} else if (t < TxProject) {
- qreal x0 = 0, y0 = 0;
- qreal x, y;
- MAP(rect.x(), rect.y(), x0, y0);
- qreal xmin = x0;
- qreal ymin = y0;
- qreal xmax = x0;
- qreal ymax = y0;
+ qreal x = 0, y = 0;
+ MAP(rect.x(), rect.y(), x, y);
+ qreal xmin = x;
+ qreal ymin = y;
+ qreal xmax = x;
+ qreal ymax = y;
MAP(rect.x() + rect.width(), rect.y(), x, y);
xmin = qMin(xmin, x);
ymin = qMin(ymin, y);
diff --git a/src/gui/painting/qwindowsurface.cpp b/src/gui/painting/qwindowsurface.cpp
index bcb0380..d941a24 100644
--- a/src/gui/painting/qwindowsurface.cpp
+++ b/src/gui/painting/qwindowsurface.cpp
@@ -310,10 +310,13 @@ void qt_scrollRectInImage(QImage &img, const QRect &rect, const QPoint &offset)
int lineskip = img.bytesPerLine();
int depth = img.depth() >> 3;
-
- const QRect r = rect & QRect(0, 0, img.width(), img.height());
+ const QRect imageRect(0, 0, img.width(), img.height());
+ const QRect r = rect & imageRect & imageRect.translated(-offset);
const QPoint p = rect.topLeft() + offset;
+ if (r.isEmpty())
+ return;
+
const uchar *src;
uchar *dest;
diff --git a/src/gui/styles/gtksymbols.cpp b/src/gui/styles/gtksymbols.cpp
index f7af8f8..acb8437 100644
--- a/src/gui/styles/gtksymbols.cpp
+++ b/src/gui/styles/gtksymbols.cpp
@@ -549,6 +549,7 @@ void QGtkStyleUpdateScheduler::updateTheme()
QPalette newPalette = qApp->style()->standardPalette();
QApplicationPrivate::setSystemPalette(newPalette);
QApplication::setPalette(newPalette);
+ QGtk::initGtkWidgets();
QGtk::applyCustomPaletteHash();
QList<QWidget*> widgets = QApplication::allWidgets();
// Notify all widgets that size metrics might have changed
diff --git a/src/gui/styles/qgtkstyle.cpp b/src/gui/styles/qgtkstyle.cpp
index 519fed7..b7fa575 100644
--- a/src/gui/styles/qgtkstyle.cpp
+++ b/src/gui/styles/qgtkstyle.cpp
@@ -977,7 +977,7 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
if (widget && widget->testAttribute(Qt::WA_SetPalette) &&
resolve_mask & (1 << QPalette::Base)) // Palette overridden by user
- painter->fillRect(textRect, option->palette.base().color());
+ painter->fillRect(textRect, option->palette.base());
else
gtkPainter.paintFlatBox( gtkEntry, "entry_bg", textRect,
option->state & State_Enabled ? GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE, GTK_SHADOW_NONE, gtkEntry->style);
@@ -2760,10 +2760,13 @@ void QGtkStyle::drawControl(ControlElement element,
if (tab->state & State_Selected)
state = GTK_STATE_NORMAL;
- bool first = tab->position == QStyleOptionTab::Beginning || tab->position == QStyleOptionTab::OnlyOneTab;
- bool last = tab->position == QStyleOptionTab::End || tab->position == QStyleOptionTab::OnlyOneTab;
bool selected = (tab->state & State_Selected);
- if (option->direction == Qt::RightToLeft) {
+ bool first = false, last = false;
+ if (widget) {
+ // This is most accurate and avoids resizing tabs while moving
+ first = tab->rect.left() == widget->rect().left();
+ last = tab->rect.right() == widget->rect().right();
+ } else if (option->direction == Qt::RightToLeft) {
bool tmp = first;
first = last;
last = tmp;
diff --git a/src/gui/widgets/qcocoamenu_mac.mm b/src/gui/widgets/qcocoamenu_mac.mm
index c5fee66..6434289 100644
--- a/src/gui/widgets/qcocoamenu_mac.mm
+++ b/src/gui/widgets/qcocoamenu_mac.mm
@@ -55,11 +55,17 @@
QT_FORWARD_DECLARE_CLASS(QAction)
QT_FORWARD_DECLARE_CLASS(QWidget)
QT_FORWARD_DECLARE_CLASS(QApplication)
+QT_FORWARD_DECLARE_CLASS(QCoreApplication)
+QT_FORWARD_DECLARE_CLASS(QApplicationPrivate)
+QT_FORWARD_DECLARE_CLASS(QKeyEvent)
+QT_FORWARD_DECLARE_CLASS(QEvent)
QT_BEGIN_NAMESPACE
extern bool qt_sendSpontaneousEvent(QObject*, QEvent*); //qapplication.cpp
QT_END_NAMESPACE
+QT_USE_NAMESPACE
+
@implementation QT_MANGLE_NAMESPACE(QCocoaMenu)
- (id)initWithQMenu:(QMenu*)menu
diff --git a/src/gui/widgets/qmenu.cpp b/src/gui/widgets/qmenu.cpp
index ed3e338..7396a9d 100644
--- a/src/gui/widgets/qmenu.cpp
+++ b/src/gui/widgets/qmenu.cpp
@@ -2889,8 +2889,8 @@ void QMenu::internalDelayedPopup()
int subMenuOffset = style()->pixelMetric(QStyle::PM_SubMenuOverlap, 0, this);
const QRect actionRect(d->actionRect(d->currentAction));
const QSize menuSize(d->activeMenu->sizeHint());
- const QPoint rightPos(mapToGlobal(QPoint(rect().right() + subMenuOffset + 1, actionRect.top())));
- const QPoint leftPos(mapToGlobal(QPoint(rect().left() - subMenuOffset - menuSize.width(), actionRect.top())));
+ const QPoint rightPos(mapToGlobal(QPoint(actionRect.right() + subMenuOffset + 1, actionRect.top())));
+ const QPoint leftPos(mapToGlobal(QPoint(actionRect.left() - subMenuOffset - menuSize.width(), actionRect.top())));
QPoint pos(rightPos);
QMenu *caused = qobject_cast<QMenu*>(d->activeMenu->d_func()->causedPopup.widget);
diff --git a/src/gui/widgets/qtabbar.cpp b/src/gui/widgets/qtabbar.cpp
index 7d970ad..b6e6b6d 100644
--- a/src/gui/widgets/qtabbar.cpp
+++ b/src/gui/widgets/qtabbar.cpp
@@ -131,7 +131,7 @@ void QTabBar::initStyleOption(QStyleOptionTab *option, int tabIndex) const
option->state &= ~QStyle::State_Enabled;
if (isActiveWindow())
option->state |= QStyle::State_Active;
- if (option->rect == d->hoverRect)
+ if (!d->dragInProgress && option->rect == d->hoverRect)
option->state |= QStyle::State_MouseOver;
option->shape = d->shape;
option->text = tab.text;
@@ -454,9 +454,6 @@ void QTabBarPrivate::layoutTabs()
maxExtent = maxWidth;
}
- if (pressedIndex != -1 && movable)
- grabCache(0, tabList.count(), true);
-
Q_ASSERT(tabChainIndex == tabChain.count() - 1); // add an assert just to make sure.
// Mirror our front item.
tabChain[tabChainIndex].init();
@@ -1484,6 +1481,8 @@ void QTabBar::paintEvent(QPaintEvent *)
bool vertical = verticalTabs(d->shape);
QStyleOptionTab cutTab;
selected = d->currentIndex;
+ if (d->dragInProgress)
+ selected = d->pressedIndex;
for (int i = 0; i < d->tabList.count(); ++i)
optTabBase.tabBarRect |= tabRect(i);
@@ -1522,11 +1521,7 @@ void QTabBar::paintEvent(QPaintEvent *)
if (i == selected)
continue;
- if (!d->tabList[i].animatingCache.isNull() && d->paintWithOffsets) {
- p.drawPixmap(tab.rect, d->tabList[i].animatingCache);
- } else {
- p.drawControl(QStyle::CE_TabBarTab, tab);
- }
+ p.drawControl(QStyle::CE_TabBarTab, tab);
}
// Draw the selected tab last to get it "on top"
@@ -1539,7 +1534,11 @@ void QTabBar::paintEvent(QPaintEvent *)
else
tab.rect.moveLeft(tab.rect.x() + d->tabList[selected].dragOffset);
}
- p.drawControl(QStyle::CE_TabBarTab, tab);
+ if (!d->dragInProgress)
+ p.drawControl(QStyle::CE_TabBarTab, tab);
+ else
+ d->movingTab->setGeometry(tab.rect);
+
}
// Only draw the tear indicator if necessary. Most of the time we don't need too.
@@ -1680,6 +1679,7 @@ void QTabBarPrivate::_q_moveTab(int offset)
if (!validIndex(index))
return;
tabList[index].dragOffset = offset;
+ layoutTab(index); // Make buttons follow tab
q->update();
}
}
@@ -1727,8 +1727,7 @@ void QTabBar::mouseMoveEvent(QMouseEvent *event)
if (!d->dragInProgress && d->pressedIndex != -1) {
if ((event->pos() - d->dragStartPosition).manhattanLength() > QApplication::startDragDistance()) {
d->dragInProgress = true;
- if (d->animations.isEmpty())
- d->grabCache(0, d->tabList.count(), false);
+ d->setupMovableTab();
}
}
@@ -1773,7 +1772,6 @@ void QTabBar::mouseMoveEvent(QMouseEvent *event)
if (dragDistance > needsToBeOver)
d->slide(i + offset, d->pressedIndex);
}
-
}
// Buttons needs to follow the dragged tab
d->layoutTab(d->pressedIndex);
@@ -1801,32 +1799,41 @@ void QTabBarPrivate::_q_moveTabFinished()
}
}
-void QTabBarPrivate::grabCache(int start, int end, bool unhide)
+void QTabBarPrivate::setupMovableTab()
{
Q_Q(QTabBar);
- paintWithOffsets = false;
- bool showButtonsAgain = rightB->isVisible();
- rightB->hide();
- leftB->hide();
-
- QWidget *topLevel = q->window();
- QPoint topLevelOffset(q->mapTo(topLevel, QPoint()));
- for (int i = start; i < end; ++i) {
- QRect tabRect = q->tabRect(i);
- tabRect.translate(topLevelOffset);
- if (unhide) {
- tabList[i].unHideWidgets();
- layoutWidgets(i);
- }
- tabList[i].animatingCache = QPixmap::grabWidget(topLevel, tabRect);
- if (i != pressedIndex)
- tabList[i].hideWidgets();
- }
- if (showButtonsAgain) {
- rightB->show();
- leftB->show();
- }
- paintWithOffsets = true;
+ if (!movingTab)
+ movingTab = new QWidget(q);
+
+ QRect grabRect = q->tabRect(pressedIndex);
+
+ QPixmap grabImage(grabRect.size());
+ grabImage.fill(Qt::transparent);
+ QStylePainter p(&grabImage, q);
+
+ QStyleOptionTabV3 tab;
+ q->initStyleOption(&tab, pressedIndex);
+ tab.rect.moveTopLeft(QPoint(0, 0));
+ p.drawControl(QStyle::CE_TabBarTab, tab);
+ p.end();
+
+ QPalette pal;
+ pal.setBrush(QPalette::All, QPalette::Window, grabImage);
+ movingTab->setPalette(pal);
+ movingTab->setGeometry(grabRect);
+ movingTab->setAutoFillBackground(true);
+ movingTab->raise();
+
+ // Re-arrange widget order to avoid overlaps
+ if (tabList[pressedIndex].leftWidget)
+ tabList[pressedIndex].leftWidget->raise();
+ if (tabList[pressedIndex].rightWidget)
+ tabList[pressedIndex].rightWidget->raise();
+ if (leftB)
+ leftB->raise();
+ if (rightB)
+ rightB->raise();
+ movingTab->setVisible(true);
}
void QTabBarPrivate::_q_moveTabFinished(int index)
@@ -1834,10 +1841,9 @@ void QTabBarPrivate::_q_moveTabFinished(int index)
Q_Q(QTabBar);
bool cleanup = (pressedIndex == index) || (pressedIndex == -1) || !validIndex(index);
if (animations.isEmpty() && cleanup) {
+ movingTab->setVisible(false); // We might not get a mouse release
for (int i = 0; i < tabList.count(); ++i) {
tabList[i].dragOffset = 0;
- tabList[i].unHideWidgets();
- tabList[i].animatingCache = QPixmap();
}
if (pressedIndex != -1 && movable) {
pressedIndex = -1;
@@ -1881,6 +1887,7 @@ void QTabBar::mouseReleaseEvent(QMouseEvent *event)
d->_q_moveTabFinished(d->pressedIndex);
}
d->dragInProgress = false;
+ d->movingTab->setVisible(false);
d->dragStartPosition = QPoint();
}
@@ -2203,19 +2210,16 @@ void QTabBar::setTabButton(int index, ButtonPosition position, QWidget *widget)
widget->setParent(this);
// make sure our left and right widgets stay on top
widget->lower();
+ widget->show();
}
if (position == LeftSide) {
if (d->tabList[index].leftWidget)
d->tabList[index].leftWidget->hide();
d->tabList[index].leftWidget = widget;
- if(!d->tabList[index].hidLeft && widget)
- widget->show();
} else {
if (d->tabList[index].rightWidget)
d->tabList[index].rightWidget->hide();
d->tabList[index].rightWidget = widget;
- if(!d->tabList[index].hidRight && widget)
- widget->show();
}
d->layoutTabs();
update();
diff --git a/src/gui/widgets/qtabbar_p.h b/src/gui/widgets/qtabbar_p.h
index a117aa3..cb1a15b 100644
--- a/src/gui/widgets/qtabbar_p.h
+++ b/src/gui/widgets/qtabbar_p.h
@@ -70,7 +70,6 @@
QT_BEGIN_NAMESPACE
-
class QTabBarPrivate : public QWidgetPrivate
{
Q_DECLARE_PUBLIC(QTabBar)
@@ -78,7 +77,7 @@ public:
QTabBarPrivate()
:currentIndex(-1), pressedIndex(-1),
shape(QTabBar::RoundedNorth),
- layoutDirty(false), drawBase(true), scrollOffset(0), expanding(true), closeButtonOnTabs(false), selectionBehaviorOnRemove(QTabBar::SelectRightTab), paintWithOffsets(true), movable(false), dragInProgress(false), documentMode(false) {}
+ layoutDirty(false), drawBase(true), scrollOffset(0), expanding(true), closeButtonOnTabs(false), selectionBehaviorOnRemove(QTabBar::SelectRightTab), paintWithOffsets(true), movable(false), dragInProgress(false), documentMode(false), movingTab(0) {}
int currentIndex;
int pressedIndex;
@@ -98,8 +97,6 @@ public:
, lastTab(-1)
, timeLine(0)
, dragOffset(0)
- , hidLeft(false)
- , hidRight(false)
{}
bool enabled;
int shortcutId;
@@ -123,9 +120,6 @@ public:
QTimeLine *timeLine;
int dragOffset;
- QPixmap animatingCache;
- bool hidLeft;
- bool hidRight;
void makeTimeLine(QWidget *q) {
if (timeLine)
@@ -135,27 +129,6 @@ public:
q->connect(timeLine, SIGNAL(finished()), q, SLOT(_q_moveTabFinished()));
}
- void hideWidgets() {
- if (!hidRight && rightWidget) {
- hidRight = rightWidget->isVisible();
- rightWidget->hide();
- }
-
- if (!hidLeft && leftWidget) {
- hidLeft = leftWidget->isVisible();
- leftWidget->hide();
- }
- }
-
- void unHideWidgets() {
- if (leftWidget && hidLeft)
- leftWidget->show();
- hidLeft = false;
- if (rightWidget && hidRight)
- rightWidget->show();
- hidRight = false;
- }
-
};
QList<Tab> tabList;
QHash<QTimeLine*, int> animations;
@@ -184,12 +157,12 @@ public:
void _q_moveTabFinished(int offset);
QRect hoverRect;
- void grabCache(int start, int end, bool unhide);
void refresh();
void layoutTabs();
void layoutWidgets(int index = -1);
void layoutTab(int index);
void updateMacBorderMetrics();
+ void setupMovableTab();
void makeVisible(int index);
QSize iconSize;
@@ -206,6 +179,8 @@ public:
bool dragInProgress;
bool documentMode;
+ QWidget *movingTab;
+
// shared by tabwidget and qtabbar
static void initStyleBaseOption(QStyleOptionTabBarBaseV2 *optTabBase, QTabBar *tabbar, QSize size)
{
diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp
index 910e30a..f8cf4ca 100644
--- a/src/network/socket/qabstractsocket.cpp
+++ b/src/network/socket/qabstractsocket.cpp
@@ -2279,7 +2279,7 @@ void QAbstractSocket::disconnectFromHostImplementation()
emit delayedCloseFinished(); // compat signal
#endif
// only emit disconnected if we were connected before
- if (previousState == ConnectedState || ClosingState)
+ if (previousState == ConnectedState || previousState == ClosingState)
emit disconnected();
d->localPort = 0;
diff --git a/src/opengl/opengl.pro b/src/opengl/opengl.pro
index 48d7caf..78aaddb 100644
--- a/src/opengl/opengl.pro
+++ b/src/opengl/opengl.pro
@@ -25,18 +25,16 @@ HEADERS += qgl.h \
qglcolormap.h \
qglpixelbuffer.h \
qglframebufferobject.h \
- qglpixmapfilter_p.h
SOURCES += qgl.cpp \
qglcolormap.cpp \
qglpixelbuffer.cpp \
qglframebufferobject.cpp \
qglextensions.cpp \
- qglpixmapfilter.cpp
!contains(QT_CONFIG, opengles2) {
- HEADERS += qpaintengine_opengl_p.h
- SOURCES += qpaintengine_opengl.cpp
+ HEADERS += qpaintengine_opengl_p.h qglpixmapfilter_p.h
+ SOURCES += qpaintengine_opengl.cpp qglpixmapfilter.cpp
}
contains(QT_CONFIG, opengles2) {
@@ -130,6 +128,10 @@ wince*: {
contains(QT_CONFIG,opengles1cl) {
QMAKE_LIBS += "libGLES_CL.lib"
}
+ contains(QT_CONFIG,opengles2) {
+ QMAKE_LIBS += "libGLESv2.lib"
+ }
+
} else {
QMAKE_LIBS += $$QMAKE_LIBS_OPENGL
}
diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp
index 6d75d02..b4a0e5c 100644
--- a/src/opengl/qgl.cpp
+++ b/src/opengl/qgl.cpp
@@ -3234,6 +3234,10 @@ bool QGLWidget::event(QEvent *e)
update();
}
return true;
+# if defined(QT_MAC_USE_COCOA)
+ } else if (e->type() == QEvent::MacGLClearDrawable) {
+ d->glcx->d_ptr->clearDrawable();
+# endif
}
#endif
diff --git a/src/opengl/qgl_mac.mm b/src/opengl/qgl_mac.mm
index 314c659..1319396 100644
--- a/src/opengl/qgl_mac.mm
+++ b/src/opengl/qgl_mac.mm
@@ -87,29 +87,6 @@ QT_FORWARD_DECLARE_CLASS(QWidget)
QT_FORWARD_DECLARE_CLASS(QWidgetPrivate)
QT_FORWARD_DECLARE_CLASS(QGLWidgetPrivate)
-@interface QT_MANGLE_NAMESPACE(QCocoaOpenGLView) : QT_MANGLE_NAMESPACE(QCocoaView)
-{
-}
-- (id)initWithQWidget:(QWidget *)widget widgetPrivate:(QWidgetPrivate *)widgetprivate;
-@end
-
-@implementation QT_MANGLE_NAMESPACE(QCocoaOpenGLView)
-- (id)initWithQWidget:(QWidget *)widget widgetPrivate:(QWidgetPrivate *)widgetprivate
-{
- self = [super initWithQWidget:widget widgetPrivate:widgetprivate];
- [[NSNotificationCenter defaultCenter] addObserver:self
- selector:@selector(_surfaceNeedsUpdate:)
- name:NSViewGlobalFrameDidChangeNotification
- object:self];
- return self;
-}
-
-- (void) _surfaceNeedsUpdate:(NSNotification*)notification
-{
- Q_UNUSED(notification);
- static_cast<QGLWidgetPrivate *>(qwidgetprivate)->glcx->updatePaintDevice();
-}
-@end
QT_BEGIN_NAMESPACE
void *qt_current_nsopengl_context()
@@ -435,6 +412,11 @@ void *QGLContextPrivate::tryFormat(const QGLFormat &format)
#endif
}
+void QGLContextPrivate::clearDrawable()
+{
+ [static_cast<NSOpenGLContext *>(cx) clearDrawable];
+}
+
/*!
\bold{Mac OS X only:} This virtual function tries to find a visual that
matches the format, reducing the demands if the original request
@@ -647,7 +629,7 @@ void QGLContext::updatePaintDevice()
// ideally we would use QWidget::isVisible(), but we get "invalid drawable" errors
if (![(NSWindow *)qt_mac_window_for(w) isVisible])
return;
- if ([static_cast<NSOpenGLContext *>(d->cx) view] != view)
+ if ([static_cast<NSOpenGLContext *>(d->cx) view] != view && ![view isHidden])
[static_cast<NSOpenGLContext *>(d->cx) setView:view];
} else if (d->paintDevice->devType() == QInternal::Pixmap) {
const QPixmap *pm = static_cast<const QPixmap *>(d->paintDevice);
diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h
index b8bbeaf..16aaa96 100644
--- a/src/opengl/qgl_p.h
+++ b/src/opengl/qgl_p.h
@@ -234,6 +234,7 @@ public:
#if defined(Q_WS_MAC)
bool update;
void *tryFormat(const QGLFormat &format);
+ void clearDrawable();
#endif
QGLFormat glFormat;
QGLFormat reqFormat;
diff --git a/tests/auto/qaccessibility/tst_qaccessibility.cpp b/tests/auto/qaccessibility/tst_qaccessibility.cpp
index d023557..1aca624 100644
--- a/tests/auto/qaccessibility/tst_qaccessibility.cpp
+++ b/tests/auto/qaccessibility/tst_qaccessibility.cpp
@@ -275,6 +275,7 @@ private slots:
void accessibleName();
void treeWidgetTest();
void labelTest();
+ void accelerators();
private:
QWidget *createGUI();
@@ -2592,8 +2593,8 @@ void tst_QAccessibility::menuTest()
QTestAccessibility::clearEvents();
mw.hide();
-
-
+
+
// Do not crash if the menu don't have a parent
QMenu *menu = new QMenu;
menu->addAction(QLatin1String("one"));
@@ -2607,7 +2608,7 @@ void tst_QAccessibility::menuTest()
delete iface2;
delete iface;
delete menu;
-
+
}
QTestAccessibility::clearEvents();
#else
@@ -3988,13 +3989,13 @@ void tst_QAccessibility::treeWidgetTest()
QCOMPARE(entry, 0);
QCOMPARE(accTreeItem2->text(QAccessible::Name, 0), QLatin1String("row: 1"));
-
- // test selected/focused state
+
+ // test selected/focused state
QItemSelectionModel *selModel = tree->selectionModel();
QVERIFY(selModel);
selModel->select(QItemSelection(tree->model()->index(0, 0), tree->model()->index(3, 0)), QItemSelectionModel::Select);
selModel->setCurrentIndex(tree->model()->index(1, 0), QItemSelectionModel::Current);
-
+
for (int i = 1; i < 10 ; ++i) {
QAccessible::State expected;
if (i <= 5 && i >= 2)
@@ -4046,6 +4047,45 @@ void tst_QAccessibility::labelTest()
#endif
}
+void tst_QAccessibility::accelerators()
+{
+#ifdef QTEST_ACCESSIBILITY
+ QWidget *window = new QWidget;
+ QHBoxLayout *lay = new QHBoxLayout(window);
+ QLabel *label = new QLabel(tr("&Line edit"), window);
+ QLineEdit *le = new QLineEdit(window);
+ lay->addWidget(label);
+ lay->addWidget(le);
+ label->setBuddy(le);
+
+ window->show();
+
+ QAccessibleInterface *accLineEdit = QAccessible::queryAccessibleInterface(le);
+ QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QString(QKeySequence(Qt::ALT) + QLatin1String("L")));
+ label->setText(tr("Q &"));
+ QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QString());
+ label->setText(tr("Q &&"));
+ QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QString());
+ label->setText(tr("Q && A"));
+ QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QString());
+ label->setText(tr("Q &&&A"));
+ QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QString(QKeySequence(Qt::ALT) + QLatin1String("A")));
+ label->setText(tr("Q &&A"));
+ QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QString());
+ label->setText(tr("Q &A&B"));
+ QCOMPARE(accLineEdit->text(QAccessible::Accelerator, 0), QString(QKeySequence(Qt::ALT) + QLatin1String("A")));
+
+#if defined(Q_WS_X11)
+ qt_x11_wait_for_window_manager(window);
+#endif
+ QTest::qWait(100);
+ delete window;
+ QTestAccessibility::clearEvents();
+#else
+ QSKIP("Test needs Qt >= 0x040000 and accessibility support.", SkipAll);
+#endif
+}
+
QTEST_MAIN(tst_QAccessibility)
diff --git a/tests/auto/qfiledialog/tst_qfiledialog.cpp b/tests/auto/qfiledialog/tst_qfiledialog.cpp
index bade586..695bfe7 100644
--- a/tests/auto/qfiledialog/tst_qfiledialog.cpp
+++ b/tests/auto/qfiledialog/tst_qfiledialog.cpp
@@ -681,6 +681,22 @@ void tst_QFiledialog::filters()
for (int i = views.at(0)->currentIndex(); i < views.at(0)->count(); ++i)
views.at(0)->setCurrentIndex(i);
QCOMPARE(spyFilterSelected.count(), 0);
+
+ //Let check if filters with whitespaces
+ QNonNativeFileDialog fd2;
+ QStringList expected;
+ expected << "C++ Source Files(*.cpp)";
+ expected << "Any(*.*)";
+ fd2.setFilter("C++ Source Files(*.cpp);;Any(*.*)");
+ QCOMPARE(expected, fd2.filters());
+ fd2.setFilter("C++ Source Files(*.cpp) ;;Any(*.*)");
+ QCOMPARE(expected, fd2.filters());
+ fd2.setFilter("C++ Source Files(*.cpp);; Any(*.*)");
+ QCOMPARE(expected, fd2.filters());
+ fd2.setFilter(" C++ Source Files(*.cpp);; Any(*.*)");
+ QCOMPARE(expected, fd2.filters());
+ fd2.setFilter("C++ Source Files(*.cpp) ;; Any(*.*)");
+ QCOMPARE(expected, fd2.filters());
}
void tst_QFiledialog::selectFilter()
diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
index 5dd7e1e..d500182 100644
--- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -162,6 +162,8 @@ private slots:
void mapFromToParent();
void mapFromToScene();
void mapFromToItem();
+ void mapRectFromToParent_data();
+ void mapRectFromToParent();
void isAncestorOf();
void commonAncestorItem();
void data();
@@ -220,6 +222,7 @@ private slots:
// task specific tests below me
void task141694_textItemEnsureVisible();
void task128696_textItemEnsureMovable();
+ void ensureUpdateOnTextItem();
void task177918_lineItemUndetected();
void task240400_clickOnTextItem_data();
void task240400_clickOnTextItem();
@@ -2515,6 +2518,87 @@ void tst_QGraphicsItem::mapFromToItem()
delete item4;
}
+void tst_QGraphicsItem::mapRectFromToParent_data()
+{
+ QTest::addColumn<bool>("parent");
+ QTest::addColumn<QPointF>("parentPos");
+ QTest::addColumn<QTransform>("parentTransform");
+ QTest::addColumn<QPointF>("pos");
+ QTest::addColumn<QTransform>("transform");
+ QTest::addColumn<QRectF>("inputRect");
+ QTest::addColumn<QRectF>("outputRect");
+
+ QTest::newRow("nil") << false << QPointF() << QTransform() << QPointF() << QTransform() << QRectF() << QRectF();
+ QTest::newRow("simple") << false << QPointF() << QTransform() << QPointF() << QTransform()
+ << QRectF(0, 0, 10, 10) << QRectF(0, 0, 10, 10);
+ QTest::newRow("simple w/parent") << true
+ << QPointF() << QTransform()
+ << QPointF() << QTransform()
+ << QRectF(0, 0, 10, 10) << QRectF(0, 0, 10, 10);
+ QTest::newRow("simple w/parent parentPos") << true
+ << QPointF(50, 50) << QTransform()
+ << QPointF() << QTransform()
+ << QRectF(0, 0, 10, 10) << QRectF(0, 0, 10, 10);
+ QTest::newRow("simple w/parent parentPos parentRotation") << true
+ << QPointF(50, 50) << QTransform().rotate(45)
+ << QPointF() << QTransform()
+ << QRectF(0, 0, 10, 10) << QRectF(0, 0, 10, 10);
+ QTest::newRow("pos w/parent") << true
+ << QPointF() << QTransform()
+ << QPointF(50, 50) << QTransform()
+ << QRectF(0, 0, 10, 10) << QRectF(50, 50, 10, 10);
+ QTest::newRow("rotation w/parent") << true
+ << QPointF() << QTransform()
+ << QPointF() << QTransform().rotate(90)
+ << QRectF(0, 0, 10, 10) << QRectF(-10, 0, 10, 10);
+ QTest::newRow("pos rotation w/parent") << true
+ << QPointF() << QTransform()
+ << QPointF(50, 50) << QTransform().rotate(90)
+ << QRectF(0, 0, 10, 10) << QRectF(40, 50, 10, 10);
+ QTest::newRow("pos rotation w/parent parentPos parentRotation") << true
+ << QPointF(-170, -190) << QTransform().rotate(90)
+ << QPointF(50, 50) << QTransform().rotate(90)
+ << QRectF(0, 0, 10, 10) << QRectF(40, 50, 10, 10);
+}
+
+void tst_QGraphicsItem::mapRectFromToParent()
+{
+ QFETCH(bool, parent);
+ QFETCH(QPointF, parentPos);
+ QFETCH(QTransform, parentTransform);
+ QFETCH(QPointF, pos);
+ QFETCH(QTransform, transform);
+ QFETCH(QRectF, inputRect);
+ QFETCH(QRectF, outputRect);
+
+ QGraphicsRectItem *rect = new QGraphicsRectItem;
+ rect->setPos(pos);
+ rect->setTransform(transform);
+
+ if (parent) {
+ QGraphicsRectItem *rectParent = new QGraphicsRectItem;
+ rect->setParentItem(rectParent);
+ rectParent->setPos(parentPos);
+ rectParent->setTransform(parentTransform);
+ }
+
+ // Make sure we use non-destructive transform operations (e.g., 90 degree
+ // rotations).
+ QCOMPARE(rect->mapRectToParent(inputRect), outputRect);
+ QCOMPARE(rect->mapRectFromParent(outputRect), inputRect);
+ QCOMPARE(rect->itemTransform(rect->parentItem()).mapRect(inputRect), outputRect);
+ QCOMPARE(rect->mapToParent(inputRect).boundingRect(), outputRect);
+ QCOMPARE(rect->mapToParent(QPolygonF(inputRect)).boundingRect(), outputRect);
+ QCOMPARE(rect->mapFromParent(outputRect).boundingRect(), inputRect);
+ QCOMPARE(rect->mapFromParent(QPolygonF(outputRect)).boundingRect(), inputRect);
+ QPainterPath inputPath;
+ inputPath.addRect(inputRect);
+ QPainterPath outputPath;
+ outputPath.addRect(outputRect);
+ QCOMPARE(rect->mapToParent(inputPath).boundingRect(), outputPath.boundingRect());
+ QCOMPARE(rect->mapFromParent(outputPath).boundingRect(), inputPath.boundingRect());
+}
+
void tst_QGraphicsItem::isAncestorOf()
{
QGraphicsItem *grandPa = new QGraphicsRectItem;
@@ -5189,6 +5273,39 @@ void tst_QGraphicsItem::task240400_clickOnTextItem()
QCOMPARE(item->textCursor().columnNumber(), 0);
}
+class TextItem : public QGraphicsSimpleTextItem
+{
+public:
+ TextItem(const QString& text) : QGraphicsSimpleTextItem(text)
+ {
+ updates = 0;
+ }
+
+ void paint(QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget)
+ {
+ updates++;
+ QGraphicsSimpleTextItem::paint(painter, option, widget);
+ }
+
+ int updates;
+};
+
+void tst_QGraphicsItem::ensureUpdateOnTextItem()
+{
+ QGraphicsScene scene;
+ TextItem *text1 = new TextItem(QLatin1String("123"));
+ scene.addItem(text1);
+ QGraphicsView view(&scene);
+ view.show();
+ QTest::qWait(250);
+ QCOMPARE(text1->updates,1);
+
+ //same bouding rect but we have to update
+ text1->setText(QLatin1String("321"));
+ QTest::qWait(250);
+ QCOMPARE(text1->updates,2);
+}
+
void tst_QGraphicsItem::task243707_addChildBeforeParent()
{
// Task reports that adding the child before the parent leads to an
diff --git a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
index 91ed851..354d81a 100644
--- a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
+++ b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
@@ -245,6 +245,7 @@ private slots:
void task139782_containsItemBoundingRect();
void task176178_itemIndexMethodBreaksSceneRect();
void task160653_selectionChanged();
+ void task250680_childClip();
};
void tst_QGraphicsScene::initTestCase()
@@ -3384,6 +3385,31 @@ void tst_QGraphicsScene::task160653_selectionChanged()
QCOMPARE(spy.count(), 1);
}
+void tst_QGraphicsScene::task250680_childClip()
+{
+ QGraphicsRectItem *clipper = new QGraphicsRectItem;
+ clipper->setFlag(QGraphicsItem::ItemClipsChildrenToShape);
+ clipper->setPen(QPen(Qt::green));
+ clipper->setRect(200, 200, 640, 480);
+
+ QGraphicsRectItem *rect = new QGraphicsRectItem(clipper);
+ rect->setPen(QPen(Qt::red));
+ rect->setBrush(QBrush(QColor(255, 0, 0, 75)));
+ rect->setPos(320, 240);
+ rect->setRect(-25, -25, 50, 50);
+
+ QGraphicsScene scene;
+ scene.addItem(clipper);
+
+ QPainterPath path;
+ path.addRect(-25, -25, 50, 50);
+ QCOMPARE(rect->clipPath(), path);
+
+ QCOMPARE(scene.items(QRectF(320, 240, 5, 5)).size(), 2);
+ rect->rotate(45);
+ QCOMPARE(scene.items(QRectF(320, 240, 5, 5)).size(), 2);
+}
+
void tst_QGraphicsScene::sorting_data()
{
QTest::addColumn<bool>("cache");
diff --git a/tests/auto/qitemdelegate/tst_qitemdelegate.cpp b/tests/auto/qitemdelegate/tst_qitemdelegate.cpp
index befe0eb..27741e0 100644
--- a/tests/auto/qitemdelegate/tst_qitemdelegate.cpp
+++ b/tests/auto/qitemdelegate/tst_qitemdelegate.cpp
@@ -777,6 +777,7 @@ void tst_QItemDelegate::dateTimeEditor()
QCOMPARE(timeEditor->time(), time);
widget.clearFocus();
+ qApp->setActiveWindow(&widget);
widget.setFocus();
widget.editItem(item2);
diff --git a/tests/auto/qmenu/tst_qmenu.cpp b/tests/auto/qmenu/tst_qmenu.cpp
index 7607838..a86b754 100644
--- a/tests/auto/qmenu/tst_qmenu.cpp
+++ b/tests/auto/qmenu/tst_qmenu.cpp
@@ -92,6 +92,7 @@ private slots:
void activeSubMenuPosition();
void task242454_sizeHint();
void task176201_clear();
+ void task250673_activeMutliColumnSubMenuPosition();
protected slots:
void onActivated(QAction*);
void onHighlighted(QAction*);
@@ -678,6 +679,39 @@ void tst_QMenu::task176201_clear()
QTest::mouseClick(&menu, Qt::LeftButton, 0, menu.rect().center());
}
+void tst_QMenu::task250673_activeMutliColumnSubMenuPosition()
+{
+ class MyMenu : public QMenu
+ {
+ public:
+ friend class tst_QMenu;
+ };
+
+ QMenu sub;
+ sub.addAction("Sub-Item1");
+ QAction *subAction = sub.addAction("Sub-Item2");
+
+ MyMenu main;
+ main.addAction("Item 1");
+ QAction *menuAction = main.addMenu(&sub);
+ main.popup(QPoint(200,200));
+
+ uint i = 2;
+ while (main.columnCount() < 2) {
+ main.addAction(QString("Item %1").arg(i));
+ ++i;
+ Q_ASSERT(i<1000);
+ }
+ main.setActiveAction(menuAction);
+ sub.setActiveAction(subAction);
+ QVERIFY(main.isVisible());
+ QCOMPARE(main.activeAction(), menuAction);
+ QVERIFY(sub.isVisible());
+ QVERIFY(sub.pos().x() > main.pos().x());
+
+ const int subMenuOffset = main.style()->pixelMetric(QStyle::PM_SubMenuOverlap, 0, &main);
+ QVERIFY((sub.geometry().left() - subMenuOffset + 5) < main.geometry().right());
+}
QTEST_MAIN(tst_QMenu)
#include "tst_qmenu.moc"
diff --git a/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp b/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
index 0a48066..ee9daef 100644
--- a/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
+++ b/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
@@ -131,6 +131,7 @@ private slots:
void task247867_insertRowsSort();
void task248868_staticSorting();
void task248868_dynamicSorting();
+ void task250023_fetchMore();
protected:
void buildHierarchy(const QStringList &data, QAbstractItemModel *model);
@@ -2590,6 +2591,92 @@ void tst_QSortFilterProxyModel::task248868_dynamicSorting()
}
}
+class QtTestModel: public QAbstractItemModel
+{
+ public:
+ QtTestModel(int _rows, int _cols, QObject *parent = 0): QAbstractItemModel(parent),
+ rows(_rows), cols(_cols), wrongIndex(false) { }
+
+ bool canFetchMore(const QModelIndex &idx) const {
+ return !fetched.contains(idx);
+ }
+
+ void fetchMore(const QModelIndex &idx) {
+ fetched.insert(idx);
+ }
+
+ bool hasChildren(const QModelIndex & = QModelIndex()) const {
+ return true;
+ }
+
+ int rowCount(const QModelIndex& parent = QModelIndex()) const {
+ return fetched.contains(parent) ? rows : 0;
+ }
+ int columnCount(const QModelIndex& parent = QModelIndex()) const {
+ return fetched.contains(parent) ? cols : 0;
+ }
+
+ QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const
+ {
+ if (row < 0 || column < 0 || column >= cols || row >= rows) {
+ return QModelIndex();
+ }
+ QModelIndex i = createIndex(row, column, int(parent.internalId() + 1));
+ parentHash[i] = parent;
+ return i;
+ }
+
+ QModelIndex parent(const QModelIndex &index) const
+ {
+ if (!parentHash.contains(index))
+ return QModelIndex();
+ return parentHash[index];
+ }
+
+ QVariant data(const QModelIndex &idx, int role) const
+ {
+ if (!idx.isValid())
+ return QVariant();
+
+ if (role == Qt::DisplayRole) {
+ if (idx.row() < 0 || idx.column() < 0 || idx.column() >= cols || idx.row() >= rows) {
+ wrongIndex = true;
+ qWarning("Invalid modelIndex [%d,%d,%p]", idx.row(), idx.column(),
+ idx.internalPointer());
+ }
+ return QString("[%1,%2]").arg(idx.row()).arg(idx.column());
+ }
+ return QVariant();
+ }
+
+ QSet<QModelIndex> fetched;
+ int rows, cols;
+ mutable bool wrongIndex;
+ mutable QMap<QModelIndex,QModelIndex> parentHash;
+};
+
+void tst_QSortFilterProxyModel::task250023_fetchMore()
+{
+ QtTestModel model(10,10);
+ QSortFilterProxyModel proxy;
+ proxy.setSourceModel(&model);
+ QVERIFY(proxy.canFetchMore(QModelIndex()));
+ QVERIFY(proxy.hasChildren());
+ while (proxy.canFetchMore(QModelIndex()))
+ proxy.fetchMore(QModelIndex());
+ QCOMPARE(proxy.rowCount(), 10);
+ QCOMPARE(proxy.columnCount(), 10);
+
+ QModelIndex idx = proxy.index(1,1);
+ QVERIFY(idx.isValid());
+ QVERIFY(proxy.canFetchMore(idx));
+ QVERIFY(proxy.hasChildren(idx));
+ while (proxy.canFetchMore(idx))
+ proxy.fetchMore(idx);
+ QCOMPARE(proxy.rowCount(idx), 10);
+ QCOMPARE(proxy.columnCount(idx), 10);
+}
+
QTEST_MAIN(tst_QSortFilterProxyModel)
#include "tst_qsortfilterproxymodel.moc"
diff --git a/tests/auto/qstring/tst_qstring.cpp b/tests/auto/qstring/tst_qstring.cpp
index f786965..1263a41 100644
--- a/tests/auto/qstring/tst_qstring.cpp
+++ b/tests/auto/qstring/tst_qstring.cpp
@@ -432,6 +432,10 @@ void tst_QString::replace_uint_uint_data()
QTest::newRow( "rep09" ) << QString("ACABCAB") << 4 << 2 << QString("XX") << QString("ACABXXB");
QTest::newRow( "rep10" ) << QString("ACABCAB") << 5 << 2 << QString("XX") << QString("ACABCXX");
QTest::newRow( "rep10" ) << QString("ACABCAB") << 6 << 2 << QString("XX") << QString("ACABCAXX");
+ QTest::newRow( "rep12" ) << QString() << 0 << 10 << QString("X") << QString("X");
+ QTest::newRow( "rep13" ) << QString("short") << 0 << 10 << QString("X") << QString("X");
+ QTest::newRow( "rep14" ) << QString() << 0 << 10 << QString("XX") << QString("XX");
+ QTest::newRow( "rep15" ) << QString("short") << 0 << 10 << QString("XX") << QString("XX");
}
void tst_QString::replace_string_data()
diff --git a/tools/designer/src/components/propertyeditor/designerpropertymanager.cpp b/tools/designer/src/components/propertyeditor/designerpropertymanager.cpp
index 1b267aa..346da18 100644
--- a/tools/designer/src/components/propertyeditor/designerpropertymanager.cpp
+++ b/tools/designer/src/components/propertyeditor/designerpropertymanager.cpp
@@ -271,7 +271,7 @@ void TextEditor::fileActionActivated()
const QString newPath = m_core->dialogGui()->getOpenFileName(this, tr("Choose a File"), oldPath);
if (newPath.isEmpty() || newPath == oldPath)
return;
- const QString newText = QLatin1String("file:") + newPath;
+ const QString newText = QUrl::fromLocalFile(newPath).toString();
m_editor->setText(newText);
emit textChanged(newText);
}
diff --git a/tools/designer/src/lib/shared/actioneditor.cpp b/tools/designer/src/lib/shared/actioneditor.cpp
index 6a66442..7f96a15 100644
--- a/tools/designer/src/lib/shared/actioneditor.cpp
+++ b/tools/designer/src/lib/shared/actioneditor.cpp
@@ -456,7 +456,7 @@ void ActionEditor::slotNewAction()
if (actionData.checkable)
setInitialProperty(sheet, QLatin1String(checkablePropertyC), QVariant(true));
- if (!actionData.keysequence.isEmpty())
+ if (!actionData.keysequence.value().isEmpty())
setInitialProperty(sheet, QLatin1String(shortcutPropertyC), qVariantFromValue(actionData.keysequence));
sheet->setProperty(sheet->indexOf(QLatin1String(iconPropertyC)), qVariantFromValue(actionData.icon));
@@ -491,10 +491,10 @@ static QDesignerFormWindowCommand *setIconPropertyCommand(const PropertySheetIco
// return a FormWindow command to apply a QKeySequence or a reset command
// in case it is empty.
-static QDesignerFormWindowCommand *setKeySequencePropertyCommand(const QKeySequence &ks, QAction *action, QDesignerFormWindowInterface *fw)
+static QDesignerFormWindowCommand *setKeySequencePropertyCommand(const PropertySheetKeySequenceValue &ks, QAction *action, QDesignerFormWindowInterface *fw)
{
const QString shortcutProperty = QLatin1String(shortcutPropertyC);
- if (ks.isEmpty()) {
+ if (ks.value().isEmpty()) {
ResetPropertyCommand *cmd = new ResetPropertyCommand(fw);
cmd->init(action, shortcutProperty);
return cmd;
@@ -544,7 +544,7 @@ void ActionEditor::editAction(QAction *action)
oldActionData.text = action->text();
oldActionData.toolTip = textPropertyValue(sheet, QLatin1String(toolTipPropertyC));
oldActionData.icon = qVariantValue<PropertySheetIconValue>(sheet->property(sheet->indexOf(QLatin1String(iconPropertyC))));
- oldActionData.keysequence = qVariantValue<QKeySequence>(sheet->property(sheet->indexOf(QLatin1String(shortcutPropertyC))));
+ oldActionData.keysequence = ActionModel::actionShortCut(sheet);
oldActionData.checkable = action->isCheckable();
dlg.setActionData(oldActionData);
diff --git a/tools/designer/src/lib/shared/actionrepository.cpp b/tools/designer/src/lib/shared/actionrepository.cpp
index 941a9ba..1b638c3 100644
--- a/tools/designer/src/lib/shared/actionrepository.cpp
+++ b/tools/designer/src/lib/shared/actionrepository.cpp
@@ -42,6 +42,7 @@
#include "actionrepository_p.h"
#include "qtresourceview_p.h"
#include "iconloader_p.h"
+#include "qdesigner_utils_p.h"
#include <QtDesigner/QDesignerFormEditorInterface>
#include <QtDesigner/QDesignerPropertySheetExtension>
@@ -168,16 +169,20 @@ QWidgetList ActionModel::associatedWidgets(const QAction *action)
}
// shortcut is a fake property, need to retrieve it via property sheet.
-static QString actionShortCut(QDesignerFormEditorInterface *core, QAction *action)
+PropertySheetKeySequenceValue ActionModel::actionShortCut(QDesignerFormEditorInterface *core, QAction *action)
{
QDesignerPropertySheetExtension *sheet = qt_extension<QDesignerPropertySheetExtension*>(core->extensionManager(), action);
if (!sheet)
- return QString();
+ return PropertySheetKeySequenceValue();
+ return actionShortCut(sheet);
+}
+
+PropertySheetKeySequenceValue ActionModel::actionShortCut(const QDesignerPropertySheetExtension *sheet)
+{
const int index = sheet->indexOf(QLatin1String("shortcut"));
if (index == -1)
- return QString();
- const QKeySequence keysequence = qvariant_cast<QKeySequence>(sheet->property(index));
- return keysequence.toString();
+ return PropertySheetKeySequenceValue();
+ return qvariant_cast<PropertySheetKeySequenceValue>(sheet->property(index));
}
void ActionModel::setItems(QDesignerFormEditorInterface *core, QAction *action, QStandardItemList &sl)
@@ -221,7 +226,7 @@ void ActionModel::setItems(QDesignerFormEditorInterface *core, QAction *action,
item->setText(action->text());
item->setToolTip(action->text());
// shortcut
- const QString shortcut = actionShortCut(core, action);
+ const QString shortcut = actionShortCut(core, action).value().toString();
item = sl[ShortCutColumn];
item->setText(shortcut);
item->setToolTip(shortcut);
diff --git a/tools/designer/src/lib/shared/actionrepository_p.h b/tools/designer/src/lib/shared/actionrepository_p.h
index 9d1af5a..66d77ce 100644
--- a/tools/designer/src/lib/shared/actionrepository_p.h
+++ b/tools/designer/src/lib/shared/actionrepository_p.h
@@ -65,9 +65,12 @@ QT_BEGIN_NAMESPACE
class QPixmap;
class QDesignerFormEditorInterface;
+class QDesignerPropertySheetExtension;
namespace qdesigner_internal {
+class PropertySheetKeySequenceValue;
+
// Shared model of actions, to be used for several views (detailed/icon view).
class QDESIGNER_SHARED_EXPORT ActionModel: public QStandardItemModel
{
@@ -99,6 +102,10 @@ public:
// Find the associated menus and toolbars, ignore toolbuttons
static QWidgetList associatedWidgets(const QAction *action);
+ // Retrieve shortcut via property sheet as it is a fake property
+ static PropertySheetKeySequenceValue actionShortCut(QDesignerFormEditorInterface *core, QAction *action);
+ static PropertySheetKeySequenceValue actionShortCut(const QDesignerPropertySheetExtension *ps);
+
signals:
void resourceImageDropped(const QString &path, QAction *action);
diff --git a/tools/designer/src/lib/shared/newactiondialog.cpp b/tools/designer/src/lib/shared/newactiondialog.cpp
index 53aec4b..bb163d6 100644
--- a/tools/designer/src/lib/shared/newactiondialog.cpp
+++ b/tools/designer/src/lib/shared/newactiondialog.cpp
@@ -134,7 +134,7 @@ ActionData NewActionDialog::actionData() const
rc.toolTip = m_ui->tooltipEditor->text();
rc.icon = m_ui->iconSelector->icon();
rc.checkable = m_ui->checkableCheckBox->checkState() == Qt::Checked;
- rc.keysequence = m_ui->keySequenceEdit->keySequence();
+ rc.keysequence = PropertySheetKeySequenceValue(m_ui->keySequenceEdit->keySequence());
return rc;
}
@@ -144,7 +144,7 @@ void NewActionDialog::setActionData(const ActionData &d)
m_ui->editObjectName->setText(d.name);
m_ui->iconSelector->setIcon(d.icon);
m_ui->tooltipEditor->setText(d.toolTip);
- m_ui->keySequenceEdit->setKeySequence(d.keysequence);
+ m_ui->keySequenceEdit->setKeySequence(d.keysequence.value());
m_ui->checkableCheckBox->setCheckState(d.checkable ? Qt::Checked : Qt::Unchecked);
m_auto_update_object_name = false;
diff --git a/tools/designer/src/lib/shared/newactiondialog_p.h b/tools/designer/src/lib/shared/newactiondialog_p.h
index c8bd34c..d4e9b5b 100644
--- a/tools/designer/src/lib/shared/newactiondialog_p.h
+++ b/tools/designer/src/lib/shared/newactiondialog_p.h
@@ -84,7 +84,7 @@ struct ActionData {
QString toolTip;
PropertySheetIconValue icon;
bool checkable;
- QKeySequence keysequence;
+ PropertySheetKeySequenceValue keysequence;
};
inline bool operator==(const ActionData &a1, const ActionData &a2) { return a1.compare(a2) == 0u; }
diff --git a/tools/linguist/shared/profileevaluator.cpp b/tools/linguist/shared/profileevaluator.cpp
index ce53c27..5440752 100644
--- a/tools/linguist/shared/profileevaluator.cpp
+++ b/tools/linguist/shared/profileevaluator.cpp
@@ -275,6 +275,9 @@ void ProFileEvaluator::Private::insertVariable(const QString &line, int *i)
{
ProVariable::VariableOperator opkind;
+ if (m_proitem.isEmpty()) // Line starting with '=', like a conflict marker
+ return;
+
switch (m_proitem.at(m_proitem.length() - 1).unicode()) {
case '+':
m_proitem.chop(1);
@@ -1473,7 +1476,13 @@ ProFile *ProFileEvaluator::parsedProFile(const QString &fileName)
{
QFileInfo fi(fileName);
if (fi.exists()) {
- ProFile *pro = new ProFile(fi.absoluteFilePath());
+ QString fn = QDir::cleanPath(fi.absoluteFilePath());
+ foreach (const ProFile *pf, d->m_profileStack)
+ if (pf->fileName() == fn) {
+ errorMessage(d->format("circular inclusion of %1").arg(fn));
+ return 0;
+ }
+ ProFile *pro = new ProFile(fn);
if (d->read(pro))
return pro;
delete pro;
diff --git a/tools/linguist/shared/ui.cpp b/tools/linguist/shared/ui.cpp
index 23a73e7..ff98a90 100644
--- a/tools/linguist/shared/ui.cpp
+++ b/tools/linguist/shared/ui.cpp
@@ -60,7 +60,7 @@ class UiReader : public QXmlDefaultHandler
{
public:
UiReader(Translator &translator, ConversionData &cd)
- : m_translator(translator), m_cd(cd), m_lineNumber(-1),
+ : m_translator(translator), m_cd(cd), m_lineNumber(-1), m_isTrString(false),
m_needUtf8(translator.codecName() != "UTF-8")
{}
@@ -81,6 +81,7 @@ private:
QString m_context;
QString m_source;
QString m_comment;
+ QString m_extracomment;
QXmlLocator *m_locator;
QString m_accum;
@@ -95,22 +96,27 @@ bool UiReader::startElement(const QString &namespaceURI,
Q_UNUSED(namespaceURI);
Q_UNUSED(localName);
- if (qName == QLatin1String("item")) {
+ if (qName == QLatin1String("item")) { // UI3 menu entries
flush();
- if (!atts.value(QLatin1String("text")).isEmpty())
+ if (!atts.value(QLatin1String("text")).isEmpty()) {
m_source = atts.value(QLatin1String("text"));
+ m_isTrString = true;
+ if (!m_cd.m_noUiLines)
+ m_lineNumber = m_locator->lineNumber();
+ }
} else if (qName == QLatin1String("string")) {
flush();
if (atts.value(QLatin1String("notr")).isEmpty() ||
atts.value(QLatin1String("notr")) != QLatin1String("true")) {
m_isTrString = true;
m_comment = atts.value(QLatin1String("comment"));
+ m_extracomment = atts.value(QLatin1String("extracomment"));
+ if (!m_cd.m_noUiLines)
+ m_lineNumber = m_locator->lineNumber();
} else {
m_isTrString = false;
}
}
- if (m_isTrString && !m_cd.m_noUiLines)
- m_lineNumber = m_locator->lineNumber();
m_accum.clear();
return true;
}
@@ -123,15 +129,15 @@ bool UiReader::endElement(const QString &namespaceURI,
m_accum.replace(QLatin1String("\r\n"), QLatin1String("\n"));
- if (qName == QLatin1String("class")) {
+ if (qName == QLatin1String("class")) { // UI "header"
if (m_context.isEmpty())
m_context = m_accum;
} else if (qName == QLatin1String("string") && m_isTrString) {
m_source = m_accum;
- } else if (qName == QLatin1String("comment")) {
+ } else if (qName == QLatin1String("comment")) { // FIXME: what's that?
m_comment = m_accum;
flush();
- } else if (qName == QLatin1String("function")) {
+ } else if (qName == QLatin1String("function")) { // UI3 embedded code
fetchtrInlinedCpp(m_accum, m_translator, m_context);
} else {
flush();
@@ -161,12 +167,14 @@ void UiReader::flush()
TranslatorMessage msg(m_context, m_source,
m_comment, QString(), m_cd.m_sourceFileName,
m_lineNumber, QStringList());
+ msg.setExtraComment(m_extracomment);
if (m_needUtf8 && msg.needs8Bit())
msg.setUtf8(true);
m_translator.extend(msg);
}
m_source.clear();
m_comment.clear();
+ m_extracomment.clear();
}
bool loadUI(Translator &translator, QIODevice &dev, ConversionData &cd)