qt 6.5.1 original
9
tests/benchmarks/gui/CMakeLists.txt
Normal file
@ -0,0 +1,9 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
add_subdirectory(animation)
|
||||
add_subdirectory(image)
|
||||
add_subdirectory(kernel)
|
||||
add_subdirectory(math3d)
|
||||
add_subdirectory(painting)
|
||||
add_subdirectory(text)
|
6
tests/benchmarks/gui/animation/CMakeLists.txt
Normal file
@ -0,0 +1,6 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
if(TARGET Qt::Widgets)
|
||||
add_subdirectory(qanimation)
|
||||
endif()
|
18
tests/benchmarks/gui/animation/qanimation/CMakeLists.txt
Normal file
@ -0,0 +1,18 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_bench_qanimation Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_benchmark(tst_bench_qanimation
|
||||
SOURCES
|
||||
dummyanimation.cpp dummyanimation.h
|
||||
dummyobject.cpp dummyobject.h
|
||||
main.cpp
|
||||
rectanimation.cpp rectanimation.h
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::Test
|
||||
Qt::Widgets
|
||||
)
|
24
tests/benchmarks/gui/animation/qanimation/dummyanimation.cpp
Normal file
@ -0,0 +1,24 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include "dummyanimation.h"
|
||||
#include "dummyobject.h"
|
||||
|
||||
|
||||
DummyAnimation::DummyAnimation(DummyObject *d) : m_dummy(d)
|
||||
{
|
||||
}
|
||||
|
||||
void DummyAnimation::updateCurrentValue(const QVariant &value)
|
||||
{
|
||||
if (state() == Stopped)
|
||||
return;
|
||||
if (m_dummy)
|
||||
m_dummy->setRect(value.toRect());
|
||||
}
|
||||
|
||||
void DummyAnimation::updateState(State newstate, State oldstate)
|
||||
{
|
||||
Q_UNUSED(newstate);
|
||||
Q_UNUSED(oldstate);
|
||||
}
|
22
tests/benchmarks/gui/animation/qanimation/dummyanimation.h
Normal file
@ -0,0 +1,22 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <QtGui>
|
||||
|
||||
#ifndef _DUMMYANIMATION_H__
|
||||
|
||||
class DummyObject;
|
||||
|
||||
class DummyAnimation : public QVariantAnimation
|
||||
{
|
||||
public:
|
||||
DummyAnimation(DummyObject *d);
|
||||
|
||||
void updateCurrentValue(const QVariant &value) override;
|
||||
void updateState(State newstate, State oldstate) override;
|
||||
|
||||
private:
|
||||
DummyObject *m_dummy;
|
||||
};
|
||||
|
||||
#endif
|
28
tests/benchmarks/gui/animation/qanimation/dummyobject.cpp
Normal file
@ -0,0 +1,28 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include "dummyobject.h"
|
||||
|
||||
DummyObject::DummyObject()
|
||||
{
|
||||
}
|
||||
|
||||
QRect DummyObject::rect() const
|
||||
{
|
||||
return m_rect;
|
||||
}
|
||||
|
||||
void DummyObject::setRect(const QRect &r)
|
||||
{
|
||||
m_rect = r;
|
||||
}
|
||||
|
||||
float DummyObject::opacity() const
|
||||
{
|
||||
return m_opacity;
|
||||
}
|
||||
|
||||
void DummyObject::setOpacity(float o)
|
||||
{
|
||||
m_opacity = o;
|
||||
}
|
26
tests/benchmarks/gui/animation/qanimation/dummyobject.h
Normal file
@ -0,0 +1,26 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <QtGui>
|
||||
|
||||
#ifndef _DUMMYOBJECT_H__
|
||||
|
||||
class DummyObject : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(QRect rect READ rect WRITE setRect)
|
||||
Q_PROPERTY(float opacity READ opacity WRITE setOpacity)
|
||||
public:
|
||||
DummyObject();
|
||||
QRect rect() const;
|
||||
void setRect(const QRect &r);
|
||||
float opacity() const;
|
||||
void setOpacity(float);
|
||||
|
||||
private:
|
||||
QRect m_rect;
|
||||
float m_opacity;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
153
tests/benchmarks/gui/animation/qanimation/main.cpp
Normal file
@ -0,0 +1,153 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <QtWidgets>
|
||||
#include <qtest.h>
|
||||
|
||||
#include "dummyobject.h"
|
||||
#include "dummyanimation.h"
|
||||
#include "rectanimation.h"
|
||||
|
||||
#define ITERATION_COUNT 10e3
|
||||
|
||||
class tst_qanimation : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
private slots:
|
||||
void itemPropertyAnimation();
|
||||
void itemPropertyAnimation_data() { data();}
|
||||
void dummyAnimation();
|
||||
void dummyAnimation_data() { data();}
|
||||
void dummyPropertyAnimation();
|
||||
void dummyPropertyAnimation_data() { data();}
|
||||
void rectAnimation();
|
||||
void rectAnimation_data() { data();}
|
||||
|
||||
void floatAnimation_data() { data(); }
|
||||
void floatAnimation();
|
||||
|
||||
private:
|
||||
void data();
|
||||
};
|
||||
|
||||
|
||||
void tst_qanimation::data()
|
||||
{
|
||||
QTest::addColumn<bool>("started");
|
||||
QTest::newRow("NotRunning") << false;
|
||||
QTest::newRow("Running") << true;
|
||||
}
|
||||
|
||||
void tst_qanimation::itemPropertyAnimation()
|
||||
{
|
||||
QFETCH(bool, started);
|
||||
QGraphicsWidget item;
|
||||
|
||||
//then the property animation
|
||||
{
|
||||
QPropertyAnimation anim(&item, "pos");
|
||||
anim.setDuration(ITERATION_COUNT);
|
||||
anim.setStartValue(QPointF(0,0));
|
||||
anim.setEndValue(QPointF(ITERATION_COUNT,ITERATION_COUNT));
|
||||
if (started)
|
||||
anim.start();
|
||||
QBENCHMARK {
|
||||
for(int i = 0; i < ITERATION_COUNT; ++i) {
|
||||
anim.setCurrentTime(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void tst_qanimation::dummyAnimation()
|
||||
{
|
||||
QFETCH(bool, started);
|
||||
DummyObject dummy;
|
||||
|
||||
//first the dummy animation
|
||||
{
|
||||
DummyAnimation anim(&dummy);
|
||||
anim.setDuration(ITERATION_COUNT);
|
||||
anim.setStartValue(QRect(0, 0, 0, 0));
|
||||
anim.setEndValue(QRect(0, 0, ITERATION_COUNT,ITERATION_COUNT));
|
||||
if (started)
|
||||
anim.start();
|
||||
QBENCHMARK {
|
||||
for(int i = 0; i < anim.duration(); ++i) {
|
||||
anim.setCurrentTime(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void tst_qanimation::dummyPropertyAnimation()
|
||||
{
|
||||
QFETCH(bool, started);
|
||||
DummyObject dummy;
|
||||
|
||||
//then the property animation
|
||||
{
|
||||
QPropertyAnimation anim(&dummy, "rect");
|
||||
anim.setDuration(ITERATION_COUNT);
|
||||
anim.setStartValue(QRect(0, 0, 0, 0));
|
||||
anim.setEndValue(QRect(0, 0, ITERATION_COUNT,ITERATION_COUNT));
|
||||
if (started)
|
||||
anim.start();
|
||||
QBENCHMARK {
|
||||
for(int i = 0; i < ITERATION_COUNT; ++i) {
|
||||
anim.setCurrentTime(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void tst_qanimation::rectAnimation()
|
||||
{
|
||||
//this is the simplest animation you can do
|
||||
QFETCH(bool, started);
|
||||
DummyObject dummy;
|
||||
|
||||
//then the property animation
|
||||
{
|
||||
RectAnimation anim(&dummy);
|
||||
anim.setDuration(ITERATION_COUNT);
|
||||
anim.setStartValue(QRect(0, 0, 0, 0));
|
||||
anim.setEndValue(QRect(0, 0, ITERATION_COUNT,ITERATION_COUNT));
|
||||
if (started)
|
||||
anim.start();
|
||||
QBENCHMARK {
|
||||
for(int i = 0; i < ITERATION_COUNT; ++i) {
|
||||
anim.setCurrentTime(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void tst_qanimation::floatAnimation()
|
||||
{
|
||||
//this is the simplest animation you can do
|
||||
QFETCH(bool, started);
|
||||
DummyObject dummy;
|
||||
|
||||
//then the property animation
|
||||
{
|
||||
QPropertyAnimation anim(&dummy, "opacity");
|
||||
anim.setDuration(ITERATION_COUNT);
|
||||
anim.setStartValue(0.f);
|
||||
anim.setEndValue(1.f);
|
||||
if (started)
|
||||
anim.start();
|
||||
QBENCHMARK {
|
||||
for(int i = 0; i < ITERATION_COUNT; ++i) {
|
||||
anim.setCurrentTime(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
QTEST_MAIN(tst_qanimation)
|
||||
|
||||
#include "main.moc"
|
56
tests/benchmarks/gui/animation/qanimation/rectanimation.cpp
Normal file
@ -0,0 +1,56 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include "rectanimation.h"
|
||||
#include "dummyobject.h"
|
||||
|
||||
static inline int interpolateInteger(int from, int to, qreal progress)
|
||||
{
|
||||
return from + (to - from) * progress;
|
||||
}
|
||||
|
||||
|
||||
RectAnimation::RectAnimation(DummyObject *obj) : m_object(obj), m_dura(250)
|
||||
{
|
||||
}
|
||||
|
||||
void RectAnimation::setEndValue(const QRect &rect)
|
||||
{
|
||||
m_end = rect;
|
||||
}
|
||||
|
||||
void RectAnimation::setStartValue(const QRect &rect)
|
||||
{
|
||||
m_start = rect;
|
||||
}
|
||||
|
||||
void RectAnimation::setDuration(int d)
|
||||
{
|
||||
m_dura = d;
|
||||
}
|
||||
|
||||
int RectAnimation::duration() const
|
||||
{
|
||||
return m_dura;
|
||||
}
|
||||
|
||||
|
||||
void RectAnimation::updateCurrentTime(int currentTime)
|
||||
{
|
||||
qreal progress = m_easing.valueForProgress( currentTime / qreal(m_dura) );
|
||||
QRect now;
|
||||
now.setCoords(interpolateInteger(m_start.left(), m_end.left(), progress),
|
||||
interpolateInteger(m_start.top(), m_end.top(), progress),
|
||||
interpolateInteger(m_start.right(), m_end.right(), progress),
|
||||
interpolateInteger(m_start.bottom(), m_end.bottom(), progress));
|
||||
|
||||
bool changed = (now != m_current);
|
||||
if (changed)
|
||||
m_current = now;
|
||||
|
||||
if (state() == Stopped)
|
||||
return;
|
||||
|
||||
if (m_object)
|
||||
m_object->setRect(m_current);
|
||||
}
|
32
tests/benchmarks/gui/animation/qanimation/rectanimation.h
Normal file
@ -0,0 +1,32 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <QtGui>
|
||||
|
||||
#ifndef _RECTANIMATION_H__
|
||||
|
||||
class DummyObject;
|
||||
|
||||
//this class is even simpler than the dummy
|
||||
//and uses no QVariant at all
|
||||
class RectAnimation : public QAbstractAnimation
|
||||
{
|
||||
public:
|
||||
RectAnimation(DummyObject *obj);
|
||||
|
||||
void setEndValue(const QRect &rect);
|
||||
void setStartValue(const QRect &rect);
|
||||
|
||||
void setDuration(int d);
|
||||
int duration() const override;
|
||||
|
||||
void updateCurrentTime(int currentTime) override;
|
||||
|
||||
private:
|
||||
DummyObject *m_object;
|
||||
QEasingCurve m_easing;
|
||||
QRect m_start, m_end, m_current;
|
||||
int m_dura;
|
||||
};
|
||||
|
||||
#endif
|
9
tests/benchmarks/gui/image/CMakeLists.txt
Normal file
@ -0,0 +1,9 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
add_subdirectory(blendbench)
|
||||
add_subdirectory(qimageconversion)
|
||||
add_subdirectory(qimagereader)
|
||||
add_subdirectory(qimagescale)
|
||||
add_subdirectory(qpixmap)
|
||||
add_subdirectory(qpixmapcache)
|
14
tests/benchmarks/gui/image/blendbench/CMakeLists.txt
Normal file
@ -0,0 +1,14 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_bench_blendbench Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_benchmark(tst_bench_blendbench
|
||||
SOURCES
|
||||
main.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::Test
|
||||
)
|
189
tests/benchmarks/gui/image/blendbench/main.cpp
Normal file
@ -0,0 +1,189 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
#include <QtGui>
|
||||
#include <QString>
|
||||
|
||||
#include <qtest.h>
|
||||
|
||||
void paint(QPaintDevice *device)
|
||||
{
|
||||
QPainter p(device);
|
||||
p.setCompositionMode(QPainter::CompositionMode_Source);
|
||||
p.fillRect(0, 0, device->width(), device->height(), Qt::transparent);
|
||||
|
||||
QLinearGradient g(QPoint(0, 0), QPoint(1, 1));
|
||||
// g.setCoordinateMode(QGradient::ObjectBoundingMode);
|
||||
g.setColorAt(0, Qt::magenta);
|
||||
g.setColorAt(0, Qt::white);
|
||||
|
||||
// p.setOpacity(0.8);
|
||||
p.setPen(Qt::NoPen);
|
||||
p.setBrush(g);
|
||||
p.setRenderHint(QPainter::Antialiasing);
|
||||
p.setOpacity(0.9);
|
||||
p.drawEllipse(0, 0, device->width(), device->height());
|
||||
}
|
||||
|
||||
QLatin1String compositionModes[] = {
|
||||
QLatin1String("SourceOver"),
|
||||
QLatin1String("DestinationOver"),
|
||||
QLatin1String("Clear"),
|
||||
QLatin1String("Source"),
|
||||
QLatin1String("Destination"),
|
||||
QLatin1String("SourceIn"),
|
||||
QLatin1String("DestinationIn"),
|
||||
QLatin1String("SourceOut"),
|
||||
QLatin1String("DestinationOut"),
|
||||
QLatin1String("SourceAtop"),
|
||||
QLatin1String("DestinationAtop"),
|
||||
QLatin1String("Xor"),
|
||||
|
||||
//svg 1.2 blend modes
|
||||
QLatin1String("Plus"),
|
||||
QLatin1String("Multiply"),
|
||||
QLatin1String("Screen"),
|
||||
QLatin1String("Overlay"),
|
||||
QLatin1String("Darken"),
|
||||
QLatin1String("Lighten"),
|
||||
QLatin1String("ColorDodge"),
|
||||
QLatin1String("ColorBurn"),
|
||||
QLatin1String("HardLight"),
|
||||
QLatin1String("SoftLight"),
|
||||
QLatin1String("Difference"),
|
||||
QLatin1String("Exclusion")
|
||||
};
|
||||
|
||||
enum BrushType { ImageBrush, SolidBrush };
|
||||
QLatin1String brushTypes[] = {
|
||||
QLatin1String("ImageBrush"),
|
||||
QLatin1String("SolidBrush"),
|
||||
};
|
||||
|
||||
class BlendBench : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
private slots:
|
||||
void blendBench_data();
|
||||
void blendBench();
|
||||
|
||||
void blendBenchAlpha_data();
|
||||
void blendBenchAlpha();
|
||||
|
||||
void unalignedBlendArgb32_data();
|
||||
void unalignedBlendArgb32();
|
||||
};
|
||||
|
||||
void BlendBench::blendBench_data()
|
||||
{
|
||||
int first = 0;
|
||||
int limit = 12;
|
||||
if (qApp->arguments().contains("--extended")) {
|
||||
first = 12;
|
||||
limit = 24;
|
||||
}
|
||||
|
||||
QTest::addColumn<int>("brushType");
|
||||
QTest::addColumn<int>("compositionMode");
|
||||
|
||||
for (int brush = ImageBrush; brush <= SolidBrush; ++brush)
|
||||
for (int mode = first; mode < limit; ++mode)
|
||||
QTest::newRow(QString("brush=%1; mode=%2")
|
||||
.arg(brushTypes[brush]).arg(compositionModes[mode]).toLatin1().data())
|
||||
<< brush << mode;
|
||||
}
|
||||
|
||||
void BlendBench::blendBench()
|
||||
{
|
||||
QFETCH(int, brushType);
|
||||
QFETCH(int, compositionMode);
|
||||
|
||||
QImage img(512, 512, QImage::Format_ARGB32_Premultiplied);
|
||||
QImage src(512, 512, QImage::Format_ARGB32_Premultiplied);
|
||||
paint(&src);
|
||||
QPainter p(&img);
|
||||
p.setPen(Qt::NoPen);
|
||||
|
||||
p.setCompositionMode(QPainter::CompositionMode(compositionMode));
|
||||
if (brushType == ImageBrush) {
|
||||
p.setBrush(QBrush(src));
|
||||
} else if (brushType == SolidBrush) {
|
||||
p.setBrush(QColor(127, 127, 127, 127));
|
||||
}
|
||||
|
||||
QBENCHMARK {
|
||||
p.drawRect(0, 0, 512, 512);
|
||||
}
|
||||
}
|
||||
|
||||
void BlendBench::blendBenchAlpha_data()
|
||||
{
|
||||
blendBench_data();
|
||||
}
|
||||
|
||||
void BlendBench::blendBenchAlpha()
|
||||
{
|
||||
QFETCH(int, brushType);
|
||||
QFETCH(int, compositionMode);
|
||||
|
||||
QImage img(512, 512, QImage::Format_ARGB32_Premultiplied);
|
||||
QImage src(512, 512, QImage::Format_ARGB32_Premultiplied);
|
||||
paint(&src);
|
||||
QPainter p(&img);
|
||||
p.setPen(Qt::NoPen);
|
||||
|
||||
p.setCompositionMode(QPainter::CompositionMode(compositionMode));
|
||||
if (brushType == ImageBrush) {
|
||||
p.setBrush(QBrush(src));
|
||||
} else if (brushType == SolidBrush) {
|
||||
p.setBrush(QColor(127, 127, 127, 127));
|
||||
}
|
||||
p.setOpacity(0.7f);
|
||||
|
||||
QBENCHMARK {
|
||||
p.drawRect(0, 0, 512, 512);
|
||||
}
|
||||
}
|
||||
|
||||
void BlendBench::unalignedBlendArgb32_data()
|
||||
{
|
||||
// The performance of blending can depend of the alignment of the data
|
||||
// on 16 bytes. Some SIMD instruction set have significantly better
|
||||
// memory access when the memory is aligned on 16 bytes boundary.
|
||||
|
||||
// offset in 32 bits words
|
||||
QTest::addColumn<int>("offset");
|
||||
QTest::newRow("aligned on 16 bytes") << 0;
|
||||
QTest::newRow("unaligned by 4 bytes") << 1;
|
||||
QTest::newRow("unaligned by 8 bytes") << 2;
|
||||
QTest::newRow("unaligned by 12 bytes") << 3;
|
||||
}
|
||||
|
||||
void BlendBench::unalignedBlendArgb32()
|
||||
{
|
||||
const int dimension = 1024;
|
||||
|
||||
// We use dst aligned by design. We don't want to test all the combination of alignemnt for src and dst.
|
||||
// Moreover, it make sense for us to align dst in the implementation because it is accessed more often.
|
||||
uchar *dstMemory = static_cast<uchar*>(qMallocAligned((dimension * dimension * sizeof(quint32)), 16));
|
||||
QImage destination(dstMemory, dimension, dimension, QImage::Format_ARGB32_Premultiplied);
|
||||
destination.fill(0x12345678); // avoid special cases of alpha
|
||||
|
||||
uchar *srcMemory = static_cast<uchar*>(qMallocAligned((dimension * dimension * sizeof(quint32)) + 16, 16));
|
||||
QFETCH(int, offset);
|
||||
uchar *imageSrcMemory = srcMemory + (offset * sizeof(quint32));
|
||||
|
||||
QImage src(imageSrcMemory, dimension, dimension, QImage::Format_ARGB32_Premultiplied);
|
||||
src.fill(0x87654321);
|
||||
|
||||
QPainter painter(&destination);
|
||||
QBENCHMARK {
|
||||
painter.drawImage(QPoint(), src);
|
||||
}
|
||||
|
||||
qFreeAligned(srcMemory);
|
||||
qFreeAligned(dstMemory);
|
||||
}
|
||||
|
||||
QTEST_MAIN(BlendBench)
|
||||
|
||||
#include "main.moc"
|
27
tests/benchmarks/gui/image/qimageconversion/CMakeLists.txt
Normal file
@ -0,0 +1,27 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_bench_imageConversion Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_benchmark(tst_bench_imageConversion
|
||||
SOURCES
|
||||
tst_qimageconversion.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::Test
|
||||
)
|
||||
|
||||
## Scopes:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_extend_target(tst_bench_imageConversion CONDITION QT_FEATURE_gif
|
||||
DEFINES
|
||||
QTEST_HAVE_GIF
|
||||
)
|
||||
|
||||
qt_internal_extend_target(tst_bench_imageConversion CONDITION QT_FEATURE_jpeg
|
||||
DEFINES
|
||||
QTEST_HAVE_JPEG
|
||||
)
|
@ -0,0 +1,437 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <qtest.h>
|
||||
#include <QImage>
|
||||
|
||||
Q_DECLARE_METATYPE(QImage::Format)
|
||||
|
||||
class tst_QImageConversion : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
private slots:
|
||||
void convertRgb888ToRgb32_data();
|
||||
void convertRgb888ToRgb32();
|
||||
|
||||
void convertRgb888ToRgbx8888_data();
|
||||
void convertRgb888ToRgbx8888();
|
||||
|
||||
void convertRgb32ToRgb888_data();
|
||||
void convertRgb32ToRgb888();
|
||||
|
||||
void convertRgb16_data();
|
||||
void convertRgb16();
|
||||
|
||||
void convertRgb32_data();
|
||||
void convertRgb32();
|
||||
|
||||
void convertGeneric_data();
|
||||
void convertGeneric();
|
||||
|
||||
void convertGenericInplace_data();
|
||||
void convertGenericInplace();
|
||||
|
||||
private:
|
||||
QImage generateImageRgb888(int width, int height);
|
||||
QImage generateImageRgb16(int width, int height);
|
||||
QImage generateImageRgb32(int width, int height);
|
||||
QImage generateImageArgb32(int width, int height);
|
||||
};
|
||||
|
||||
void tst_QImageConversion::convertRgb888ToRgb32_data()
|
||||
{
|
||||
QTest::addColumn<QImage>("inputImage");
|
||||
|
||||
// height = 5000 to get interesting timing.
|
||||
|
||||
// 3 pixels wide -> smaller than regular vector of 128bits
|
||||
QTest::newRow("width: 3px; height: 5000px;") << generateImageRgb888(3, 5000);
|
||||
|
||||
// 8 pixels wide -> potential for 2 vectors
|
||||
QTest::newRow("width: 8px; height: 5000px;") << generateImageRgb888(8, 5000);
|
||||
|
||||
// 16 pixels, minimum for the SSSE3 implementation
|
||||
QTest::newRow("width: 16px; height: 5000px;") << generateImageRgb888(16, 5000);
|
||||
|
||||
// 200 pixels, more realistic use case
|
||||
QTest::newRow("width: 200px; height: 5000px;") << generateImageRgb888(200, 5000);
|
||||
|
||||
// 2000 pixels -> typical values for pictures
|
||||
QTest::newRow("width: 2000px; height: 2000px;") << generateImageRgb888(2000, 2000);
|
||||
}
|
||||
|
||||
void tst_QImageConversion::convertRgb888ToRgb32()
|
||||
{
|
||||
QFETCH(QImage, inputImage);
|
||||
|
||||
QBENCHMARK {
|
||||
QImage output = inputImage.convertToFormat(QImage::Format_RGB32);
|
||||
output.constBits();
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QImageConversion::convertRgb888ToRgbx8888_data()
|
||||
{
|
||||
convertRgb888ToRgb32_data();
|
||||
}
|
||||
|
||||
void tst_QImageConversion::convertRgb888ToRgbx8888()
|
||||
{
|
||||
QFETCH(QImage, inputImage);
|
||||
|
||||
QBENCHMARK {
|
||||
QImage output = inputImage.convertToFormat(QImage::Format_RGBX8888);
|
||||
output.constBits();
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QImageConversion::convertRgb32ToRgb888_data()
|
||||
{
|
||||
QTest::addColumn<QImage>("inputImage");
|
||||
// height = 5000 to get interesting timing.
|
||||
|
||||
// 3 pixels wide -> smaller than regular vector of 128bits
|
||||
QTest::newRow("width: 3px; height: 5000px;") << generateImageRgb32(3, 5000);
|
||||
|
||||
// 8 pixels wide -> potential for 2 vectors
|
||||
QTest::newRow("width: 8px; height: 5000px;") << generateImageRgb32(8, 5000);
|
||||
|
||||
// 16 pixels, minimum for the SSSE3 implementation
|
||||
QTest::newRow("width: 16px; height: 5000px;") << generateImageRgb32(16, 5000);
|
||||
|
||||
// 50 pixels, more realistic use case
|
||||
QTest::newRow("width: 50px; height: 5000px;") << generateImageRgb32(50, 5000);
|
||||
|
||||
// 2000 pixels -> typical values for pictures
|
||||
QTest::newRow("width: 2000px; height: 2000px;") << generateImageRgb32(2000, 2000);
|
||||
}
|
||||
|
||||
void tst_QImageConversion::convertRgb32ToRgb888()
|
||||
{
|
||||
QFETCH(QImage, inputImage);
|
||||
|
||||
QBENCHMARK {
|
||||
QImage output = inputImage.convertToFormat(QImage::Format_RGB888);
|
||||
output.constBits();
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QImageConversion::convertRgb16_data()
|
||||
{
|
||||
QTest::addColumn<QImage>("inputImage");
|
||||
QTest::addColumn<QImage::Format>("outputFormat");
|
||||
QImage rgb16 = generateImageRgb16(1000, 1000);
|
||||
|
||||
QTest::newRow("rgb32") << rgb16 << QImage::Format_RGB32;
|
||||
QTest::newRow("rgb888") << rgb16 << QImage::Format_RGB888;
|
||||
QTest::newRow("rgb666") << rgb16 << QImage::Format_RGB666;
|
||||
QTest::newRow("rgb555") << rgb16 << QImage::Format_RGB555;
|
||||
QTest::newRow("argb8565") << rgb16 << QImage::Format_ARGB8565_Premultiplied;
|
||||
QTest::newRow("argb8555") << rgb16 << QImage::Format_ARGB8555_Premultiplied;
|
||||
}
|
||||
|
||||
void tst_QImageConversion::convertRgb16()
|
||||
{
|
||||
QFETCH(QImage, inputImage);
|
||||
QFETCH(QImage::Format, outputFormat);
|
||||
|
||||
QBENCHMARK {
|
||||
QImage output = inputImage.convertToFormat(outputFormat);
|
||||
output.constBits();
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QImageConversion::convertRgb32_data()
|
||||
{
|
||||
QTest::addColumn<QImage>("inputImage");
|
||||
QTest::addColumn<QImage::Format>("outputFormat");
|
||||
QImage rgb32 = generateImageRgb32(1000, 1000);
|
||||
QImage argb32 = generateImageArgb32(1000, 1000);
|
||||
QImage argb32pm = argb32.convertToFormat(QImage::Format_ARGB32_Premultiplied);
|
||||
|
||||
QTest::newRow("rgb32 -> rgb16") << rgb32 << QImage::Format_RGB16;
|
||||
QTest::newRow("rgb32 -> argb32") << rgb32 << QImage::Format_ARGB32;
|
||||
QTest::newRow("rgb32 -> argb32pm") << rgb32 << QImage::Format_ARGB32_Premultiplied;
|
||||
QTest::newRow("rgb32 -> rgbx8888") << rgb32 << QImage::Format_RGBX8888;
|
||||
QTest::newRow("rgb32 -> rgba8888") << rgb32 << QImage::Format_RGBA8888;
|
||||
QTest::newRow("rgb32 -> rgba8888pm") << rgb32 << QImage::Format_RGBA8888_Premultiplied;
|
||||
QTest::newRow("rgb32 -> rgb30") << rgb32 << QImage::Format_RGB30;
|
||||
QTest::newRow("rgb32 -> a2bgr30") << rgb32 << QImage::Format_A2BGR30_Premultiplied;
|
||||
QTest::newRow("rgb32 -> rgb888") << rgb32 << QImage::Format_RGB888;
|
||||
QTest::newRow("rgb32 -> bgr888") << rgb32 << QImage::Format_BGR888;
|
||||
QTest::newRow("rgb32 -> rgb666") << rgb32 << QImage::Format_RGB666;
|
||||
QTest::newRow("rgb32 -> rgb555") << rgb32 << QImage::Format_RGB555;
|
||||
QTest::newRow("rgb32 -> argb8565pm") << rgb32 << QImage::Format_ARGB8565_Premultiplied;
|
||||
|
||||
QTest::newRow("argb32 -> rgb16") << argb32 << QImage::Format_RGB16;
|
||||
QTest::newRow("argb32 -> rgb32") << argb32 << QImage::Format_RGB32;
|
||||
QTest::newRow("argb32 -> argb32pm") << argb32 << QImage::Format_ARGB32_Premultiplied;
|
||||
QTest::newRow("argb32 -> rgbx8888") << argb32 << QImage::Format_RGBX8888;
|
||||
QTest::newRow("argb32 -> rgba8888") << argb32 << QImage::Format_RGBA8888;
|
||||
QTest::newRow("argb32 -> rgba8888pm") << argb32 << QImage::Format_RGBA8888_Premultiplied;
|
||||
QTest::newRow("argb32 -> rgb30") << argb32 << QImage::Format_RGB30;
|
||||
QTest::newRow("argb32 -> a2bgr30") << argb32 << QImage::Format_A2BGR30_Premultiplied;
|
||||
QTest::newRow("argb32 -> rgb888") << argb32 << QImage::Format_RGB888;
|
||||
QTest::newRow("argb32 -> bgr888") << argb32 << QImage::Format_BGR888;
|
||||
QTest::newRow("argb32 -> rgb666") << argb32 << QImage::Format_RGB666;
|
||||
QTest::newRow("argb32 -> argb8565pm") << argb32 << QImage::Format_ARGB8565_Premultiplied;
|
||||
QTest::newRow("argb32 -> argb4444pm") << argb32 << QImage::Format_ARGB4444_Premultiplied;
|
||||
QTest::newRow("argb32 -> argb6666pm") << argb32 << QImage::Format_ARGB6666_Premultiplied;
|
||||
QTest::newRow("argb32 -> rgba64") << argb32 << QImage::Format_RGBA64;
|
||||
QTest::newRow("argb32 -> rgba64pm") << argb32 << QImage::Format_RGBA64_Premultiplied;
|
||||
|
||||
QTest::newRow("argb32pm -> rgb16") << argb32pm << QImage::Format_RGB16;
|
||||
QTest::newRow("argb32pm -> rgb32") << argb32pm << QImage::Format_RGB32;
|
||||
QTest::newRow("argb32pm -> argb32") << argb32pm << QImage::Format_ARGB32;
|
||||
QTest::newRow("argb32pm -> rgbx8888") << argb32pm << QImage::Format_RGBX8888;
|
||||
QTest::newRow("argb32pm -> rgba8888") << argb32pm << QImage::Format_RGBA8888;
|
||||
QTest::newRow("argb32pm -> rgba8888pm") << argb32pm << QImage::Format_RGBA8888_Premultiplied;
|
||||
QTest::newRow("argb32pm -> rgb30") << argb32pm << QImage::Format_RGB30;
|
||||
QTest::newRow("argb32pm -> a2bgr30") << argb32pm << QImage::Format_A2BGR30_Premultiplied;
|
||||
QTest::newRow("argb32pm -> rgb888") << argb32pm << QImage::Format_RGB888;
|
||||
QTest::newRow("argb32pm -> bgr888") << argb32pm << QImage::Format_BGR888;
|
||||
QTest::newRow("argb32pm -> rgb666") << argb32pm << QImage::Format_RGB666;
|
||||
QTest::newRow("argb32pm -> argb8565pm") << argb32pm << QImage::Format_ARGB8565_Premultiplied;
|
||||
QTest::newRow("argb32pm -> argb4444pm") << argb32pm << QImage::Format_ARGB4444_Premultiplied;
|
||||
QTest::newRow("argb32pm -> argb6666pm") << argb32pm << QImage::Format_ARGB6666_Premultiplied;
|
||||
}
|
||||
|
||||
void tst_QImageConversion::convertRgb32()
|
||||
{
|
||||
QFETCH(QImage, inputImage);
|
||||
QFETCH(QImage::Format, outputFormat);
|
||||
|
||||
QBENCHMARK {
|
||||
QImage output = inputImage.convertToFormat(outputFormat);
|
||||
output.constBits();
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QImageConversion::convertGeneric_data()
|
||||
{
|
||||
QTest::addColumn<QImage>("inputImage");
|
||||
QTest::addColumn<QImage::Format>("outputFormat");
|
||||
QImage rgb32 = generateImageRgb32(1000, 1000);
|
||||
QImage argb32 = generateImageArgb32(1000, 1000);
|
||||
QImage i8 = argb32.convertToFormat(QImage::Format_Indexed8);
|
||||
QImage rgba32 = argb32.convertToFormat(QImage::Format_RGBA8888);
|
||||
QImage bgr30 = rgb32.convertToFormat(QImage::Format_BGR30);
|
||||
QImage a2rgb30 = argb32.convertToFormat(QImage::Format_A2RGB30_Premultiplied);
|
||||
QImage rgb666 = rgb32.convertToFormat(QImage::Format_RGB666);
|
||||
QImage argb4444 = argb32.convertToFormat(QImage::Format_ARGB4444_Premultiplied);
|
||||
QImage rgba64 = argb32.convertToFormat(QImage::Format_RGBA64);
|
||||
QImage rgba64pm = argb32.convertToFormat(QImage::Format_RGBA64_Premultiplied);
|
||||
QImage rgb888 = rgb32.convertToFormat(QImage::Format_RGB888);
|
||||
QImage bgr888 = rgb32.convertToFormat(QImage::Format_BGR888);
|
||||
|
||||
QTest::newRow("indexed8 -> rgb32") << i8 << QImage::Format_RGB32;
|
||||
QTest::newRow("indexed8 -> argb32") << i8 << QImage::Format_ARGB32;
|
||||
QTest::newRow("indexed8 -> argb32pm") << i8 << QImage::Format_ARGB32_Premultiplied;
|
||||
QTest::newRow("indexed8 -> rgbx8888") << i8 << QImage::Format_RGBX8888;
|
||||
QTest::newRow("indexed8 -> rgb16") << i8 << QImage::Format_RGB16;
|
||||
|
||||
QTest::newRow("rgba8888 -> rgb32") << rgba32 << QImage::Format_RGB32;
|
||||
QTest::newRow("rgba8888 -> argb32") << rgba32 << QImage::Format_ARGB32;
|
||||
QTest::newRow("rgba8888 -> argb32pm") << rgba32 << QImage::Format_ARGB32_Premultiplied;
|
||||
QTest::newRow("rgba8888 -> rgbx8888") << rgba32 << QImage::Format_RGBX8888;
|
||||
QTest::newRow("rgba8888 -> rgba8888pm") << rgba32 << QImage::Format_RGBA8888_Premultiplied;
|
||||
QTest::newRow("rgba8888 -> rgb888") << rgba32 << QImage::Format_RGB888;
|
||||
QTest::newRow("rgba8888 -> rgb30") << rgba32 << QImage::Format_RGB30;
|
||||
QTest::newRow("rgba8888 -> a2bgr30") << rgba32 << QImage::Format_A2BGR30_Premultiplied;
|
||||
|
||||
QTest::newRow("bgr30 -> rgb32") << bgr30 << QImage::Format_RGB32;
|
||||
QTest::newRow("bgr30 -> argb32") << bgr30 << QImage::Format_ARGB32;
|
||||
QTest::newRow("bgr30 -> argb32pm") << bgr30 << QImage::Format_ARGB32_Premultiplied;
|
||||
QTest::newRow("bgr30 -> rgbx8888") << bgr30 << QImage::Format_RGBX8888;
|
||||
QTest::newRow("bgr30 -> rgba8888") << bgr30 << QImage::Format_RGBA8888;
|
||||
QTest::newRow("bgr30 -> rgba8888pm") << bgr30 << QImage::Format_RGBA8888_Premultiplied;
|
||||
QTest::newRow("bgr30 -> rgb30") << bgr30 << QImage::Format_RGB30;
|
||||
QTest::newRow("bgr30 -> a2bgr30") << bgr30 << QImage::Format_A2BGR30_Premultiplied;
|
||||
|
||||
QTest::newRow("a2rgb30 -> rgb32") << a2rgb30 << QImage::Format_RGB32;
|
||||
QTest::newRow("a2rgb30 -> argb32") << a2rgb30 << QImage::Format_ARGB32;
|
||||
QTest::newRow("a2rgb30 -> argb32pm") << a2rgb30 << QImage::Format_ARGB32_Premultiplied;
|
||||
QTest::newRow("a2rgb30 -> rgbx8888") << a2rgb30 << QImage::Format_RGBX8888;
|
||||
QTest::newRow("a2rgb30 -> rgba8888") << a2rgb30 << QImage::Format_RGBA8888;
|
||||
QTest::newRow("a2rgb30 -> rgba8888pm") << a2rgb30 << QImage::Format_RGBA8888_Premultiplied;
|
||||
QTest::newRow("a2rgb30 -> rgb30") << a2rgb30 << QImage::Format_RGB30;
|
||||
QTest::newRow("a2rgb30 -> bgr30") << a2rgb30 << QImage::Format_BGR30;
|
||||
QTest::newRow("a2rgb30 -> a2bgr30") << a2rgb30 << QImage::Format_A2BGR30_Premultiplied;
|
||||
|
||||
QTest::newRow("rgb666 -> rgb32") << rgb666 << QImage::Format_RGB32;
|
||||
QTest::newRow("rgb666 -> argb32") << rgb666 << QImage::Format_ARGB32;
|
||||
QTest::newRow("rgb666 -> argb32pm") << rgb666 << QImage::Format_ARGB32_Premultiplied;
|
||||
QTest::newRow("rgb666 -> rgb888") << rgb666 << QImage::Format_RGB888;
|
||||
QTest::newRow("rgb666 -> rgb16") << rgb666 << QImage::Format_RGB16;
|
||||
QTest::newRow("rgb666 -> rgb555") << rgb666 << QImage::Format_RGB555;
|
||||
QTest::newRow("rgb666 -> rgb30") << rgb666 << QImage::Format_RGB30;
|
||||
|
||||
QTest::newRow("argb4444pm -> rgb32") << argb4444 << QImage::Format_RGB32;
|
||||
QTest::newRow("argb4444pm -> argb32") << argb4444 << QImage::Format_ARGB32;
|
||||
QTest::newRow("argb4444pm -> argb32pm") << argb4444 << QImage::Format_ARGB32_Premultiplied;
|
||||
QTest::newRow("argb4444pm -> rgbx8888") << argb4444 << QImage::Format_RGBX8888;
|
||||
QTest::newRow("argb4444pm -> rgba8888pm") << argb4444 << QImage::Format_RGBA8888_Premultiplied;
|
||||
QTest::newRow("argb4444pm -> rgb30") << argb4444 << QImage::Format_RGB30;
|
||||
QTest::newRow("argb4444pm -> a2bgr30") << argb4444 << QImage::Format_A2BGR30_Premultiplied;
|
||||
|
||||
QTest::newRow("rgba64 -> argb32") << rgba64 << QImage::Format_ARGB32;
|
||||
QTest::newRow("rgba64 -> argb32pm") << rgba64 << QImage::Format_ARGB32_Premultiplied;
|
||||
QTest::newRow("rgba64 -> rgba64pm") << rgba64 << QImage::Format_RGBA64_Premultiplied;
|
||||
|
||||
QTest::newRow("rgba64pm -> argb32") << rgba64pm << QImage::Format_ARGB32;
|
||||
QTest::newRow("rgba64pm -> rgbx8888") << rgba64pm << QImage::Format_RGBX8888;
|
||||
QTest::newRow("rgba64pm -> rgba8888pm") << rgba64pm << QImage::Format_RGBA8888_Premultiplied;
|
||||
QTest::newRow("rgba64pm -> rgb30") << rgba64pm << QImage::Format_RGB30;
|
||||
QTest::newRow("rgba64pm -> a2bgr30") << rgba64pm << QImage::Format_A2BGR30_Premultiplied;
|
||||
QTest::newRow("rgba64pm -> rgba64") << rgba64pm << QImage::Format_RGBA64;
|
||||
|
||||
QTest::newRow("rgb888 -> rgb32") << rgb888 << QImage::Format_RGB32;
|
||||
QTest::newRow("rgb888 -> argb32") << rgb888 << QImage::Format_ARGB32;
|
||||
QTest::newRow("rgb888 -> argb32pm") << rgb888 << QImage::Format_ARGB32_Premultiplied;
|
||||
QTest::newRow("rgb888 -> rgbx8888") << rgb888 << QImage::Format_RGBX8888;
|
||||
QTest::newRow("rgb888 -> rgba8888pm") << rgb888 << QImage::Format_RGBA8888_Premultiplied;
|
||||
QTest::newRow("rgb888 -> bgr888") << rgb888 << QImage::Format_BGR888;
|
||||
|
||||
QTest::newRow("bgr888 -> rgb32") << bgr888 << QImage::Format_RGB32;
|
||||
QTest::newRow("bgr888 -> argb32") << bgr888 << QImage::Format_ARGB32;
|
||||
QTest::newRow("bgr888 -> argb32pm") << bgr888 << QImage::Format_ARGB32_Premultiplied;
|
||||
QTest::newRow("bgr888 -> rgbx8888") << bgr888 << QImage::Format_RGBX8888;
|
||||
QTest::newRow("bgr888 -> rgba8888pm") << bgr888 << QImage::Format_RGBA8888_Premultiplied;
|
||||
QTest::newRow("bgr888 -> rgb888") << bgr888 << QImage::Format_RGB888;
|
||||
}
|
||||
|
||||
void tst_QImageConversion::convertGeneric()
|
||||
{
|
||||
QFETCH(QImage, inputImage);
|
||||
QFETCH(QImage::Format, outputFormat);
|
||||
|
||||
QBENCHMARK {
|
||||
QImage output = inputImage.convertToFormat(outputFormat);
|
||||
output.constBits();
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QImageConversion::convertGenericInplace_data()
|
||||
{
|
||||
QTest::addColumn<QImage>("inputImage");
|
||||
QTest::addColumn<QImage::Format>("outputFormat");
|
||||
|
||||
QImage argb32 = generateImageArgb32(1000, 1000);
|
||||
QImage argb32pm = argb32.convertToFormat(QImage::Format_ARGB32_Premultiplied);
|
||||
QImage rgba8888 = argb32.convertToFormat(QImage::Format_RGBA8888);
|
||||
QImage argb6666 = argb32.convertToFormat(QImage::Format_ARGB6666_Premultiplied);
|
||||
QImage argb4444 = argb32.convertToFormat(QImage::Format_ARGB4444_Premultiplied);
|
||||
QImage rgb16 = argb32.convertToFormat(QImage::Format_RGB16);
|
||||
QImage rgb30 = argb32.convertToFormat(QImage::Format_RGB30);
|
||||
QImage rgb888 = argb32.convertToFormat(QImage::Format_RGB888);
|
||||
|
||||
QTest::newRow("argb32 -> argb32pm -> argb32") << argb32 << QImage::Format_ARGB32_Premultiplied;
|
||||
QTest::newRow("argb32 -> rgb32 -> argb32") << argb32 << QImage::Format_RGB32;
|
||||
QTest::newRow("argb32 -> rgba8888 -> argb32") << argb32 << QImage::Format_RGBA8888;
|
||||
QTest::newRow("argb32 -> rgba8888pm -> argb32") << argb32 << QImage::Format_RGBA8888_Premultiplied;
|
||||
|
||||
QTest::newRow("argb32pm -> argb32 -> argb32pm") << argb32pm << QImage::Format_ARGB32;
|
||||
QTest::newRow("argb32pm -> rgb32 -> argb32pm") << argb32pm << QImage::Format_RGB32;
|
||||
QTest::newRow("argb32pm -> rgba8888pm -> argb32pm") << argb32pm << QImage::Format_RGBA8888_Premultiplied;
|
||||
QTest::newRow("argb32pm -> rgba8888 -> argb32pm") << argb32pm << QImage::Format_RGBA8888;
|
||||
QTest::newRow("argb32pm -> rgbx8888 -> argb32pm") << argb32pm << QImage::Format_RGBX8888;
|
||||
|
||||
QTest::newRow("rgba8888 -> argb32 -> rgba8888") << rgba8888 << QImage::Format_ARGB32;
|
||||
QTest::newRow("rgba8888 -> rgb32 -> rgba8888") << rgba8888 << QImage::Format_RGB32;
|
||||
QTest::newRow("rgba8888 -> argb32pm -> rgba8888") << rgba8888 << QImage::Format_ARGB32_Premultiplied;
|
||||
QTest::newRow("rgba8888 -> rgba8888pm -> rgba8888") << rgba8888 << QImage::Format_RGBA8888_Premultiplied;
|
||||
|
||||
QTest::newRow("argb6666pm -> argb8565pm -> argb6666pm") << argb6666 << QImage::Format_ARGB8565_Premultiplied;
|
||||
QTest::newRow("argb6666pm -> rgb888 -> argb6666pm") << argb6666 << QImage::Format_RGB888;
|
||||
|
||||
QTest::newRow("argb4444pm -> rgb16 -> argb4444pm") << argb4444 << QImage::Format_RGB16;
|
||||
QTest::newRow("argb4444pm -> rgb444 -> argb4444pm") << argb4444 << QImage::Format_RGB444;
|
||||
|
||||
QTest::newRow("rgb16 -> rgb555 -> rgb16") << rgb16 << QImage::Format_RGB555;
|
||||
QTest::newRow("rgb16 -> rgb444 -> rgb16") << rgb16 << QImage::Format_RGB444;
|
||||
QTest::newRow("rgb16 -> argb4444pm -> rgb16") << rgb16 << QImage::Format_ARGB4444_Premultiplied;
|
||||
|
||||
QTest::newRow("rgb30 -> bgr30 -> rgb30") << rgb30 << QImage::Format_BGR30;
|
||||
QTest::newRow("rgb888 -> bgr888 -> rgb888") << rgb888 << QImage::Format_BGR888;
|
||||
}
|
||||
|
||||
void tst_QImageConversion::convertGenericInplace()
|
||||
{
|
||||
QFETCH(QImage, inputImage);
|
||||
QFETCH(QImage::Format, outputFormat);
|
||||
|
||||
QImage::Format inputFormat = inputImage.format();
|
||||
QImage tmpImage = std::move(inputImage);
|
||||
|
||||
QBENCHMARK {
|
||||
tmpImage = (std::move(tmpImage).convertToFormat(outputFormat)).convertToFormat(inputFormat);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Fill a RGB888 image with "random" pixel values.
|
||||
*/
|
||||
QImage tst_QImageConversion::generateImageRgb888(int width, int height)
|
||||
{
|
||||
QImage image(width, height, QImage::Format_RGB888);
|
||||
const int byteWidth = width * 3;
|
||||
|
||||
for (int y = 0; y < image.height(); ++y) {
|
||||
uchar *scanline = image.scanLine(y);
|
||||
for (int x = 0; x < byteWidth; ++x)
|
||||
scanline[x] = x ^ y;
|
||||
}
|
||||
return image;
|
||||
}
|
||||
|
||||
/*
|
||||
Fill a RGB16 image with "random" pixel values.
|
||||
*/
|
||||
QImage tst_QImageConversion::generateImageRgb16(int width, int height)
|
||||
{
|
||||
QImage image(width, height, QImage::Format_RGB16);
|
||||
const int byteWidth = width * 2;
|
||||
|
||||
for (int y = 0; y < image.height(); ++y) {
|
||||
uchar *scanline = image.scanLine(y);
|
||||
for (int x = 0; x < byteWidth; ++x)
|
||||
scanline[x] = x ^ y;
|
||||
}
|
||||
return image;
|
||||
}
|
||||
|
||||
/*
|
||||
Fill a RGB32 image with "random" pixel values.
|
||||
*/
|
||||
QImage tst_QImageConversion::generateImageRgb32(int width, int height)
|
||||
{
|
||||
QImage image(width, height, QImage::Format_RGB32);
|
||||
|
||||
for (int y = 0; y < image.height(); ++y) {
|
||||
QRgb *scanline = (QRgb*)image.scanLine(y);
|
||||
for (int x = 0; x < width; ++x)
|
||||
scanline[x] = qRgb(x, y, x ^ y);
|
||||
}
|
||||
return image;
|
||||
}
|
||||
|
||||
/*
|
||||
Fill a ARGB32 image with "random" pixel values.
|
||||
*/
|
||||
QImage tst_QImageConversion::generateImageArgb32(int width, int height)
|
||||
{
|
||||
QImage image(width, height, QImage::Format_ARGB32);
|
||||
|
||||
for (int y = 0; y < image.height(); ++y) {
|
||||
QRgb *scanline = (QRgb*)image.scanLine(y);
|
||||
for (int x = 0; x < width; ++x) {
|
||||
int alpha = (x ^ y) & 0x1ff;
|
||||
alpha = qMax(0, qMin(alpha - 128, 255));
|
||||
scanline[x] = qRgba(x, y, x ^ y, alpha);
|
||||
}
|
||||
}
|
||||
return image;
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QImageConversion)
|
||||
#include "tst_qimageconversion.moc"
|
27
tests/benchmarks/gui/image/qimagereader/CMakeLists.txt
Normal file
@ -0,0 +1,27 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_bench_qimagereader Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_benchmark(tst_bench_qimagereader
|
||||
SOURCES
|
||||
tst_qimagereader.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::Test
|
||||
)
|
||||
|
||||
## Scopes:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_extend_target(tst_bench_qimagereader CONDITION QT_FEATURE_gif
|
||||
DEFINES
|
||||
QTEST_HAVE_GIF
|
||||
)
|
||||
|
||||
qt_internal_extend_target(tst_bench_qimagereader CONDITION QT_FEATURE_jpeg
|
||||
DEFINES
|
||||
QTEST_HAVE_JPEG
|
||||
)
|
BIN
tests/benchmarks/gui/image/qimagereader/images/16bpp.bmp
Normal file
After Width: | Height: | Size: 150 KiB |
BIN
tests/benchmarks/gui/image/qimagereader/images/4bpp-rle.bmp
Normal file
After Width: | Height: | Size: 23 KiB |
BIN
tests/benchmarks/gui/image/qimagereader/images/YCbCr_cmyk.jpg
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
tests/benchmarks/gui/image/qimagereader/images/YCbCr_cmyk.png
Normal file
After Width: | Height: | Size: 230 B |
BIN
tests/benchmarks/gui/image/qimagereader/images/YCbCr_rgb.jpg
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
tests/benchmarks/gui/image/qimagereader/images/away.png
Normal file
After Width: | Height: | Size: 753 B |
BIN
tests/benchmarks/gui/image/qimagereader/images/bat1.gif
Normal file
After Width: | Height: | Size: 953 B |
BIN
tests/benchmarks/gui/image/qimagereader/images/bat2.gif
Normal file
After Width: | Height: | Size: 980 B |
BIN
tests/benchmarks/gui/image/qimagereader/images/beavis.jpg
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
tests/benchmarks/gui/image/qimagereader/images/black.png
Normal file
After Width: | Height: | Size: 697 B |
65
tests/benchmarks/gui/image/qimagereader/images/black.xpm
Normal file
@ -0,0 +1,65 @@
|
||||
/* XPM */
|
||||
static char * ddd_xpm[] = {
|
||||
/* $Id: ddd.xpm,v 1.5 1999/08/19 11:30:07 andreas Exp $
|
||||
* DDD Logo. Copyright (C) 1997 TU Braunschweig, Germany.
|
||||
* For details on DDD, see `http://www.gnu.org/software/ddd/'.
|
||||
* width height ncolors chars_per_pixel */
|
||||
" 48 48 8 1",
|
||||
/* Colors */
|
||||
" c None m None g None g4 None s Background ",
|
||||
". c black m black g black g4 black s Legs ",
|
||||
"X c grey m white g grey g4 grey s Body ",
|
||||
"- c grey m white g grey g4 grey s Border ",
|
||||
"o c #000040 m black g grey25 g4 grey25 s Handle1 ",
|
||||
"O c blue4 m black g grey25 g4 grey25 s Handle2 ",
|
||||
"+ c white m white g white g4 white s Light ",
|
||||
"* c DarkGreen m black g grey25 g4 grey25 s Eye ",
|
||||
/* Pixels */
|
||||
" . . ",
|
||||
" . .. ",
|
||||
" . . ",
|
||||
" .. . ",
|
||||
" .. .. .. ",
|
||||
" .. . . . ",
|
||||
" . . . . .. ",
|
||||
" . .X. . ",
|
||||
" . *.X.* .. ",
|
||||
" .. .. .XXX. .. ... ",
|
||||
" . .X...XXX...X. . ",
|
||||
" .. ..XXX.XXX.XXX. .. ",
|
||||
" .....XXXX...XXXX. . ",
|
||||
" .. ..XXXXXXXXX.. .. ",
|
||||
" ...XXXXXXX..... ",
|
||||
" ......... ",
|
||||
" .XXXXXXX. ",
|
||||
" .....XXX..... ",
|
||||
" .XXXXXoOOOOOOX. ... ",
|
||||
" .. ..XXXoOOO-----OOO..... ",
|
||||
" .........XXoO-----..----O .. ",
|
||||
" .. ..X..oO--.........--O .. ",
|
||||
" . ..XXXoO--..++.......--O .. ",
|
||||
" .. .XXXXO-XXX+++XXXXXXXXX-O . ",
|
||||
" .. .....oO-XX+++XXXXXXXXXXX-O .. ",
|
||||
" .. .XXXoO--XX++XXXXXXXXXXXX-O .. ",
|
||||
" .. ..XXXoO-..+++............-O .. ",
|
||||
" . .. .XXoO--..++.............-OO .. ",
|
||||
" . ... ...oO--..................-O ",
|
||||
".. . .XXoO-XXXXXXXXXXXXXXXXXXX-O ",
|
||||
" .. .XXoO-XXXXXXXXXXXXXXXXXXX-O ",
|
||||
" .. .XoO-XXXXXXXXXXXXXXXXXXX-O. ",
|
||||
" . ...oO-.................-O .. ",
|
||||
" . .XXoO-.................-O .. ",
|
||||
" . ..XoO-.................-O .. ",
|
||||
" . ...oO-XXXXXXXXXXXXXXX-OOO . ",
|
||||
" .. .XoOO-XXXXXXXXXXXXX-OOOOO . ",
|
||||
" .. ..XoOO---.......---OOOOOO . ",
|
||||
" .. ....oOO---...----OOOOOOOO ",
|
||||
" . .XX..oOO-----OOOOOOOOOOO ",
|
||||
" . .....OOOOOOOOooOOOOOOOOO ",
|
||||
" . .XXooooooOo oOOOOOOOOO ",
|
||||
" . .XXX. ooOOOOOOO ",
|
||||
" .. ... ooOOOOOO ",
|
||||
" . ooOOOOOO ",
|
||||
" ooOOOOOO ",
|
||||
" ooOOOOOO ",
|
||||
" ooOOOOOO "};
|
BIN
tests/benchmarks/gui/image/qimagereader/images/colorful.bmp
Normal file
After Width: | Height: | Size: 64 KiB |
@ -0,0 +1,26 @@
|
||||
/* XPM */
|
||||
static const char *marble_xpm[] = {
|
||||
/* width height num_colors chars_per_pixel */
|
||||
" 240 240 223 2",
|
||||
/* colors */
|
||||
".. c #959595",
|
||||
".# c #c5c5c5",
|
||||
".a c #adadad",
|
||||
".b c #dedede",
|
||||
".c c #b7b7b7",
|
||||
".d c #d2d2d2",
|
||||
".e c #bebebe",
|
||||
".f c #c9c9c9",
|
||||
".g c #b8b8b8",
|
||||
".h c #d6d6d6",
|
||||
".i c #9e9e9e",
|
||||
".j c #eaeaea",
|
||||
".k c #b2b2b2",
|
||||
".l c #cecece",
|
||||
".m c #a5a5a5",
|
||||
".n c #e4e4e4",
|
||||
".o c #c4c4c4",
|
||||
".p c #d9d9d9",
|
||||
".q c #b1b1b1",
|
||||
/* pixels */
|
||||
"aYbla9aN.N#x",
|
@ -0,0 +1,7 @@
|
||||
/* XPM */
|
||||
static char * test_xpm[] = {
|
||||
"256 256 1 1",
|
||||
" c grey",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
BIN
tests/benchmarks/gui/image/qimagereader/images/corrupt.bmp
Normal file
After Width: | Height: | Size: 116 B |
BIN
tests/benchmarks/gui/image/qimagereader/images/corrupt.gif
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
tests/benchmarks/gui/image/qimagereader/images/corrupt.jpg
Normal file
After Width: | Height: | Size: 18 B |
BIN
tests/benchmarks/gui/image/qimagereader/images/corrupt.png
Normal file
After Width: | Height: | Size: 95 B |
@ -0,0 +1,5 @@
|
||||
#define noname_width 271
|
||||
#define noname_height 273
|
||||
static char noname_bits[] = {
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f};
|
After Width: | Height: | Size: 45 KiB |
BIN
tests/benchmarks/gui/image/qimagereader/images/earth.gif
Normal file
After Width: | Height: | Size: 50 KiB |
BIN
tests/benchmarks/gui/image/qimagereader/images/font.bmp
Normal file
After Width: | Height: | Size: 1.0 KiB |
622
tests/benchmarks/gui/image/qimagereader/images/gnus.xbm
Normal file
@ -0,0 +1,622 @@
|
||||
#define noname_width 271
|
||||
#define noname_height 273
|
||||
static char noname_bits[] = {
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xff,0x7f,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x49,0xe0,0xff,
|
||||
0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x97,0xaa,0x8a,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0x57,0x2a,0x41,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa9,0x52,0x16,0xfe,0x7f,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4a,0x49,0x05,
|
||||
0xf9,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x7f,0x95,0xaa,0x58,0xf4,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0x7f,0xa5,0x54,0x26,0xe1,0x7f,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x54,0x49,0x49,0xe4,0x7f,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x2a,0xa5,
|
||||
0x2a,0xd1,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0xd5,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xaf,0x52,0x95,0x54,0xc4,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xab,
|
||||
0x24,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0x57,0x29,0xa9,0x92,0x11,0x7f,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0x57,0xd5,0xfa,0xff,0xff,0xab,0xea,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97,0x4a,0x55,0x2a,0x41,0x7f,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x25,0x29,0xe5,0xff,0xff,0x95,0xa4,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa7,0xa4,
|
||||
0x24,0xa5,0x14,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4a,0xa5,0xd4,0xff,
|
||||
0x3f,0x52,0xa9,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x29,0x55,0x55,0x55,0x41,0x7e,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
|
||||
0xa9,0x54,0xea,0xff,0xdf,0x2a,0x55,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x55,0x55,0x4a,0x49,0x12,0x7e,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0x7f,0x55,0xa5,0x92,0xff,0x23,0xa5,0x4a,0xd6,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa5,0xa4,0x94,0xaa,0x42,
|
||||
0x7d,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0x4a,0x2a,0xa9,0xff,0xad,0x92,0x24,
|
||||
0xa9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2a,
|
||||
0x95,0x52,0x52,0x29,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x52,0x49,0x55,
|
||||
0xfe,0x91,0x54,0x55,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x7f,0x49,0x29,0x55,0x25,0x85,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x4f,0x95,0xaa,0x92,0x7e,0x55,0x55,0xa9,0x4a,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2a,0x50,0x95,0xaa,0x24,0x7e,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0x57,0x2a,0x95,0x54,0x79,0x95,0x92,0x92,0x94,0xfc,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xb9,0x62,0x29,0x49,
|
||||
0x85,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0x49,0x49,0x95,0xba,0xa4,0x54,
|
||||
0xaa,0x52,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,
|
||||
0x1a,0xf8,0xa7,0xaa,0x22,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0x55,0x52,
|
||||
0x2a,0x75,0x55,0xa5,0x24,0xa5,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xbf,0x5a,0xfd,0x57,0x92,0x94,0x7e,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0x4a,0x4a,0x55,0x49,0x89,0x92,0x94,0xaa,0x94,0xf4,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x1a,0xfc,0x2f,0x55,0x05,0x7c,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0x55,0xa9,0x4a,0x55,0x2a,0x55,0x55,0x55,0x55,0xe5,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x4e,0xfd,0x5f,
|
||||
0x29,0xa5,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0xa4,0x54,0x52,0x4a,0x55,0xa9,
|
||||
0xa4,0x24,0xa5,0x94,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x2f,0x1d,0xfe,0x3f,0x95,0x04,0x7c,0xff,0xfd,0xff,0xff,0xff,0x3f,0x49,0xa5,
|
||||
0x54,0xa9,0xa4,0x92,0x4a,0x49,0x4a,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xaf,0x44,0xfe,0x5f,0xa9,0x52,0x7d,0xff,0xe5,0xff,0xff,
|
||||
0xff,0x5f,0x55,0x92,0x2a,0x95,0x52,0x4a,0x52,0xaa,0x52,0x4a,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97,0x16,0xff,0xbf,0x4a,0x05,0x7c,
|
||||
0xff,0xd9,0xff,0xff,0xff,0x5f,0x95,0x42,0xa5,0x52,0x95,0xaa,0xaa,0xaa,0x94,
|
||||
0x54,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x43,0xfe,
|
||||
0xbf,0x54,0x52,0x7d,0x7f,0x25,0xff,0xff,0xff,0xa7,0xa4,0x28,0x92,0x54,0x4a,
|
||||
0xa5,0x4a,0x92,0xaa,0x4a,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xab,0x12,0xfe,0x7f,0xa5,0x02,0x7c,0x7f,0x55,0xfd,0xff,0xff,0x95,0x2a,
|
||||
0x82,0x54,0xa5,0x54,0x2a,0xa9,0x2a,0xa5,0x52,0xf5,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0x27,0x4b,0xff,0xff,0x4a,0x29,0x7d,0xff,0x92,0xfe,
|
||||
0xff,0xff,0x55,0x92,0x20,0xa8,0x94,0x2a,0xa5,0x94,0x52,0x29,0xa9,0xf4,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97,0x01,0xff,0x7f,0x52,0x42,
|
||||
0x7c,0xff,0x25,0xf9,0xff,0x7f,0xaa,0x02,0x8a,0x40,0x29,0x49,0x09,0x41,0x4a,
|
||||
0x55,0x25,0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x57,
|
||||
0xff,0xff,0x95,0x12,0x7d,0xff,0xa9,0xfa,0xff,0x7f,0x25,0xa9,0x20,0x2a,0xa5,
|
||||
0xaa,0x42,0x92,0x54,0x92,0x54,0x95,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xaf,0x83,0xff,0xff,0xa9,0x42,0x7e,0xff,0xaa,0xf4,0xff,0xaf,0x54,
|
||||
0x01,0x82,0x80,0xaa,0x54,0x14,0x08,0xa2,0xaa,0x4a,0xd2,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xef,0xcf,0xd7,0xff,0xff,0x52,0x12,0x7f,0xff,0x4a,
|
||||
0xea,0xff,0x57,0x92,0xaa,0x28,0x24,0x29,0x25,0x81,0x82,0x08,0x49,0x52,0x55,
|
||||
0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xdf,0xef,0xe7,0xff,0xff,0x2a,
|
||||
0x05,0x7e,0xff,0x55,0xd5,0xff,0xa5,0x2a,0x00,0x8e,0x10,0x4a,0x89,0x24,0x28,
|
||||
0xa0,0xaa,0x2a,0x49,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xe7,0xff,
|
||||
0xef,0xff,0xff,0xa5,0x50,0x7e,0xff,0x25,0xe5,0xff,0x2a,0xa5,0x52,0x7f,0x85,
|
||||
0x54,0x35,0x08,0x82,0x0a,0x55,0x95,0xaa,0xfc,0xff,0xff,0xff,0xcf,0xff,0xff,
|
||||
0xff,0xff,0xd7,0xff,0xff,0xff,0x7f,0x52,0x85,0x7e,0xff,0xab,0x94,0x1e,0x55,
|
||||
0x2a,0xc8,0xff,0x10,0x90,0x92,0xa0,0x08,0x20,0x24,0x52,0x25,0xfd,0xff,0xff,
|
||||
0xff,0xef,0xff,0xff,0xff,0xff,0xe9,0xff,0xff,0xff,0xff,0x94,0x10,0x7e,0xff,
|
||||
0x93,0xaa,0x6a,0x49,0x49,0xf2,0xff,0x85,0x52,0x09,0x0a,0xa2,0x4a,0x92,0x29,
|
||||
0xa9,0xf2,0xff,0xff,0xff,0xd3,0xff,0xff,0xff,0xff,0xeb,0xff,0xff,0xff,0x7f,
|
||||
0x55,0x25,0x7f,0xff,0x55,0x49,0x49,0x95,0x0a,0xf9,0xff,0x17,0x48,0x26,0x50,
|
||||
0x08,0x00,0xa9,0x4a,0x95,0xfa,0xff,0xff,0xff,0xeb,0xff,0xff,0xff,0xff,0xf2,
|
||||
0xff,0xff,0xff,0xff,0x92,0x80,0x7e,0xff,0xa7,0x54,0xaa,0xa4,0x52,0xfc,0xff,
|
||||
0xaf,0x42,0x89,0xfa,0xbf,0x54,0x20,0xa9,0xa4,0xd4,0xff,0xff,0xff,0xcb,0xff,
|
||||
0xff,0xff,0xff,0xf5,0xff,0xff,0xff,0xff,0x54,0x29,0x7f,0xff,0x4b,0xa5,0x92,
|
||||
0x2a,0x01,0xff,0xff,0x1f,0xa8,0x22,0xff,0xff,0x01,0xa5,0x2a,0x55,0xa9,0xff,
|
||||
0xff,0xff,0xd4,0xff,0xff,0xff,0x7f,0xfa,0xff,0xff,0xff,0x7f,0xa5,0x04,0x7f,
|
||||
0xff,0x57,0x2a,0x55,0xa9,0x54,0xfe,0xff,0x3f,0x05,0x89,0xff,0xff,0x5f,0x48,
|
||||
0x92,0x2a,0x95,0xff,0xff,0xff,0xea,0xff,0xff,0xff,0xff,0xd2,0xff,0xff,0xff,
|
||||
0x7f,0x2a,0x91,0x7f,0xff,0xa9,0x54,0x4a,0x52,0x02,0xff,0xff,0xff,0x50,0xd1,
|
||||
0xff,0xff,0x1f,0x81,0xaa,0xa4,0x52,0xfe,0xff,0x3f,0xe9,0xff,0xff,0xff,0x7f,
|
||||
0x1d,0xff,0xff,0xff,0xff,0x54,0x41,0x7f,0xff,0x93,0x92,0x52,0x95,0xc8,0xff,
|
||||
0xff,0xff,0x8b,0xc4,0xff,0xff,0x7f,0x24,0xa5,0x2a,0x49,0xf9,0xff,0x7f,0xd5,
|
||||
0xff,0xff,0xff,0xbf,0x4a,0xff,0xff,0xff,0xff,0x4a,0x14,0x7f,0xff,0x28,0xa5,
|
||||
0x94,0x2a,0xa0,0xff,0xff,0x7f,0x22,0xf0,0xff,0xff,0x7f,0x12,0x94,0xa4,0xaa,
|
||||
0xea,0xff,0xaf,0xea,0xff,0xff,0xff,0x5f,0x8e,0xff,0xff,0xff,0x7f,0xa9,0x40,
|
||||
0x7f,0xff,0x48,0x55,0x55,0x12,0xca,0xff,0xff,0xff,0x0a,0xf5,0xff,0xff,0xff,
|
||||
0x80,0x52,0x95,0x54,0xaa,0xfe,0x55,0xc4,0xff,0xff,0xff,0x5f,0xa5,0xff,0xff,
|
||||
0xff,0xff,0x94,0x14,0x7f,0xff,0x52,0x2a,0xa9,0x4a,0xe1,0xff,0xff,0xbf,0x24,
|
||||
0xf0,0xff,0xff,0xff,0x0b,0x28,0xa9,0x92,0x24,0x55,0x49,0xe5,0xd7,0xff,0xff,
|
||||
0xa7,0x8a,0xff,0xff,0xff,0x7f,0xa5,0xc0,0x7f,0xff,0x50,0x49,0x95,0x04,0xf8,
|
||||
0xff,0xff,0x5f,0x1f,0xfd,0xff,0xff,0xff,0x47,0x45,0x55,0xaa,0xaa,0x4a,0xaa,
|
||||
0xea,0xaf,0xff,0xff,0x2b,0xc3,0xff,0xff,0xff,0x7f,0x55,0x94,0x7f,0x7f,0x4a,
|
||||
0x55,0x52,0x51,0xfe,0xff,0xff,0x5f,0x4e,0xf8,0xff,0xff,0xff,0x1f,0x50,0x92,
|
||||
0x52,0x49,0xa9,0x92,0xe4,0xd3,0xff,0xff,0x4b,0xd5,0xff,0xff,0xff,0xff,0x94,
|
||||
0xc0,0x7f,0x3f,0xa0,0xa4,0xaa,0x04,0xfe,0xff,0xff,0xa7,0x1d,0xfd,0xff,0xff,
|
||||
0xff,0x9f,0x84,0xaa,0x4a,0xaa,0x24,0x55,0xf2,0x2b,0xff,0x7f,0xa9,0xc1,0xff,
|
||||
0xff,0xff,0x7f,0x4a,0x95,0x7f,0xbf,0x2a,0x95,0x24,0x50,0xff,0xff,0xff,0x97,
|
||||
0x5e,0xfe,0xff,0xff,0xff,0x3f,0x92,0x24,0x95,0x92,0xaa,0xa4,0xf2,0xcb,0xff,
|
||||
0x5f,0xd5,0xe5,0xff,0xff,0xff,0xff,0x52,0x80,0x7f,0x3f,0xa0,0x52,0x15,0x85,
|
||||
0xff,0xff,0xff,0xd7,0x38,0xfe,0xff,0xff,0xff,0xff,0x20,0xaa,0x52,0x55,0x55,
|
||||
0x55,0xf9,0x29,0xfd,0xab,0xa4,0xf0,0xff,0xff,0xff,0x7f,0x29,0xa9,0x7f,0xff,
|
||||
0x42,0x25,0x49,0xe8,0xff,0xff,0xff,0x69,0x7a,0xff,0xff,0xff,0xff,0xff,0x82,
|
||||
0x52,0xaa,0x24,0x89,0x4a,0xf8,0x55,0x2a,0x49,0x95,0xf5,0xff,0xff,0xff,0xbf,
|
||||
0x2a,0xc4,0x7f,0x7f,0x90,0x54,0x15,0xe2,0xff,0xff,0xff,0x25,0xbc,0xff,0xff,
|
||||
0xff,0xff,0xff,0x29,0x48,0x49,0xaa,0xaa,0xa4,0xfa,0x95,0x92,0x54,0x52,0xf0,
|
||||
0xff,0xff,0xff,0xbf,0x4a,0xd1,0x7f,0xff,0x05,0xaa,0x40,0xf8,0xff,0xff,0x7f,
|
||||
0xaa,0xfc,0xff,0xff,0xff,0xff,0xff,0x43,0xa9,0xaa,0x4a,0x52,0xa9,0xf8,0xa4,
|
||||
0xaa,0x52,0x95,0xfc,0xff,0xff,0xff,0x7f,0x52,0xc0,0x7f,0xff,0xa1,0x00,0x24,
|
||||
0xfa,0xff,0xff,0xff,0x0a,0xfe,0xff,0xff,0xff,0xff,0xff,0x17,0x92,0x24,0xa5,
|
||||
0x2a,0x55,0xfe,0xaa,0xa4,0x2a,0x29,0xf9,0xff,0xff,0xff,0xbf,0x2a,0xea,0x7f,
|
||||
0xff,0x05,0x92,0x90,0xfc,0xff,0xff,0xbf,0xa4,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x4f,0xa0,0xaa,0x54,0x49,0x25,0x7c,0x49,0x95,0xa4,0x12,0xfc,0xff,0xff,0xff,
|
||||
0x7f,0x8a,0xe0,0x7f,0xff,0xa3,0x04,0x05,0xfe,0xff,0xff,0xbf,0x06,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0x1f,0x49,0x95,0x52,0xaa,0x12,0x7f,0x55,0x52,0x55,0x0a,
|
||||
0xfd,0xff,0xff,0xff,0x3f,0x29,0xe8,0x7f,0xff,0x0f,0x50,0x50,0xff,0xff,0xff,
|
||||
0x5f,0xca,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x04,0xa9,0x4a,0x25,0x45,0x3e,
|
||||
0xa9,0x2a,0xa9,0xa2,0xfc,0xff,0xff,0xff,0x7f,0x55,0xe1,0x7f,0xff,0x27,0x05,
|
||||
0xc4,0xff,0xff,0xff,0x9f,0x91,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x41,0x4a,
|
||||
0x29,0xa9,0x12,0x5e,0x95,0x94,0x4a,0x0a,0xfe,0xff,0xff,0xff,0xbf,0x12,0xf4,
|
||||
0x7f,0xff,0x8f,0x50,0xf1,0xff,0xff,0xff,0xa7,0xc2,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x14,0x92,0xaa,0x4a,0xa2,0xbf,0xa4,0x52,0x95,0x22,0xff,0xff,0xff,
|
||||
0xff,0x3f,0x45,0xf2,0x7f,0xff,0x3f,0x04,0xf4,0xff,0xff,0xff,0xd7,0xe8,0xff,
|
||||
0xff,0xff,0xff,0x5f,0xff,0xff,0x83,0xa8,0x94,0x54,0x09,0x2f,0x55,0x4a,0x52,
|
||||
0x49,0xff,0xff,0xff,0xff,0x5f,0x99,0xf0,0x7f,0xff,0x7f,0x51,0xfc,0xff,0xff,
|
||||
0xff,0x6b,0xf1,0xff,0xff,0xff,0xff,0x5f,0xfd,0xff,0x2b,0x2a,0xa9,0x12,0x20,
|
||||
0x5f,0xa9,0xaa,0x54,0x00,0xff,0xff,0xff,0xff,0x5f,0x15,0xf2,0x7f,0xff,0xff,
|
||||
0x8f,0xff,0xff,0xff,0xff,0x2b,0xfc,0xff,0xff,0xff,0xff,0x2f,0xfd,0xff,0x87,
|
||||
0xa0,0x4a,0xaa,0x8a,0x9f,0x4a,0x52,0x15,0xa9,0xff,0xff,0xff,0xff,0x5f,0x8a,
|
||||
0xfc,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x94,0xf8,0xff,0xff,0xff,0xff,
|
||||
0x57,0xf2,0xff,0x2f,0x82,0x52,0x05,0xd0,0x2f,0x95,0x4a,0x49,0x84,0xff,0xff,
|
||||
0xff,0xff,0xbf,0x24,0xf8,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x12,0xfd,
|
||||
0xff,0xff,0xff,0xff,0x4b,0xd5,0xff,0x9f,0x28,0x54,0x48,0xc5,0xbf,0x52,0x55,
|
||||
0x0a,0xe1,0xff,0xff,0xff,0xff,0x9f,0x4a,0xfa,0x7f,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x1a,0xfe,0xff,0xff,0xff,0xff,0x57,0xa9,0xff,0x3f,0x82,0x00,0x21,
|
||||
0xf0,0x5f,0x2a,0x49,0x21,0xc4,0xff,0xff,0xff,0xff,0xaf,0x1a,0xfd,0x7f,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0x3f,0x85,0xff,0xff,0xff,0xff,0xff,0x29,0xa5,0xff,
|
||||
0xff,0x24,0x52,0x88,0xfc,0xbf,0x92,0x2a,0x09,0xf1,0xff,0xff,0xff,0xff,0x9f,
|
||||
0x4c,0xfc,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x15,0xff,0xff,0xff,0x7f,
|
||||
0xff,0xa5,0x4a,0xff,0xff,0x90,0x08,0x01,0xfe,0x3f,0x55,0x52,0x24,0xf4,0xff,
|
||||
0xff,0xff,0xff,0xaf,0x02,0xfd,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xc6,
|
||||
0xff,0xff,0xff,0xbf,0xfe,0x95,0x54,0xff,0xff,0x05,0x42,0xa8,0xfe,0xbf,0xa4,
|
||||
0x2a,0x41,0xf9,0xff,0xff,0xff,0xff,0x5f,0x55,0xfc,0x7f,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x4f,0xd0,0xff,0xff,0xff,0xbf,0x7c,0xaa,0x92,0xfc,0xff,0x53,0x08,
|
||||
0x01,0xff,0x1f,0x4a,0x01,0x04,0xfc,0xff,0xff,0xff,0xff,0x27,0x05,0xff,0x7f,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xc5,0xff,0xff,0xff,0x4f,0xbf,0x52,0xaa,
|
||||
0xfe,0xff,0x07,0x42,0xea,0xff,0xbf,0x50,0x54,0x51,0xff,0xff,0xff,0xff,0xff,
|
||||
0x97,0x56,0xfe,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xf0,0xff,0xff,0xff,
|
||||
0x2f,0x7f,0xa5,0x54,0xfd,0xff,0x3f,0x09,0xe0,0xff,0x1f,0x02,0x01,0x04,0xff,
|
||||
0xff,0xff,0xff,0xff,0xaf,0x02,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,
|
||||
0xf5,0xff,0xff,0xff,0xab,0x9f,0x94,0x92,0xfc,0xff,0xff,0x40,0xfd,0xff,0x9f,
|
||||
0x48,0x48,0xa1,0xff,0xff,0xff,0xff,0xff,0xa7,0x56,0xff,0x7f,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0x6b,0xf8,0xff,0xff,0xff,0xa4,0x5f,0xa9,0x2a,0xfd,0xff,0xff,
|
||||
0xff,0xff,0xff,0x3f,0x22,0x21,0xc4,0xff,0xff,0xff,0xff,0xff,0x2f,0x03,0xff,
|
||||
0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x2b,0xfa,0xff,0xff,0x7f,0xd5,0x2f,0xa5,
|
||||
0xa4,0xfa,0xff,0xff,0xff,0xff,0xff,0xbf,0x08,0x08,0xf9,0xff,0xff,0xff,0xff,
|
||||
0xff,0x97,0x4a,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x94,0xfc,0xff,0xff,
|
||||
0x7f,0x69,0xac,0x2a,0x55,0xf9,0xff,0xff,0xff,0xff,0xff,0x7f,0xa2,0x22,0xf8,
|
||||
0xff,0xff,0xff,0xff,0xff,0x53,0x21,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x15,0xfe,0xff,0xff,0x9f,0x2a,0x95,0x94,0x92,0xf4,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0x08,0x88,0xfe,0xff,0xff,0xff,0xff,0xff,0x57,0x8b,0xff,0x7f,0xff,0xff,
|
||||
0xff,0xff,0xff,0x7f,0xa9,0xfe,0xff,0xff,0x5f,0x52,0xbc,0x52,0x55,0xf5,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0x21,0x21,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0xa1,
|
||||
0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x7f,0x0d,0xff,0xff,0xff,0x57,0x15,0x3f,
|
||||
0x55,0x49,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0xc8,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xd7,0x89,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xbf,0xd6,0xff,0xff,
|
||||
0xff,0x4b,0x45,0x3f,0x49,0xaa,0xf4,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf9,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xc9,0xe2,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
|
||||
0x3f,0x81,0xff,0xff,0xff,0x29,0x11,0x5f,0x28,0x55,0xf5,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xab,0xc8,0xff,0x7f,0xff,
|
||||
0xff,0xff,0xff,0xff,0x5f,0xd6,0xff,0xff,0x7f,0xaa,0xc2,0x0f,0x55,0x49,0xea,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa5,
|
||||
0xe2,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x9f,0xe1,0xff,0xff,0xbf,0x4a,0xd1,
|
||||
0x5f,0x48,0xa5,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xe9,0xe0,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x27,0xf4,0xff,
|
||||
0xff,0xbf,0x94,0xc4,0x07,0x91,0x2a,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xca,0xea,0xff,0x7f,0xff,0xff,0xff,0xff,
|
||||
0xff,0xaf,0xf1,0xff,0xff,0x9f,0x52,0xe0,0x4b,0x44,0x52,0xe9,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x6a,0xe0,0xff,0x7f,
|
||||
0xff,0xff,0xff,0xff,0xff,0x4b,0xfc,0xff,0xff,0xab,0x2a,0xf5,0x0f,0x51,0xa5,
|
||||
0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
|
||||
0x69,0xe5,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x55,0xf8,0xff,0xff,0x95,0x14,
|
||||
0xf0,0x5f,0x84,0x54,0xea,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0x7f,0x75,0xf0,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x13,0xfd,
|
||||
0xff,0xff,0xa5,0x42,0xf9,0x7f,0x91,0x4a,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xb2,0xfa,0xff,0x7f,0xff,0xff,0xff,
|
||||
0xff,0xff,0x54,0xfe,0xff,0x7f,0x52,0x12,0xfa,0xff,0x20,0xa5,0xe4,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x34,0xf8,0xff,
|
||||
0x7f,0xff,0xff,0xff,0xff,0xff,0x25,0xff,0xff,0xaf,0xaa,0x48,0xfc,0xff,0x0b,
|
||||
0x29,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x7f,0xb5,0xf8,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x52,0xff,0xff,0x2f,0x49,
|
||||
0x02,0xfe,0xff,0x43,0xaa,0xea,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0x3f,0x3a,0xfa,0xff,0x7f,0xff,0xff,0xff,0xff,0x7f,0x4a,
|
||||
0xff,0xff,0xa5,0x2a,0xa9,0xff,0xff,0x17,0x25,0xe9,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x9a,0xfc,0xff,0x7f,0xff,0xff,
|
||||
0xff,0xff,0xff,0x2a,0xff,0x7f,0x95,0x54,0x80,0xff,0xff,0x07,0xa9,0xea,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x1d,0xfc,
|
||||
0xff,0x7f,0xff,0xff,0xff,0xff,0x3f,0xa9,0xfe,0x7f,0xa9,0x12,0xe5,0xff,0xff,
|
||||
0x5f,0x4a,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0x5f,0xad,0xfe,0xff,0x7f,0xff,0xff,0xff,0xff,0x7f,0x95,0xea,0x97,0x54,
|
||||
0x4a,0xf0,0xff,0xff,0x1f,0xa8,0xea,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0x5f,0x0e,0xfe,0xff,0x7f,0xff,0xff,0xff,0xff,0x5f,
|
||||
0x52,0x55,0xa9,0x92,0x02,0xfd,0xff,0xff,0x5f,0x53,0xf5,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x5e,0xfe,0xff,0x7f,0xff,
|
||||
0xff,0xff,0xff,0xbf,0x2a,0x49,0x4a,0x55,0x49,0xfc,0xff,0xff,0x3f,0x94,0xf8,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0x0f,
|
||||
0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x4f,0xa5,0xaa,0x92,0xa4,0x20,0xff,0xff,
|
||||
0xff,0xbf,0xa4,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x5f,0x57,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x5f,0x52,0x52,0xaa,
|
||||
0x2a,0x0a,0xff,0xff,0xff,0x7f,0x54,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x8f,0x07,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
|
||||
0xa7,0x94,0x4a,0x55,0x4a,0xa0,0xff,0xff,0xff,0xff,0xa8,0xfa,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x57,0xff,0xff,0x7f,
|
||||
0xff,0xff,0xff,0xff,0x2f,0x55,0xa9,0x92,0x12,0xe9,0xff,0xff,0xff,0x7f,0x24,
|
||||
0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,
|
||||
0x87,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x57,0xa5,0x4a,0xaa,0x44,0xf4,0xff,
|
||||
0xff,0xff,0xff,0x55,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xa7,0xab,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xab,0x94,0xa4,
|
||||
0x92,0x12,0xf9,0xff,0xff,0xff,0xff,0xa8,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xab,0x83,0xff,0xff,0x7f,0xff,0xff,0xff,
|
||||
0xff,0x47,0xa9,0x2a,0x55,0x40,0xfc,0xff,0xff,0xff,0xff,0x25,0xf5,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xe7,0xff,0xff,0xff,0xff,0xff,0xd7,0x97,0xff,0xff,
|
||||
0x7f,0xff,0xff,0xff,0xff,0x33,0x55,0xa9,0x24,0x15,0xfe,0xff,0xff,0xff,0xff,
|
||||
0x95,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb,0xff,0xff,0xff,0xff,0xff,
|
||||
0x93,0xc3,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x57,0x25,0xa5,0x2a,0x40,0xff,
|
||||
0xff,0xff,0xff,0xff,0xa9,0xf4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0xff,
|
||||
0xff,0xff,0xff,0xff,0xe7,0xd5,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x4b,0x92,
|
||||
0x54,0x92,0xd4,0xff,0xff,0xff,0xff,0xff,0x55,0xf5,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xe9,0xff,0xff,0xff,0xff,0xff,0xd5,0xc1,0xff,0xff,0x7f,0xff,0xff,
|
||||
0xff,0xff,0x97,0xaa,0x4a,0x05,0xe2,0xff,0xff,0xff,0xff,0xff,0x25,0xf1,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0xfd,0xff,0xff,0xff,0xff,0xd5,0xea,0xff,
|
||||
0xff,0x7f,0xff,0xff,0xff,0xff,0x57,0x55,0x25,0xa1,0xf0,0xff,0xff,0xff,0xff,
|
||||
0xff,0x95,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe8,0xfa,0xff,0xff,0xff,
|
||||
0xff,0xea,0xe0,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xa7,0x24,0x59,0x04,0xfa,
|
||||
0xff,0xff,0xff,0xff,0xff,0xa9,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe2,
|
||||
0xfd,0xff,0xff,0xff,0xff,0xc9,0xe9,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x4f,
|
||||
0x52,0x05,0xa1,0xfc,0xff,0xff,0xff,0xff,0xff,0xa5,0xfa,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0x70,0xf9,0xff,0xff,0xff,0xff,0x74,0xe2,0xff,0xff,0x7f,0xff,
|
||||
0xff,0xff,0xff,0x47,0x95,0x92,0x04,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0xf8,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xe2,0xfa,0xff,0xff,0xff,0xff,0x72,0xe8,
|
||||
0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x97,0xaa,0x20,0xd0,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x55,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xb8,0xfc,0xff,0xff,
|
||||
0xff,0xff,0xea,0xe2,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x07,0x04,0x82,0xc2,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x29,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
|
||||
0x71,0xfd,0xff,0xff,0xff,0x7f,0x2a,0xf8,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
|
||||
0x4f,0x91,0x28,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0xfc,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0x1f,0x54,0xfe,0xff,0xff,0xff,0x7f,0x75,0xf2,0xff,0xff,0x7f,
|
||||
0xff,0xff,0xff,0xff,0x27,0x44,0x82,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x29,
|
||||
0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0xb8,0xfc,0xff,0xff,0xff,0xbf,0x14,
|
||||
0xf1,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x0f,0x11,0x20,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0x55,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x9a,0xfe,0xff,
|
||||
0xff,0xff,0x7f,0x5a,0xf8,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x5f,0x40,0x85,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x09,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x4f,0x2d,0xfd,0xff,0xff,0xff,0x9f,0x12,0xf9,0xff,0xff,0x7f,0xff,0xff,0xff,
|
||||
0xff,0x3f,0x14,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0xfe,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0x07,0xa6,0xfe,0xff,0xff,0xff,0x5f,0x4d,0xfa,0xff,0xff,
|
||||
0x7f,0xff,0xff,0xff,0xff,0xff,0x40,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x09,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2b,0x4b,0xfe,0xff,0xff,0xff,0xbf,
|
||||
0x2c,0xf8,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xf5,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0x43,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x57,0xff,
|
||||
0xff,0xff,0xff,0x5f,0x0a,0xfe,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x89,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xd5,0xa9,0xff,0xff,0xff,0xff,0xaf,0x5a,0xfc,0xff,0xff,0x7f,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa3,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0x81,0x95,0xff,0xff,0xff,0xff,0x9f,0x06,0xfd,0xff,
|
||||
0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xc9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xca,0xa5,0xff,0xff,0xff,0xff,
|
||||
0x2f,0x95,0xfc,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0xea,
|
||||
0xff,0xff,0xff,0xff,0xaf,0x26,0xfe,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd5,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0x7f,0xf5,0xf4,0xff,0xff,0xff,0xff,0xaf,0x86,0xfe,0xff,0xff,0x7f,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc1,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0x7f,0x70,0xe5,0xff,0xff,0xff,0xff,0x4f,0x2e,0xfe,
|
||||
0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xeb,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xb2,0xfa,0xff,0xff,0xff,
|
||||
0xff,0x57,0x83,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x78,
|
||||
0xf2,0xff,0xff,0xff,0xff,0xa7,0x22,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x5f,0x5d,0xfd,0xff,0xff,0xff,0xff,0x97,0x87,0xff,0xff,0xff,0x7f,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x3c,0xfd,0xff,0xff,0xff,0xff,0x53,0xa3,
|
||||
0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xac,0xfe,0xff,0xff,
|
||||
0xff,0xff,0x57,0x95,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
|
||||
0x9e,0xfe,0xff,0xff,0xff,0xff,0x97,0x81,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xa7,0x57,0xfe,0xff,0xff,0xff,0xff,0xa9,0xa5,0xff,0xff,0xff,
|
||||
0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xaf,0xff,0xff,0xff,0xff,0xff,0x4b,
|
||||
0x89,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xab,0x93,0xff,0xff,
|
||||
0xff,0xff,0xff,0x95,0xa2,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x83,0xab,0xff,0xff,0xff,0xff,0xff,0xd3,0xc8,0xff,0xff,0xff,0x7f,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,
|
||||
0xff,0xff,0xff,0xff,0xe9,0xa5,0xff,0xff,0xff,0xff,0xff,0xa5,0xe1,0xff,0xff,
|
||||
0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0xd5,0xff,0xff,0xff,0xff,0xff,
|
||||
0xd5,0xc8,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xea,0xea,0xff,
|
||||
0xff,0xff,0xff,0xff,0x14,0xc1,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,
|
||||
0xff,0xe0,0xe4,0xff,0xff,0xff,0xff,0xff,0x65,0xe8,0xff,0xff,0xff,0x7f,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,
|
||||
0xff,0xff,0xff,0xff,0x3f,0x72,0xe9,0xff,0xff,0xff,0xff,0xff,0x6a,0xe1,0xff,
|
||||
0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xbf,0xb8,0xfa,0xff,0xff,0xff,0xff,
|
||||
0xff,0x52,0xea,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd3,0xff,0xff,0xff,0xff,0x1f,0x7a,0xf5,
|
||||
0xff,0xff,0xff,0xff,0x7f,0x2a,0xe0,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb,0xff,0xff,0xff,
|
||||
0xff,0x8f,0x58,0xfa,0xff,0xff,0xff,0xff,0x7f,0x25,0xf5,0xff,0xff,0xff,0x7f,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xb5,0xff,0xff,0xdf,0xff,0x57,0x5e,0xfd,0xff,0xff,0xff,0xff,0xff,0x34,0xe0,
|
||||
0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xca,0xff,0xff,0x8f,0xff,0x07,0xac,0xfc,0xff,0xff,0xff,
|
||||
0xff,0x7f,0x2a,0xf5,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd4,0xff,0xff,0x57,0xff,0x2b,0x2d,
|
||||
0xfd,0xff,0xff,0xff,0xff,0xff,0xb2,0xf0,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd2,0xff,0xff,
|
||||
0x07,0xff,0x43,0x4a,0xff,0xff,0xff,0xff,0xff,0xbf,0x2a,0xf8,0xff,0xff,0xff,
|
||||
0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x3f,0xc5,0xff,0xff,0x2b,0xfe,0x08,0xab,0xfe,0xff,0xff,0xff,0xff,0x7f,0xaa,
|
||||
0xf2,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xbf,0xea,0xff,0xff,0x83,0x36,0x20,0x55,0xff,0xff,0xff,
|
||||
0xff,0xff,0x3f,0x15,0xf0,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0xc2,0xff,0xff,0x48,0x4a,0x85,
|
||||
0x49,0xff,0xff,0xff,0xff,0xff,0x7f,0x59,0xfa,0xff,0xff,0xff,0x7f,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0xf5,0xff,
|
||||
0x7f,0x10,0x29,0x50,0xa5,0xff,0xff,0xff,0xff,0xff,0x3f,0x15,0xf9,0xff,0xff,
|
||||
0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0x97,0xe4,0xff,0x7f,0x05,0x95,0x42,0xd5,0xff,0xff,0xff,0xff,0xff,0x7f,
|
||||
0x35,0xfc,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xab,0xea,0xff,0xbf,0xa0,0x24,0xa8,0xd4,0xff,0xff,
|
||||
0xff,0xff,0xff,0x7f,0x19,0xf9,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x27,0xe5,0xff,0x3f,0x92,0xaa,
|
||||
0x50,0xe9,0xff,0xff,0xff,0xff,0xff,0x9f,0x4a,0xfc,0xff,0xff,0xff,0x7f,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa9,0xe2,
|
||||
0xff,0x9f,0xa0,0xaa,0x2a,0xf5,0xff,0xff,0xff,0xff,0xff,0x5f,0x1a,0xf9,0xff,
|
||||
0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x95,0xf8,0xff,0x5f,0x4a,0x92,0x4a,0xf5,0xff,0xff,0xff,0xff,0xff,
|
||||
0xbf,0x4a,0xfc,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0x7f,0x52,0xf2,0xff,0x1f,0x20,0x49,0xa5,0xfa,0xff,
|
||||
0xff,0xff,0xff,0xff,0x5f,0x1a,0xfd,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaa,0xf8,0xff,0x47,0xa9,
|
||||
0x2a,0x29,0xf9,0xff,0xff,0xff,0xff,0xff,0xbf,0x0a,0xfc,0xff,0xff,0xff,0x7f,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x49,
|
||||
0xf2,0xff,0x17,0x92,0xaa,0xaa,0xfe,0xff,0xff,0xff,0xff,0xff,0x9f,0xac,0xfe,
|
||||
0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x9f,0x2a,0xf8,0xff,0x43,0xa8,0x24,0x25,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xaf,0x0a,0xfc,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x94,0xfa,0xff,0x91,0x54,0xaa,0x52,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0x2f,0x4d,0xfd,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0x45,0xfc,0xff,0x03,
|
||||
0x92,0x52,0xaa,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x06,0xfc,0xff,0xff,0xff,
|
||||
0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,
|
||||
0x12,0xfe,0xff,0x50,0xaa,0x2a,0x95,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0xa5,
|
||||
0xfe,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xa7,0x44,0xff,0xff,0x0a,0x25,0xa5,0xa4,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x97,0x06,0xfc,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2b,0x15,0xff,0xff,0x40,0xa9,0x92,0xea,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x55,0xfd,0xff,0xff,0xff,0x7f,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0xa1,0xff,0x7f,
|
||||
0x92,0x4a,0xaa,0xd4,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x06,0xfc,0xff,0xff,
|
||||
0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x95,0x8a,0xff,0x3f,0x84,0x54,0xa9,0xea,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,
|
||||
0x25,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0x52,0xe0,0xff,0xbf,0x50,0xa9,0x4a,0xf2,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xa7,0x8e,0xfe,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xa9,0xea,0xff,0x3f,0x24,0x95,0x54,
|
||||
0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x23,0xfe,0xff,0xff,0xff,0x7f,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x4a,0xf0,0xff,
|
||||
0x9f,0x50,0x69,0x49,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0x8b,0xff,0xff,
|
||||
0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x7f,0xa5,0xf4,0xff,0x0f,0x2d,0x75,0xaa,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xaf,0x03,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0x9f,0x14,0xfa,0xff,0x2f,0xa8,0xfa,0x25,0xfd,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0x97,0xd7,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xaa,0xfc,0xff,0x0f,0x4d,0xfd,
|
||||
0xa9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0x83,0xff,0xff,0xff,0xff,0x7f,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x12,0xfc,
|
||||
0xff,0x27,0x92,0xfe,0xcb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd7,0xd7,0xff,
|
||||
0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0x97,0x0a,0xff,0xff,0x83,0x56,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xef,0xc7,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xab,0x24,0xff,0xff,0x2b,0xaa,0xfe,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xe7,0xef,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0x45,0xff,0xff,0x05,0x95,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xff,0xff,0xff,0xff,
|
||||
0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0x82,
|
||||
0xff,0xff,0x51,0xa9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,
|
||||
0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xa9,0xe8,0xff,0xff,0x85,0xca,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0x7f,0x52,0xc1,0xff,0xff,0x90,0xd5,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x4d,0xe8,0xff,0xff,0xa5,
|
||||
0xe4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x51,
|
||||
0xf2,0xff,0x7f,0x40,0xd5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x3f,0x95,0xf8,0xff,0x7f,0xa9,0xea,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0x15,0xfa,0xff,0x3f,0xa4,0xf4,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xa4,0xfc,0xff,0x7f,
|
||||
0x71,0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,
|
||||
0x15,0xfe,0xff,0x3f,0x94,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xa7,0x0a,0xff,0xff,0x1f,0x79,0xf2,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xab,0xa4,0xff,0xff,0x5f,0x8c,0xfa,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x53,0x82,0xff,0xff,
|
||||
0x1f,0x5c,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xa4,0x92,0xff,0xff,0xbf,0x56,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0x9a,0xc4,0xff,0xff,0x0f,0x2e,0xfd,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa2,0xf0,0xff,0xff,0xaf,0xa7,0xfe,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x55,0xe4,0xff,
|
||||
0xff,0x0f,0x57,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xbf,0x54,0xf2,0xff,0xff,0x9f,0x4b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0x9f,0x92,0xf8,0xff,0xff,0xc7,0xab,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x15,0xfe,0xff,0xff,0x97,0xd7,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa7,0x94,0xfc,
|
||||
0xff,0xff,0xc7,0xe3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0x2f,0x05,0xfe,0xff,0xff,0xcf,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0x53,0xa9,0xff,0xff,0xff,0xd3,0xeb,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0x05,0xff,0xff,0xff,0xe3,
|
||||
0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x54,0xc2,
|
||||
0xff,0xff,0xff,0xeb,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x95,0xc8,0xff,0xff,0xff,0xf3,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0x7f,0xa5,0xd2,0xff,0xff,0xff,0xff,0xf5,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xaa,0xe0,0xff,0xff,0xff,
|
||||
0xff,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x49,
|
||||
0xf8,0xff,0xff,0xff,0xff,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x9f,0x2a,0xf5,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x4a,0xf8,0xff,0xff,0xff,0xff,0xfc,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x14,0xfd,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97,
|
||||
0x4a,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xab,0x04,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0x52,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x53,0x85,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x54,0xa2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0x4a,0xc9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xa5,0xe0,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x94,0xe4,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x5f,0x55,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xbf,0x12,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0x54,0xfa,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x0a,0xfc,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0x53,0x45,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0x97,0x14,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0x45,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x54,0x82,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x4a,0xe9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x52,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x55,0xe8,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x24,
|
||||
0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x7f,0x55,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x24,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x15,0xfe,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,
|
||||
0x49,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0x2f,0x95,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x01,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0xd5,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x57,0x81,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0x97,0xd4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xe0,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x93,0xf4,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0x57,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0x2b,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x89,0xfc,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0xfc,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x05,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x49,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x22,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x89,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x7f,0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xe9,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
|
||||
0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0x9f,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0x6f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xbf,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f};
|
8
tests/benchmarks/gui/image/qimagereader/images/image.pbm
Normal file
@ -0,0 +1,8 @@
|
||||
P1
|
||||
16 6
|
||||
1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1
|
||||
1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1
|
||||
1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1
|
||||
1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1
|
||||
1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1
|
||||
1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1
|
10
tests/benchmarks/gui/image/qimagereader/images/image.pgm
Normal file
@ -0,0 +1,10 @@
|
||||
P2
|
||||
24 7
|
||||
15
|
||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
0 3 3 3 3 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 15 15 15 0
|
||||
0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 15 0
|
||||
0 3 3 3 0 0 0 7 7 7 0 0 0 11 11 11 0 0 0 15 15 15 15 0
|
||||
0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 0 0
|
||||
0 3 0 0 0 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 0 0 0 0
|
||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
BIN
tests/benchmarks/gui/image/qimagereader/images/image.png
Normal file
After Width: | Height: | Size: 549 B |
7
tests/benchmarks/gui/image/qimagereader/images/image.ppm
Normal file
@ -0,0 +1,7 @@
|
||||
P3
|
||||
4 4
|
||||
15
|
||||
0 0 0 0 0 0 0 0 0 15 0 15
|
||||
0 0 0 0 15 7 0 0 0 0 0 0
|
||||
0 0 0 0 0 0 0 15 7 0 0 0
|
||||
15 0 15 0 0 0 0 0 0 0 0 0
|
BIN
tests/benchmarks/gui/image/qimagereader/images/kollada-noext
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
tests/benchmarks/gui/image/qimagereader/images/kollada.png
Normal file
After Width: | Height: | Size: 14 KiB |
470
tests/benchmarks/gui/image/qimagereader/images/marble.xpm
Normal file
@ -0,0 +1,470 @@
|
||||
/* XPM */
|
||||
static const char *marble_xpm[] = {
|
||||
/* width height num_colors chars_per_pixel */
|
||||
" 240 240 223 2",
|
||||
/* colors */
|
||||
".. c #959595",
|
||||
".# c #c5c5c5",
|
||||
".a c #adadad",
|
||||
".b c #dedede",
|
||||
".c c #b7b7b7",
|
||||
".d c #d2d2d2",
|
||||
".e c #bebebe",
|
||||
".f c #c9c9c9",
|
||||
".g c #b8b8b8",
|
||||
".h c #d6d6d6",
|
||||
".i c #9e9e9e",
|
||||
".j c #eaeaea",
|
||||
".k c #b2b2b2",
|
||||
".l c #cecece",
|
||||
".m c #a5a5a5",
|
||||
".n c #e4e4e4",
|
||||
".o c #c4c4c4",
|
||||
".p c #d9d9d9",
|
||||
".q c #b1b1b1",
|
||||
".r c #d8d8d8",
|
||||
".s c #e0e0e0",
|
||||
".t c #d6d6d6",
|
||||
".u c #b6b6b6",
|
||||
".v c #bfbfbf",
|
||||
".w c #cbcbcb",
|
||||
".x c #a5a5a5",
|
||||
".y c #d1d1d1",
|
||||
".z c #cdcdcd",
|
||||
".A c #aaaaaa",
|
||||
".B c #9a9a9a",
|
||||
".C c #dedede",
|
||||
".D c #aeaeae",
|
||||
".E c #e6e6e6",
|
||||
".F c #d3d3d3",
|
||||
".G c #c8c8c8",
|
||||
".H c #bababa",
|
||||
".I c #c4c4c4",
|
||||
".J c #cccccc",
|
||||
".K c #bcbcbc",
|
||||
".L c #f0f0f0",
|
||||
".M c #b5b5b5",
|
||||
".N c #e3e3e3",
|
||||
".O c #c2c2c2",
|
||||
".P c #adadad",
|
||||
".Q c #c9c9c9",
|
||||
".R c #e1e1e1",
|
||||
".S c #a2a2a2",
|
||||
".T c #d1d1d1",
|
||||
".U c #bebebe",
|
||||
".V c #dbdbdb",
|
||||
".W c #dbdbdb",
|
||||
".X c #c8c8c8",
|
||||
".Y c #b9b9b9",
|
||||
".Z c #a8a8a8",
|
||||
".0 c #d3d3d3",
|
||||
".1 c #9f9f9f",
|
||||
".2 c #c1c1c1",
|
||||
".3 c #ebebeb",
|
||||
".4 c #b4b4b4",
|
||||
".5 c #d9d9d9",
|
||||
".6 c #cecece",
|
||||
".7 c #e8e8e8",
|
||||
".8 c #d6d6d6",
|
||||
".9 c #c5c5c5",
|
||||
"#. c #b0b0b0",
|
||||
"## c #dadada",
|
||||
"#a c #c5c5c5",
|
||||
"#b c #d1d1d1",
|
||||
"#c c #afafaf",
|
||||
"#d c #b1b1b1",
|
||||
"#e c #cbcbcb",
|
||||
"#f c #c1c1c1",
|
||||
"#g c #eeeeee",
|
||||
"#h c #9b9b9b",
|
||||
"#i c #c6c6c6",
|
||||
"#j c #c0c0c0",
|
||||
"#k c #cbcbcb",
|
||||
"#l c #bdbdbd",
|
||||
"#m c #a1a1a1",
|
||||
"#n c #b7b7b7",
|
||||
"#o c #a7a7a7",
|
||||
"#p c #e6e6e6",
|
||||
"#q c #c9c9c9",
|
||||
"#r c #bbbbbb",
|
||||
"#s c #e2e2e2",
|
||||
"#t c #b8b8b8",
|
||||
"#u c #cdcdcd",
|
||||
"#v c #d3d3d3",
|
||||
"#w c #cfcfcf",
|
||||
"#x c #e0e0e0",
|
||||
"#y c #d5d5d5",
|
||||
"#z c #bdbdbd",
|
||||
"#A c #cecece",
|
||||
"#B c #c0c0c0",
|
||||
"#C c #b7b7b7",
|
||||
"#D c #e5e5e5",
|
||||
"#E c #c4c4c4",
|
||||
"#F c #e3e3e3",
|
||||
"#G c #d3d3d3",
|
||||
"#H c #dddddd",
|
||||
"#I c #dddddd",
|
||||
"#J c #acacac",
|
||||
"#K c #a3a3a3",
|
||||
"#L c #eaeaea",
|
||||
"#M c #e1e1e1",
|
||||
"#N c #b9b9b9",
|
||||
"#O c #d5d5d5",
|
||||
"#P c #bababa",
|
||||
"#Q c #d7d7d7",
|
||||
"#R c #b5b5b5",
|
||||
"#S c #d1d1d1",
|
||||
"#T c #c6c6c6",
|
||||
"#U c #dcdcdc",
|
||||
"#V c #b4b4b4",
|
||||
"#W c #c6c6c6",
|
||||
"#X c #a8a8a8",
|
||||
"#Y c #a0a0a0",
|
||||
"#Z c #cbcbcb",
|
||||
"#0 c #bfbfbf",
|
||||
"#1 c #cbcbcb",
|
||||
"#2 c #a4a4a4",
|
||||
"#3 c #c0c0c0",
|
||||
"#4 c #bbbbbb",
|
||||
"#5 c #9c9c9c",
|
||||
"#6 c #a2a2a2",
|
||||
"#7 c #dcdcdc",
|
||||
"#8 c #c3c3c3",
|
||||
"#9 c #9d9d9d",
|
||||
"a. c #aaaaaa",
|
||||
"a# c #d5d5d5",
|
||||
"aa c #eeeeee",
|
||||
"ab c #b6b6b6",
|
||||
"ac c #b0b0b0",
|
||||
"ad c #b3b3b3",
|
||||
"ae c #c9c9c9",
|
||||
"af c #e9e9e9",
|
||||
"ag c #bdbdbd",
|
||||
"ah c #a0a0a0",
|
||||
"ai c #b0b0b0",
|
||||
"aj c #e8e8e8",
|
||||
"ak c #cacaca",
|
||||
"al c #c3c3c3",
|
||||
"am c #dbdbdb",
|
||||
"an c #d0d0d0",
|
||||
"ao c #d8d8d8",
|
||||
"ap c #c7c7c7",
|
||||
"aq c #dcdcdc",
|
||||
"ar c #c7c7c7",
|
||||
"as c #f0f0f0",
|
||||
"at c #a3a3a3",
|
||||
"au c #bfbfbf",
|
||||
"av c #d9d9d9",
|
||||
"aw c #dfdfdf",
|
||||
"ax c #d3d3d3",
|
||||
"ay c #c0c0c0",
|
||||
"az c #cacaca",
|
||||
"aA c #b3b3b3",
|
||||
"aB c #cfcfcf",
|
||||
"aC c #dadada",
|
||||
"aD c #b2b2b2",
|
||||
"aE c #e2e2e2",
|
||||
"aF c #d7d7d7",
|
||||
"aG c #c4c4c4",
|
||||
"aH c #b8b8b8",
|
||||
"aI c #cdcdcd",
|
||||
"aJ c #a6a6a6",
|
||||
"aK c #d2d2d2",
|
||||
"aL c #cecece",
|
||||
"aM c #acacac",
|
||||
"aN c #dfdfdf",
|
||||
"aO c #d5d5d5",
|
||||
"aP c #c9c9c9",
|
||||
"aQ c #bcbcbc",
|
||||
"aR c #c6c6c6",
|
||||
"aS c #cdcdcd",
|
||||
"aT c #bebebe",
|
||||
"aU c #f2f2f2",
|
||||
"aV c #b6b6b6",
|
||||
"aW c #e4e4e4",
|
||||
"aX c #c3c3c3",
|
||||
"aY c #e2e2e2",
|
||||
"aZ c #d2d2d2",
|
||||
"a0 c #dddddd",
|
||||
"a1 c #dcdcdc",
|
||||
"a2 c #ececec",
|
||||
"a3 c #eaeaea",
|
||||
"a4 c #cccccc",
|
||||
"a5 c #c7c7c7",
|
||||
"a6 c #c2c2c2",
|
||||
"a7 c #cccccc",
|
||||
"a8 c #a8a8a8",
|
||||
"a9 c #e7e7e7",
|
||||
"b. c #e4e4e4",
|
||||
"b# c #d9d9d9",
|
||||
"ba c #bababa",
|
||||
"bb c #cfcfcf",
|
||||
"bc c #d4d4d4",
|
||||
"bd c #d0d0d0",
|
||||
"be c #aeaeae",
|
||||
"bf c #e1e1e1",
|
||||
"bg c #d7d7d7",
|
||||
"bh c #cfcfcf",
|
||||
"bi c #b8b8b8",
|
||||
"bj c #e6e6e6",
|
||||
"bk c #c5c5c5",
|
||||
"bl c #e4e4e4",
|
||||
"bm c #d4d4d4",
|
||||
"bn c #dfdfdf",
|
||||
"bo c #dedede",
|
||||
"bp c #ececec",
|
||||
"bq c #bababa",
|
||||
"br c #bcbcbc",
|
||||
"bs c #b0b0b0",
|
||||
"bt c #cccccc",
|
||||
"bu c #a6a6a6",
|
||||
"bv c #c1c1c1",
|
||||
"bw c #bcbcbc",
|
||||
"bx c #ababab",
|
||||
"by c #d7d7d7",
|
||||
"bz c #b7b7b7",
|
||||
"bA c #b2b2b2",
|
||||
"bB c #b4b4b4",
|
||||
"bC c #bfbfbf",
|
||||
/* pixels */
|
||||
"aYbla9a9a9.7#D.N#L#La9.7a9#D#D.7#D#D#DaY#x#xa0ama0ama0am#xbnbnbnaYaYaYaYaY#DaYaYaYbn#x#x#xaY.N#Da9a9a9a9a9a9a9a9a9.7a9a9a9#Da9#D#L#L#L#L#L#La2#La2a2a2a2a2a2#ga2#ga2#ga2a2#ga2a2#L#L#L#Lafa9a9a9bl#Dbl#Da9a9a9#L#L#Laf#L#Laf#L#L#L#L#L#L#L#L#L#La2#La2a2a2#La2#L#L#Laf#L#Laf#L#Laf#L#Laf#L#Laf#Laf#Laf#Laf#Laf#L#D#DblblaYaYaCa0.t.Fb#bnbnaCbnblblblblblaYaY.RaYblblblblblblblbla9a9a9a9a9a9#pa9a9#pa9#pa9#pa9#pa9#pa9a9bl#D#D#D#pa9#pafa9a9a9a9#L#Lafa9a9a9#D#D#pbl#U.V.Vb#.8am#xbn#IaYbl.N.N#x",
|
||||
"am#I#Da9a9a9bj#D#La9.7#D#Da9#D#D#p#DaYaY#xbna0amamamb#a0a0a0a0bnawaYaYaYaYaYaYaY#xbnaY.R#xaYaY.Nafa9afa9afa9afa9.7a9.7a9bja9bja9#Lafa2afa2af#L#L.3#La2#La2bpa2#La2#ga2a2#ga2a2#g#L#Laf#L#La9afa9bl#Dbl#Da9afa9#L#Laf#L#Laf#L#Laf#L#L#L#L#L#L#L.7a2#La2a2#La2#La2#Laf#L#Laf#Laf#Lafajaf#L#Laf#L#L#Lafajafajafajaf.na9#s#Daw#xbnaCb#bg.Vbnbn.RaYaY#Mbl#pblaYblaYaYaYblblbl#D#Dbl#D#paf#pafa9#pa9afbla9#pa9#pa9#pa9#pa9#p#D#p#Da9#D#pa9#pa9#Da9#Da9af#L#La9.7#D#s#D#MaYbnaCb#aOb#aC#x#UaYaY#M#DaYbf",
|
||||
"aOambn.sa9bja9.7a9.7a9#Da9bj#D#D#D#DaYaY#x#xa0amaFaFbgb#aF.Va0.VaYaYaYaYaYaYaYaYbn#xaY#xaY.N#D#Da9a9a9a9a9a9a9a9a9bja9#Da9#Da9#D#L#L#L#L#L#La2#La2afa2a2a2a2#ga2#g#La2bpa2bpa2#L#L#L#L#Lafa9a9#p#DaY#D#Da9a9.7a9af#Laf#L#Laf#Laf#L.7#L#L.7#L#L#L#La2a2a2#La2#L.3#Laf#Laf#Lajaf#Laja9#Lajaf#Lajafaja9#La9#La9#La9a9a9blaYaYaYawa0b#b#.paYaYblaY.Rbla9#pblblaYblaYa9#p#D#pa9#pa9#pa9a9a9#pa9a9#pa9bl#pa9#pa9#pa9#pa9#pa9a9#D#Dbla9a9a9a9a9#pa9a9a9#L#Lafa9a9#D#D#Da9awbn.pb#bgamaCbn#xaw#D#D#D.N#x",
|
||||
"amamaC#x#D#s.7.7a9#Da9#D#D#D.N.N#xaYaYaY#xbna0a0aOaFb#aOb#bg.Vambna0bnaCa0aYaYaY#U.RaYaYaY#Dbl#Da9a9#La9af.7afa9.7a9.7a9bja9bja9#L#L.3#L.3#Laf#Lafa2#L#La2#La2bpa2a2#ga2#ga2a2#g#L#L#L#Lafa9afa9.Nblbl#Da9a9afa9#Laf#L#Laf#Laf#L#L#L#L#L#L#L.7#L#La2#L#La2aja2#Laj#Lafaj#Laf#L#Laf#Lafafajafaf#Lafaj#Lafajafaj#Laja9.n#D#MaY.R#xbga0bnbn.RaYbl#Ua9#pa9#D#Dbl#D#Dbl#Dbl#Dbla9#Da9a9#pafa9af#pa9#p#pa9#pa9#pa9#pa9#pa9#p#D#pa9#Da9a9af#pafa9af.7a9#Laf#L.7a9#s#D#saYaY#Ua0aObgao#x#IaYbl#D#s#D.sbf",
|
||||
"amaOama0.N.Na9a9bja9#Dbj#D#D#DaY.N#x#x#x#xbnaCa0#H.Vbgb#b#aFbgambnbn#Ubnbnbnbnbn#xaYawaYbl#Da9#Da9a9a9a9a9a9a9a9a9bja9#Da9#sa9#D#Laf#L#L#L#La2a2a2afa2#La2#ga2a2#g#L#g#La2bpa2#L#L#L#Laf#La9a9#pbl#Dbl#Da9a9.7a9#Lajaf#Lajaf#Lajafafajafafajafaf.j#L.3a2#Laf#La2af#Laf#Laf#Laf#L.n#L.n#La9#L#Lafa9afa9aja9#La9af.7afa9#Dbl#IaYawa0a0#UbnaYblblaY#pa9#pa9#D#D#D#Dafa9afa9af#pa9#pa9afa9#pa9a9a9a9#pa9#pa9#p#pa9#pa9#pa9a9#D#Dbla9a9a9a9a9a9.7a9.7af#Laja9a9#D#D#saYawbnaCb#aobn#x.Nbl#s#D#D#D.N.N",
|
||||
".CamaOao.WaY#D.7#s#Da9#D#D.NaY.N#x#I#xbn#xaY#x#U#xa0a0a0bgamb#ambga0ama0am#xa0a0.RaYaY#Dbl#Dbl#Da9a9a9a9afa9afa9.7a9#D.7#Dbja9.7af#La2#La2af#L#La2a2a2a2a2#L#g#L#ga2a2#ga2#ga2#g#L#L#L#Lafa9a9a9#Dawbl#Da9a9a9.7af#Laf#Laf#L#Laf#L#Laf#L#Laf#L#Laf#L.j#La2afajaf#Lafajaf.Eafaj#Laf#Laf#Lafaja9aj#Lajaf#Laf#Lafajafajaf.n#DblaYaYaCbn#xbnaYaYaY.Rbla9#p#Da9a9.7#La9a9a9a9a9afa9afa9a9afa9afa9afa9#p#pa9#pa9a9#pa9#pa9#p#D#pa9#Da9afafafaf.7a9a9.7#L#Lafa9.n#D#s#D#D#x#Ua0aCaC#x.saY.s#D.7a9.Ebj.N",
|
||||
"#xa0.8a#.8.Cbf.N#D#D.N.NaY.N.saY#x#xaY#IaYaYaYaYaYaY#x#x#xa0aCam.Vb#bg#yb#.Va0bnaYaYblaY#Da9#D#Da9afa9af.7a9a9a9.7a9bja9#s#Da9.7ajaf#Laf#L#La2#L.3#La2#La2a2#ga2a2bpa2#L#g#La2bp#L#L#Laf#La9af#paYbl#D#Da9a9a9a9#L#L#Laf#Laf#L#Lafafafafaf#Lafaf#La2#La2afajaf#Lajaf.7af#Lafa9aja9aja9#L.n#Lafafa9#L.n#L.n#La9#Laf#La9a9#Mbl#xaY#x#IaYawaYaYaYaYblbl#pa9a9.7#L.7afaf#Laf#Lafa9afa9a9a9a9a9a9a9a9a9#pa9#pa9#pa9#pa9#pa9a9#D#D#Da9af#Lafa9a9a9.7af#Laja9a9#D#D#D#M.N#I#xaCa0#UaY#D.NaY#D.n.7bj#Dbj",
|
||||
"#x#xa0#vbcaq#xbf#D#D.Nbl.s.NaYbf#x#x#xaYaYaYaYaYaY#M.NaY#x#x.Ca0b#bgb#bgbg.V.p.VawaYblbl#Dbl#Dafa9a9a9a9afa9afa9.7a9#Da9#D#s#Da9af#La2#La2#Laf#La2#La2#La2bpa2bpa2#ga2#ga2#ga2a2#L#L#L#Lafa9a9a9aYaYbl#Da9afa9a9ajaf#Lajaf#Lajafafaj#Lafajafafajafa2#La2#Laf#Lafa9#Lafaja9aj#Laf#Lafajaf#Laf.7afaj#Laf#Lafajaf.Eafajaf.n#Dbl#MaY#IaY#xaY.RaY.RaY#FaYa9a9a9#L#L#Lafa9afafa9#Laf#L#La9afa9afa9afa9#pa9#pa9#pa9#pa9#pa9#p#D#p#Da9a9afa9a9.7a9#L.7.7.naf#La9.n#D#s.N.N#x#UaCbnaY#s#DaY#sa9.7b..7#DaW",
|
||||
".7aw#x.CaoaB.y.5#s.N#I.Ca0a0ama0#x.N.NaY.NaY#D#Dbl#DblaYawaY#U.CbgbmaBaSaZbma0a0blaYaY#Dbla9a9#Da9af.7afa9a9a9a9bl#D#D#D#D.N#D#D.7a9a9a9a9a9#La9afafafafafaf#Lafa2#La2#L#L#L#La2a2a2af#La9a9#D#DawaY#sbla9b..7#La9a9a9a9.7a9a9a9afa9af.nafafafafafajafajafajafajafaja9a9bl#MaY#s#Da9#Da9#sa9.na9.7af.Eaf.7af#Lafafa9a9bl#M.NaY#Ibn#UaYaYaw#Da9a9.n#p#pa9a9.7.7.7.7a9.7a9.7a9a9#Lafafaf#Lafa9a9a9#pa9a9#pa9#pa9a9a9a9afa9.7af.7.7.7afa9a9a9a9a9a9#L.na9.na9.na9.n#Maw.Nawaw.N#D#D.E.7bj.7#Dbjb.#D",
|
||||
".7#D.s#x.5.y#va#.NaYbf.Ca0ao#xbn.s.N.N#D#D#Da9#Dbl#Dbl#DaYaYaYbn.p.taBan#uaZ.FbgbnawaYawbl#D#D#D#D#Dbl#D#D#D#D#D#Dblblawbl.N#D#Da9a9a9.7af.7a9a9afafafajafaf#L#L#La2a2a2a2a2#La2#La2af#La9#D#D#DaYaY#D#D#Da9a9.7a9a9.7a9a9a9.7a9#Lafafafaf#Lafafaja9af#pafa9af#pajaf.na9#s#DblaYa9a9.na9a9a9#Da9aj#Lafaj#La9aja9ajaf.nbl#DaYaw#xa0#x.b#xaY#D#D#p#p#p.na9a9a9#L.7a9a9a9a9a9.7a9#Lafafafafafafa9af#p.na9#pa9a9a9afa9af.7a9#L.7#L#La9a9.7a9a9.7.na9a9a9.na9.na9.na9#D#MaYaw.N#s#D.n.7.7.n.7.E#D#D.7",
|
||||
".7a9aY#xaCam#v#vaCaqa0aqama0#UaY.NaY#D#D#D#D#D#Da9#D#D#Dbl.NaY#Ibnambm#SaZa#a#b#aCa0a0#x#x#xaYbl#D#Da9#Dbl#Dbl#DblaYaYaYaYbl#D#Da9a9a9afa9afafafafafafafafaf#Laf#L#L#Laf#Laf#Laf.j#L#L.n.7a9#s#Daw#x#M#Da9#Daj.7a9.na9.7.na9a9.naf#Lafajafafajafafafajafajafafaf#pa9bl#Mbl#Daw#D.n#Da9#D.na9.na9a9af.7afafajaf#Lafa9a9#sblaY#x#IbnbnaYaYawbla9a9#p#pbl#pa9#D.7.7a9.7a9.7a9a9#L#Lafaf#Lafafa9a9a9a9#pa9.n#pa9a9a9afa9a9#L#Laf.7afa9a9a9a9.7a9a9a9.naf.na9.na9.na9#M.Nawaw#D#s#D#Daj.7aj.7#D.7b.a9",
|
||||
"a9#saY.s.Ca0aF#v#v.5#vaF.8a0#x#D#D.N#D#Da9bja9.7a9a9bl#D#DaYaY.N.R#Uama#aFaOaFaFb#b#b#a0aCa0#I#xaYblaYblbl#DblaYaw.R#IaYawaY#D#Da9a9a9a9a9a9a9a9a9#p.na9af#La9.7af#Laf#Lafajaf#L#L.3#La9#D#D.NaYaYaYbl#D#D.7a9.7a9.7a9a9a9.7a9.7a9a9a9a9.na9#pa9.n#pa9#pa9#p.na9#sbl#s#Dbl#DblaYa9a9a9.Ea9a9bja9a9.na9#sa9#Da9#Da9.nblbl#D#M#x#x#U#x#UaYaY#Da9#sa9#p.na9a9.7a9a9#La9a9#La9#L#L#L#Lafafa9#La9afa9#pa9#pa9a9a9a9.7#Laf#L#L#L.7#L.7.7a9.7.na9a9.na9.7.n#D#D#s#D#M#D#Mbl.s#D.s#Da9#D.7.na9a9.n.7#D.7",
|
||||
".N.N.NaY#Uaqamaoa#aB.0a#ambn#xbl#D#D#D#D#Da9.7a9a9.7a9#D#D.s.NaYaY.RaCamamaF.5b#amaob#amama0a0a0#IaYawaYaYaYaYaYbnbnbnaYaYaYbl#D.na9a9.7afa9a9a9a9af#paf.na9afa9.n.7#La9.7a9#L#Laf#La9a9#D#D.N.NaYaY#Dbl.n#D.7af.7a9.na9.na9a9.na9.na9a9#pa9.na9a9a9.na9.na9a9a9aY#MaYbl#sbl#s#D.n#Da9#Da9#sa9.n#Da9a9.7a9.na9.na9a9#DawaY#x#x#xbnbnaYawaYbla9a9a9a9#pa9#Da9a9.7a9.7af#L#L#La9#Laf#Laja9.7a9.7a9a9.n#pa9a9.7#Da9a9#L#La9#Laf.7afa9a9a9.7a9a9bja9#sa9#D#M#D#M#D#sbl#saY#saY#s#D#s.7a9.E.7#D#D#D#D",
|
||||
"#I.N#I#xamaCamaFaB.Gaz#u.8am#xaY#D#D#D.7a9bja9.7.7a9.7a9#D#D#D.N#Ubna0aCama0amao.Va0amaCama0aC.Cbnbnbnbn#x#Ubn#Uam#Ua0awaYaYaw#D#pa9a9#pa9a9a9#p.na9a9a9a9a9.7a9.7a9af.7afa9a9a9aj#La9.E#D#D#saYaY#Mbl#Dbja9.7.7a9a9a9.7a9#sa9#D#p#D#pbl#sbla9#D#sblbl#Dblbl#sblawaY.N#MaYbl#Dbla9.Ea9.na9.7a9a9#D#s#D#s#D#D#D#D#D#MaYbl.Naw#x#Ibn#I.R#xaY#Da9#Da9a9a9a9.na9a9a9.7a9a9#La9#La9a9#L#Laf#La9a9#Dbj#pa9a9a9#Da9.7.7afafa9.7a9.7#L.7a9.7a9a9#sa9.na9#D#D#D#s#D.sbl#Dawbl#saY#sbj#Da9#s#D.Nbl.saY.s.N",
|
||||
".Cbf.C.Cam.5aoa#.la5.G.waZ#va0.C#D#D#D.7a9a9#L#La9#L.7.7.7#D#D#D#x#x#x#x#x#xa0bnam.Va0.Va0a0#xbnaY#x#Ia0a0aCa0aCa0ambnbnaYawblbl#Dbl#M#Dblbl#D#Mbl#pa9a9#Da9a9.7a9.7a9.7a9.7a9a9#La9.n#D#D.NaY.NaYaY#D#Da9#Daja9.7a9a9a9a9.7a9.n#D#M#D#sbl#sblbl#D#M#D#M#D#M#D#M#x#xawaY#Dawa9#Ma9#Da9#Da9#sa9#s#D#D#D#D#D#s#D#sbla9blaw#x#x#xa0#UbnaYawaYbl#D.na9a9a9a9a9#Da9#pa9#La9#L#La9.7af#L#L#L.7#L.7.7.na9a9#D#s.7#D.7.7afa9#La9af.7a9.7.na9.na9a9a9#Da9#s#Dawblaw#D.sbl#sbl.s#D#D#s#D#saY.Naw#xaYbf#x#x",
|
||||
"aqaoamavam.8a##v.5#Saza7.w#u#vam#Da9#D.7a9.7a9a9.7#L.7#La9bj#D#D.Cbn#xbnaYaY#x#x.pb#.Vamaobnbn#xbnbn#xbn#xbn#xa0a0b#aCa0aw.R.Nblaw#Dbl#Dbl#Dblbl#pa9#Ma9a9.nbja9a9a9#La9a9a9.7a9.na9#D#D#DaY.N.NaYaYbl#D#sa9a9#La9.Ea9.7a9a9#Da9#M#Dbl#Mbl#sbl#s#Mbl#sbl#D#MaY#sa0#I.NaYaYblbl#Da9a9.na9.Ea9a9a9#D#D#s#D#s#D#D#D#Dbl#saY#x#xaC.Ca0#x.R#xaY#D#Da9a9a9a9a9a9#p.na9a9a9a9#La9#La9a9#L#L#L.7#La9.7.7a9a9a9#Da9.7af.7a9afa9.7a9.7#L.7a9a9bja9#s.7.na9#sbl.s.saYaw#saY#saY#saY#s#D#s#D#xaY#x.W.C.C.Waq",
|
||||
"amaFaOaFaOaFama0aY#x.8.0#u#uan#uam#xaY#Da9a9.7a9#Laf#L#La9#D#D.sbl#D#sbl#xaYaw#x.Rbn#Ub#.Va0b#b##Ubnbnbnbna0#xbnbnaYaYaYbnbn#UbnaYaYblaYblawblawa9.n#p#pa9#pafafa9a9a9.na9a9a9a9bl#Dbl#Dbl#sblblawaY#D#Da9.7.7#Laf#Laf.n.7#D.7#D.NaYawaY#xbn#Ua0#U#Ubn#UbnaC#UaY#xawaY#M#D.na9ajaY.N#Dbla9a9.na9.nbl#DblaYaYaw#x#MblaYawbn#Ibna0.b#U.RawaY#Mblbl.na9a9a9a9a9afa9#Dbj#D#D#D#D#D.7#Lafa9afa9.7#Da9#sa9a9a9#Da9.7.7afa9a9a9a9#D#s#D#D#Daw.N.NaY.NaY#D#sbl#saY#saY.N.na9#D#s#DaY.N.N#I#x.CamaoaFbya#",
|
||||
"bgb#amam.5aCa0.C#M#xa0aFaZ#uaB.0aO#xaY#Dafa9a9a9#L#L.7af.7#D#D#D#D#DaY#D.N.N#xaY.Cbna0a0b#aFb#aF.Vbnbna0#Ubnbn#x#U#x.R#xawaYbn#x.R#I.Raw.RaY#x.R#p#p#pbl.na9a9a9a9a9a9#Da9#s#D#M#Dblbl#sblbl#DblaY#Dbla9#Da9af.7ajaf#L.7a9.n#Da9#M#DaYaYaYaYbnaCbn.paCa0bgaoaC#UaC#I#xaY#MaYblbl#Mbl#M#D.na9a9.n#D#M#D#M#DaY#DaY#M#pawaY#Ibn.Ca0aYbnaY.RaYblbl#Da9a9.na9afa9a9af#D#D#D#D#D#Da9#Daf#L.7a9.7#Da9#D#pa9.na9a9b.a9.7.7a9.7a9bja9#D#D#D#D#DaY#Daw#Daw#D#D#M.N#saY.saY#sbl#sbl.Naw.Nawbna0aCa0.8a#aF.5",
|
||||
"amamaCa0a0#x#xaYblaY#Ia0bc#u#ua#amam#x#D#Da9.7a9#Laf#La9a9.7#D#Dbl#D#D#MaYaYboaYbna0a0aoamb#aOb#b#am.Va0bnbn#Ubnbn#xaYaY.R#xawaYbn#UbnaCbn#Ubn#U.RawaYblaYblawbl#D#D#D#Dbl#Dbl#Dbl#Dblbl#Dblbl#DaYaw#D#Da9bj.7#La9#Lafa9a9bja9bj#D#MblawaYaw.R#Ubn.V.8#vaB#S#waOaoa0aC#x#x.N#I.NaY.NaY#D#D#D.n#Dbl#sbl#Dbl#saYaYblawaYaYbnbnaCbn#U.baYawaY#M#Dbla9.na9a9.na9.na9#s#D#s#D#s#D#D#D.na9a9a9a9#D#D#D#pa9a9#Da9#D#L.7a9.na9#D.n#D#D#D.saY.saY.NaY.saY#sbl#s#Daw#DaY.NaY.NaY.saY.NaY#x.Wa0a0a0aOam.8a#",
|
||||
"#x#x#x#xaYaY.N.N.7#D#x#xb#aZ.ya#amaObn#Da9#Da9bj#L#L#D.7#Da9.7a9a9.nbl#D#DaYaY.NaC#xa0.Vamb#aFaF#vaFbga0a0bn#xaY#Ubn#U#xaYaYaYaYbn#xa0a0a0a0aCa0bn#Ubn.baYaYaYaYbl#D#M#Dbl#D#Dbl#Dbl#s#D#D#D#D#MaY#Dbl#D#Da9.7a9ajafaj.7a9a9#sa9a9#M#DaYaYaY.b#xbgb##vaBa7.Q.z#S.5aO.8aoao.Ca0.W#x#I.Naw.NawaY#DawaYblawaYaYawaYawaYaY#U.C#U.Ca0aY#x.RaY#xblbl#D#Dbla9a9a9a9a9a9#D#D#D.NaY.N#s#Da9a9#sa9a9#M#Dbl.na9a9a9a9bja9.7a9a9a9.7#D#D#D#saY#DaY#Daw#DaY.N#M#D#s#Dbl.s.N#M.Naw.N#xaY#x#I#x#Ua0a0aCamama0am",
|
||||
"aYaYbl.s#D#D#D#Da9#D#s.N.CaOa#aF.5ao#x#Dbl#Da9#Da9a9.7a9.7a9a9.7a9a9a9#Dbl.NblaY#x#xbna0a0amaFaFbmaFaFamaCbn#U#xbnbnbnaY.b#x.R#xaYbn#xbnaCa0bna0#Ubn#Ubnbn#I#xaY.NblaYaYawaYaw#Dbl#Dbl#D#M#Dbl#DaYaY#Dbl.na9.7a9#La9#La9a9bja9#D#MaYblawaY.R#x#U#S#SaB#uaz#u#vaO.8aOaOaOaOaOaOaO.Caoa0.W.C#I#x#I#x#I#x#x#I#x.NaY#x#Ubn#UbnaCbnaC#I.R#IaYawbl.sbl#M#D#Ma9#D.n#Dbl#D#D#s#D#D#D#D#D#Ma9bl#D#D#DblaYa9#p#sa9#D.n.7.7.na9#s#D#s#D.NaY.saY.saY.NaY.saY#s#D#p.s#saYaY.N#IaYaYaw#x#IaY#I#x#x#I#x#x#x#x#x",
|
||||
"#D#D#D.7.7.7.7.7.7a9a9#DaY.CaO.y.5.5bnaY#D#D#D#D#D#Da9bja9a9.7a9a9a9#Da9#sbl.N#MaYaY#xawbna0aCb#aOaFbgb#b#a0a0bn#Ibnaw#xaYaYaYaY#Ubn#IaYaYaYaYbnbn.R#xaw#x.R#Ibnaw#IaY.sbl.Nbl.N#D#M#Dbl#D#M#DblawaY#M#D#D#s.7a9aj#L.na9.n#D#s#D#DaY#IbnaY#UbnaCaB#SaB#u#uaBaO.5amaoam.8.5aO.y#1#1#u.yaOamamaoamamamaC.C.C#xbn#x#Ua0aC.CaCa0#Ia0.R#x#UaYaYblaY.N#D#p#D#sbl#Dbl#D#s#D#D#D#D#s#D#Da9#p#MblblawaYaY#Ma9bl#sa9bja9.7#Da9a9.7a9#Daw#DaY.saY#Daw#DaY#D#M#D#sbl.N#saY.saY#xbo.N.N.s.N.Naw.N#D#D#D#Da9#D",
|
||||
"a9.7.7af#Lajbp#L.7#L#La9#DaYa0#va#a0a0.Cbl#D#D#Dbj#D#Da9.7a9#L#L.na9a9a9a9#D#D#Dbl#DaYaY#xaYbna0b#aFb#b#aob#aoambnbnbnbn#U#x.R#xaY.RaY.R#IaYaYawblblaYblaYaYaYawbn#I#x#UaYawbl#Daw.N#D#D.NaY.NawaY#xbl#D#D#Da9.Eafaf#La9#D#D#D#D#I#x#xaCa0aCaoaO.FaO#v#u#u#uaFbgaC.Caoa0ao.5aB.z.U.Oaz.y.y#vbm.y#v#v.5amaoamao.8amaoa0aoa0#Ua0#x#U#xbnaw.N.saY#sbl#Dbl#Dbl#D#M#D#D#D#D#D#D#D#D#D.nbl#Dbl#xaYaYaY#pbla9bl#D#s.7.7.na9#Da9#s#D.NaY.NaY.Naw.Naw.Naw#D#M#D#D#Maw.Naw#x#IaYaY#s#Da9.nbj.7.7b..7.7bp#L",
|
||||
"#L.7#L#Lbpbp#Lbp.7#L#L.n#D.N.C.5a#amaCaoaY#D#D.N#Da9#Da9#La9#Lafafa9a9#Da9bl#Dbl.n#D.nblawaY#x.Ra0.Vbgamb#amaFaF#Ubn#U#xbnbnaYaYawaYawaYaYblaYaY.bblaYblblblaYaYaYaYaY#I#x#I#x#I.NaYaY.sbl.sbl.NaYaw.N#M#D#sa9.7a9a9.na9.n#D#s#D#xaCa0aoaob##SaBaOaF#S#uaB#v.5aoa0aCamaoao.8#v#v#3ar.wanazaz#3#C#3aX.w.yaOam.8amaCambga0aoa0aCbn#U#x#IaYaw.NaY.NaYaY#sbl#sbl#D#M#D#D#D#D#s#D#D#DblblaY#MaY#IaYawbl.nbl.n#D#Da9#D#Da9.Ea9#D#D#Daw#D#saY.Naw.NaY.N#M#D#s#D.saYawaY#I.N.N#sa9a9.7af#L.E#L#Laj#L#L#g",
|
||||
"#L#L#L#L#La2bpa2#L.j.7.7#D.Nbf#IaFaBa7an.5a0#Daf#D.7#D.7a9a9#L#L#D#Da9#D#M#D#Dbl#Dbl#Dbl#Dbl#sblaw.RbnaCb#aOaFa#bg.VambnaCbnaw#x.RaYaYaY.baYawbl#pbl.n#Da9a9#D.7#s#D#D#D#D#D#MaYaw#IawaY#x.N#I#x#IaYaY#D#Da9.na9aja9.n#D.N.N#x.CaCb##vaB#uaBaB#v#SaOaOaOaObg.8am.W.WaCaCamaOaB#u#a#faz#Sa#aBaBaz#u#u#uaz.w.wa7#u#uaB.yao.5aC.C#Ia0.pa0aCbnawaY.sbl#saYaYaY#DaYaY#D#s#D#D#D#D#D#D#s#D#sblaY#x#I#x#D#D#D#Da9.n#D#sa9#D#D#D#s#D#D#D#sbl#s#D#saY.saY#MblaY.C.W#I.N#s#Da9#sa9.7.na9.7#L#L#L#L#L#L#L#L",
|
||||
"bpaj#Lbp#Lbp#Lbpa2#L#L.7#D.Nbfbf.Va#an#uaB.8bn#D#Da9#Da9.7a9ajafa9bl#Dbl#D#D#M#D#D#Dbl#D#Dbl.NblaYawbnamb#aFbm#Sb#.Vaobn#xbnaYaY.baY#MaYblaYblaY#pbl#p.n#Da9.n#D#D#D#s#D#s#D#D#saY.s#x.s#I#x#Ibn.W#I#xaw.N#s#D#D#D#D.NaY#I#x.WaCaCaCaF#SaB#v#SaOaOaOb#aOb#bgamao#x#I.CaCao.8#u.w.OaG.G#SaBaBbmaB#v#v#va#aB#u.G.Galbk#Taz.w#v#v.5bg.5bga0ao.C#IaYaY#Dbl#DawaY#D#M.NaY#D#s#D#D#s#D#D#MaYblaY#I#x#x#M#s#D#s#D#D#D#D#Dbj#s#D#D#D#s#D#D#s#D#Daw#Daw.N#M#s#x#I.Cbf.s#D#D.n.7a9.7a9.7.E.7#L.7#L.7#L#L#L",
|
||||
"#Lbp#L#g#La2bpa2a2#g#La9bj#D.Nbf.RaCaOaZ.yaFa0aY#D#D#s#Da9a9a9a9#D#Da9#Dbl#D#Dbl#D#M#D#D#M#Dbl#saY#xbnaCa0aOaF#Sb#bg.VbnaCbnaY#xaYaYaY.baYblaYbl#Ma9#p#Da9a9#D.7#D#sbl#Da9#Da9#D#D#D#saY.N#I#I#Iaoao.W#xaY.Naw.N#I#I#U.WaCaoamaobnaCaO#vaF#vaOaFbgambgambg.5.8amav.WaC.CaoaF#uaza6.OazaZaB#vaF#vaFaFam.5aF#v#SaB.G.O#3bv.G.GaPaP.w#u#vaFama0.C.C#IawaYawaY.NaYaYaY#MaYaYaYblaYawblaYaw.NaY#I#x#I#D.N#M#D#D#s#D#s#D#s#D#D#s#D#Dbl#s#p#saY#s.Naw.Nblaw#I#xaY.N.N#sa9.7a9.Ea9.Ea9#L#L#L#L#L#L#L#L#L",
|
||||
"#La2bp#L#Lbp#Lbp#L#L#L.7#Dbj#D.NaYbna0aoa##vam.C#D#D#D#D.7#D.7a9a9#D#Dbl#D#Dbl#Dbl#Dbl#Dbl#D#DaYaYaYawbna0b#aO.Fbgb#ama0bnbn#IaY.bblawblaYaY#MaYa9#p#sa9a9#Da9#Da9a9a9a9a9.na9a9#s#D#D.saY.NaY#x.C.C.C.W#I#x#I.WaF.8a0a0a0a0aCa0aCaCb##vaFaO#vbgaob#aoaoamaoaCam.W.Caoa0.8#v#ubkab#aan#vaZ#vaFa#aoaobga0aoamamaOa#aBaZ#u.w.w.G#3#3#a.w.y.yaOb#aCbnbn#I#xbn#UaYawbfaYbfaw#x.s#xaY.NawaYbl#x#Ibn#I#Daw#D.s#D#s#D#D#D#D#D#D#D#D#s#D#D#Dbl#saY#saY.saYaw#xaw.N#s#D#D.7.n.7a9.7a9.7#La9aj.7#L.E#L.7#L",
|
||||
"bp#L#L#g#L#g#La2#g#L#L#L.7#D#DbjawaYaCamaoa#.8aF.N.s#D#D#D.n#Da9#sbl#D#D#M#D#D#M#D#M#D#Dbl#sbl#saYaY#x#UbnaCb#b#bgb#bga0aCbn#x.RaYaYaYaYawblaYbl#p.n#pa9a9.nbja9.7a9.7#sa9#D.7.na9a9#D#D#D#saY.s#x#I#I#x.C.Wa0aoaoama0.W.C.Wa0#Ibn.paO#S#v#v#S#Sbgaoaoa0aoa0avaCaqaoavao.8#v.w#T.Y#3an#va#aOamaOa0bnaoambgamaoam.pa0bgb#aoaFaO.ybk#T.GaXaz.waBbyaCa0a0bnaCa0#Ibn#I#x#x#x#x#x#xaC#x#I#x#I#x#I.C#IaY#saY#saY#D#M#D#s#D#M#D#M#D#D#D.n#M#D.s#DawaYaw#x#IaYaw#sa9.7.n.7#L.7aj.7#L#L#L#L#L#L#L#L#L#L#L",
|
||||
"#L#g#L#g#g#gbp#L#L#L#L.7af.7.7.7#D.N#xaob#.8a#a##DaY#D#D#D#Da9bjbl#D#Dbl#Dbl#D#DaY#DaY#D#M#DaYaYaYawaY#x#Ibna0aCbgb#bg.VaCbn#U#xaw.Raw#FaYblaYbl#D#p#Da9#Da9a9#Dafaj#Laf#Lajaf.7a9#Da9#sa9#D.Nbl.NaY.NaYaY#I.C.Wamaoaoaobga0aoa0aCam#vaBa##SaBaBaobgaoaoaC.Waqaoav.8ao.5aOaBazaX#4alaza##vaOam.5aC.Wa0.Wa0aob#.8bnaCaCaCaC.W.WaC.y.yaB#ubkbkaX.Oazae#vaO.5ao.pbga0a0a0#Ua0aCa0ao.CaCaCa0#IaCa0#IaYaw#D.sbl#s.N#s#Dbl#D#s#D#D#sbl#D#D#saYaw.saw.NaC#xaw#D#sa9.n.7a9aja9#La9aja9#L#L#L#L#L#L#L#L#L",
|
||||
"#Lbp#ga2bpa2#L#g#L#L#L#L#L#L#LafbjaYaY#xama0.5aO.N.NaY.s#D#D#Da9#Dbl#s#Dbl#Dbl#D#M#D#M#DaYblaw#D#MaY#I.R#U#x#U#Ub#b#bga0aCa0#x.R.Raw.RaYawaYblaw#p.n#pa9.na9#Da9aja9af.Eaf#Lafajafaja9#Da9#s#Daw#D#s#D#s.NaY.NaY#U#Ua0.paobgb#bgaO#vaB#u#u.y#ua5aObgaoamaoamaoavam.8.8#v#v#u.w.GaTbw.G.0#vaFaoamaoa0aoama0aqamaoamaCaqaC.W.W#I#Iaxbgaobg#va7.Oau.U#3#3a5#uaB#vaFaoaoa0amaCamaob#aoamaoaoa0aC#Ibn.sawaY.sbl#saY#s#D#s#DaY#saY#D#D#s#p#s#DawaY#Iaw.C#I.N.naf.Ea9.7aj#L#Laj#L#L#Laj#L#L#L#L#L#L#L#L",
|
||||
"a2#L#g#g#g#gbp#L#L#L#L#L.7#L.7#L.N.N.s#x#xao.5b#.NaY.N#D#D#D#D#D#M#D#Dbl#D#D#sbl#D#Dbl#Dbl.sblaY.NaY#x#I#x#U#UaC.Vbgb#bgaCaC#U#I.R#x.baY.RaYblaYa9#pa9#Da9#Da9bjaf#Laf#Laf#L#La9#La9a9a9.7#Da9#D#sa9a9a9#D.NaY.Na9#paY#Ua0aoaO.yaBaBazazan#u.Gbk.daOaO.8aoavao.8.8.8bd.yaL#uazaX#0#4#TaZaOaO.5aoa0.Camaoamaoamambcby.8.C.C.W.W.W#U.rbgaO#S.yaB#uaP#3.U#3arbk#u#vaFbgbgaob#aob#bgamaOaoaoaoaC#U#IawaY.sbl.s#D#Daw#DaY#s.N#M#D#s#D#s#D#M.NawaY.s#xaC.C#Ma9aj#L.7.naf#Laf#Lafaj#Laf#L#L#L#L#L#L#L#L",
|
||||
"#g#g#Lbp#Lbp#Lbpa2a2#L#L#L#L.7#L#D.N.NaYbo.C.C.W.Vbn.N#Dbjbj.E.7#D#D#D#D#s#D#D#D#D#s#D#s#D#D#D#sawawaYaw#x#U#xaCa0aCa0aC.Vamb#a0aYaw.RaY#M#p#M#pajafaj#pa9a9#Mbl.na9a9a9a9a9a9afajafaja9#D#s#D#Dbl#D#s#D#s#D.n#Dbl#saYaYaw#x#IaCaOaB#1a5.w.wbkaV.Qbt.ybcbc.8bcbcaBaB#u#uaz.waP#T.O#zbw.6aF#vaOaFambga0amamaOaoaOaoaCa0.WaC.W.C#I.WaCaoaOaoaOaobg#v#v#S#1.Q#3agaV#1aB.8aOamaoaCbg#v.8aoa0aC#x#U#Iawaw#D.s#D#s#D#s.N#saY#s#Daw#D#Mbl#saYaw#x#I#xaC#D#sbj#D#D.7#s.7.7.E#L.7#Laf#L#La2a2a2#ga2#g#g#g",
|
||||
"#gasbp#g#Lbp#Lbp#L#g#L#L#L.7af.7#D.NaYbf#x#x#x#xaCbn#I.N#Dbja9.7#D#D#D#D#D#D#D#D#D#D#D#D#D#s#D#DblawaYawbn#I.WbnaCa0.pa0aoa0aoam#UbnaYaYaYblblbl#paf#p.n#pa9bl#Da9a9a9aja9af.na9.7af.7a9a9a9#D#sa9#M#D#D#D#D#D#D#D#D#M.NaY#x#x#xa0am#vaB.z#u#Ebi#nbCaX.Q.y.y.QaXbka5#u#u.w.wbkaP.O#4#4.wa##v.5a#aoamambg.5aO.5a#aoamaC.WaC.W.W#IaCaC.WaCaoaoaoao.8bg.8#v#v#u#uaPagagaXbka5aBaBaB.y.z#S.8bgaoamaC#x#IaYaw#D#sbj#D.sbl.sbl.N#saY.s#D#MaYawaY#U#x#Ibj#s#Db.#Db.#Dbj.na9#La9aj.7#L#La2#ga2a2#g#gas#g",
|
||||
"#ga2#ga2#g#g.7bpa2a2#L#L#L#L.7#L#D#D.N#M.N#I#x#xa0a0#x.s.N.N#D#D#D#s#D#D#D#D#D#s#D#s#D#D#s#D#D#M#D#MblawaYaw#x#I#Ubn#Ua0.pa0.pa0aCbn#Ubnaw.Rawbl.n#p#p#pa9a9bl#Dafa9a9#pa9a9a9afajafaja9.7#D.n#D#Dbl#D#s#D.n#D#s#D#D#DaY#saYaw.N#UbnaCaOaO#vaBbkbq#Rbqag#3.U#zaVau#Tazazbkbkbv#3#E#0ab.2#uaOaF#vaFaOaOaFaObyaO.8aCaCaC.C.W.W#I.W.WaCaC.WaC.WaCaCaCaCaoao.8.8#v#vbbbbap#3.U.U.U#4a5#E#1#SaFaOaOaFaC.W#x#IaY.s#D#saY.s#xawawaY.saY.sbl.NaY.s#x#x#Ia9.7.E.7.E.7.n.7a9#L.E#L.7#L#L.7#L#L#L#L#ga2bpbp",
|
||||
"#g#g#L#gbp#g#Lbp#L#g#L#L#L#Laf.7#Da9#D#DaY.N.N.sbn#Ua0.C#x.N#s#D#D#D#D#D#s#D#D#Da9a9.na9a9a9a9#Dawbl#saYawaY#U#x#U#x#Ubn#Ibna0aCa0a0#UbnbnbnaY.Rbl.n#D#p.n#pa9bla9af.nafa9afa9a9#Laf#La9a9a9bja9a9a9.na9a9.7a9.7a9a9#s#D#DaY.Naw#xaw#xaCamaoaOaB.v.O.Obqadbx.abzbi.U#3#T#3bvagag#3#4#caT.w#vaF.y#v.5#vaOa#ao.5.5aC.CaC#I#I#I#Ibo#I#Iaw#Iawaw#I#U#7.W#IaC.WaCav.W.8#v#v.y.w.G#T#3.Oag.O.w#uaB.ya#aoamaC#x#I#x.N.s#xaw#I#x#Ibfaw.Nbl.s.Naw.NaY.saY.E.7af.Eaf.7#L.E.7aj.7#La9aj#Lafajafaja2#L#ga2#g",
|
||||
"#ga2#ga2#Lbp#Lbpa2a2#L#L#L#L.7#La9.7a9#D#D#DaY.NaY#xa0#U.CaYbl#D#D#D#D#D#D#D#D#Da9a9#Da9#sa9.na9#D#M#Dbl#saYawaYawaYaYawbn#Ibn#IbnaC#xbn#Ibna0bnblblbl#Dblbla9a9.na9a9a9a9.na9a9af#L#L.na9bja9#D.na9a9a9.n.7.n.7.Ea9.7a9#s#D#D#D#sblaw#IaCaobg.d.O#ia5.G#zadadadabadaVaVbq#3#3bvbqaba8.YbkaBaO#uaFaOaFao.5aoaqaC#I#I#Iaw#I.s.sawbobo.sbo.sbobo.s#M#M.s#7aw#Iaw#I#U#IaCao.8aO#v#u.Q#3biag#3aXazaZ#vaOam.C#x#I#IaY#I#x#I#I#x#I#xaw.Naw#D#s#D#s#Da9#Laj#L#Laj#Laj#L#La9#L.E#L#L.7#Laf#Laf.7#L#L#L#L",
|
||||
"a2a2#L#g#L#L#L#La2bp#L#L#L#L#L#L#L.7#La9.7#Da9#D#DaYbnama0#xaY#s#D#D#s#D#D#D#D#Daj#Lafajaf#La9a9.na9#M#D#MaY#MaYbl#MawaYaYaYaw#x.RaY.b#xbnbn#Ibnaw#xawbl#D#Ma9#pafa9afa9afa9afa9aj#Laf.7a9.n#Da9ajafa9aja9#L.7#Laf#L.E#L.7.Ea9#sblawaw#xaCaCaO.8aBazbka5.Gbk.U#3biad.a.a.DaVaVaV.M#d.S.Yaz#u.0.y#vaF.8a0.W.C#I.C#Iaw.Naw.s.s.s#s#s#s#s#s#s#s#s#s#s#s#s#M#s#s#s#s.n.n#M.raC#OaO#w#u#E.vbkazbkbkbk.w.yaOamaC.C.C#I#I#I#x#I#x#I#x#Ibf.s.N#s#D.7a9.E#L.E#L.E#L#L#L#L.7aj.7af#L#L#L#Laf.nafaj#L#L#Lbp",
|
||||
"#gaa#ga2#L#L#L#Lbpa2#L#L#L.7#L.7#Laf#L#L#La9.7#D#saY#xa0ama0aYaY#D#D#D#D#Da9#D#Daf.7aja9#L.n#Laj#p.n#p#Dbl#s#DaY#sbl#D#MawaYaYaY#Mblbl.baYawbnbnaYaYaYaYbl#D#pa9a9a9a9a9a9a9a9a9afafaja9a9bja9#Dafafajaf#L.Eaf.Ea2#Lafaja9a9#s#D#sawaw#IaC.WaoaoaO#uae#1#u#uaz#u.O.Ubi.D#d.D#J.D.abu#6.Y.G.w.yaZ.8aoam.W#xaw#I.saw.saw.s.s#s#sbj.Eb.#sb.b.#sb..E#s#s#s#s.s#s.E#s#s#s#s.r#U#IaCaCbd#1#SaOao.ya5bkaza5.waOamaoaC#x.WaC.W#I#x#I#x#I.Naw#D#D#s.7#L.7#Laj#L#Laj#Laj#Laja9#L.E.7.n.7.Ea9a9a9a9a9.7#Laf",
|
||||
"a2#g#L#g#L#L.7#La2#g#L#L#L#L#L#L#La2#Laf#Lbja9a9#DaY.C.VaFa0#xaw#D#D#D#D#D#D#D#Dajafaf#Laf#Lafaf#p.nbl.n#Dbl#M#D#Ma9#M#DaYaw#Dawbl#MaY#Mbn.RaYawbn#xaw#x#Mbla9.naf#paja9af.nafa9aja9#La9a9a9#s#Daja9#La9#Laf.7#L#Laj.n#L.7.n.7#s#Daw#x#I.CaC.8.8#v#v#v#vaO.z#1.z.Gbk.O#zbibBbBad.x#5#9.YaPaz.y.0bgaoam#Iaw.N#s#Dawaw.s#s#D#s#s#s.E.7.E.7.E.E.E.Eb..Eb..E.E.E.E.E.s.saw#IaC.WaC#Oam.d#vao.8aFaO.8.G#3.OaB.8amaCaCaC.Wa0#I#I#I#I#x.s.N#s#D.na9.n#Laj#L#Laj#Laj#Laj.7#L.7af#L#Laf#Lafa9a9.na9a9.7.7",
|
||||
"#L#L#L#L#L#L#L#L#La2bpa2#ga2bp#L#L#L#L#L.7a9.7.7.NaY#xbnao.VaF.V#xaY#Ma9.na9a9#D#La9aja9aja9aj.7.na9.na9.na9.na9#p#s#p#D.na9a9.n#p.nbla9#sbl#saYaYaYaYaYaYaYaYaY#pa9#p#pa9#pa9.nafafaja9#D#D.N.N.nafajafaja9ajafajaf.7.na9#D.n#D#Dawaw#I.W#IaCaCaobdaO#v#v.y.y.y#u.QaX.9#TbC#r#r.aatatbB.2aX.GanaC.W#Ibobf.sbf#I#s#s#s#sb.b.bj#s.7.E.E.E.7.Ea9.Eaj#Lajajajajajaj.s#s#I.s.s#I.s.WaCaCaCaCa0.W.W.W#v#vbtbkbk#uaB.0aObgaoaoamaC.C.W.n.na9.E.7.E.7#Lbjb..Ea9aj#L#La2a2.jbpaj#L.E.7bjajaf#La9#Laf#Laf",
|
||||
"#L#L#L#L#L#L#L#L#L#ga2a2bpa2a2a2#L#L#L#L#L.7#L.7#DaY#Ibnb#b#aOb##xaY#D#Da9.n.7#Dafajaf#Laf#Lafafa9aja9a9.na9.na9.na9.na9#p.na9a9afa9.n#p#D#M#DblaYawaYaw#xaw#xaY#p.na9a9a9a9#p#pafaf#pa9#D#s.N#sa9a9#La9#Laf#Laf.7aja9.n.7.n#Da9.saYaw#x#I#x.W.WaCao.8.8aObc#v.y#v#ubkbvbvaXbvbC.k.Dai.UaXbv.Ga7aOaoaNboaWbo.s.Nb.#sb.#D#s#sbjb.b.a9b.a9.E.7.Ebjajaja2aj#Laj.naj#D#s.sbo#I.sbo.saCaCaC#I#I#I.W#xavaoaO.y.z#1bkbkaBaBaO.5aoaoav.Wa9#s#L.E#L#L.7.E.7#D.7.E#L#L#Laja2bpa2#L#L#L#L.7af.7afajafaj#L#L",
|
||||
"a2#La2#ga2#ga2#ga2#L#ga2a2#g#L#g#L#L#L.7af.7a9.7#Daw#x#xam#SaZa#aC#xaYa9a9a9#Da9aja9#L.n#L.n#Lajafa9.naf.na9a9.na9a9.na9.na9a9.n.na9a9.na9#D#D#saY#x.R#xaYbn#x#xblblbl#Mblbl#Dbl.n#p.nbl#D#D.N.N.naf.nafaja9#L.n#L#La9.7.n#D#s#saYaw#I#I#I#U#Ia0.Wao.8aObc.8.y.y#u#ubk#3bCapbkag.kbqaX.Q.Qbka5#u#v#vamava1bob..E.na9b..E#s.7.E.E.7.E.7.E.7.E.7.naj#L.jaja2ajajaj.n#D.s#I.s#I.saY#I#U#x#I#x#x#Ibo#x#I.CaoaO#v.y#1bkbk#u#vbcam.C#I#sa9.n.7.E#L.E.7#s#s.7.n#Lajbpa2bp.jbp.j#Laj#L#Lajafajaf#La2afa2",
|
||||
"#ga2#ga2a2a2#g#La2#ga2#g#L#ga2a2#L#L#L#L.7.7#La9#D#D#xaCaF.0aZana0#xaYbla9.na9#D#Laf#Laf#Laf#La9af#L.na9af.nafa9ajaf#Laf#Lajaf#Lafajaf#L#D.n#D#DawaYaY#IaY#I#x#IaYawaYaYaYawaYawbl#Mbl#D#sbl.s#Da9.na9.7afajaf#Laf.Ea9.Ea9#sa9#s.N#I#x#I#x#Ia0#I.Wao.8.8aObc.ybba5bkaXaX#3bvag#n.c.#bt#baLbcbdaBaB.y#vam.Wbfb..7#s#s#s.7.E.E.E.7#s.E.E.7.n.7.E.7aj#g.ja2.jaja2#L.E.n#s.s.s#I.s.s#x#I#I#x.s#I.Nbo#x#I#I.CaoaoamaObkaz.Q.z#v.8.Wbf.N#s.N#s#D.sa9.E#D#D.E.7#L#Laj#Laj#g#L#g#L#gbp#L#L#L#L#L#La2bpa2",
|
||||
"a2bpa2bpa2bpa2a2#g#La2bpa2a2bpa2#L#L#La9#L.7a9.E.7aYaY.Cam#vaZaZaobn#xbla9a9a9#s#L.n#L.n#L.n#Lajaf#Laf.na9a9ajaf#L#Laj#Laf#L#Laj#L#L#Laj.7a9.7a9#D#Dbl.NaYaY#xaY#xaY#x#U#xbn#IbnblaY#MaY.NaY#s#D.na9aja9af.7af.E#Laja9a9b.#D#s#Daw#x#I#I#x#I.Wbn.Wa0aoao.5.8.y.QazaX#3.O#3aVai#n#8aLax#O.W.Wao.8#1aB.y.5.Ca1bo.sbo#D#sb.#D.E.7aj.7.E#D.E.7.E.7.7.ja2.j#gbp.jaj.j.7#s#s#s#s.N.s#Iawaw#D.saw.N.s.s#D.s#x.W.WaoaC.8.0.y#v#v#v.d.8ao#I#Ibf.s#Db.bj.7#Dbj#L#Laj#L#L#La2aj#gaj#ga2asasa2a2a2a2#La2a2#g",
|
||||
"#ga2a2a2#ga2a2#ga2a2#ga2a2#L#ga2#L#L#L#La9.7.7a9.7.N.s#xamaF#va#.5am#x.N#D.na9.7af#Laf#Laf#Lafa9#L.n#La9.naf#Laf#Lajaf#L#Laj#Lafa2ajaf#Laf.7.7.na9.n#D.nbl#D#DawaYawaY#U#x#U#x#UaYaw.Nblaw#D#D#sa9.na9.nafajaf#Lafaj.7.na9#sa9#saY#I#I#xaC#xao.CaCavaoao#v.yaI.Qae.O#zaV.Dah#Xag#b#O.r#7#7#7.W#QaObdaB.y#vaoaqbo#Ibobf.N.Ebj.E.7.E.E.7.E.7.E.7.Ebp.j#g#g.ja2#L.j.E.7#s.nb.#s#D.saw.Naw.s#D.s#s.N.s.sbo#I.C.Wam.8bgbgamao.C.8axbcaxaoaobo.N#s#Db.#s.7.E#L#L#L#Laj#L#g#La2#gas.jasbp.j#L#g.j#g#L#g",
|
||||
"a2asa2asa2aa#ga2#g#L#g#Lbpa2#L#L#L#L#L.7.7.n.7.7a9.saYaY.Wa0amam.5am#IaYbla9a9a9aja9aja9aja9ajaf#Laf#L.na9#L.n#Lajaf#L.jafa2a2.ja2a2#Laj#Laja9#L#Laf#Lafa9.n#D#DaY#xaYaYaYawaY#U#xbnawaY.Naw#D#sa9.na9af.na9.na9.Ea9.na9.E#D#s#D#I#x#I#x.WaCaoaoao.8.8.8.y#1#1.Q#T#3bq.D#m#haibkavao#7aE.sbo.W.W.s.Wbd.GazaBbc.8##avbobfbobjbjb..7.7.E.7.E.7.E.7#g.j#g.j#g.jaja2.Eaj.n#D.nb.#sb.#D#s#s#D#s#D#s#s.s.N.N#I#x.Wam.WaC#x#I#xaCa0av.8.8.8ao.W#Ibo#s#s#Dbj.7#Lajaj#L#Laj#gaj#g#gasasaU#g#g#ga2bp#ga2#g",
|
||||
"a2a2#ga2a2#ga2a2a2#ga2aja2bp.ja2#L.7#L#L.7a9.7a9bj.N.N.N#xa0a0aCaF.5bnaY#D.na9.7af#Laf#Laf#Laf#L.n#L.na9.naf#Laf#Laja2#La2aja2#La2aja2#Laf#L.E#L#Lajafaj#La9#L.nblblbl#MblaYaYawbn#U#x#xaw.N.s#D.nafa9.na9a9a9.na9aj.7#sa9#sa9#s#x#I#x.Wbnavamaoao.8aObd.ybt#ubbag.O#3bA.iaJ#3bbav.h#7b.b.boa1#IaE#I#QaB#uaPaz.Gbcbcavavbobfb.bj.E.7.E.7.7.E.7#L.j#g#g#gaj#g.jajaf.E.n#s#s#D.E#D#s#s#D.s#Db.aW#sbf.Nbo.C.Wav.Cam#Mblaw#x#Iaoaqaoaqavavaoav.s.Nb.#D#s.7.E#L#Laj#g#Lbpa2asas.jaUaU#ga2bpa2#g.jbpa2",
|
||||
"#ga2#g#g#ga2#g#ga2#g#g#ga2#g#Lbpa2#L#L#L#L#La9.Ea9a9#saY#I.C.Wam#x#U#x#IaY.N#D#Daj#Laj.7.7a9.7.7a9#Laf#L#L#L.n#Lafafafajafaf#Laj#L#L#Laj#Laf#Laf.jaf#Laf#Laja9#Da9.na9#Da9.n#D#DawaYawawaYaY#MaY.7.n.7.n.7.Ea9.7ajaf.Ea9#s#D#D#D#Ibn#UaCaoao.8#vao.d.d.y.z.y#1bbagaX#3aAbx.caLav#7#I.s#7b.#sb.b..sbo#Iav#QaOaKbtau.GaZaFaq#Ibf.s.7.n#L.E#L.7aja3.Ebp.jbpbpajbpa3#s#D#s#s#s#s#D#sa9.n#D#s#D#s#D#s#x#Iaw#I.N#s#s#D#saY#saYaY#I#I#I#I#U.W#IaC.8ao.C#sa9#L.7.n#L#L#L.ja2.j#gasasas.jas#g.jas#gas#gas",
|
||||
"a2#ga2#ga2#g#ga2#ga2a2bp#ga2bp#Lbpa2#L#Laja9.7#La9#D#D.N#x#x.C.CbnbnbnaYaY#D#D#D#L#La9aja9.7.E#D.nafajaf.Eafafaj#Lajaf#Lafajafaf#Lafajaf#L#Laj#L#La2afaj#La9a9.na9bja9.na9#D.na9awblaYawaYawaYawa9.na9.Ea9a9.na9ajaj#L.n#D#s#s.N#U#Ibn.WamaO.8#v#OaObdbd.yaLbb.Q#8.v#3aV.abCbd.8#7#7.sb..sb..sbj#s.s.s#I.Cav.8.8#u#uaB.ybcao.Wbf#D#s#D.7.E.7.Ea3ajbpajbpajbp#L.E#s#D#s#D#s#D#s#D.n.7#s#D#s#D.s.N#x#I.NaY.s.N#s#D#s#D#M.N.s#I#x#I#x#I#x#IaCbd.8ao#s#D#s#L.7aj#L#L.j#gas#g#g.j#gas.jas#gas#g.j#g#g",
|
||||
"#g#La2#ga2#ga2bpa2bpa2#L#L#L#g#La2aj#L#L.7.7a9.7.n#D#saY.s.N#x#I#x#xawaY#Ibl.N.Naf.E#La9.7#sa9#D.n#Laf#Laf#La9afaf#Lajaf#Lafaj#Laj#L#L#Lajaf#Laf.j#Laf#Laf#La9a9a9a9.n#Da9.na9#D#D#s.N#s#D#s.N#s#D.Ea9a9.Ea9.7.na9.na9#s#D.s.N#x#Ibnbn.Waobg.8.8.d.d#vbd#v.z#1bb.QaX#3aA.kaXbcao#7.s.sb.b.b.b.#s#s#D.s.N.s#x.CavaFam#v.y#u.ybyby#Ibf.s.Nb..7.E#L.7.E#L.7.E.7.E.7#s#s#D#s#D#s#D#s#D#s#D#s#D.s.N.s#x#IaYbo.s#D#saW.n.7#s#D#s.N.s.s#I#I#I.CaCax#vaO.saw#s#D.n#Lafaja2a2.j#gas#g#g#g#g#g.j#g#gas#g.j",
|
||||
"#ga2#ga2#g#L#ga2#ga2#g#L#g#L#L#L#g#L#L#L#L.n#L.7#D#D#D#DaYaY.N.NawaY#xaY#x.NaY#Ma9.7a9.Ea9#D#Da9a9af.7af.Eafaj#Lajafafafaj#Lafaf#Lafaj#Laf#Laj#La2af.j#Laf#La9.7a9.7a9.7a9#Da9a9#s#Dbl.saY#saY#s#D#s#D.na9.Ea9.7a9.n#D#s.N.s#xbobna0aCa0am.8aOaO.8#vbd#vbd.yaL#1.Qbk.Obi#R#8#v.rbo.saE#sb.#sbjb..7.E.n.E#s.s#I#xbo.Wavbc.y#u.yanaoaq.Cbo.N#D.E.7.E.7#L.E.7.E.7#s#D#s#D#s#D#s#D#D#s#s#s.N#s.Naw.N#x#xaw.N#s#D#sbj.n.7.E#DaE#saYboaCaCaoaoaoao#Oao#Iawaw#s#D.n.7a9aj#g#L#g.j#ga2#g.jas#gas.j#gasas",
|
||||
"a2bp.jbpa2#ga2bpa2bpa2#L#Lbp#L#L#La2#L.7#L.7a9.7#s#D#D#D#D#s.NaYaYaY.s#x.s#xaYaY#D#s#D#D#D#s#D#sa9ajaf#Laf#La9af#Lajaf#Lafajafaj#L#Lafaj#L#L#L#L#L.jafa2#Laja9a9.na9a9.na9.na9#s#D#D#s#D#s#D#s#D#sa9#sa9#Da9.n#D#s#D#D.saY#xaY#IamaCamaobgaObcbdaOax#vbd#v#v.yaL#1.Qa5#3#R.vbc.W#7#s.sb.b.bjb.bj.E.7.Ea9bj#s#Daw#s.Nbo.C.8#van#ubc#v.8a0bf.s#D#sbj.7bj.7#D.7#sbjawaY#saY#s#D#s#Daw#DaY.saY.NaY.saY.saY.N.s#D#s#D.Ea9#s#s.N.sboawao.8.d.daoaC#I#x.sawbo#M#D#Daj.7#L#L.jbpa2bpa2#g#g#g.j#gas#gas#g",
|
||||
"#ga2#ga2#g#L#g.ja2#g.jbpa2aj#Lbpaj#L#Laj#Laf.7af#D#D#s#D#D#D#D#D.N.saYaY#xaY#x#IaY.N#D#D#s#D#Da9#L.na9.na9ajafajaf#Lafajaf#Laf#Lafaj#L#Lajaf#L#La2a2a2#Laf#La9a9.7a9.7#Da9bja9a9.7#sa9#D#s#D#s#D#s#D#D#s#D#s#D#sa9#s.NawaY#I.C.WaF.8b#ao.8bg#vbd.8#vbd#vbd#v.d#v#1#1.wagbi#8ao#O.saE.sb.#sb.#s.Eaf.Ea9.E.n#D#s#Db.#s.N#Iaqambca#aB.y#vaO#I.Cbf#I#s#Db.#Db.#Dbj#saYawaw#D.saY#M.N#M.N#saY.s#x.s#x.s#x.s.N#s#Db.#D#Db..N.s.N#Ibo.W.CaoaxaoaxaCaC#I#x#I#I#Iaw#s#D.n#Laj#L#Lbp#L#L#L.j#ga2#g.ja2.j#g",
|
||||
"#L#g#L#g.j#ga2bp#g#L#g#L#Lbp#L#L#La2.7#L.7.Ea9.EaY#D#D#s#D#s#D#saYbl.NawaY#UbnbnawaYawbl#D#p.na9afa9.n#La9#La9#Lajaf#Lafajafajaf#L#Laf#L#L#La2.ja2#La2#L#Laf.7a9a9a9a9.na9.na9a9.7a9#s#D.n#D#s#D#s.N#sbj#D#D#s#DblaYaw#x#I.CaCamaOaF.8.8aO#vbdaO#v.d#vaO.8aObd#v.zaBa5.O#r.Q#O.Wbo.s.sb.aEbjb.bjb.a9.E.7.n#s#D#s#D#D.s.N#Ibf.W.C#v#va#aOaF.8aoam.s#D#s#D#s#D#s.saYawaYaYawblaYaw#DaYaYaYbl.N#x#xaY.saY.N#s.N#saWawaY#I#x#I#x#IaC.C.WamaCaC.W#I#I#I#x#I#I#I.s#sa9.E#L.E#Laja2bpa2a2.j#ga2#ga2#ga2",
|
||||
"aj#g.ja2#g#L#ga2#ga2#ga2bpa2#L#L#Lajaf.Eaf.7a9.7aY#s#D#D#D#Da9a9.saY.saYbn#x#xa0#I#x.NaY#M#Da9.na9aja9a9.nafajafafafajaf#Laf#Lafaj#Lajafaja2#L#La2.3#L.jaf#L.na9.7.n.7a9bja9#D.n.7#sa9.n#D#s#D#s#D#s#D#D#s#D#s#DawaY#Ibn#Ia0aoa0#v#vaOaFaObd#vax.ybc.d.8.8.8.8bd.y#1a5aX.v#1ao.W#7.saE.s#sb.#Db.#s.7.E#D#s#D#sa9#s#D#s#D#s#D.s.saFaFamaO.y#v#v.5#I#Iawbf.s#x.s#xawaYawaYblaw#DblaY#Mbl#saYaw#x#I#x.Naw.N#sbj#s#D#I.WaC.WaC.Wamao.8aoao.W#IaY.NaY.N.N.s#D.saw#s#D.n.Ea9aj#Laj#Laj#ga2#gas.j#g.j#g",
|
||||
"a2#ga2#ga2aj#L#L.ja2a2aj#L.E#Laj#pa9a9#pa9.n#pa9#M#Dbl#Dbl#MaYaYaYawaYaYawaY#UaYa0.p.VbnaYawa9#La9a9ajaf#L#Lafaj#L#L#Laj#Laj#L#Laf#L#L#L#L#La2#La2a2#La2#La2#L#L#L#L#L.Ea9.7#s#D#La9.E#D.na9.na9.n#s#D#saw.Naw#xaw#I#x#I#U.CaCaoao.VaoaoaO.8aO.8#Oaoaxao.haC#Oao.daO#uagbibk#vav.W#I#s.E.Eaj.Ea3aj.n#L.E.7.nb.#s.N.saY.N#I.N#IaY#I#I.C.8#v.yaBaPaBa#aFa#.5aqaqaN#xbfbf.N.NaY.Naw.NaYaY.Naw.NbfaYawaYaYaw#x#I#xa1#U#I#U#I#x#I.N.s#D#s#D#Dbj#sbj.E.7.Ea9.7.7#L.7.7.7.7.E.7#L.7#Lbpa2.jas#g#gas#gas",
|
||||
"a2.ja2#L.j#L#La2a2#g#L#Laf#L.7#La9#pa9a9#pa9#pa9bl#Dbl#sbl.NblawblaYblaY#xaYaY#Ubna0b##UbnaY.n.7#s#Da9.na9.n#Laf#Lajaf#Laf#Lafaj#Lajafaj#L#L#L.j#L.j#La2af#La9a9#L.7#L#La9.7a9#Da9.Ea9.n.7.n.7#s.na9#M#Daw#x.s#xawbn#I#U.CaCaCaCaobgaCaoaOaOax#vao.hao.W.W.Wav.haoax.y#E#zagapbc.Wbo.s#s.E.Ea3.E.7aja9.Ea9b.a9.EaY.Naw.Naw.Naw.N#I#x#Ia0amaF.yaBa7#u.ya#aoaqavaq#x.C#x#I.Naw.NaYaw#x#I#I#x.s#xboaYaY#I#x#I#x#IbfblaYbl.NaY#D.N.N#Dbj#sbj.Ebj.7bja9#L.E#Laj#Laj#L.E#L#L.7aj#La3ajas#g.jas.j#g.j#g",
|
||||
"a2#gas.ja2#L#Laja2#Laj#L#L#La9.7.na9a9#Da9#Da9a9#s#D#D#s#D#s#D#Dbl#sbl#D#M#DaYaYaY#Ubga0bnaY#s#D#s#Da9a9.na9ajafaj#Laj#Laj#L#Laf#L#L#Laf#L.j#L#La2a2#La2#Lafa9a9ajafaja9a9#s#D#s#Da9.n#D#sbl#s#D#M#s#D#Maw.N#I#I#I#I#x#I#IaC.CaC.paCaCaoao#O.8ao.h.W.W.W.W.W.W.W#I#Q#v.w.Obiagbk.W.r#I#sb..E.E.Eaja9.E.n.7.n#D.saY.saY.Naw.NaY.Naw.N.s#xaCaq.8aF#Sa7a7#u.yaFam.5ao.Ca0.C#x#x#x#Ibn.R#x#x#xaY#xaY#Ibn#UaC.W#xbf.sbl#s#D#sa9.Ea9.7.E.7.7#L#L#Laj#Laj#L#L#L#L#L#L#Lbpajbp#Lbpbp#Lbp#g#gas#g#gas#gas",
|
||||
"a2.ja2#La2aja2#L#L#Laf#L.Ea9aja9a9a9a9.na9a9.na9#D.n#Da9#Da9a9.na9a9#sa9#D#D#D#saY#xaCa0#U#x.N#s#D#D.na9a9.n#La9#L.n#Laf#Laf#Lajafaj#Laj#Laf#L#Lafajafafaj#L.Ea9#La9a9.n#D#D#D#D#D#s.Nbl#D#s.N#M#D#M#D.saYawaw#IaY#I#U#I#x#IaC.WaC.CaC#IaCavao.W.Wav.W.Wbo#I.W.Wbo.W#Q.y.w.Uau#3bd.8bo.s#s#sbjb.a9.E.n.7b.#sbj#s.Naw.Naw.NaY.saY#s#s#D#I#x#Ia0aoaFa#aBaBaBa##va#aoa0aoa0aoa0aC.Ca0#xaCbn#I#xaw#xa0aCa0#x.Caw.N.Na9a9a9a9.7a9.Ebj#L#Laj#L.E#L.7#L#L#Laj#L#Laj#Lajbp#L#Lbpajbpaj#Las.j#g.jas#g.j#g",
|
||||
"a2a2a2.ja2#Laf#Lajaf#Laja9a9.7a9a9.na9a9a9a9a9a9.7a9.7.n.7.7a9.7.7#L.7a9#s#D#D#D#D#Mbnbn#x#xaY.N.s#D#D#sa9a9#Laj#L#L#Laj#Laj#L#L#Laf#Lafaj#Laj#La2a2afajafafa9a9a9.na9#Da9#s#D#D#MaYblawaYawaYbl.s.Naw#D.saYawawawaw.s#I#I.C.W.W#U#I#I#x.WaC.W.W.W#I#Ibo#xbo#I#Ibo.Wavbc.y#u.G#3.Qbc.Wbfaw.s#sbj.n.7.n.7#s#D.s#D.saY.NaY.N#M.NaYb.#D#s#Daw#Ia0#UaFaOamam.5.8.yaB.8aO.5ao.5amam.8amaCa0a0#x.C#I#Iaoam#I#xaY#D.N#Da9.7.7.7a9.7.7.7aj#L#L#L#L#Lajbp#Lbp#L#Laj#L#L#L#Lajbpaj#L#Lbp#L.j#gas#gas#gas#g",
|
||||
"a2a2.j#La2#L#L#Laf#Lafa9a9a9#D#D.7#Laf#L#Lajafaj.7aj#L#L#L#Laj.7aj#Laj#Lbj.7.7b.a9#D#D#xaCa0.W.NaYaw#D#Da9.na9af#Lafajaf#Laf#Lafaj#Laj#L#L#Laf#L.3ajaf#La9aj.7a9a9a9a9a9bl#DblaY#DaY.NawaYblawaY.NaYaw.sbl#s#Maw.N.saw#x#I#I#I.C#I#x#I#I.W#Ibo#Ibo.Wbf#Ibo#Ibfbo#Ibo.W.8#Qbc.ybkbv.Q.8#I.s.s#s#sb..nbj#s.N#sbj#saY.Naw.saY.NaY.s#D#s.Nbo.N#I#I#xaCamao.Ca0b#aobyaOaF#v#vaB.y.ya#aOaF.5aCa0aC.CaCbn#xaY#D#D#D.7#D#Laj#L#Laj#L.7#L#Laj#L#Lajbp#Laj#L#gaja2bpa2bp#g.jas#gas#gas.j#gas#g#g#g.j#g.j#g",
|
||||
"a2.ja2#L.j#Lajafajafa9a9a9#Da9.n#L#L.7#L#L#L.7#Laf#L#L#Laf#Laf#L#L#L#Laj#Laj.7.7#L.n#DaY#x.W.C.C.s.NaY#s#D#Da9#s#Laj#L#Laj#Laj#Laf#Laf#Lajafaj#Laja2afajafafa9.na9#pa9#M#Dbl#DaYaYaYawaY#xaYaYaYaw.Naw#D#sbl#s#M#s#saY.s.s#x#I#I#Iawawawbo.N.s#I.s.s.sbo.N.s.s#I#I#x#Ia1.Wao#vaLbkap.yaobo.N.N.s.7#s#sbj#s#D.sbjaY.saY.Nbl.saY.N.s.N.s.N.N#I#x.sbfbf.C.WaCaqamaq.5aoa##v.0#u#u#ua##vaOaFama0#x#xaYaY#D#Da9.7#L.Eaf#Lafaj#Lbpbp#Lbpa2bp.jbpa2#L#ga2aj#g#L.jbp.j#L#g#g.j#g.j#gas#g.j#g.jas#gas#gas",
|
||||
"a2#L.ja2a2#L#L#Lafafa9.na9a9a9#D.7#L#Laj.7#L#L#L#L#Laj#L#Laj#Lajbpaj#Lbp#L.7.7bj#L.7#DaY#xa0.C.WaYaw.N#D#D#D#sa9aj#L.Eafajaf#Laf#Laj#Laj#L#L#L#L.3#L#Laf.7#La9a9a9a9#p#Dblbl.NblawaYaYaYaYawaYawaY.NaY.sbl#sa9.n#D#D#saw.s#I#I#xaw#x.saY.s.s.N.s.N.s.Naw#D.s.N.sbn#I#Iboa1#b.d.8#Tap.Qbcbo#D#sbo.nb.#D#s.Nb.#D.s.Naw.Naw.NaY.Naw.Nbf.s.N.sbfaY.N.saY.sbf.C.Waqavbga#a#a#.yaZ.0anaBbm#vaOaobn#I#xblaY#Ma9a9af#La2#L#L#Lbp#Lbpaj#L#g.ja2bpa2aj#gaja2#g#L#g#L#g#L#g.j#gas#gas#g.j#gas#gas.j#g#g.j#g",
|
||||
"as.j#g#La2aj#Laja9ajaf#L#L.n#Laf#Laj#L#L#La2#ga2#ga2a2a2#ga2a2#g#L#Lbpaj#Laj#Laj#D.s#DblaY.VaObm.C#IaYaw#D#s#D#Dbl#Ma9a9af.7aj#Lajaf#Laf#Lajafaj#Lajafaj#Laj#L#Lajafa9a9.7#sa9#DaYaYaYaYaY#xaY#x.N#s#D#s#D#s#Db..n#sbj.n#D.sbfbo.s.s.N.s.N.s.s.N#s#D#s#D.s.N#Ibf.s#Ibo#I.Wav.8bcbta5.U#3aB.5.W.N#x#I#x.saY.s.N.N.s#D#Ma9b..E.7.nbfaw.NaY#xaY#Ibf#D#s.N.N#x.Waqavb#ambga#aO.0.y.yaoaCa0#x#xaY.N#D.Ebj.7.7.7.7.7.7#ga2#ga2#ga2#g#ga2#ga2aj#g#g#L#g#g#L.jbp#Lajbp#L#g.jas.jas#gas.j#ga2#ga2#g.jas#g",
|
||||
".ja2#Laj#L#L.7.7af#Lafajaf#Laf#Lbpa2#La2#L#L#Lbp.ja2#g#ga2#ga2#g#L#L#L#L#L#L#L#L.7#D.NaYaYaobmaZamaCbn#x.NaY.N.N#Mbla9.nafajaf.7a9#Laj#Lajaf#L#Laf#L#L#Laf#Lafaja9af.7.n#Da9bja9#xawaYaYawaYaYaw#Dbl#s#D#D#s.7.n.7b..nbj#sbj.s.saw.s#D#saw#D.s#D#s#s.s.N.sbfawbf#Ibf.sbo#Iav.8bc#uaz#3bi.G#vaq.W#I#x#I#x#x#x.s#DaY#s#D#s#D#s#Db.aY.saY.N#I#I#x#x#I#x#I.C.WaqamamaFaObm#vaBaZ#va#bna0#xaYaw#D#D#Dbj.7.7.7.7.7.7.7#g.ja2#g.j#ga2bpa2a2a2#g#La2#L#g.j#g#gajbpbp#Lbp.j#gas#g#g.j#gas#g.j#g.ja2a2#ga2",
|
||||
"#L#L#L#L#L.na9.n#Lafajaf#L#L.ja2#L#Lbp#Laj#g#L#L#gbp.j#L#gaj#ga2aj#g#Lbpajbp#Laj.7#D#sblaYb#aOa7b#amaoa0aC#x.baYbl#Mbla9#D#L.na9aj#Laf#L#Laj#Laj#Lajafaj#L#Laj#Lafajaf.7a9a9#Da9#Dblblblblblblbl#D#s#D#D.n.7.E.7.E.7.7.E#s#s#D.s.N.s#Db.#D#s#D#sbj#s#D#s.N.sbfboaYbo#Ibf.Wavbcbc.wa5au.M#3.w#v.5#Ibn#I#IaY.s.N.N#saY#s#D.s#D.s.NawaYawaY#I.C#Ibn.Wa0amamao.5.8.5#uanaB.ya#aoama0awaYaY.NaY#D#D#D#L#L#Lbp#L#L#L#Laj#gbpa2bpa2.j#g.j#L.j#L.jbp#g#Las#ga2#ga2aj#L#L#g.j#g.j#ga2#g.ja2#ga2#g#Laj#Laj",
|
||||
"#D.na9#sa9#Da9#Daj#L#L#Lajaf#L#L#g.ja2#g#g#g.j#ga2a2#g#ga2#ga2bp#ga2#ga2#ga2#g#g#Lb.a9aY#UambmaZaO.t#SaFb#a0a0#UblaY#s#D.na9.7.n.7aj#Lajaf#Laf#Laf#L#Lafaj#Laf#L#Laf.7af.7.n.7#D#M#D#D#D#D#D#D#s#D#Da9#sa9.Ea9aj.7.E.E.7.7b.#sbj.s#s#D#s.N#saW#s.N#s.Nb..N.Nbo.N#xbo#x#I.Wav.8.yaz#T#3#z#z.O#uaF.CaC.C#x#I.Naw#D.sbl.saY.s.Nbo#Ibn#U#x#Ua0#Ua0aCb#am.8a##va#aBan#u#u.0aFama0#xaY.NaY#D#s#D.7.7.7#Lbpaj#Lbpajbp#Lbp#L#L#L#Lbp#L#L#L#L#Lbp#L#Lajbpas.ja2.j#ga2bp#Laja2#L#La2aja2#L#L#L#Laj#L#Laj#L",
|
||||
"a9a9a9a9a9.na9a9#Lafajaf#L#La2a2aj#g#ga2#L#g#L#g.j#g#g.j#g#g.j#ga2#gaj#ga2#ga2#g#L#L#L#s#xb#aOa#.t#SaZaBbmbga0bnawaYblbl#Da9.n.7#Laf#L#Laj#Laj#L#Lajaf#L#L#Laj#Lajafajaf#La9a9a9#D#D.na9a9.na9a9a9.na9.7a9.E#L.Eafaj.7.E.7.nbj#s#Db.#Dbj#sbj#sbj#sbj#D#s.N.s.N#x.W#xbo#xavambcbb.O.O#a#a.Oba#3aBamaoa0.W#x.s.N#saY#saY#I#x#I#x#IaCa0aoamaob#aoamaF#v#vaB.0aB.0#ua#a#.5ao#xaY.Nbl#sbl#Da9.7.n.7.7aj#L#L#L#L#La2#Laj#Laj#L#g#L#L#Laj#Laj#L#L#Lbp#L.j#g#L#L#Laj.7#L#Laj#Laj#Laj#Laj.7aja9#La9aja9a9",
|
||||
"#Da9#s#L.n#L#L#Laj#L#L#g#L.jbpa2#ga2#g.j#gas#gas#g#g#g#g.j#g#gas.j#g#g#g#g.jas#g#gaj#L#D#xaOaZan.FbmaBaZbmaFb##UaYblawaY#s#Da9.7.n#Laj#Laf#Lafajaf#L#Lajafajaf#L.3#Laf#La9aj.7a9#Ma9a9#Da9#Da9#Da9#D#La9aj.7aj#L.E#Laj.7.Ebj.nb.#s#D#sbj#s.N#s#D.s#D#sbj.N.sbf.s.C.Wa0.Wam.8.ybb#a.O.GaPaz.M#C.faOaoaq.W#xaw#D.s#D#I.N#I#xaCamaoaFaO#vaO#S.y#S#v#v#S#va#aOaFaOaFamaoa0#xaY#D#sa9#D#Da9.7.7#L#L#La2#L#g#L#g#Lajbp#L#Lbp#Laj#Laj#L#Laf#L#Laj#Lajbp#L#Laj#L.n.7a9#sa9.n.7.nbj.nbj.na9a9a9.na9#Da9a9",
|
||||
".7#L#L#L#L#Laja2#L.jbp.j#L#g#L.j#g#g#gasas.jas#g.jas.jasasas.jas#gas.jasas#gas#gasbp#L.7awam.yan.Fbm.TaZaBaFam.R#IaYawbl.N#s#D#D#Lajaf#Laj#L#L#L#Lajaf#L#L#L#Laj#L.jafajafafafaja9#Da9a9a9a9a9.n#Lajaf.E#L#Laj.7.j#Laj#L.E.7.E#D#saW#D#sbj#sbj#Db.#DaE#D.sbf#IbfaCaq.Waoao#v.y.wbkaz.w.waz#3biau#uaOamao#xboaw.N.s#x#I#xaCambgbg#uaBa7#ua7an#ubh#vaFaOama0aCa0a0a0bn#UaY#sa9af#L#sa9.7a9aj#Lbpaj#g#L.j#gaj#g#L#Laj#Laj#L#L#Lbp#L.E#L.E#L#L#L.7#L.n.7a9#D#D.N.s.Na9#s#Da9#sa9#D.n#D#D#s#D#D#s#D.7",
|
||||
"aj.7aj#gaj#gas.ja2bpa2#L#gaja2bpas.jas#gas#g.jasasasasas.jasaU.j#gas#gas#gas#gas#g.ja2#LaYa0.0aZ.Fa#aBaZa#aFbn#UaYaY.N#MaY#D#D#Daj#L#Laf#Lafajafajaf#L#Lajafaj#L.3#La2af#L.Eaf.7a9a9.n.7a9.n.7a9af#Laf#Lafaj#L#L.j#g.E#L.E.7#s.Ebj#s#sbj#D.s#Db..N#s#D.s.sbf.s#Iaqa0ao.C.8#vbbaPbk#u.w.Q.w.wau#N.Q.yavam#I#x.sawaY#I#IaCaoaoaO#vaz.Gaz.GazaS#uanaoaCa0.Wa0.CaC.CawaY#Da9a9#La9aja9a9.7aj#L#L#Lbpaja2bpa2bpa2#Laj#L#L#L#L#Laj#Laj#La9#L.7.7.E.7.E#D#D.N.s.N.s.N#x.7.7.n.7a9#sa9#D#s#D#D#D#D.7#D#D",
|
||||
"#g#g.j#g#g#g.j#g#g.j#g.j#g#g#g.j#g#gas#gas#gas#g.jasasasas#gasasas#gas.jas#g.jas#g#g#ga2a9.C#SbhaFbgamam.8amaCa0aYaYaY#Da9.E#Laja9#Laj#Laj#L#L#L#L#Lajaf#L#Laf#Laja2ajaf#Lafa9a9.na9a9a9a9.7a9a9af.n#Lajaf.7#L.E#Lbpaj#g.n.7#s.N.s#DaY.saY.Naw#x.saYbo#x#x#I#x#I.8amaob##v#u.G.2bkaz#ubbaP.w.G.2.u.Oa#aoav#Ibfboawbo#xaoamaBan.Gba#a#ua#ao.5#Qaq.W#x#x#x#I#x#xaY#xawaYbl#D#M#Da9a9a9a9a9.7a9a9a9#L#Lajaf#Lajaf#La9.n#D#saY.NaYaY.N#sbl#D#MaY#M#D#D.n#Da9#D#D#D.n#Laj#L#L.E#Laj#L.7aj#Laj#Laj#Laj",
|
||||
"#g.j#gas.j#gas.j#ga2a2#ga2.jas#gas.j#g.jas#g.jas#g#g.j#gas#gas#g.jas#gas#gasas#g#g#La2.j.7bnaF#ub#b#amb#ama0bn.CaY#M.N#sa9.na9#Lajaf#Laf#Lafajafaj#Laf#Laj#Laj#La2afafaj#L#La9.7a9.7a9.7a9a9a9.7afafafa9#L.n#L.7ajaja2.j.7.E#D.N#Daw.Naw.N#I#x#x#I#x#I#x#IaC.CaC.5bg.8aO.0.w#T.2.G#u.ybbbb#u.GaX.e#z#SaoaC.s.W.W#I#Iaoam#v#u.G#TarazbmaoamavaN.C#x#xawaY#x#IaY.saY#Daw#D#Da9a9a9#sa9.na9a9.na9.na9a9a9#sa9#Da9#sa9a9a9#D#Mbl.NawblblaY#MaYaYaYaw#D#D#s#D#D.n#D#D.n#La9ajaf#Laf#Laj#L#L#L#L#L#L#L",
|
||||
"#g#g#g#gas#g#g#ga2.j#g.j#gas#g.j#g#gasas#g.jas#g.jas#gas.jas#gasas#gas#gas#g#gasa2aj#g#La9aYa0bmbgambgama0.C#x#xawaY.N#Da9.7#L#Laf#Laj#Laj#Laf#L#Lafaj#Laf#Laf#Laja2#Lafaf#L.na9.na9a9a9.Ea9a9.7ajafajaf#L.7#L.7bp.Ebp.Eaj.7#s.Naw.Naw.Naw#x#I.N#I#x#I.C.Wa0aoamao.5ao#vaBazal#3aB#vaF.y.yaB#u.wa6#z.w.8.C.Wam.CaoamaO#v#uaz.G.GaBaFama0#xawbfa1aY.NaY.NaYaY.NaY.N#D#D#D#Da9a9a9a9.7#D.n#D.7a9a9#D#s#D#D#D#s#D#Da9.na9a9#D#Daw.N#D#s#D#D#D#s#D#D.7.7.7.7.E.7.7.7#L#Laj#L#Laj#L#L#Laj#Lajbpaj#Lbp",
|
||||
"as.jas.j#g.jas.ja2#ga2as#g.j#gas.j#g#g.jas#g#gas#g.j#g#gas#gas#gas.j#gas.jasas.j#ga2#gaj#LaY#Uamb#ama0a0aCbn#Ibn.Nblaw#Da9aja9aj#Laj#L#Laf#L#Lafaj#L#Laj#L#Laj#L.3aj.3#L#L#La9.7a9a9.7a9a9.7a9a9afa9#La9aj#L.n#L.E.7aj#L.E#D.sbfaw#M.NaY.s#x#IaY.C.W.C.W.Caqaqao.5aoaF#v#uaz#T.o#vaO.8.8bcbcaB#ualbaa5#vaoa0avaoaF#vbm#uaz#u#uaZa0am#x#M.N.N.N.N#D.Naw.N#s#D#D#D#D#sa9#Da9.n#L#L.na9a9.7a9a9.7#s#D#D#Da9#Da9#D#s#Laf.7a9.n#Da9a9#L.7#L.7aj.7#L#Laj#Laj#L#L#Laj#L.j#L#La2#La2#La2ajbp#Lbpa2#L#ga2",
|
||||
"#g#g#g#gas#g#gas.j#g.j#g#gas#ga2#gas.j#g#g.jas.j#gas#g.jas#gas#gas#gas#gas#gas#gaa.j#g#L#LbjaY#Ua0aCa0a0#xbn#xawbl.N#D#Da9.7#L#Laf#Lafaj#Laj#L#Laf#Laf#Lafajaf#L#La2#Lajaf#La9a9.n.7a9a9a9a9a9#Lafafajafaf.7#L.7#L.7#Laja9#saY#IaY.saY.saY#I#x.s.C#xaC#x.Caoaqamao.8a##v#u.Ga5azaOaOaoao.8#v.ya5ba#z.w#vao.Wam#vaB#uaB#uaZa#aF.5#xawaYbla9.E#D#sa9#sa9#D.7.7a9#s.7a9.7.7#L#L#L#L#L#Lajaf#L#Lajafa9.7.na9a9.7a9a9.7aj#L.7#L.E#Lajafajaf#Laf#Lajaf#L#L#L#Laj#L#L#L#La2aj#gaj#gaj#g#La2.jbp.jbp.jbp",
|
||||
"as.jas#g.jas.j#ga2as#gas.j#g.j#g.j#gas#ga2#g#gas#g.jas#gas#gas.j#gas#gas#gas#gas#g#ga2bp#L.na9bla0bnbn#UaYawaYaYaYbl#Da9.n.7afaj#Laj#L#L#L#Lafaj#Laj#Laj#L#L#L#L.ja2a2a2af#L.n.7a9a9a9a9.7.n.7a9afaf#Lafaj.7af.E#Laj#L.Ea9aw#x#IaY.saY.NawbfaY#x#I#x#I.C#I.C.Wa0.8am#v.0#u.G.w#uaO#v.8#Q.8bdbb.Q.K#z#u#vaFaoaBa7a7#u#SaFaoamaCbnaYaY#Da9aja9a9bj.7a9.7a9.Ea9.7.7af.7#L#Laj#L#La2ajafaf#L#Lafafafaj#Laf#Lajaf#L#La9#L#Laj#La2a2a2#ga2.j#g.ja2a2#gaj#gaj#g#La2bp.j#g.j#ga2#ga2#g#g#g.j#g#g#ga2a2#g",
|
||||
"#g#g#g.jas#g#gas.j#g.jas#gas#ga2as.j#g.j#g.jas#ga2#g#g.jas#gasasas.jas#g.jas#g.jasaa#g#Lbp.7afajbn.RaYaYaYaYaYaYbl.N#D#D.7#L#L#Laf#Lafaj#L#L#L#Laf#Laf#L#La2#L.3#La2#L#L#Lafa9a9.n.7a9.7a9a9a9.7afaf#Laf#La9aj.7.7.7aja9#saw#x#I.N#saY#I.NaY.s#I#x#I#x#I#xaC.CaoamaO.yaB.waz#uaZ.8bc.8.8#Q.y.Q.w#4#4.wa##vaB.Qaz#vaFama0#x#x.N.s.N#D#sa9.7a9.E#D.E#L.7aj.7#Laja9aj.7#L#L#La2.ja2af#Lajafajafaj#Lafafajaf#Lafajaf#L#L#La2a2.j#ga2.jas#gas#g.jas#gasa2#g.j#g.j#g#g#g#g#g.j#g.jas.ja2#gas.ja2.j#g#g",
|
||||
"as.jas#g#gas.j#ga2as#g#gas.j#g.j#g#g#ga2a2#g#g.j#g.jas#gas.jas#g#gas#gasas#gasasa2#g.jbp#LajafafaYbnaYaYblaYaY#MaY#D#sa9a9.7#L#L#Laj#L#La2afa2#L#L#Laja2#Laf#L#La2.j#L.3aj#La9.7a9a9a9a9.n.7a9a9afaj#La9aj#L.7#L#D.na9#s.naw#x#Ibl.Naw.Naw.NaY#xawaYaw#x#I#xaC#I.8aO.yan.w.G.w#vb#by.8.8bc.ybb.Qay.Y.G#u#1a5.GaBamamaobn.s#Da9.7aY#Da9.7a9.7.7#Da9aj.7af.7af.7#L.7afaj#La2a2a2.j#Laf#Laf#Laf#Laf#La2#La2#La2a2a2.7.j#La2#gaa.jasas#gas.jasasas.j#g.j#gas#gas#gas.jas.j#gas#g#gas#ga2.j#ga2#ga2a2",
|
||||
"a2#ga2.jas#gasas#gas.j#g#g#gas#g.ja2a2a2.ja2a2#ga2#ga2.jas#gas#gas#gas.j#gas#gas#g.j#ga2bp#L#Laj#L.naY.R#xaYaY#D#Dbl#D.7#saf.7.n#L#L#L#L#Laj#L#Laja9#La9aj#L#L#La2a2a2.j#L#Lajafa9#sa9.7a9a9a9.E#Lafafajafa9.na9aj.na9#s#D.N#IaY#s.sbl.s#D#s#D#s.N#I#x.W.Cavam.5.8aF.0azal#T.w.0.8#v.8byaKbbaIaP#aba#N.O.GazaB.5#xaw.N.NaY#D#D#s.7.n.7#L#La9.7a9#L.7af.E#L.E#L#L#L#L#La2#La2bpa2#L#Laj#La2#L#Laja2aja2#ga2.jbpa2as#gas#gas#gas#g.j#g.j#g#g.j#gas#ga2.j#g.j#g.j#g#ga2#g#ga2.j#ga2a2#g#ga2#g.j#g#g",
|
||||
"#g.j#g#g#g.j#gas.j#g#gas.j#g.j#ga2a2#ga2#g.ja2a2#g.jas#g#gas#gasas.j#gas#gas.j#gasasas#g.j#g#Lbp#La9#Dbl.RaYaY#D#D#Da9#D.7a9.7#L#L#Lbp#L#Lbp#L#L#L#L#L#g#La2a2#Las.ja2a2#Laf#L.7a9.7.na9a9.7a9a9af#L#La9#Lafaja9.na9.n#D.s.s#x#I.Nbl.s#D#M#DaY.saY#I#xaC.Caqao.5bgaO#uaz.G.G#u.y#x.W.8#v#v.y.0.ybabaay.f#uaB.8a0bfaYaY.N.N#D#D#Da9.7.7af.7.7af.E.7aj.7#La9#L.n#L#L.jaf#L#gaja2#L#La2#Lafaj#La2#L#g#g#L#g#L#ga2#g#gas#gas.jas#gasasas#gas#gas#g#g.j#g#gas#ga2as#g#ga2#g#L#gbpa2bp.j#L#gajbpa2bpa2",
|
||||
"a2a2#g.jas#gas#g#gas.j#g#gas#g#g.ja2a2.ja2a2a2.jas#gas#gas#g.jas#gasas#gas#gasas#g#g#ga2#g#L#La2#La9a9#DaYbl#Dbl#Da9#Da9a9.7#L#La2#g.j#g#ga2#ga2.j#ga2.j#g#g#g#ga2a2#g#La2aj#L#L.n#Da9a9.na9a9.7#Lajafajaf.7a9.naf.na9aE.N#I#Ibn.saY.Naw.NaY.saY#x#I#x.Wa0ao.5.8aoaO#u.G.Gaz#ua##IaCaCaobg#va7azaH#zaz#uaFam#x#xaw.N.N#D#D.n#D.7.E#L#L#Laj#L#L#Laf.7#L#L.E#L#L#L#L#La2#La2#L#gaja2#L#La2#L#L#La2a2#g.j#ga2#g#L.jas#g.jas#gas#gas#g#g.j#gas.j#g.j#ga2.jas.j#g.j#g.j#ga2.j#ga2#g#L#g#gaja2bp.j#L#g",
|
||||
"a2#g.jas#g#g.jas.j#gasa2#g.j#g.ja2a2#ga2#La2a2#g.jas#gas.jas#gas#gas#gas#gas#gasas.j#ga2#gaj#Lbp.j#La9a9#D#Dbl#Dbl#D.7a9.7.7af.7a2a2a2a2a2a2.ja2bpaj#Lbp#Lbpa2#L.j#g#La2#L.7#L.7a9a9a9.7a9.7a9.n#Lafaf.7afafaja9.na9.n#D#s#I#x#IaY.sawaY.saYaw.N#I#x#I.C.W.5av.5bgaOaB.G.O.G.y.5aO.8bgaFaB.Gau#N#zaz.0aFa0#x.NaY.N.N#D.n#D.7.7a9#L#La9#L.7#L.7#L.E#L#L#L#Laf.7#L#La2#L.jbpa2#La2#La2#Lajafa2#L.j#L#g#L#gaja2#g#g#gasasas#gasasas.jasasas#gas#gasa2.j#g#gas#gas#g#ga2bpa2bpaja2aj#ga2#L#g#La2bpa2",
|
||||
"a2#ga2#g.jas#g#g#gas.j#ga2a2as#ga2aja2.j#g.j#La2#g#g.j#gas#g.j#g.jas#g.jas#g.jas#gas#ga2#g#La2#L#L#g#La2a9a9#D#D#Da9#Da9.7a9#L.7a2.j#g.ja2aja2#L#L#g#ga2.j#L.j#g#La2#Laj#L#La9.7.na9.na9a9a9a9a9#L#Lajafaja9a9.naf.n#s#s.N#I#x#U#I#x#x#I#x#I#x#I#x#I#x.Wamao.5.8ao#v#u.Garaz#ua#.y.0#u#u#aau#3alaza#b##I#xaw#D#sa9#s.7a9.7a9aj#L#La2aj#L#Laf#La2#L#La9aj.7#L#Laja2#L#g#La2#L#g#Laj#L#La2#L#La2#L#ga2#ga2#g#g#L#gas#g#gas#gasasasas#g#g.jasas.j#g#gas#g.j#g.j#ga2.jbpa2bpa2bpa2bp.jbp.jbp.jbp.jbp",
|
||||
".j#g.ja2#g.j#ga2.j#ga2.j#g.j#g.ja2#ga2a2a2a2a2#g.j#gas#g.j#gas#gas#gasas#gas#gasa2.j#gaj#g#Lbp#La2#La2#L#La9#Dblbl#Da9bja9#L.7#L#L#Laf#L#L#Laf#Laj#L#L.7#L#L#L#L#L#L#L#L#La9#L.7a9#Da9a9.7a9.Ea9#Lafaf#Lafa9.na9.na9.E#D#s#x#I#I#I#I#x#I#x#I#x#I#x#I#x.WaC.5.8.8.5aBa5#a#TaPaPbk.U#3al#3#T.G.w.0aFaC#x#x.N#D#Dbj#Dbj.7.7aj#L#L#La2#L#La2#La2aj#L.7#L#L#L#L#Laf#Lbp.j#La2bpa2aja2#La2af#L#Laja2#L#g.jbpa2bpa2#g.j#gas.jasas.j#gas#gasasas#g#gas#ga2.jas#ga2#g.j#g#L#gaja2aj#gaja2bpa2#L#L#L#g#La2",
|
||||
"a2#ga2#ga2a2#g.j#ga2#ga2a2#g#g#g.j#L.j#L.j#La2a2#gas.j#gas#g.jas#g.j#g.j#g.j#gas.j#ga2a2#gaj#L#L.ja2#g.j#g#L#Dbl#Da9a9a9.7a9.7a9a9a9a9a9a9#sa9#Da9a9.na9a9a9#Laf#Laj#L.7a9.E.7a9.n.7.n#Da9a9a9a9#Lajaf.Eaf.na9.naf#Ma9.s.s#I#x#I#x#I#x#I#x#I#x#I#x#I.CaCaq.8am#vaO#u.G.Uay#3#3bv.M#C.O#u.y.5am.C#UaYaYaw.N#D.7.7.7.7aj.7#L#Laj#ga2#ga2a2.ja2a2a2ajaf.7#L.7aj.7#La2a2bpa2aja2bpa2#L#Laja2#La2#L#ga2bpa2.j#g#ga2#gas#gas#gasasas.jas#g.j#gas.j#g.j#ga2a2.ja2a2#gas.j#L#g#L#g#L#gaj#Laj#L.j#La2aj#g",
|
||||
"#g.j#g.j#g.ja2a2#ga2.j#g.j#g.j#ga2a2a2a2#g.ja2#g.j#gas.j#gas#gas#gas#gas#gas#g#ga2#g.j#L#g#La2bp#La2#gas#g#La9bl#D#Da9bja9.7.n.7a9b.#D#s#D#D#D#s#p.nbl#p.na9a9a9#L.7#L#L#La9.7.7a9#Da9.na9.n.7a9#Laf#Laf#Lafa9.na9.n.E#s.N.s#x#U#I#x#x#I#x#x#I#x#I#xaC.Wa0.8.8.8.yaB#T#4beaM.Y#T.fa7#uaOa0bf.s.N#Mbl#s#D#D.s#DaW.E#L#L#Laj#L#g#ga2a2.ja2a2a2aja2.7#Laj#Laf#L#L#L#L#ga2#L#g#La2#L#La2#L#L#L#La2aj#ga2#g#g#ga2#ga2as#gas#gas#g#gas#gasas.j#g#gas#g#g.ja2#g#g.ja2.j#L#g#L.jbp.j#La2aj#L#Lbpaj#g#L#g",
|
||||
"a2a2a2#La2a2.j#ga2.ja2a2a2a2#ga2#ga2#ga2a2a2#ga2asaa#ga2#ga2#L.j#La2#L#Lajafa2#L.ja2#ga2#La2#L#L#L#Laf#Laj#L#L#La9bl#Da9blaYaYaYblbl#DaYaYawaYaYblblblblblblbla9#Da9#D#sa9#Da9#D.na9.7a9.7a9a9.n#Laf.Eaf.Eaf.naf.na9#M#D#saY.saw.N#s#s#D#s#s#D#s.C#I#I.C#Iao.5#v#u.OaVadbi#3#1aBbdaO.W.C#IaYbf.N#D#s.7#L#L#Laj#L#Lbp#Lbpbpa2bpa2.j#g#g#Lbp#Lbp#L#L#L.7.7.E#L.7#La2a2a2.ja2#ga2.ja2#L.3a2a2#g#g#g#L#ga2#ga2#g#ga2#ga2#ga2.j#ga2#g#gas#gas#g.jas.ja2#g#L.j#L#g#g#L.ja2a2#L#L#L.7#L#L#L#La2#L#Laj#L",
|
||||
"a2a2.j#L.j#La2a2a2a2a2a2#ga2a2a2.ja2a2.ja2#ga2a2asa2asa2.j#L#g#La2#L.jaf.3#L#La2aa#ga2a2#L#Laj#Lafaj#L#L#Lbpaj#La9#D#p#Dbl#DaYaYbl#DblaYaw#xaYaYbl#Dbl#Dbl#Dbl#Da9#sa9#D.7#D.7#D.7a9a9a9a9a9.7a9.n#Laf#Laf#La9a9.n#s#D#M#DawaY#I#s#D#s#s#D#s#D#sbf#Ibf#I#Ia0bc.y.G#zad#4aXbk#v.8bgao.C#x.N#x.N.s.7bj#L.7aj#Lbp#Lajbp.j#L#gaj#g#L#gbpa2bp#L#La2#L#L#L#Laf#La9#L#L.j#ga2#ga2a2a2a2a2#La2aj#L#g#L#ga2#g#ga2#ga2#ga2#g#ga2#g#ga2bpa2as.j#g#g.j#ga2#g#L#Laj#Laj#Laj#L#gaja2ajafaj#L.Eafaj#L#Lajaf#L#L",
|
||||
"a2#La2a2a2.j#ga2.j#L.j#ga2a2#ga2#ga2#ga2#ga2a2asa2.jasa2#ga2#La2#La2#L#L#Laf.j#L.j#L.jafaj#Laf#Lafafaf.7#L#L#Lbpa9#pa9#D#Dbl.sbl#D#MblaYaYaYaYawbl#D#M#Dbl#D#Mblbja9bja9#D.n#Da9.na9.7a9.7a9.na9#Laf.Eaf.Ea9.n.n#D#M#saYaw#IaY#IaY.s#D#s#D#s#D#s#I#x#I#I.Cao.y#1#T#rbq.G#u.yaOaCamaC#xawaY.s.N.N.7aj#Lbp#Lbpa2#ga2#Lbp#L#g#L#g#L#ga2#gaja2bp#Lbp#Laj.7aj.7aja9#L#L#L#L#L#Laj#L#L#L.j#La2#ga2#g#g#L#ga2#g#g#ga2#g#ga2#g#ga2#g.j#g#gas#g.jasa2.j#gaj#L#Laj#L#Laj#La2a2a2#L#L#La9#Lajaf#Lajaf#Laj#L",
|
||||
"a2.ja2.ja2a2a2#ga2a2#ga2a2#g.ja2a2a2a2a2a2.ja2a2asas#ga2a2#L.j#La2aja2a2a2#Laf#Lafa2af#Laf#Lafajaf.E#Laj#L#Lbpa2a9.na9#Da9a9#D#Dblbl#DaYaYaYaYaY#Dbl#Dbla9#D#D#Da9#Da9#Da9bja9bja9.7a9a9.na9#Da9#D.na9a9a9a9#D#sbl#saYaw.s#x#I#I.saw.saY.s.Naw.N.s.s#IaCaoao#u.G#z.UaX#uaOaOao.W#x#IaY.N.N.N#D#D#L.7#Laj#La2#ga2#gbpa2bp.jbpa2bp.ja2#g#L#Laj#L#La9.7a9.7a9.7.7a9#L#L#Laj#L#L#La2af#La2#L#L#g#L#ga2#g#ga2#ga2#g#ga2#g#ga2bpa2bpa2#g.ja2#ga2#g.ja2#Laj#Laj#Laj#L#La2.j#Lajafaj#L.E#L#Laf#L#L#Laf#L",
|
||||
"a2bpa2#La2.j#ga2aja2a2a2.ja2#ga2#g.j#ga2#ga2#ga2a2aa#ga2#ga2bpa2#La2afaja2afa2#Lajafajafajafa9a9af#Laf#L#L#L#Lbpafa9a9a9a9a9#D#D#Dbl#DblawaYaYaY#D#Dbl#D#Dbl#D#Da9b.a9.7a9#Da9#Da9.na9.7#D.na9.na9a9#D.n#D#s#D#M.NawaY#I#x#I#Ia0#IaY#Iaw.Nawbo#x.s#x#I.WaF.yaz#3.a#4a5#v#vaoaC#IaYaY.saYaw#D#sbj#Laj#Lbp#L.j#g.jbpa2aj#g#L#g#L#g#g#L#g#L#g#Lbp#L.na9a9.na9a9.na9#Lajaf#L#L#L#Laj#Lafa2#L#g#L#g#g#L#ga2#g#ga2#ga2#ga2#ga2.j#ga2#g.jas#g.j#g.j#ga2aj#L#Laj#L#Laj#Laj#La2#L#Laf.7af#Laj#Lajafaj#L#L",
|
||||
"a2.ja2.j#L#ga2a2a2#ga2#ga2#ga2a2a2a2a2a2a2a2.ja2as.jasa2.j#La2#La2#La2a2#La2afajafafafafaf#pa9.n#Laf#L#L#L#L#g#Lafa9a9a9a9a9a9a9a9#DblaY#DaYawaY#D#M#D#D#M#Da9#Da9#Da9bja9.7#s.7a9.7a9.na9a9.7#D#s#D#s#D#Dbl#s.N#M.Naw#I#I#IaC.W#I#xbo#xbo.N#IaYbo.W.Wa0#vaz.Y#.aVapaOaO#O#I#I#xawbl.N#D#D.7a9.E#L#L#L#gaj#g#g#ga2bp#gbpa2bp.j#La2#g.j#L#La2#Lbpa9.7#D#D#s#Da9#D#L#L#L#L#L#L#L#L#L#La2#L.j#Lbpa2#ga2#g#g#L#ga2#g#g#ga2#gbp#g#L#g#g#g#ga2a2#g.ja2aj#Laj#L#Laj#Laja2#Lajafaj#Laj.7aj#Laf#L#L#Laf#L",
|
||||
"a2#La2#ga2.ja2#ga2.ja2a2a2a2#g.j#ga2#g.j#ga2#ga2#gaa#ga2#ga2aja2#L.j#La2#L.jafaf.3ajaf.n#p.n#pa9afajaf#L.7#L#L#L#L#La9a9#D.7a9#Da9a9bl#DblaYaYaY#D#D#D#D#D#D#D#Da9bja9a9.7#Da9#Da9a9a9#Da9#sa9a9#D#D#D#D#s#D#saYaw#I#x#IaC#x.WaC#I#I#x#I#x#I#I#xa1ao#Q.8.w#4.P.4#u#Sao.WaCa0bobfbl#s#D.na9#L.7#L#Lajbpa2a2#g.jasbpa2#L#g#g#L#gbp#ga2#g#Lajbp#Laja9a9#M#Dbl#D.na9.7a9.7a9.Ea9a9.7af.jaf#La2#L#L#g.j#ga2#ga2#g#L#ga2#ga2bpa2a2.j#g.j#g.j#g.ja2#g.j#Laj#Laj#L#Laj#L#Lajaf#L#Laf.7af#Laj#Lajafaj#Laj",
|
||||
"a2.j#L.j#La2#L.ja2a2#ga2#g.ja2a2a2a2a2a2a2a2a2a2asa2asa2a2a2bpa2af#La2afa2#L#Lajaf#pafafa9#p.n#p.7af#L#L#Laj#Lbpaf#La9.7a9a9bja9a9#D#Dbl#DaYaYaY#D#D#D#Da9#Da9#D#sa9a9bja9a9bja9.Ea9.7a9.Ea9a9a9#s#D#s#D#Dbl.s#Daw#x#IaC.WaCaCao.Wav#Ia1#I.Ca1#I.Cav.8aO.G#dbs#BaLaB.8aC#I.WaYbf#sbl#Da9a9.n#L.E#L#L.jbp.j#gasasa2bp.j#L#ga2bpa2#g#L#g#L#g#L#L#La9#Da9bl#s#p#Da9.7a9.E.7a9.7.7.n#Laf#L#L#gaj#L#g#ga2#g#gbp.j#ga2#g#ga2#g.jbp#gbpas#ga2#ga2#g.ja2.E#Laj#L#Laja2#Laja2aj#Laj#L.E#L.Eafajaf#L#Laf#L",
|
||||
"#L#L#L#L#La2bpa2#Laj#L#La2bpa2bp.L.L.jasaa#ga2#gaja2a2a2a2#La2#La2a2#L.j#La2afa2.3aj#p#Mbl#D#D.7ajaf#Laj#L#Lbp#Laj#Laf.n.7a9a9.7#pa9#p.NaYaYbl#Dbl#D#Da9#Da9.7a9a9a9a9afa9.7a9.7#Dbl#Dbl#D#D#D#D#xaYaYawaYaYaY#Ubn#I#I#I.Wao#v#vaC#I#x.W#Ibo.C.WavaoaZ.o.Yab#3.QaOaoaC.W#I#x.s.Nbl#sa9a9aj#La9#L#L#g#L#ga2#g#L.j#g#g#g#ga2bp#ga2.ja2#L#Laf#La9.7bl#DblblaYaYaYaYaj#L#L#L#L#L#L#L#L#L#L#L#L#L#L#La2#ga2a2a2#g#La2#La2#g#La2a2#L#L.ja2.ja2.j#L#Laj#L#L#Laj#Laj#Laj.3#Lafajaf#Lajafa9.na9a9.na9.na9",
|
||||
"#L#Laj#L#Laj#La2bp#L#gaj#L#L#Lajaa.jaaaaa2#ga2bp.3#L#L#La2#L.j#La2a2a2#La2#La2#L.3af#pblbl#Da9a9afaja2#La2#La2#L#Laf#L.7a9a9bja9a9#p#DblaYaw.Nbl#Dbl#Dbl#D#D.7a9a9afa9a9a9a9aj.7bl#D#D#sbl#Dbl#MaYawaY#xaY#xawaY#x#U#x#I.Cao.8aBaxav.W.C.Waoao.8aO#vaPay#daVbk.0#OaoaC.W#x#I.N.N#Dbl.na9a9#L.7aj#g.j#ga2bpa2#g#gasas#g.j#g#ga2#g#La2.ja2#Laja9a9a9a9bl#DaYawaYaY#La9.Eaf#L#Laj#L#L#Laj#L#L#L#L#Lbpa2#L#g#La2#g#L#gaja2#ga2#ga2#La2a2a2#La2a2.3#L.jaf.jaf.j#L.3#Laj.3aja2#Laj.3#Laja9af.n#L#Laf#L",
|
||||
"a9ajafaf#L#L#L#L#L#L#L#L#L#L#L#Laa#ga2#g.j#gbp#La2#L.ja2#La2#La2a2#La2a2a2#L.j#L.jaf.n#pbl#sa9.Eaf#Lafaj#Laj#L#Lajaf#La9a9bja9a9#Ma9bl#DaYaYbl#DaYbl#Dbl#Da9a9a9a9#p.naf.7a9.7a9.n#Da9#D#D#s#D#DaYblaY#MaY#MaYaY#MaYaw#I#IaC.8aObgaoaoao.8ambc#v#uar.M#d#4.G.y.8bgaoaC#x#I.N.N#s#pa9a9.7ajaf#L#La2bpa2.j#g#gaj#g#g#gas#ga2#g#L#La2a2#Laf#Laf#La9a9a9a9#D#Dbl.Nbl.E#L.7#L.7af.7#La9#L.7#L#L#L#L#La2#ga2#ga2#g#La2#L#ga2#L#g#L#Laj#L#Laj#Laj#Laj#Laf#L#La2afaj#Lajaf#Lajaf#Laj#Laja9afajaf#Lajafaj",
|
||||
"afaf#Lafajafajafajaf.Eaf#Laj#L#L#La2#L#L#gbpa2bp#La2#L.3#L.jafa2#La2a2#La2a2#L.3afaf#p#Mbla9a9.7afajaf#L#L#L#g#L#La9aja9a9#Da9.7#pbl#DaYaYaYbl#DaYblaY#Dbl#D#D#Dafa9afa9a9a9.7.7.7#Da9bja9#D#D#s#D#D#saYbl.NblaY#M#D.saw#I.WaOaB#vaO#v.8aOaO#v.y#3ad.Z#.#T#vav.haoaC#x#IaY.s#D#D.n#Dajaf.7#Laj#L#ga2#g#gbpa2#ga2a2as#ga2#ga2bp#La2a2a2a2a2#L#L#La9afa9#M#DblawaY#L.7af.E#Laj#L#L#Lajaf#L#L#L#L#Lbpa2#L#g#La2#gaja2#L#ga2#g#La2a2aj#L#L#L#L#Laf#L#Laj#Laj#L#Laf#Laj#L.7aj#L.Eaf.7.na9#D.n#Da9#Da9",
|
||||
"a9.na9a9a9a9#pa9a9a9a9a9a9a9a9.nafaj#L#L#L#Lbp#La2aja2#La2#La2a2#La2a2a2a2a2#La2aj#p#pbla9a9#Lajaf#Lafajafaj#L#Lajaf#La9.7.nbj#Da9blaYaY#x.N#DblaYblaY#DaY#Dbl#Da9a9a9a9.7a9.7.7a9.7.E.7.7.7.7a9#D#D#D#D#s#D#s#D.sbl#s.s#xaoaO#S.yaBaB#u#u#ubk#E#.ab#4#3.G.y.8bo#U#I#x.s.N#D#s#Da9#L.7aj#L#La2bp.jbpa2#La2#g#L#g.jas#g#ga2#Laja2#L.j#La2af#L#L#La9.7a9bj#Daw.Nbl.E#L.7#La9#L.7#L.7#L.7#L#L#L#L#La2#ga2a2#ga2#L#g#La2bpa2#La2bp#L#Laf#L#Lafaj.7ajaf#Laf#L#Laj#Laja9.na9.7afa9.Ea9a9a9a9a9a9.na9a9",
|
||||
"a9a9a9a9a9a9a9.n#paf#paf#p.n#p#pbl#D.na9a9#L#L#L#La2#La2#La2#La2a2a2a2#La2#La2afa9#p#M#pa9.nafa2afajaf#L#Lbp#L#L#Laf#La9a9#Da9a9#D#DaY#x#xaYaY#DblaYblaY#Dbl#Dblafa9afa9#Da9.7a9#L.7a9#Laf.7.n.7a9a9#s#D#D#D#D#D#s#D.s#x#I.8#Saz#u#u#uaZ.w.GbiaV#4.U#3ara5#vao.W#x#IaYaw#D#sa9a9#L.n#Laf#L#gaj#L#ga2#g.ja2#g.j#gas#gas#gaja2bp#La2a2a2a2#L#Laf#L#L#La9a9#Dbl.NaY.7#L.n#L.E#L#Lafaj#L#L#L#L#L#L#Lbpa2#L#g#L#ga2#ga2#ga2a2#gaja2#L#L#L#Laj.7#La9#L#L#Lajafaj#Laf#L.n.7a9.Ea9.Ea9.n#D#s#D#s#D#D#s#D",
|
||||
"a9.n#pa9.n#pa9#pa9.n#p.n#p#p#p.nblblbla9.na9#Laf#Lafa2aj.3#L.j#La2#La2#La2aja2#La9.nblbl#pa9#L.j#Laf#Laja2#La2aj#L#Laja9a9.7#D#s#p#DaY#x#x#xaY#DblblaYaYbl.Nbl#D#Dbl#D#Da9#Dbj#D.7#L.7#L.7af.7#L.7.na9a9.na9a9.n.NaYbobfaoaFaBazaz.w#uaP#3#4ad#4ap.O.O.O.w#S.8.5#Uaw#x.saY#s#D.n.7#L#Laja2aj#gas#L#gbp#gbpa2bpa2#gas.j#g#g#L#La2#La2#La2#L#L#L#L.7#L.7.7.E#D#s#D.na9#L.7af#L.7#L.7#La9#L#L#L#L#La2#ga2a2#ga2#L#g#La2bpa2#ga2#ga2.7a9.7#La9.7.7a9ajaf#L#Laf.7.na9#D.Ea9.7a9.7a9b.#D#D#D#D#D#D#D#D",
|
||||
".n#pa9#paf#p.n#p.n#p#p#p#p#p.n#p.b.R#Mbl#p.nafajafaja2#La2#L.3#La2a2aja2#L.3#L.ja9#pbl#Mbl.nafa2afajaf#La2#Lbp#L#Laf#La9.n#D#s#DblaYaY#xbn#xaY#DblaYblaYblaY#Dbla9bla9#D#D#D#Dbja9#La9#La9.7.7a9.7a9.7.7.7.E.7#D.N.sbf.Wam.y#uaz.Oar.Gal.Mbxadalbkbkbkbkbka7.yaF#I#IaY#s#Da9#s#Daj#Laj#L#g#L#g#g#gaja2a2a2#ga2#gas#gas#ga2#g#gaja2a2a2af#Laf#La9#Lajaf.7a9#D#s#Da9.Ea9.E#L.E#Laj#L#L#L#L#L#L#L#L#L#g#L#g#La2#ga2#ga2#ga2#L#g#La2#L#L#L.7#Laf#La9#L.E.7.7.Ea9.n.7.n.7a9.7.n.7.na9#D#D#s#D#s#D#s#D",
|
||||
"#Lafaj#L.7#L#L#Lafafajafaja9#pa9aYawaYaYawblblblafafaf#Laf#L#L#L.jaaafa2#L#Lafaf.n#F#M#pa9afaj.7#Lbp#Lbpbpaj#L.Eaf#Laj#D#D.N#D.N.naYaYbna0a0bnaY#DblaY#x#xaYaYblbl#D#Da9a9.7#L#L.7.7.7.7.7.7.E.7#Dbj#D.s.N.N#DboaY#MaY.W.8aZal#P#PaT#P#.a.ad.ObkaX.G.O#Taz#SaoaC#x#x#I.N.s#D.E.7af.7#L.E#L.Eaf#Laj#g#gbp.jbpa2aj#ga2#g#L#ga2#ga2#L#L#L#L#L#L#L#L.7#L.7a9.E#Da9#D.Ea9.7a9.7a9#La9#L.7aj#L#L#L#L#L#L#L#L#L#Lbpa2#L#L#g#L#ga2a2#ga2bpa2#La2#L#Laj#L#Laf#Laj#L.7#L.7af.7.E#L.7#L.7#L#sa9.7a9.7#L.7#L",
|
||||
".E.7.7#La9aj.7#Lafajafafafa9a9.nblbl#MaYblbl#Dblafajafaj#L.E#L#Laaa2a2aja2afajaf#p#p#pa9.naf.7#L#gaj#Lajbp.7#L.7ajafa9#D#D.NaY#xblaY#x#xama0a0aY#p#Dbl#xbnaYblaY#Dbl#Da9a9.7af.7.7.7.7.7.7.7.7.7#D#s#D.N.N.N.N.N#IaY.N#Iamanay.P.PaDaD#..M.O.G#u#u.w.GaP#u.ybgaCaC#x#IaY.N#s.7a9.7aja9#La9#L.E#L#L#ga2a2#ga2#ga2#g#L#ga2#ga2#g#g.7#L.7#L.7#L.7.7af#L#L#La9#Db.#Da9.7a9.Eaf.7a9.7#L#L#L#L#L#L#L#L#L#L#L#L#La2#L#L#ga2a2#g#L#g#La2#ga2#g#L#ga2#La2#L.7#L.7a9aja9#L.E#La9aja9#L.n#L.na9aj#Laja9aj.7",
|
||||
"#L#Lafaj#L#Laf#Lajafaf.Eaf#sa9a9a9a9#pbl.nbl.n#p.nafa9#Laf.7#L#L#L.ja2#La2af#L.n#p#Mbla9a9aja9#Laj#Lbp#L#L#L.7.7#D#D#saYaw.N#xbf#MaYaw#xbna0a0aYblaYaY#xbn#xaYaYbl#D#D#Da9#D.7#L.7.7.7.7.7.7.7bj#s.7#D#s#D.N.sbfa0#UaoaO.yan.2.g#m.AbA#4ar#u.0#u#S#vaBaB#uaB#v.5aoamaC#x#IaY.N.na9.7.E#L.7af#L#La2#g#L#g#L#gbp#ga2#ga2#g#g#ga2#g#L#L#L#L#L#L#L#L#L.E#L.7.7a9#Da9.Ea9.7a9.7.7#L#L#L.7#L#L#L#L#L#L#L#L#L#L#Lbpa2#La2bpa2a2#ga2#ga2#L#ga2a2a2#g#La2#Laj#L#L#L#L#L#La9#L.7#L.7aj.7#La9.7#La9.7#La9#L",
|
||||
"#L#L.7#L.7#L.7#Lafaf#Laf#La9a9.na9#Da9.n#Da9#D#Dafaf#Lafaja9aj#La2a2af#Laf#Laja9#p#D#p.na9.7aj#L#L#L#L#Laj.7.7b.#D#saY.NaYbf#x#x#DaYaYaY#xbna0#xaYaYaY#xaYaYaYaY#Dblbl#D#Da9.7.7a9.7.7.7.7.7a9.7af.7#D.N.s.N#x#IaF.8amaF.0#uaybe#.ba#aaz#ua##vaOaOaO#v#v.y#uaBa#b#bga0a0awaYbl#D.Ea9a9a9.E.7a9.7#Laj#L#gaja2a2a2#ga2#g#ga2#ga2#g#L#L#L#L#L#L#L#L#L#L#L#La9.Ea9.7.7.n.7.n#La9.n.7af#L#L#L#L#L#L#L#L#L#L#L#La2bp#La2#ga2#g#La2bpa2#ga2#L#g#L#ga2#g#L#L#Laf.7#L.7#L#L#Laj#L#L#Laf#L.7#L.E#L.n#L.E#L",
|
||||
"#L#Laj#L#L#Laj#L#L#Laj#L.7.7a9.7a9a9a9#Da9a9.na9.naf.Eaf#L.7#La9ajaf#Lajaf#La9a9#M#pbla9a9#L#L.7aj#Laj#Lbjbj#sbjaY.N.Naw.N.Nawbf#DblaYaYaY#xbn.CbnaYaYaYaY#xaYa0bl#D#D#Da9#D.7#L.7#La9#La9#L.7.7a9#sblaYaYbnaCa0.5amaFaB#u#a#4abarazaBa#aO.5ao.5aoaoamaOaB#u#uaZaCa0bn#xaYaY#Dbla9a9.na9a9a9#La9#La2a2#L#g#g#L#g#g#ga2#ga2#g#ga2#ga2a2#ga2a2#La2#L#L#Laf.7.7.7a9a9.7a9.7.7.7#L.7#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#g#La2bpa2#ga2a2bpa2#ga2a2#g#La2#L#L.7#Laj#L#Laj.7af.7#La9#L.7ajaf.7#L#L#L.7af#L",
|
||||
"#L.7af.7#La9#L.7a2#L#L.7#L.n.7.na9a9.na9a9a9a9a9afaf#Laf#Laf.E#Lafajafaf#La9.na9#D#p#sa9.n.7aj#L.7#L.7a9.Ea9#Da9.NawaY.N.NaY.N.N#D#D#D#MaY#x#xa0ama0#xbnaYaYbn.CaYaYaY#D#D#D#D#Da9a9a9a9.7#Da9#s#D.NaY#x.Ca0amamaFaB.f.Oau#aazan#v#vaFam.5aCav.CavaoaoamaOaB#uan.Ca0#xawaY.s#D#s#Dbja9bja9.7a9a9a2#La2#La2a2a2a2#ga2#ga2#g#ga2#ga2#ga2a2#ga2#ga2#L#L#L.7a9.7a9.7.Ea9.Ea9.7af.7af#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#La2a2#ga2#ga2#L#ga2#g#La2bpa2a2bp#L#L#L#L.7#L.7af#L#L#L#Laj#L#L#L#Laj#L#La9aj.7#L",
|
||||
"#L#L#L#Laj#L#L#Lajaf#Laja9.7.7a9.7a9a9a9a9.na9a9aja9#Laja9#L.7#Laf#Lafaja9a9#D#D.nblbla9b.#L.7.E.7.n.7.n#D#D#s#D#D#D#D#s#D#D.n#D#D#D#s#Dblawa0.Cama0a0aYaY#xa0amblaY#D.N#D#Dbj#Dbj#D#D#D#D#D#D#D.N#x#x#xbg#vbmaBbk#a#Ea7a7aZ#va#amb#ao.C.W.Cbf#IaqaoaoaoaO#SaZ#ubn#I#xaY.Na9a9.7a9a9a9a9a9a9a9a9#Lajaf#L#L#L#La2a2#g#g#ga2#ga2#ga2a2#ga2a2#ga2a2#L#L#L#L.7.Ea9.7a9.7a9#La9#L.7#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#g#L#g#La2bpa2#g#La2#ga2#ga2#ga2#L#L#Lajaf#L#L#L.E#L.7#L.7#L.7#L.7af.7aj.7af.7#L",
|
||||
".E.7.n#L.7#L.7af#L#L#L.7aj.7a9.Ea9a9a9.7a9a9.7a9afafafafaja9aj.7afaja9#La9a9#s#D#p#M#D#s#D.n.E.7a9.na9#D#sa9#D#D#D#s#D#D#Da9a9.n.N#D#D#Dbl#xa0ama0ambnaYaYbnama0aYaYaY.N#D#D#Dbj#D#D#D#D#s#D#Daw.C#I.Caobm.G#faG.yaBbh.l.taFb#.5a0a0aoa0#xbo#xboaqavaoamaC#Sa7an#I#x.N.s#Dbjaj#L.n#Da9#sa9a9a9a9#Laf#L#Laf#Laf#L#ga2#ga2#ga2#g#g#ga2#ga2#ga2a2#g#L#L#La9.7a9.7.7.7.n.7.7.7#L.7#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#La2#ga2a2#ga2#ga2a2#g#L#g#La2bpa2#L#L#L#L.7#L.7#L#Lafaj#L#Lafaj#L#L#L#La9#L.7aj#L",
|
||||
"#L#L#L#Lajafaj#Laf#Lafaf#Lafajaf#L.jafajaf#Laja9aj#Laj#L#L#L#Laj.7.7.E#Laj#L.7.7bl.NawaY.NaY.N.s#s#D#sa9bj.Ea9.Ea9.na9.n#D#s#D#Da9.n#D#D.saY.s#x.R.Rbn#x#x#xaY.NbnaYblbl.na9.7.7#D.N.N.N.Nbfbfbfavama#aSaG#z.G.0aoa0aC#xaCbn.Wbn#I#xaY#I#x#x#I#x#Ia0avao#v.0aBa7#IaYa9.7.E.7#D#Da9a9a9a9.7a9.7afa2a2a2a2a2#g#ga2#ga2#g#ga2#g#ga2#ga2#g#ga2#g#ga2a2#g#L#L#L.7a9.7.na9a9afaj#La2a2#L#Laf#L#L#La2#L#L#La2#La2#La2#La2#L#L#L#L#L#L#La2a2a2a2#g#ga2#g#La2#La2#Lajafa2.7#L.7af.7#L.7afaj#L#Lajafafaf#L",
|
||||
"#Lafajaf#L#Laf#Lajafaj#L#Laf#Laf#Laf#Lafajaf#Da9.7a9.7.7af.Eaf.7.na9a9a9.7.7.n.7awaYawaYaw.s.N#D#Da9#D.na9.7a9.7.n.7.7.7#D#D.7.7#Da9#s#D.N#x.N#x#Ua0a0bna0bn#IaYb#am#xaY.N.N.N.Nbj#D.N#I#xaqaoa0a0a#a7#fa6az.0.5bnaCbnbn#x#x#x#xaYboaYbfaw.NaY#I#x#Iao.8.5#v#u.T#I.N#sbja9bj.7bj#sa9.Ea9a9.7a9a9#L.ja2a2.j#ga2#g.j#ga2#g#ga2#ga2#g#ga2#g#ga2#g#g#ga2#L#L#La9aja9a9af.7af#L#L#L#gafa2#La2afa2#La2.3#La2#La2#La2#La2#La2a2a2a2a2#La2a2#L#g#La2bpa2bpa2#ga2#L#La2#L#L#L#L#Laj#L#L#La2a2afafaj#Lajaf",
|
||||
"#L#L#L#L#L#Laj.7af#Laf#Lajaf.Eafajaf#Lafa9a9.n#D#D.n#Da9#s#D#D#D#D#s#D#s#D#D#D#sbl#s#D.s#D#s#D#s.7aj.7#L.7aj.7#L.7af.Ea9#L.7a9.7.na9#D#D#D.NaY#xa0.Vaoamama0ambna#b#amambn#x.C.Cawbf#xa0amamaF#v#vaBazaSa7a#aq.W#x#x.s#xaw#xaw#x.N.NaY#xaY#x#I.N#I#xavam.8.yana7#U#x#D.7b..7a9#Da9a9a9a9.7a9af.7a2#La2#L#ga2#g#g#ga2#ga2#g#ga2#ga2#g#ga2#g#ga2#ga2#L#L#L#L.7a9.7a9a9a9#La2#La2a2#L#Lafa2#La2#La2#L#L#La2#La2#La2#La2#L#L#L#La2#La2a2a2a2#g#ga2#g#La2bpa2a2#Laj#L#L#L#L.7#L.7#L.7af#L#Laf#Laf#L#L",
|
||||
".7#L#Laj#L#La9#La9a9a9a9a9a9a9a9af#L#D.n#D.7#D.7#D#D.N.s.N.N.N.sbl.NblaYblaYawaY#M#D#Ma9#D.nbj.7#L#L#Laj#L#Laj#Laj#L#L#L.7a9.E.7a9a9a9#DaY.s.N#xaCb#a#aFa#amamam#vaFamam#xa0#xam.CaCamamaObma7aza7aZbm.tam.C.Cbfaw#xaYaY.NaY.NaY#DaY.s#xawbfaY#x#x#Iaqao.8aZ#ua7ao#xaw#Da9b..7#Da9#s.7a9af.7a9a9a2#La2#La2#ga2#ga2#g#g#ga2#g#ga2#g#ga2#ga2#ga2#ga2#g#L#L.E#L.7afa9afa9#Laf#L#ga2#La2#La2#La2#La2af#La2#La2#La2#La2#La2a2a2#La2#La2a2#La2#La2bp#g#L#ga2a2#g#La2#L#L#L#L#L#L#Lafaj#Lafaj#Laf#Laf#L",
|
||||
"a9a9a9a9a9a9a9.n.7a9.n.7a9a9.n#D.na9#s#D#D#D#D#D#D#D.sblaY#saY#DaY#MaY#saYblaY#D#D#s#D.7.n.7bj.E#L#Laj#La2#La2#L#L#L#L#L.n.7a9.7a9.E#D#D.NaY.N#Iamam#v.0a#aFa#a#bmbgamaCbna0aoa0amaF#vaBa7a7.l.TaFb#b#amam#x.Nbj#x.N.s.NaY.NaY.N.N.NaY#x.N#IaY#I#x#Iaoaq.8.ybhazb#bn.N.N.7a9#D#s.7a9a9a9.7a9#La9#Lajaf#L#L#Lbp#L#ga2#ga2#ga2#g#ga2#g#ga2#g#ga2#ga2#L#L#L#L.7a9.Ea9a9a9a2#L#La2#g#La2#La2#La2#La2#La2#La2#La2#La2#La2#L#La2#La2#La2a2a2#ga2#g#ga2#ga2bpa2a2#L#L#L#L#L#L#L#L.E#L.7a9a9a9a9a9a9.7a9",
|
||||
".7a9a9a9.n.7a9a9#s#Da9#Da9#D#D#D.7#D#D#DaY.Naw.Naw.NaY.NaY.NaY#s#D#D#D#D#s#D#s#D.na9a9.n.7.7.7#L#g.ja2#g.j#g.j#g.j.3aj#L.7aja9.Ea9a9a9#D.N.s#x#x.Cb#aF.yaZa#a##Sa##SaFamamaOa#aZazazaza7a7bmaFaFa0a0a0bn#IaYaY.Naw.NaYaY.N.N.Naw.NaY.Naw#x.N#x.N#x#I.Cao.5.ya7az.5aoaY.s#D.E#D#Da9.na9.7.na9a9a9#Laf#L#L#L#L#Lbpa2#g#ga2#g#ga2#ga2#ga2#g#ga2#g#ga2#g#L#L#Laf.7#La9afa9#L#L#La2a2#La2#La2#La2#La2#La2#L#L#L#La2#La2#La2#La2#La2#La2a2#L#g#L#g#L#g#La2a2bpa2#g.j#L#L#L#L.7af#L#L#La9.7a9a9.Ea9a9a9",
|
||||
"a9a9a9a9a9a9.na9#D#D#s#D#s#D#s#D#D#D.saY.s#xaY#x#D#M#D.nbl.nbl#Da9.Ea9.7a9.7a9.7#Laj#Laj#Laj#Laj#gas#gas#g#gas#ga2#L#La2af.7#L.7a9#s#D#D.NaYaYboa0a0aOa#a#a#aBbh.GaPa7az#uaS#TalbaaGa7aZaFaoambnaCa0#x#I#D#DaYaw.N.N.s.N.N#D.N.N.N.N#I.NaY.saY#I.N#I.C.8.5.ya7azaOb##x.N#Da9a9#sa9a9#D.na9.7a9.7a9a9.7#L#L.7bp#L#ga2#g#ga2#g#ga2#g#ga2#ga2#ga2#ga2#L#L#L#L.7a9.7.na9.7a2af#L#ga2#La2#La2#La2#La2#La2#L.3#La2#La2a2#La2#La2#La2#La2a2a2a2a2#g#ga2#ga2bp.ja2bpa2#L#Laj#L#Laj.7#L.7.na9a9.7a9a9.7a9",
|
||||
"afa9afa9.na9a9a9#s#D#D#D#D#D#D#D.saY.NaY.Naw.NaY.n#Da9a9a9a9a9#Daj.7#L#Laj#Laj#Laj#L#L#Laj.7bp.7as.jas.jas.jas.ja2.ja2#L#Laja9aja9a9#D#D.Naw.N#x#xa0am#va#a#bmaB#l#0.2.2.2#0ab.4arazaZa#aFa0.W.C#x#x.NaYaYaYblbl.N.N.N.Nbj#Dbj.NaY.NaY.N.NaY.NaY.NaY.Waqao.0#ua7aBaO.Waw#D.na9#Da9.na9a9a9a9a9af.7afa9.7#L.7.7bpa2#g#ga2#ga2#g#ga2#ga2#g#ga2#g#ga2#g#L#L#L.7.Eafa9afa9#L#L#La2#g#La2#La2#La2#La2#La2#L#L#L#La2#La2a2#La2#La2#La2a2#La2#L#g#L#g#L#g#La2#Lbpa2#La2#La9#L.7#Laf#L#La9.7.na9a9a9.na9",
|
||||
"#D#Ma9#Da9bl#M#DaYaYawaYblawaYaYaYawaYaYbl#D#D#s.7af.E#L.7aj.7#L#Lajbp#Lbp#L#L#L#ga2.j#g#g.j#g.j#g#g#g#g#g#g#g#g#ga2a2aj.7a9.7.7a9.na9#M#DaY.Nawbn#UaoaF#v.8am#va6a6ba#V.Z#oab.I.TbmaFaoam.C.C#I#x.s.N.N#D#D#D#DaY#DaYbl.NaY.N.s#D#M#D#D#s#D#D#s#Daw#x.CaC.5bc.yaBaZ#vam.Nbj#Db.#D#D.7a9.7#D#D.Na9a9.7a9#L#L#L#La2a2a2#ga2#ga2a2#L#L#L#L#L#L#L#L#Laf#L.na9a9#D#Da9a9a9a9#L#L#L#La2#La2#L#L#L#L#La2#La2a2a2a2#L#La2#La2#La2#La2#La2a2a2a2a2a2a2a2#L#L#L#L#L#L#L#L#L#L#L#L#L.7a9.7af#La9.7a9bja9#D",
|
||||
"bl#D#D#M#D#Dbl#D#MaYbl.saY.NblawaYaYaY#M#D#s#D#D.7#L.7#L#L#L#Laj#g#L#gaja2aj#gajas.jas#gas#g.j#gas.jas.jas.jas.ja2.j#L#Laf.E#D#Daja9a9#DaY.s#x#IaCamama##uazaz.G#.a..Z#Valarak#aaZ#Sa#ama0#U.C.CaYaY.NawaY#D#D#DaYaY.sbl.N.s.N.Na9a9a9a9#D#D#D#D#s.N.N#I.CaobybcbhaB#vaF.WaY.s.Nbl.s#D.na9#D#DaYafa9a9a9#L#L#L#L#ga2#ga2#gaaa2as#L#L#L#L#L#L#L#L#L#L#La9a9#D.7#D.na9#D#L#L#L#L#L#L#L#L#La2a2a2a2#L#La2#L#L#La2#La2#La2#La2#La2#La2a2#La2#La2#La2#L#L#L#L#L#L#L#L#Laj#L#Laja9.7.Eafaja9a9#sa9#D#D",
|
||||
"#D#M#Dbl#D#M#DblaY.NaYbl.NawaYaYaY#M#D#D#D#D.7afaja9#Lajbp#Lbpbp#Lajbp#Lbpbpa2bp#g#g#g.j#g#gas#g.j#g#g#g#g#g#g#ga2a2aj.7a9#Da9#Da9a9#s#D.s#x#I.Ca0aO#uazal.Y.A.1a.aHaGaz.Ta#bma##SaFaFbgama0.C#x.s.NaY.N.N#s#D#Dblbl#Dbl#D#D#D#D#Da9#D#D.7.E.7a9#D.saY#x.Wa0.8.5#S#uaB#S.5.C#x#x.NaYbl#Da9#D#D.Na9a9.7a9#L#L#L#La2asa2aaa2#ga2a2#L#L#L#L#L#L#L#La2af#L#La9.7a9#Da9a9.7#La9#L#L#L#L.3#La2#L#L#La2#Lafa2#La2a2#La2#La2#La2#La2#La2a2a2a2a2a2a2a2a2#L#L#L#L#L#L#L#L#La2.7#L#L.7af.7a9a9a9bja9#D#D#D",
|
||||
"aYaYaYawaYaYaY.saY#M.NawblaY#Daw#Dbl#D#s#D#La9.7#L#L#L#L#L#L#Lbpa2bpa2aj#ga2bpa2as.j#gas.j#g.j#g#gbp.j#L#gaja2bp.j#Laf#L.7#s.N#sbjb..N#Ibf.Waq.8#vaz#zaHbs.m.B.BauaSa#aFaFbgama0ambga#aFamam.W.CaYaY.NawaY#D#D#D#sbl#D#D#D#D.Nb.a9a9.n.7#La9.7b.#Da9.s.Nbo.C.Cava#aZaBaBaOaOb#ao#x#IaY#D.n#Da9#Da9a9a9#L#L#L#L#La2a2#ga2#ga2#ga2bpa2#ga2a2#ga2a2#La2af#L.7a9a9.7a9a9#D#L#L#L#L#Laf#L#L#La2a2a2#La2#La2#La2#La2#La2#La2#La2#La2#La2#La2#La2#La2#L#L#L#L#L#L#L#L#L#L#Laf#L#La9.7.7a9.7a9#D#D#s#D#D",
|
||||
"aYboaY#x#x#I#x#x#I#xaYawaY.NaYaY#D#M#Da9.7.7aj#L#L.E#L#Lbp#L#L#Lajbp#Lbp#Lajbpaj#gas#g#gas#gas.j#L#Lbp#Laj#gbp#L#Laj.7a9.7#Dbj.N.N.sbo.Caq.8#v#u#3adbe.A#Y#9.PbranaBb#amamaYaYaYa0am#vbmaOb#.C#x.s.N.NaY.N#Da9#D#pa9.na9#Da9.7a9.7a9.7a9.7.7.7.7a9#D#D.N.N#xbo.Cb#aOaF#vbma##vbmamam#xbl#D#D#D#Da9a9.7#Laf#L#L#L#g#La2bpa2#L#ga2a2bp#Lbp#L#Lbpa2#L#L#La9a9.7a9.7a9af.7af.7#L#L#La2#La2a2#L#La2a2#La2#La2#La2#L#La2#La2#La2#La2#La2a2a2a2a2a2a2a2#L#L#L#L#L#L#Laj#Laj#L.7aja9#L.na9#D#s#D#D#D.N.N",
|
||||
"#x#x#x#I#x#x#IbnaYaY#IaYaY#MaY#M#D#D#Da9.7#L#L#L#L#L#L#L#Lbp.E#Lbpa2bp.j#L#g#L#g.j#gas.j#g.j#g#g#Lbpajbp#Lbp#Laj#L#Laj.7.n.N.N.sbf.C.Caoa#.w.ObB.u#.#oa8aMabalanaBa#a#a0#xaYaYaY.Wamb##Sa#b#a0.C#xaY.NaY.s#D#D#D.nbla9a9#D.n.7a9#L#L#L#Laj#L#L.7.E.7b.a9.s.N.N.s.Camam.8aF#vaZ#uaFb##xaYaY#D#D#sa9a9a9.7#L#L#L#La2a2#ga2#ga2a2#g#L#L#L#L#L#L#L#L#La2af.7a9a9.7a9a9a9#D#L#L#L#L#La2#La2#La2#La2a2a2a2a2#La2#L.3#L#La2#La2#La2#La2a2#La2#La2#La2#L#L#L#L#L#L#L.7#L#Laf#L#L#L.7a9.7bja9#D#s#D.N.saY",
|
||||
".CaC.Ca0.Ca0#x.CawaYaY.Nbl.N#D#D#Da9.E.7aj#Lbp#L#L.7#Laj#L#Lbp#Lajbpaj#Lbpaj#Lbp#gas.j#gas#gas.jbpaj.7#Lajbp#Lbp#La9a9#D.N.s.N#x.WaqaO#ubk#zaHbA#Pbsbeab#a#ua#ambm.Fa0bn#xaY.N.s.Nbnb#bmaBa#aC.Caw.NaY.NaY#D#D#D#pa9a9a9a9.7a9#Laj.7#L#L#L#L#L#Lbja9bjbj#D.7.N.Nbo.C.Ca0a##vana7an#Sa0aYawbl#D#Da9a9.7af#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#Laf#La9.n.7#Da9.7afa9#L.7a2#L#g#La2#La2#La2#L#L#La2a2#La2#La2#La2#La2#La2#La2#La2a2a2a2a2a2a2#L#L#L#L#L#Laj#Lafaj#L#L.Eaf.7#La9#s#D#DaY.NawaY#x",
|
||||
".C#xa0#x.W#x#x#x#DaY#Dbl.sblaY.Na9#D#L.7#L#L#Laj#Laj#L#Lbp#L.7#Lbpa2#L#g#L#g#L#g.j#gas#g#g.j#g.jbp.7#La3#La3aj.7.7aj.7#s.N.N#Ibf.8aF.y#3ad.A.MaT.P#V#P#Tan.5.C#Ia0b#bga0#xbf#xbf.N#xa0bm.T#Sao#x#x.NaY#s.N#D#D#D#p.nafa9.na9#L.7#L#L#L#Lbpaja3#L.Ebj.E.7#sbj#sbjbf.s#xavama#aBana7aZbgbnaY#D#D.7.na9a9.7#L#L#L#L#L#L#L#Lbp#L#L#L#L#L#L#L#L#L#L#La2a2#L.7a9a9a9.7a9a9a9#L#L#L#g#La2#La2#La2#La2a2#La2#La2#La2#La2#La2#La2#La2#La2a2#La2#La2#La2a2#L#L#L#L#L.7#L.7afaj#L#L#L.7a9#LaY.Naw.Naw#x#x#I",
|
||||
"aY.saY.NaY#DaY.N.na9.na9a9a9a9aja9a9a9a9.7a9.7a9#Laf#L#Laj#L#gaj#Lajbpaj#Lajbpaj#Lafaj#L#L.7.Ea3#L.Ebj#D.s.N#Db..7.7.N.N.WamamaOakaybs#Y.maDbaaHaga7#SamamaC.C.CaYamb#aFb##xaY#D.n.Nawa0#vaZaZa##xaw.N#Daf.na9#s#Da9a9a9.7af#Laf#La2#g#g#L#Lbp#L#L#L#L#L#L.7.7.7.7bj.N.Caoam#vaZaz.fanama0aY#Ma9aY#D#Da9a9.7.7#D#L#La2#La2#L#L#La2a2a2a2a2a2a2a2.7afa9a9#D.7#D.7af#L#L#L#La2#ga2a2a2a2a2#ga2#ga2a2a2a2a2a2a2a2a2#La2#La2#L#L#L#La2#La2#La2a2a2#La2#L#Lafa9a9a9bja9#D#D#DaY.s.N#x#Ibn#x#x#x#x#U#x",
|
||||
"aY.Naw#D#D#s#D#Da9a9a9a9a9afa9a9a9a9.Ea9a9.na9a9afajaf#La2#L#L#Lbp.7bp.7bp.7bp.7a2a2#Laj.7.E.7.E#L.E#D.s.N.Nbjbj.N.s.N#xa0aO#u#E#V#2....#KaD.YaGa7bmaFaFaoama0.CbnaCb#aOama0.N#D#Dbl#xa0bmaB#ua##x#xaY#sa9.7a9.7#D#D.7a9a9aj#L#L.j#La2bpa2#Lbp.E#Laj#L.E#L.7b.#Db.#D.s#xa0.8a##v.6azbhaOam#xaYbl#Dbl#Da9#Da9.7.7#La2#La2a2a2a2#La2a2a2a2a2a2#La2#L#L#L#D.7a9#Da9#L.3afa2#La2bpa2bp#g#L#g#La2#L#g#La2#La2#La2#La2a2#La2#La2a2a2#La2a2a2aja2#L#La2#Lafaj#La9.E#Da9#s#D#Daw.NaY#IaYaYaYawaYawaYaYaY",
|
||||
"a9a9a9a9.na9a9.na9.na9.na9.na9a9a9.7a9a9.7a9.7a9#L#L#L#L#Laj#L#Laj#Laj#Laj#Laj#L.jbp#L#L.E#L.Ea3.n#D.Nbf.Cbo.Caobf.CamaOaBaz#EaraQ#.#o.Abzay.Gana#aFaFaOamam.C.Wbna0a0b#ama0#I.N#D#M#x.CaoaZbhaBa0#IaY#Da9#s.7a9#sa9#Da9a9#Laf#L#L#ga2#g#L#Lbpbp#L#L#L#L#L.7.7.7.7#D.NaY.Cambga#a7.6#ua#b#aoa0#xbl#D#Da9.7a9#Laf#L#La2#La2a2a2a2#L#L#L#L#La2#La2.7afa9a9#D.7#D.7afaf#L#La2#L#L#ga2a2#ga2#ga2#ga2a2a2a2a2a2a2a2a2#La2#La2#L#La2#L#L#Laf#L#Lafajaf#L#Lafa9a9a9#Db.#D#DaY#DaY.N.N.N.s#D.N#D.N#D#s#D",
|
||||
"aj.7aj.7.7.7.7.7#Da9#Da9a9a9a9.7a9#Da9#s#D#D.n#Da9a9.na9.7.7bj.7bp#L#L#L#L#L#L#Laj#Laj.E.Ebjb..N#MawaCaoaoama0.Cb##va7#a.Oaz#uaZaZanaz#e.6anaZaFaBaOaF.5amama0a0#xaCa0ama0a0#xaYbl.NaY#xa0#vaZ.lama0#x#Mbl#D.7#D#Dbja9.Ea9af#L#La2#L#La2bp.j#Lbp#Laj#Lbpaj.7bj.7#s#D.s#x.Wa0amamanaB.0a##va#bgamaYaY#Da9a9a9#L#L#L#Laf#L#L#L.7#La2a2#La2#L#La2#L#L#L.7a9.7a9#Da9#L.3#La2#L#L#La2bpa2#g#La2bpa2bpa2#La2#La2#La2#La2#La2#La2a2#La2.3#L#La2#Laf#L#Lafaja9a9.7#s#D#D#Da9.s.N.s.Naw#Dbj.7b..7b..7bjbj",
|
||||
"#L#Laf#Lajafaj#Laf.7.7.7.7.7a9.Ea9bja9#D.7a9bja9a9.7a9.7a9.7.Ebjaj#Laj.7.E.E.7.E.7.E#D.s#xbo.C.WaCamb#a#.y.0.yaB.Gazazazbhbma#aFaFa#a#aZaBa#.5.5#SaFambgama0amam#x#xbna0a0aCa0#xaYawaY#Ia0aO.lbh#vb#bnaY#s#D#s#D#Da9#Da9.7ajaf#Laja2bp#g#L#Lbp#Lajbp#L#L#Lbj.7.7#Da9#DaY#x.CaCam.5a#aOa#a##va#a##xawaY#Da9.7#L#L.7af.7#La9#Laf#L.7af#Laf#L#Laf#Laf.7a9.7a9a9#D#Daf#L#La2#L#L#L#La2a2a2#ga2a2#ga2a2a2a2a2a2a2a2a2#La2#La2#L#L#L#L#Laf#Lafa9a9a9a9a9a9a9bj#D#D#D#D#D#D#Da9#Da9#D#s#L.7#L.7#L.E#L#L",
|
||||
"#Laj#Laj#L#L#L#L.7.n#La9aja9#L.7a9#s.7#Da9#Da9bj.n#Da9.7.E#Dbj#D#D#D#Da9#Da9#Da9.N#I#x.Wam.8.5#va#aBaP.G#a.U#4.Uaza7aZa#aFaFbmb#a#b#aFa#.8ama0ama0a0a0a0a0aC.Ca0#I#x#xa0b#a0a0a0aYaY.N.N#Iambm.lbmaFaobnaYaY#Dbj#D#s.7a9a9af#L#L#La2aj#ga2bp#Lbp#L#L#Lbp#L.7.E.7#D#D#D.saY#x.C.CaC.5am#v.5a#.0#va0bn#x.N#D#D.7.7a9.7a9.7a9.7.7a9#L#L#L.7af.7#L.7#L#L.7a9a9bja9#Da2afa2#La2#L#L#L#L#g#L#g#L#g#La2#La2#La2#La2#La2a2#L#L#La2afa2af#L#L#L.7a9.Ea9.7.n.7#Da9#s#D#D.N.N.sbj#sbjb..7bj#Laj#Laj#L#L.7#L",
|
||||
"bjbj.7bj.7.E.7.7.7.7a9.7a9.7a9.7#D#D#D#D#s#D#D#D#D#D#D#D#D.N.s.N.sbfbobf#Ibf#xboa0.8.5#v.yan.w.G#TabaMa8#cabalaZa#aFa#b#b#a0b#b#ama0aoa0a0#x#x.CawaYaY#Ubn#xaYaY#x#x#x.Rbna0a0amaYaY#D#DaY#UaF#GaZ#S.V#UaY.s#Dbj#s#Da9.n.7#La2af#L#La2#g#gajbp#L#Lbp#L#L#L.7bj.7a9#s#Dbl.N#x#x#x#x.C.Cam#va#a#.0aF.8a0#x#x#D#D#Da9#D.7#Da9a9.7.7#Laf#L#L#L#Laf#Laf.7a9a9.7a9#D#Daf#La2#La2#L#L#L#ga2#ga2a2#ga2bpa2a2a2a2a2a2a2a2#Lafa2#L#L#L#L#Laf#La9a9#La9a9a9a9#D.7#D#D#D#D#D.s.Nbja9.7.7a9.E#L.7.7.7.7aj.7aj",
|
||||
".7a9b..7.7bjbj#D.Eaf.7#L.7af.E#L#D#D#D#D#D#D#s#D#D#s#Dbj#D.s.N.N.C#x.C.C.C.W.C.Wby#vaBaz#T#4aH#..ga8bsbr.2al#TaZaFaFb#b#ama0a0a0.Cama0#xaY#x#x#xaYbl.NaYaYaYblaYbf#x#x#xbna0a0aobn#xaw#D.sa0.t#SbmbmaOa0#U.N#D#D#D#D#Da9a9#Laf#L#L#La2#L#g#L#Lbpa2ajbp#Laj.7.7.7#Dbl#DaY.N.N#Ibf.Naw.Cao.5.5a#a##va#ama0bf#D.N.N.7#Da9#D.7a9.7a9#L.7#La9#La9#L.7#L#La9.7a9bja9#Da2af#La2#L#L#L#L#g#La2bpa2bpa2#La2a2#La2#La2#La2#L#L#Laf#L.3#Laf.7a9af.7a9a9.7a9.7#D.n#D#D#D#D#Dbjbj#Dbj#s.7.E#La9.n.7.na9.7a9.7",
|
||||
"#Laj#Lafajafaj#La9#D#s#D#D#D#DaYaYaYawaYaY.NaY.N.C.C#x#IaYaY#M.namav.8.5#v.0.w.G#aau#4#4#z#3.Ga7#Z#0aM.gaTayaZa0a0a0a0#xbn#x#U#xawblawaY#D#M#D#D#D#Da9#D#sblaY#Mbl#Mblbl#DaYaYaYa0#IaY.N.NaY#Ua0.t.tbm.Fam#x.Nb.#Da9a9.7af#L#La2aj#L#L#L#L#Laj#L.7#L#L#L.7#L.7af.7.7a9.7.n#D#D.NawaYaY#x.CaCamao.0a#aB.0.taFb#.VaY#Da9a9af.7#D.N#Laf#L#L#L#L#Lafa9a9a9a9a9.7.7.7a2#La2a2a2a2a2a2a2a2a2a2a2a2a2a2#g#L#ga2a2#ga2a2a2a2a2a2#L#Laf.7#pa9a9a9#Dbj#D.N.na9a9a9b.#D#D#D#D#s#D#D#D#s#D#D.n.7#L#L#Laj#L.7",
|
||||
"aja2afaj#L.7.7#L#sa9#D#D#s#D#D.N#D#D#D.N.N.N.N#DaY.N#x#xaCamb#aF#SaZanaz.Galba.4.O#aaz#uaB.0aBan#Tbz.mab.2az.5#xa0bnaYaYaYaYaYaY#DaY.NaYbl#D#D#D#D.n#D#Dbl#Dbl.Na9bl#Dbl#DawaYaYbnaYaY#D.s.N#xaCbm.Fbm.tb#aC.N.Nbl.na9a9aj#L#L#L.7#L.7#L.E#L.7#L#L#L#L#L#L#Laj#La9aj.7.7.7#D.N#D#Dbl.N#xbn.Ca0ama##va##v#vbm#vaF#x#x#Da9a9#D#D#D#L#La9#L.7af.7#L#pa9afa9.7#D#La9#La2a2#La2#La2#La2#La2#La2#La2#La2#ga2a2bpa2bpa2a2a2a2a2a2#La9afa9.na9a9#D#D#Dbja9.nbj#D#D.NaY.saY.Nbl.sblaYaY.Na9.7#Laj.7.7#L.7",
|
||||
"#Laj#L#Laja9.E.7#La9.Ea9#D#D#s#Db.#D#D.Nbo.Caqaq.bbnbga#aZaS.G#q#t.HaQauaGar#a#a#vaOaF.5b#.8#vaB.2.A.1aDaka#amaYaYaYaYaYaYaY#D#D#D#D#s#D#D#D#D#D.7.7a9#D#D#D#Dbla9a9.n#D#D#D#Dblaw#xaw.N#DaYaYbnb#aF.taOb#.C#I.Na9a9.7a9a9#L.7#L#L#L#L#Laf#L#L#L.n#L#L#L#L#L#L#L#La9a9.7a9.Ebj#D#D#D.s.N#x#x.W.Ca0amamaFa##vbmaBb#bnaY#D#D#Da9bjaf#L#L#Laf#L#L#La9a9a9a9a9a9.7.7a2af#L#L#L#L#L#L#L#La2#La2#L#L#L#L#L#L#L#L#L#L#La2#L#Laf#La9.7a9a9afa9a9bj#s#D.Nbl.NblaY.NaY#xaYawaYawaYbl.sbl#M.7.E#L.7#L.Ea3.E",
|
||||
".7.7.E.7.Ebj.7.7.n.7a9.7#s.N.N#DaY.N#x.Cam.5a#aZaF#SaZa7arala6ay#W#W#kbhbmaFa#.5#x#x.CaCaoamaOaB#P#obsba#uam.C.NaYaYaY#D#D#D#D#Da9#Da9#D.7#Da9a9#La9.7.7a9bl#s#Da9a9a9bla9bl#D#DaY.NaYawaYaY#IaYa0aCb#.Va0a0#U.N#D#Da9.7a9.7aj#L#L#L#Laj.7#L#L#L#L#L#L#L#L#L#L.7#L#L.E#La9.7.7.7#D#D#DaY.s#x.C.C#x#Ia0aCama#a#aZa#.8a0#xaY#Da9af.7#Da9#D.7#Da9#Dafa9afa9.7a9#La9#L#L.3#L.3#L.3#L.3#Laf#L#L#L.3#L#L#L#L#L#L#L#L#L#L#L#L#La9.7a9a9a9#D.na9bl#DaY#s#x#x#x#Ia0#I#x#xawaYblaw.NaYaYaY.7#D.7.Ebja3.7.7",
|
||||
"#Db.#D#D#s.N.s.NaY.Naw.N.NaYbo#xa0b#a#bmaS#aa6.Kbaba#a.faZaFb#amb#b#ama0.C#xbf#xbobf.NaY#xao#v#u.q.qaGanamaYaY#DaY#sbl#Da9.7#L.7.7.E.7a9.E#L.7.E#L#L#La9.nbjbl#Da9a9.7a9.7#D#D#DblaY#xaYaY#IaYaY#xbna0bnbna0aCbn#sbl#Da9.7af.7a9#L#L.7#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#La9.7af.7a9aj.7#D#D.N.Nbo#x.Nbl#Ia0am.5aO.0aB.0b#.CaYbla9a9a9.7a9.7a9.7a9a9a9#pa9a9a9bj.7.7#L#L#L#L#L#L#L#L#L#L#Laf#L#L#L#L#L#L#L#L#L.7#La9#Lafa9bja9#D#D#D#Dbl#DaYaYaYaYaY.C#xama0.CaC.C.C#x#xboaYaY.NaY.N#s.N#D.N.s.NaEaW",
|
||||
".N.N.s.N.Nbf#xbfaCa0a0a0a0amam.8aZbhazaGau#j.e.e.6ana#.5ambn#xaY#I#x#xbo.N.N#saW#x#Ibfaw#x.5aZ.G.q.KaBam#xaY.s#D.7#Da9.7.E#L#L#L#Laf#L#L#L#L#L#L#Laj#L#L.7#Da9#Da9.7a9#D#D#Da9#D#DawaY#IbnaYaY.Naw#xbnbnbna0bna0aY#D#D#Da9.7#L.7#L#L#L#La9#L#L#L#L#L#L#L#L#L#L#Laj#L#L#L.n.7.7.7#La9.E.7#D.N.N.N#saY.N#x.Wa0.5aF.0aZ#v.5a0aY#Da9.7#Da9bja9#D.7#Dafa9afa9.7a9#La9#La9#La9#La9#La9#La9#L.7a9af.7af.7#L.7.7#L.7af.7.7a9.7#D#D#D#D.N.saYaY#x#I#xbnbnaOaoaoamaCa0a0bn#Ibn#x#x#x#x#I#x#xaYboaY.N#xbf#x",
|
||||
"#x#xa0.CaCa0aoa0aFa##v#vaZ#uaZaZarazazanbmaF.5a0.C#x#x.N#D#D#D#D#D#D.Nblbj#D.N.sbf#x#I.CbgaBaz.2baazaF#x.n.7#Dbla9.7.7#L#L#Lajbp#L#L.E#La9#L.7#L#Lbp#L#L.7#L#D.E#L#L.E.7.7.7.7#Dbj.N#xbna0#I.N#DaYawbna0bnbn.V#U#D#D#D#D#D.7a9.7#Laja9#Laj#L#L#L#L#L#L#L#L#L#L#L#La2#L#L#L#Laf.7#L#L#La9.7#s.N.N.7#D.N.N#x.CaCaq#vaZaBa#aF#xaYbl#D#D#D#D#D#D#D#Da9a9a9a9a9a9.7.7#L#La9.7a9a9#L#L#La9a9a9.7a9.7#L.7af.7af.7a9.7.7#D#D#D#D#D.N.NaY#x#x.Ca0b#ambgamaOb#aCa0.C#I#xaYa0a0#xbn#x#xbna0aCa0a0a0ao.CaCaq",
|
||||
"aoa0aoaO.5.8aFaO#u#uaSazaG#3araza#a#amam.C#x.s.Nafaf#La9bjaWbfbf.N.NaY#xawaYaYaY#x.C#xaCamaB#aaT.GaF.C#D#La9#L#D.7#Laj#L#Lbpbp#Lajaf#L#La2#L.j#Lbp#L#Lbpa9.7#Da9.7#La9#La9.7a9.7#Dbl#xaCbn#xaY.s#D.N#Ubnbnbnbna0bl#D#D.7a9.7#L.7a9#L#L#L#L#L#L#L#L#L#L.7#L#L#L#L#L#Laj#L.7#L#L.7a2.7#L.7.7#D.N.Nbj#D.s.N.N#I.Ca0aFaZaBaZ#vam#xaY.7#Da9#D.7#Da9#Dafa9afa9.7a9.7a9#L#Lafa9#La9#L#La9af.7a9a9a9afa9a9#L.7.7a9#L.7af#D#D#D.N.N.NaY.s#xama0.8aF#Sa##va0a0a0#xbnaYaYawbn.WbnaCbnaCa0aCaFb#aO.5aOaF.8aF",
|
||||
"aZ.ya#amaoaFaB.Taka6aGaraBaFa0#xbnaYaYaw#D#Da9#D#L.Eaf.7a9aj.7.7aja9.n.7#D#D.sbfaw.N.Wam#v.w.Ga7.C#IaY#D#s.7.n#Laja2#L#ga2#ga2#g#L#Lajafaj#L#L#Laj#L#L.na9a9.na9a9a9.na9a9#L.Ea9a9#saYaY#x.C#x#xaYbn#x#U#x#xa0aCbn#D.7#L.7a9a9#paj#L#L#L#L#L#L#L#L#L#L#L#g#L#L#L#L#L#L#L#L#L#L#Laj#Laf.Ea9.7.7a9#Da9#D#D#DaY.NawaY.pa#.0.0a#ambn.N.N#D#D#D#D#D.7a9af#L#L.7#L#L#L#L#L#La9a9.7a9#Da9a9#Da9bja9bj#D#D#D#D#D#D#D#D#D#s#D.saY#xbn.8aFaZaBaZa#aFama0aqaC#x.N#MaY#x.Ca0aFb#b#amamb#.5aFaoaOaFaOa#bmaZ.y",
|
||||
"aZa#aOa##v#vaB.T#4#z#a#uaFa0aC#xaYawaYbl#Da9#Da9.7a9.7#L.7a9.7a9af.Ea9.7#s.N.N.N#D#Ia0.8a#bkaraZ#IaY.s#D#Da9.7#Lbpa2bpa2#g.j#ga2ajaf#L#L#Laja2#Laf.7#L.7a9.7#Da9afa9a9a9a9.7a9#La9#Dbl#x#x#I#x#xawaY#U#xbn#Ia0.CbgaYa9#L#L#Lafa9#Laj#Lbp#Lbp#Lbp#Lbp#L#ga2#g#La2#L#L#Laj#Lbpaj#L#L.7#La9.7.7a9.7.E#D#D#D#D.saY.N#Ua0#va##S.0aOamaY.N#D#D#Da9#D#Dafa9a9af#L#L#L.7af#Laf#La9#Da9.7a9a9.7#D#D#D#D#Da9bja9a9#D#D#s#D.N.N#x.Ca0aoaF#vaZbmbmaOa0.W.C#x.C#xbl.NawaY.CamaCamaCamamambgamb#.5aOa##Sa#.yaZ",
|
||||
"#vaFaO#v.ybmaZazbaauazb#a0#x#xaYaYaY#D#sa9#D.E.7aj#L.7aja9aj#L.7aja9.n.7#D#D.sbfaY.WaCam#u#3a7aFaYaY#D#D.n.7ajafaj#gaj#g#L#g#Laj#L#Lajaf#Laf#Laj#L#L#La9a9#Da9a9.na9a9.7.n.7.7a9.na9aY#x#x#x#x#xaYaY#x.R#IbnbnaC.t.VaYa9.7aj#L#L#Lbp#L#Laj#La2#L.j#La2#g#g#g#gajbp#Lbp#L#L#L#Lbp#L#L#L.7a9.7.7.7a9#D#s#D#DaY.NaYaYa0ama#a#.yb#a0.N.N#D#Dbj#D#Da9a9a9.7a9bja9.7.7a9a9a9#D.7#D#D#D#D#Da9#Da9#D#D#Da9a9.n#D#DblaYaY.8b#.8aOaFaOaFaOb#bgama0#x#x#x.N#U#x#I#x#x#xaoama0bna0bnaoam.5amaOaFaFaF#va##vaZ",
|
||||
"aOaOaF#va#a#az#faS#ubmb#a0#xaY#Dbl.n#Da9a9.7#L#L#L#L#L#L#L#Laj#L#L.Ea9a9#s.N.N.s#x.Wb##v#Ebk#va0aw#D#D#Da9#L#L#Lbpa2#L#ga2#ga2#g#Laf#L#L#Laj#Laf#L.7#L.n.7#D.na9a9a9a9a9a9.7a9#La9#sbl.NaY#xaYaYblaYaw#x#x#x.C.C.Fb#bnbl#Da9.E#L#Laj#L#Lbp#Lbp#Lbp#Lbp#L#g#L#g#L#Laj#Lbp#Lbp#L#L.7#L.n#L#L.7af.7#Da9#D#D#D.NaY.saY#Ibn.5a#a#aFambf#x.NaY#D#D#D#Da9a9a9.7a9.7.7#L#D.nbj#D#D#D#D.Na9b.bl#Daw#xaYaYaYaYaY#Ia0a0aoam#uanaBa##vb#bgb#bnbnaYaYaYaYblaw#x#x#x#Ua0.Wa0a0.W.C.Wama0ambg.5aFaFa##va#a##va#",
|
||||
"b#ao#vbmaB#uaz.Gb#b#ama0#xaw.N#D#Da9a9a9.E#L#Laj#L#Laj#L#L#L#L#L.Ea9.n#D#D.N.N#x#Iao.5#u.Oazam.C#Dbl#sa9ajaf#La2.jbp.j#L#gajbpaj#Laj#Lajaf#L#Laj#L.n#La9a9a9a9#D.na9a9.Ea9.n.7a9a9#DaYaw#x.sbl#D#sblaYbl#I#x#Ua0b#bgb#bn#D#D.7#Lbj.7.7.7.7.E.7.7#L.j#La2#g#L#La2bp#L#Laj#L#Laj#L#L#L#L.7af.7.7.7a9.7#D#D#s.Nbl.NaYaY.CaCby#va#.8#xbfaY.N.s#D#Dbj#D#D#D#D#D#D#D#D#D#D#D#D.Naw.NaY#D.NaYaw#x#xa0aoamamaFaF#v.0bbanaBaZ#vaFb#am#x#xaYaYaYaY#IaY#D#D#x#x.Ca0avamama0.C#x.Ca0aoamaFa##uaZaBaZ.y#S.0.y",
|
||||
".8aOa##Sazar#ua#a0am#x#x#x.N#D.7.na9#L#L#Laj#Lbp#L#Lbp#L#Laj#Laj#La9.7.n#D.sbo#x.Wao#v.f#f.ya0bf#M#D#Da9a9#L.ja2#La2bp.j#L#ga2a2#Laf#Laf#Laj#Laf#L.7aj#Da9b.bl#Da9.na9a9a9a9.7.n#D#MaYbfaYaY#Da9#D#D#Daw.NaY#x#Ib#b#bg.VaYbl#s#L.Ebj.7b..7.7.7.7#Lbp#Lbp#L.jbp#L#L#Lbp#Lbp#Lbp#L.7aj#La9.7a9#L.7a9#s#D#D#DaY.Naw.N.s.CamamaOa#a#.W#xbf#xaY#D#D#Da9#Da9#Da9bj#Dbj#D.N.Naw.N#x#xbfaYaw#x.Ca0a0aFbma#aBaZbbaZ#uaZ.0bgb#a0am#x#x#xaYblaY#MaYaY#Dbl#DaY#xaCamamaoaqaC.C.Wamao.5a#a#.yaSazaZ#uaZ.yaOaF",
|
||||
".5aF#Sbhaza7aFa0a0bn#xaw.N#D.7.7af#L#L#L#La2#L.j#g#Lajbp#Lbp#Lbpaja9.n#D#s.N#I#I.WaF#uarazaF.W.Nbl#D.n#Laj#La2a2aj#g#L#g#L.jbpaj#Laj#L#Lajaf#Laj.7afa9.na9#D#D#Ma9#p#s#D#sa9.na9#DblawaYaw#Da9a9#D#D#saY.Naw#x#xaCb#.VaC.V#xaY#Dbj.nbja9bj#s.7.7aja2#L.j#Lbp#La2ajbp#L#L#L#L#L#L#L#L#L.Ea9.7.7a9#D.7#D#D#D#DaY.N.N.N#I.CaoaFa#aB.C#x#xbf#x.N.NaY#Dbl#D#D#D.N#D.NaY.saYaY.C.W.C.W.Caqa0.8a#aZaBan#u#uan#Sa#b#ama0bnaY#xaYaY.NaY.N#s#DaY#DblaY#Dbl#I#xam.8.5aOam.Cama0aoaFbmaBbha7#a#ea7an.y.yaF.8",
|
||||
"bc.y.wara7b#a0aoaYaYaYbl#Da9.7.7#Laja2#L#g.j#g#ga2bpa2bp.jbpaj#Laf.Ea9#s#D#I#I.C.WaOaz#EaZb#.C.N#sbla9afafaj#L.j#L#g#L.jbpa2bpa2#Lafajaf#L#L#Laf.E.7.n#Da9#D#sbl.n#D#M#s#D#s#D#s#DawaY.NaY#Da9.n#D#D#D#DaY.NaY#I.CaCam.Vb##U#xawa9bj.7b..7bj.7bj#Laj#Lbp#La2#L#Lbp#L#Lbpaj#Lbpaj.7#L.7af.7a9.7.Ea9#D#D#s#D.N.saYb..Nbf.Wa0aF.0#ua0.W.C#Ibfaw.NaY#saY.N.N.N.N.N.N.N#xaY#I#x.W#x.C.Wam.8aZ.waz#ubha#aFaFb#ambn.bblawaY#MaY.N.s.N.N#D#D#D#DaY.saY#I#xaCam.8aFbyaoaCaoamama#a7azararaya6.G.Gaz#u#v.8",
|
||||
".J.far.laobn#xaY#D#sa9#D.7a9aj#L#L#L#L#L#Lbp#Laj#g.j#ga2#L#L#Lbp.na9.7#s.N#I.Caobh#EaBaCbn.s#IaY#Ma9.n.7#L#L#L#Laj#Laj#L#Laj#L#L#L#L#L.7aja9.Ea9bl#M#D#M#DblaYblaYawaYaYawaY.NaYawaY#Mbl#D#D#D#Da9.n#D#s.Nbl.saY#x.RaY.N#xa0aFbm#IaYaY.N#s.7.E#L#L#La2#L#L#Lajbp#L#La2#L#L#L.7#La9a9a9.7#L.7.7.7#Da9#D#D#DaY.N.NaYaY#Ia0.5.8a#an.0.5bn#xbl.N#x.C#Dbl.sblaY#I#x.W.R#Ibna0aOa##vaZazararaz#ua#aFaO#x#I#x#Ibn#x#xaYaYaY#DblaY#Dbl#Dbl.NblaY.NaY#x#xaoaobnaY#xaCa#.0aOaOaOaFaFaFaFaF.l.Ta7bh.G.G#q#e",
|
||||
"araza7aFam#xaYawa9#Da9a9a9#L#L#L#L#Lbp.j#L#La2#Las#ga2#gbp#Laj#L.7.7.n#D#M#xaCaFbk#iaOaC#xblaY.Na9a9a9afaja9aj#L#L#Laf#Laf#Laf#Lajafaja9#L.7a9.Ebl.n#D#M#DawaYawbn#Ubn#I#x#I#xawaYawaYaY#D#s#D#D#D.n#D#DaY.s#x.N#U#IawaY#xbna0aF#x.W#xaw.N#D.7b.afajaf#L#Lbp#L#La2#L#L.E#L.7a9.7a9a9.na9.7a9.7.7#D#s#D#D#D.Nbl.Naw.N#x.CamaF.0.y.yaF.CaYaw#x.Caq#Ibn#x#x#x#xbna0aoamaF#vana7.wazaZan#uaZaOamamamaY.RaYaYawaYaYaYaYblaY#D#Dbl#DaY#DblaY.N#xaY#I#xbnbnawaYbnam#va#ama0a0aoamamaoam.taFbmaZ.6ar.2#4",
|
||||
".faBb#a0aY#xbl#Da9a9#D.E.7#L#L#L#g#ga2#g#g#g#g#g#g#g#ga2#L#L#L#L.n.7a9a9.N#Iam.8#f.Gb#bn#UaYaw.Na9.na9.7af#Laf#Lajafaj#Laj#Laj#Laf#Laf#L.na9a9#D#Mbl#M#DawaYaw#x#I#U#x#U#Ibn#I.NawblaY#s#D#D.N.sa9#s#D#M.NaY.s#xawaY#D.s#D.Nbnama0a0aC#x#xbl.NaY#La9#L.E#L#L#L#Laj#L#L#La9.7aja9a9a9a9#D.n.7a9.7#s#D#D.Naw.N.NaY#Dbl#I#xaC.5#va#aBaFa0aC.C.Caoa#ama0a0ambgaF#va##uan.w.wan.wanaZ#vaFb#ama0a0#x#xaYbfaY#xaY.Nbl.Nbl#D#D#Dbl#D#D#D#DaY#saY.N#x#x#xaYaYaYaY#Ia0bg.5bn#xbn#xbna0a0amaCb#ao.t#SaZar#a",
|
||||
"aFama0aY#xaY#Da9#D#Da9a9#L#L#L#g#ga2#gbpa2bpa2bpa2#ga2#gbpajbp#L#Da9.7#saYaY.W.5#EaraFa0#U.NblaYa9a9a9ajaf.E#La2#L#L#L#Laf#Lafaj#Lafaja9#D.n#D#D#s#DblawaY#I#x#Ibnbn#I#U#x#IaY.N.Rawbl#D#D#D.s.N#D#D.saY.saY#I#x.N#s#s.7bj.N#xa0aob#amaoa0#I#xaY#D.na9.7a9bpaj#L#L#L#La9.Ea9#D#D#D#D#D#D#D#Dbj#DaY.Nbl.N.N#x#xbfaw.NaY#xama0aOa#aBa#bgama0.5a#.0aFaOaF#SaZan#ua7bhazaBbhaBa#aFb#b#aCbnbn#x#xaYaw.Nblaw#D#Dbl#D#D#s#D#p#Da9#D#D#Dbl#DaY#x#xaw#x#xaY.NaY#x#x.C.C.CawaYaw#xaw#x#Ibn#x#Ua0a0amaFbmbm",
|
||||
"bn#xaYaYaY#Ma9af.7.n#L#L.7#L#ga2bp#ga2#g#ga2#ga2#ga2#L#L#L#L.7.7#s#D#s#D.N#xamaoaS.OaBam#xaYaw.N.na9a9#Laf#L#La2ajafaj#L#Laj#Lafaf.na9a9a9bl#D#Mbl#saYaw#x.b#x#x#U#Ibn#I#xawaY.saYaYbl#D#D#D.N#D#M#sblaw.N#I#x#I#D#sbj#Db..N.N.Camamb#am.pa0a0bn#D#Da9.7.7aj#Lbp#L#La9.7a9a9#s#D#MaY#D#Dbl.saY.N.N.N.s#x#xbf#I#x.NaY#I.CaCamam#vaBbm#SaF#va#a#aB#ubh#uanaBaBbmaZ.FaFb#b#a0aCbn#I#x.RaYawaYawaY.N#D#D#D#D#D#D#D#Da9#Da9#Da9#Da9a9.saYaw.Naw.N#xaY.N#x#xaY#xaC#xaYblaYaYaYaYaYaY#xaYblaY#Ua0a0.Vbn",
|
||||
".NaY#D#Da9a9a9#La9.7.7#L#L#g#L#ga2bpa2bpa2bp#gbp#g#Lbpaj#L.7.Ebjbj#D#Dbl.s#xaoa##TalaBam#x.NaY#Da9a9a9af#L#L#L#L#L#Lafaj#Laf#Lajafa9a9#p.n#D#M.NblaYaYawaY#x#I#x#Ibn#U#Ibn#I.NaYawaY#sbl#saY.s.N#sbl#s.NawaY#I#x#I.N#D#s#D.N#Ibnaoa0#Ia0a0b#aoamaw.N#Da9.7#L#L#L.7.n#L.7#s#DaW#DaYaYaY#I.NaY.N.N#I#x#xbf#x.C.C.C#x#I.Ca0amama#a#a7azaza7aZaB#uan#uan.laZ#SbmaFaF.V#Ubn#UaYaYawaYaYawaY.NaY.N#D.N.n#Da9#D.n#D.7a9#Da9bj.nbja9#s#DblaY#D#x#xaYaY#x#M.N#x#I#x#x#xaY#Dbl#DaYaYaY#xaw#x#IaYaYaY.baYaY",
|
||||
"#D#D#Da9a9#Lafaj#L#L#Laj#Lbp#ga2#g#ga2#g#ga2#ga2#g#L#Lbp.7.7.7#D#D#s#D.saY.C.8aB#4#zaZa0#xaYaw#Da9.na9#L#L#Laja2#Laj#L#Lafaj#L#L#p.n#pa9blblaYaYawawaYaY#I#x#x#Ibn#Ibn#I#x#U#x#IaYblaYaY.Nbl.saY#s#Daw#Dawbf#I#x#I#x.s.N.s#xa0aC.C.Ca0.CaCa0ambg#x.N.s#D.7aj.7aja9.7a9#sa9#D.s.NaYawaYaYaY.NaYaYbf#x.C#x.W.C.Caqavaqa0ao.5#va##vaS#W#aazazanbm#SaFaFa#aFaOaFbgb#aCbnbnaw#x#x.N.N#sbl#D#s.N.N.N.N.7.7.7.7.7.7a9.7.7.7a9.7a9.7.7.7aY#DawaY.NbfaY#x.NaY#x#x.C.WaY#D#M#DaY.NaY#x#x#x#x#x#xaYaY#Da9#D",
|
||||
"a9.7.7.7afaj#Laf#L#L#L#La2#La2#gbpa2bp#g#L#g#L#g#Lbp#L#L.7.7.7bj.s#D.NaY.Nao#v.QaD#za#am#xaY.N#D#pa9a9ajaf#Laf#L#Lafa2#La2#Lafaja9#p.na9#MblawblawaYaY#I#x#I#x#x#Ubn#Ibnaw#x#IaYaYawaY#M.saY.N.s#D#M#D.s.Naw#x#I.W#x#I.s#x.W#Ua0.Cava0.W.Ca0a0a0#I#IaY#D.7#L#L#La9.E#D#D#D.N#D.sbnbn#x#x#x#x#I#x.C#x.W.Caqamavam.C.5.5aFbya#.y.0.Gakar#e.TaBaFaF.5aFaOamb#a0aoambn#Ua0.C.Ca1bfbf.Nbl.N#D.N.N.N.Na9aj.7af#Laf#L.Eaf#L#L#L.7.n.7.n#DaYblbfaYaY#x#x.s#xbo#x.C#x.Na9#D#DaY.N#x#IaY#xama0bn#x#D#D.7#L",
|
||||
"#Laj#L#L.7#L#L#Laj#L#Lbp#g#g#g#La2a2a2a2#ga2#L#L#L#L#L#L.7a9.7a9#Da9.s#Iama##u#.bA.faFaYawaYaYbfa9a9afa9#L#L#Lajafajafafajaf#Lafafafa9a9bl#Dbl#s.RawaYaY.R#U.R#Ubn#Ubn#Ibn#U#x#x#M#D#D#Daw#D#s#DaYaw#s.n#D.s#I.Caoaoam.8.5aO##am#va#byaFbcaqav.CaFaOaFaC#x.N.saW.N#D.N.s.N#I#xbn#U#xaw.R#x#xbna0#U.Vamb#b#aFa#bmaBaZ#vaZ#v.0aB.yaFaO.5bgamamamaobn#U.C#Ua0aCbnbnawaY#MaYblaY.saY.7.n.7.na9.E.7.7#La9#Laj.7#L.7af#Lafaja9a9a9#Da9.Nbl.Naw#x.s#xaY#x#xbn#x.baYaY#Da9.na9#DaY#x#x#x#IaYaY#sbla9.na9",
|
||||
".7af.7#Lajaf.7#L#Lbp.j#L#g#L#g#ga2#ga2#g#La2#L#Laj#L#L.7a9.7.n.7#sbl.NaYaoa#azbAa6a7am.RaYaYaY#xafa9a9af#Laf#L#L#Lafaj#Laf#Lafajafaja9.n#D#M#DaYaw.R.RaY.baY#UaY#Ubn#UaYbn#x#I#x#M#D#M#D.s#D#s#D.s#Dbl#s#s#MbfavaCbgaCaoaC.5ao.5#vaOaOam.8.8amavb#b#aoaC#xaw.N.N#s.s.NaYaw#xbnbnaCa0a0a0amamaoaFaFaFa#.yan#u.G.6aBaBbmaO.5b#.5b#amaoa0a0amaCa0a0aY#xbn#Ibn#Ibn#IblawaYaY#M.Nbl.N.n.7a9.7a9.7afa9.7aj.7#L#L#L#L.7#Laf#La9a9#D.7#D#s#DaYaY.NaY#x#xbn#x#x#U#xaYawaYa9a9a9bl.NaY#x#x#xaYaYbl#Da9.7a9",
|
||||
"#L#L#L#L.7#L#L#L#La2#L#L#ga2#g#L#ga2a2a2#ga2#L#L#L.7#Laf.E.7.7#DawaY#I.CaoaBazbaaSa#.VbnawaYaY.N#pa9afa9a9#Laja9af#Lafafajaf#Lafa9#pa9blblbl#MaYaYaYaw.R#x#UaYbnaw#x.R#I.R#I#x#xaYaw.NaYaw.N.N.s#D.s.saw#I.CaoaoaO.F#vaOaO.8#vbc#va#aO#vaO.5.8aCaFaO#SaOaOao#I#x#MaYawbnbnaCa0b#a##va#a##vaZaZ#uazazbh.Galay.2alaFaOaFamaCa0aC.C#I#x#x#I#x#xaY#IaY#I#x#I#x#x#I#xbl#D#M#D#D#s#D#D.n.7.n.7.n.7.7.Eaf#L#L#L.7aj#L#Lajaf#La9.7a9a9.7bl#DaY.NaYaY#x#xaCa0#x#xbnawaY#D#Da9#D#DawaY#x#I#xaYaY#D#Da9a9a9",
|
||||
".7#L.Eaf#L#Laj#L#L#L#g#L#g#L#g#g.ja2a2#ga2bp#L#L#Laf#L.7.7a9.7#Dblaw#x.W.5az#aalaZb#a0bnaYaY#DaY#p#Da9afa9a9#L#Laja9aja9#La9aja9.na9#sbl.n.NblaYaw.R#xawbnaY#U#U#x.R#Ibn#I#x#I#xawaYaY.saY.s.N.N.s.saw.W.Waobc.yaBaB#u#S.y.y#va#aB#u.Qaz.waBaZ.yaZaB.0aBaB#vaO.5bn.Vb#am#Sa#aB#u.wbhazazbh.waz.GarazaSaz#a#a#a#ea0a0#Ubn#x#I#x#xaY#MaYblblawbl.NblaYaYaY#U#IaYaY#D#M#D#s#D#D.n#D.7a9.7a9.7a9.7a9#L#L.7af#L.7af.7af#L#L.na9a9bja9#D#D#DawaYbfaw#xbna0#x#UaYaYaYbl.n#Dbl#DaY.N#xaY#xaYaY#D#Da9a9.7",
|
||||
"#L#L#L#L.7#L#L#L#g#ga2#g#g#ga2bpa2#ga2a2#ga2#L#L.7#Laja9#La9#sa9.NaYaY.Wambk#zaraFamambnaYblaYbl#Dbla9a9.7a9.7a9a9.7a9a9.na9a9a9#Da9bl#DblawaY.N.RaYbnbnbn#Ubnbn#I#U#x#x#x#I#x#Ibl.Naw.NaYbf#I#x.s#x.WamaO.y#uazal.U#z.U#T.G.GaP#Tal#z.U#3al.Ualal#T.G#T.G#e.w.wa7#ua7a7aS.G#e#TaS.w.wanaz.wazaS#vaOa##va#aFaFam#UaY#xaYaY.NaY.s#D#D#D#s#D#D#D#s#D#saY.saY.NaY#sbl#D#M#D#D#Dbj#D.n#L.E#L.E#L#L#L.E#L#Laj#L#L#L#L#Laf#La9.7#Da9#D#D#DblbfaY.N#xaY.C#I#x#xaYaYaY#Dbl#D#D#Dblaw.NaYaYaYaY#D#pa9#La9",
|
||||
"#L#L.7aj#L#L#L#L#g#L#gbpa2bpa2#ga2asa2#g#La2#L#L#L#L#La9.7.7#D#sbl.N#Ia0#vaz#z#eam.Va0bnaYaYaYaY#Dbl#D#Da9a9.7.7a9a9a9.7#Da9#sa9bl#sbl.sbl.NblawaYbn#Ubn#Ibn.C#Ubn#x#U#x#I#x#IbfaYaw.NaY.N.saYboaYaCam.y#u#aau#4aH.4#..4aHbrbw#0.2bw.2aT.2ay.YaH#4#zal.o#T#Tal.U#aar.G.Ga4aPa4a4.ya#aZ.ya#a#a#aOa0bnaCbnaCbn#I#xblaYaY.s#D#sa9#Da9.na9a9a9.na9a9#D#D#D#D#s#D#s#D#D#s#D#D.n.7.E.7.n.7#La9#La9.E#Laf#La9#L.7#L.7afaj#L#La9a9.n#D.7bl#D#DaY.NaY#x#xbn#x.R#xaYaYaY#DaY#Dbl#D#D#DaYaYaYaYaY#D#Da9a9a9",
|
||||
"#L#Laf#L#L#L#L#La2#ga2#g#ga2#g#La2a2#ga2#ga2#L#L#L.E#L.7.n.7a9#D#D#I#xaoby.w#zaSa0aCa0bn#x.Rblblbl#D#D#D#D.7a9.Ea9.7a9a9.n.7a9a9#sbl#DblaYaw#x#x#xa0#xa0a0a0aCa0#I#U#x#I#x#I#xawaY#x#I.Nawbf#x#IaCbgaBaza6aT#P.uaybaay#3#aar.Gazaz.Gazaz.Gar#aa6.w#u#uaBaZaB#uazazazaS.0#S.0aFa#am.5aoa0am.Wam.C#I#x#x#I#x#I#xaw.N.N#s.N.N#Dbj#s#D#D.7.7.7#D#s.7a9.Ea9a9a9a9a9a9#s#p.na9bj#Dbjbj#Lajafaj#L#L#Laf.E#L#L#L#Laj#L#Laf#Laf.7a9bja9#D#D#DawaY#x.s#xaY#x#x#x#IaYaYawaYbl#D#D#DblaY#s#DaYaYaw#D#Daf.7af",
|
||||
"#L.7#L#L#L#L#L#L#L#gbpa2bp#g#L#La2#ga2a2#g#L#L#L#L#L.7a9#L.7#D#saY#x.C.8#va7albh.Ca0a0bnaY.RblblaY#Dbla9#Da9.7.7a9a9a9a9a9#D.n#Dbl#Dblaw#DaY#x#IbnbnaCa0#Ua0aCa0.CaC#x#I#x#I#Ibf#x#I#x#I#x#Ibo.C.paOa7#aay.K.K.K#Ear.faZa7#uaBaB#vbmaBaZa7an.TaZaOaF.FaFaOb#b##SaZ#va#aOama0.W#xavam.C.W.C#xaw#x#x#Ibfbf#xbf.N.N.saYaY#D.N.E#D.7a9#D#s.7#s#D#D#sa9.7a9.7.E.7.Ea9#s#D#s#D#s#D.Ea9.Eaf.E#Lajafaj#L.7#L.n.7#La9#L.E#Laf#L.na9#D.7a9#Dbl.NaY.NaY#x#x#x#U#x.RaYaYaYaY.N#xbl#D#D#D#DblaYaYaYbl#Da9a9.7",
|
||||
"#L.3a2a2a2a2asa2#ga2a2#ga2a2#ga2#ga2#ga2a2#ga2#L#L#Laj#L#L.7b..7#x#I#x#xaC#uar#e#Sa0.CaYaY#DaYaYa9#p#pa9a9a9a9a9#s#D#sbj#D#D#D#D#saYaY.Naw#x#x.Ca0aoa0a0aCbn#Ibnaw#U#U.CaCamaCaCaw#Mbn#UbnaCbgaoaZanaral.2alaPan.y.0.yaB.0a#a#a#.8aF#v.0#u.0#v.5aCam.8amaOamaoam.F.tbg#x.C.C#xaY.NaY.saY.Nawbf.N.N.N#D.s#D.N#D.Nbl#sbl#s#D#D#D.7.Ea9.7a9.7a9.7.7a9#s#D#D#Da9#D#D.na9.na9.na9a9.na9a9a9.naf#Lafaf.E#L.7#L#L#L#L#Lafaj#L#L#La9.na9bl#MblaYaY.baYaYbl#Dbl#DaYawaYaY#M#D#DaY#Dbl#D#DaYblbl#D#p#Dafa9",
|
||||
"afa2#La2a2#gaa#ga2a2bpa2#L#g#L#ga2a2#g#L#g#La2#g#L#L#Lbpaj#D.7bjaY.N.N#Iao#u#aayaFa0bnaYaYblaYaY#pa9a9blbl#D#M#D#Da9#Da9#Da9#s#Dbl#D#MaY#x#x#x.Wama0a0aCa0a0amao#Uaobg.8am.8amama0bgb#.8aFa#.0aZ#ua7#uaS#uanaBa#.8aFaOamaOamaCamb#ao.5a#.0#vaF.5a0a0aC.Ca0.Wa0am#ybgaC#xbf#I.NawaY.NaY.saY.NaYaw#D.s.N.N.N.s.N.sbl#sbl#D#D#D.n#D.7a9.7.n.7.n.7.n#D#D#s#D#s#Da9#Daja9a9.nafa9aja9aja9aja9af#L.n#L.7af.Eaf.E#L.7#Laf#Lafaf#La9.7a9blblblawaYaY.baY#Mbl#DaYaYaYaYaY.NaY#Dbl#s#Dbl#D#MaYa9bl#D#Da9a9",
|
||||
"afaf#La2a2a2#ga2#ga2a2#ga2a2#ga2bpa2a2#ga2#ga2#g#L#g#L#L#Lbj.Ebjaw#D.s#xaoana6abaOam#xaYaY#DaY.N#pa9#p#sbl#Dbl#D.n#D.na9.na9a9a9#sbl#DaY#I#x.Wbnb#bgb#amamao.8aFamaO.yaZ#u#u#S#vaZan.yaZaZ.6aSa4aBaZbma#aF.5ama0aCa0.CaCa0a0a0.Wbna0a0aoam.5aoa0#I#x#xbn#I#x#x#x.p.Vbn#x#I.NaYbl.N.NaY.N.NaY.N.NaYaY#DawblaY#DaYblaYblawaY.s#D#D.na9a9a9a9a9a9a9a9#D#D#Da9a9bja9a9.nafa9.Ea9a9.na9.na9.n#Lajaf#L.n#L.7#L#L#Laj#Lajaf#L#Laja9a9a9blblblaYaYaYaYaYbl#D#MblaYaYaYaYbl#saY#D#D#D.NaYblaYbl#D#p#Dafa9",
|
||||
"afajaf#La2a2a2a2a2#g#L#g#L#g#La2#ga2bpa2#La2bpa2aj#Lbp#Lajbj.7#s#D#Daw.C#v.GaTaD#vb#a0bnawaYaYaYaYblaYaYaYawaYaw#D#D#D#D#D#D#s#Dbl#saYaw#xa0a0a0bgamaOamaOa#a#a#.yan#u.G.Gaz.w.w#u#uan#uan.w.6.GaFaOaFaoaobn#I#x#I#x#I#x#x#I#xaY#x#I#xbn.CaC.Ca0#x#x#IaY#xawaYaw.R.bbnawblaYaw#DaY.saY.Naw.N#M.N#D#s#DaY.N.saY.NawaYaw#Dbl#DaYaY#D#s#D#s#D#s#Db.a9#D#s#D#s#D.n#Daf#L.na9aja9aja9afa9aja9afaf.7af.7#La9aj.7a9#L.7afaj#Laf#La9a9a9.na9blblaYawaYaYblbl#Dbl.saYaYawblaY#D#Dbl#DblblaYblbl#Dbl#Da9a9",
|
||||
"a9a9#L#L#L#L.jbpa2a2aja2#ga2#ga2#L#ga2#ga2#ga2#L#g#L#L#L#Lbj#s#D#saw#Iaq.y#3aH#Pa#bga0#UaYaY#xaYaYawaYaYaY#x.N#x.Naw.Naw.N.NaY.s#DblawbnaCamb#bgaFbma##S.0aB#u.yaz.w.waz.w#u.0a##SaFbma##Sa##Sa#amamaoa0#x#IaYawaYblawaYawaY#M.NaYaYawaY#I#x#x#U#x#x#xawaYaY#D#MaY#x.b#x#UaYaY#Daw#DaY#D#D#D#D#Dbl#Dbl#sblblbl#MaY.RaYaYawaY.s.Nbl#Dbl#D#Dbl#Dbl#D#s#D#D#D.7#D#Dajaf#La9.na9a9.na9.na9a9.n#Lajaf.E#L.7#La9aj.7#Lafaf#Laf#La9.Ea9a9#p.nblblaYaYaY#Dblbl.NblaYaYaY.Nbl#D#D#D#DaY#DaYblblbla9#Dafa9",
|
||||
"a9afa9ajafbpa2#L#ga2bpa2#L#g#La2bpa2a2bpa2#L#ga2#L#Lbp.7aj.7#Db.bl#x.Waobb.2a6ak#vb#a0#x.RaY#xaYaYaY.R#x#x#x#I#xawaYaYaYaY#xaw#xaYaw.Ca0b#aF#vaZaZana7.waz.G.Ga7#uaBaB.0a#aFamambnbnaCa0a0aCa0a0aoa0#IaYaw.Nbl.NaY#MaYbl#DblaY#DawaY.Nblbl#xbn.Ca0#I#xaY.N#Mbl#DawaY#Ibn#Ubn#I#x#D#D#D#D#D#D#s#D#D#saY#Dbl.s#DaYblaYaYawaYaYaYblbl.nbl.nbl.nbl.n#D#D#D#s#D#D#s#D#Lafaja9#paja9aja9af.naf.naf#Laf.7aja9aj.7#Laf.7afajaf#Laja9a9a9afa9#Dbl#sbl.Nblbl#sblaYaYaYaYaY#DaYaY#Dbl#DaYblaY#MaY#Dbl#Da9a9",
|
||||
"a9a9afa9#L#L#La2#ga2#La2#ga2a2#ga2#ga2a2#ga2a2bp#L.j#L#L.7#sbj#saY#Iaq.y.waXaraS#vb#a0#UaYaYawaYaYaYbn#x#U.Cbn.Caqaqavaqavaqaqaq#Ia0ao.5#vana7bh.Ga6al#aarbkaz#uaOamam.Cao#x#IaY#I#x#I#x#I#x#xawbn#xaw#D#D#D.sbfaY.N.saY.saY#D#D.Naw.N#saY.s.Cava0am.C#IaYaY#D#M.N#x.bbnaCa0a0#x#s#D#s#D#Da9#Da9blblbl#Mblblbl#MaYawblaYaYawaY.saYaYaYaYblblblbl#s#D#D#D#D#s#D#Daja9af.nafa9.na9.na9a9.na9#Lajaf.7af.7#L.n#L.E#Laf#L#Laf#La9a9.7a9a9a9a9#D#D#M#Dbl#Dblaw#DaYawaYaY#saYbl.Naw#DaYawblaYblbla9a9af",
|
||||
"afa9.7a9#L#L#L#L#La2#g#La2bpa2bpa2#L#g#L#g#L#ga2#Lbp#Laj.7bj.s#D.Waoao.waX#aazaSaFa0#xaYaYaYaYaYaYaY#xa0a0.Caoa0.8.8.5ao.5amaoamaCaoam#v#ubh.G#eayaTay.Gaza7aBa#aoaC.CaC.CaYaY#Mbf#x#xaY#xawaYaY.NaYaw#D#s.N#xaNaw.Nbl.Nbl.N.N#s#x.NaY#D.NaY#xaqa0aoa0#x.NaY#MaY#x#xbnbn.Vamaoam#D#D#D#s#D#sbja9.N#M.Nbl.N#M.NblblaY.RawaYaYaYaYblawblaYawaYawaY#D#s#D#M#D#D#D#Daf#L#La9a9.naf#La9af.n#L.nafafa9aj.7aj.7#L.7#L.Eafaj#Laf#La9a9a9aja9a9.na9bl#D#D#DblblaYaYaYaYaYaY#DaY#DaYblbl#DaYaYbl#sbl#Da9a9",
|
||||
".7a9a9.7a9a9.7a9#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#Lafa9a9#D#sbl.s.Waoan.G#Ea7aBaZ#vaFama0aCamamamb#.Va0aC.VaO.0#uaSaSazazan.Gak#a.Iay.Iar.Xar.Gazaz#uaB.yaO.5aoa0#Iaw.NaY.saY.N.N#D#s#D.N.N.N.N.s.NaY.NaY.NaY.saYa9bl#sbl#sbl.nbl#D#s#DawaY.saYawaY#x#U.CaC#xbf.N.s#I#x#Ia0aoamambf#I.N#D#DaYaY#Dbl#D#Dbl#D#Dbl#D#M#Dbl#Daw#D#M#DaYaYawaYblblaY#D.na9a9.na9.najaf.nafajaj#L#L#Laj#L.E#L.n#L.E#Lajaf#Laja9aja9.7a9#Lafafaj#L#Lajafa9a9a9bja9#D#D#sblaY#MaYaYaYaYaYaYaYawaYaYaY#xaY#UaYaYbl#Dafa9#L",
|
||||
"a9bja9a9.7a9a9.7#L#L#L#L#L#L#L#L.E#L#L#L#L#L#L.7aj#L#sa9#saY.saYbo.5.w.GazaB#San.l#vbgama0#xama0ama0a0bgaFbmanazak#aar#eazaz#aa6.e.e.XaraSazbhan#S#v#vaFaoa0aC.Cawaw.Naw.Naw.Naw#Da9#s#D.s.N.s.N.NaY.s.Naw.NaY.Nbl#saYblbl#Dbl#D#D#DaY#D.NaY.N#x#Ibna0a0a0.C#I#x#x#I#xaCamaFaOamaYaYaYaY.N.Nawbl#s#Dbl#D#sbl#D#Dbl#Daw#Dbl#Dbl#D#Mblblblaw#Dawbl.na9.na9.na9a9.naf.n#L.7aj#Laj#Laja9aj.7aja9aj.7#L.Eaf.7#L.7af.7afaj#L#Laf#Laf#La9.7a9a9b.a9#D#DaYblaYaYblaYaYaw.RaYbnaY#U#xbnbna0aYaYaYbl#Da9a9",
|
||||
"a9a9a9a9a9a9a9a9#L#L#L#L#L#Laf#Laf#Laf#L#Laf#Lafa9a9a9#D#D.Naw.N#x.8.w#e.lbma#az#uaZaFa0aC#x#x#x#x.WamamaF.y#ealayaG.G#eanaS#e#a.I#a.X.JanaZ#Sa#aOambga0.W#x#x.saY#saY.NaY.NaY.N#D#D#DaY.NaYaY#xawaYaYaYaYaY.saY#Dbl.N#M.Nawbl#D#M#D#MaYawaY#x#xbnaCam.8.5amamaCa0a0aob#aOaObm#v#x#I#x#xaY.N.NaY#Dbl#Dbl#D#Dbl#D#Dbl#Dbl#Dbl.sbl.N#Daw.NblaYblaYa9.n#p#sbl#Ma9bl.na9.na9.7.E.7.7.na9.na9a9.Ea9.n.7aja9.na9.Ea9.7af.7af#Laf#L#Lafa9a9a9#Da9#D#D#DblaYblaYawaYaY.R#xawaYaYaYbn.Cbn#xaYaYaY#D#D#D#D",
|
||||
"a9a9a9a9a9.7a9a9a9a9a9#Laf#L#L#La9.7.na9a9a9a9a9a9a9#s#D#s#D.Nbl#I#v.G.G#uaF#van#uaZ.8a0bnbnawbnavam.5#van#ealbra6#a#e.wana7#e#e.fakaz.TaBa#a#aFa0aoa0.Wbn.s#M.N#saY.sbl.saY.saY#s.Naw.Naw.N#I.N#x#I#x#x#IaYaY#IaYawaYawaYaY#xawaYaYaY.NaY#x#x#Iamb#aFa#a#aOamamamaob#b#aF#Sbmbmaoa0#x#xawbl#D#D#Dbl#D#sbl#Dbl#sbl#D#D#sbl#D#D#D#Mbl#DawblaY#saY#Mbl#Dbl#M#D#M#M#Da9#sa9.n#D#D#sa9.Ea9b..na9.7a9.na9.n.7.7a9.7a9aj#Lafaj#Lafaj#La9.Ea9.7#D.E#D#DblaY#MaYaYaYaYaYaY.R#x.R#xbn#U#xbnbnaYaYbl#Dbl#D",
|
||||
"a9a9a9a9afa9afa9af.nafaf#Lafa9a9afa9a9a9a9.na9.n#D#D#D#D#D#Daw.N#I.y.GazaZb#aOa#anaBa#aoa0aCbna0a0.5.8an.G.2.K#P#q#e.6anan.wazakazbha7aZaFam.8am#xaC.C#I#IaY#D#saY#saY.NaY.NaY.NblaYblaYaY#I#x#x#x#x#I#x#x#x#xaYaYbn#xbn#U#x.baY#x.s#x#x#I.Ca0.CbgaF#vbma#a#aOambgamb#aoaFaFaOaF#va0#x#I#x.Na9#D#s#Dbl#D#Dbl#D#Dbl#Dbl#D#Dbl#Dbl#DaYblaY#Dawbl#DaYaY#MaYawaYawaY.nbl#p#sa9#sa9#D#s#D#Da9#D.n#D.na9.na9a9.n#Da9#D#Lajaf#Laf#Laf#La9a9a9#Da9#Da9#DaYblaYaYblaYawbnawaYaYaYaYbn.Cbna0.Cbn#xaYaY#Da9",
|
||||
"#pa9a9a9a9a9a9a9a9a9a9a9a9a9a9.na9a9a9a9a9a9#Da9#D#s#D#s#DaY.NaYaCaZ.6az.0aOaF#van#uan#vamamamamaOa#analba.g#P#P#a#Tan.y#uaZaza7an.laZa#bgama0.C#U.C#U#I.N#s#s#D#s.Naw.N#M.NaY.saYaw.Naw#x#x#x#U#x.baYbnaw#xawaY#Ubn#U#x#Ubn#xbn#xbn#Ia0a0a0aCa0b#.t.tbma#aFaFb#amamamam.Vb#b#.V#Sbga0#x#xbl#D#Dbl#Dbl#Dbl#s#Dbl#D#M#D#Dbl#sbl#Dblaw#DawblaY#DaYawaYaYaY#Ibn#Ibn#Mbl#s#D#D#Db.#D#sa9#s#s#s#D#s#D.n#D.na9#D#D#s#Dafafaf#L#Laf#L#La9a9.7.nbja9bj#DblawblaYaYaYaYaYaYaY#x.R#x#xbnbnbnawaYaYbl#Da9a9",
|
||||
"a9a9#pa9#pa9#pa9a9a9a9a9a9a9#pa9a9.n#p.nbl.n#pa9#D#D#D#D#D.Nawbfbn#vazaS#SaF.8#vaZ.6aBa##va##v.0a7.faG#PaD#V.Kay.XazanaB.0#vbm#SbmaZ#vamama0aC#xa0.W#x#x#I.N#D#s.N#M.NaY.NaY.saYaYaYaYaYawbn#x#x#x#xbn#Ibn#x#x#xbn#xa0bna0bnaCbn#xa0#x#xbn.Ca0am.V.Vb#aOaFb#bgamaC.C.CaCa0a0aCa0a#aFbgbnaY.N#D.7#D#M#D#Dbl#Dbl#D#D#Dbl#D#Dbl#D#D#M.NblaY#DawblaYaY#Ibn#Ibn#Ubn#IaYawaYawaYawaY.s#D#s#Da9#sa9#s#D#sa9#Dbl#s#D#D#Daj#L#Lafaj#Lafaja9a9a9#Da9#D#Da9blaYblaYawaY.R#xaY#M.RaYawbna0#IaYbl#Da9a9afafa2",
|
||||
"#pafa9afa9a9a9a9#pa9#pa9afa9a9a9#p#p#D#pbl#p.na9#D#D#D#DaY.NaY#Ia0#v.Gaz.0#vaF#vanaz.w#u.0#u.waP#A.f.Xa6.Ia6akaSanaZa#aFaoaFaOaF#SaFaFama0aC#x#x.Wa0.W#Ibf.N#sbj#M.N.saY#s.NaY.NaYaYaw#xaY#x#I#x.R#x#x#x#xaYbnaY.Cbnbn#xbn#x#xbn#x#I#xbn#xa0.Ca0.pb#b#aFb#aFb#.V.C.C#x.CaCa0#xa0.FaFaOa0aYbl#D#sbl#D#Dbl#Dbl#s#Dbl#D#M#Dbl#D#M.Nbl#DaYblawaY.saY#UaYbn#x#U#x#Ubnaw.Rawblaw.NawaY#s#s#s#s#D#s#D#sbl#Mbl.n#Dblbl#Dafaj#Laf#Laf#L#La9.7a9.7#s.7#DbjblaYblaYaYaYaYaYblaY#xaY#x#xbnaYbla9#p#p.naf#La2",
|
||||
"#L#La9a9a9afa9af.j#L#La2af#La9a9#sa9#s#D#DaYaYblawaYaY#I#xbn.Ca0#Ubg.laz#uaBanaBa6#a.Xa6#aak#ebh#Sbm.Fa#aFb#amaoa0aCa0aoa0amb#.8b#aoa0aCa0#xaC#x#I#xaY.N#M#D#D#s#D#sa9.7a9.7.n.7#D#D#D#s#DaYaYaY#sbl#Mbl#Dbl#D#Dawbl.Naw.NaYaYawaYaYaYaw#DaYbl#DaY.RaYaYbnbna0a0#Ubnbn#x#x#x#I#xa0bgaBb#a0.s.s#L.NaY.N.saY.N.NaYbl.NblaY#I#x#x#x#Mbl#MaYaY#x.b#x#xbn.Wambgamamam#Ua0bnaCa0a0amaoaw#x#x#x#I#Iaw#Mblbl#sblbl#D#D#Da9#pa9a9a9a9#Laf.na9a9a9a9#paf#pa9a9#MaYaY#x#xbnaw.RaYbna0a0a0aY#D#pa9a9#La9#L#L",
|
||||
"#L.7#Laf.7a9.7a9#Laf#Laf#La9.7#Da9a9blbl.Nbl#DaY#xaYaY#xaCa0amam.t#uazar#e#T#a#zacbaayaraS#uaZa#aFaFaFb#amaoama0a0a0aCa0a0ama0amaoa0a0a0aC#xaC#xbn#I.saY.s#D#sa9a9#sa9a9.Ea9.7a9#D#s#DaY#D#D#s.Nbl#D#D#D#D#Dbl#DaY#DaY#Dblbl#DaY#D#Dbl#DaYbl.NaY.baYaYaYa0#Ia0a0#x#UaY#x#U#x#xaYbnam.FaOa0#x.s.7aY.saY.NaY.NaY.sblawaY.N#x#Ibn#xaYawaY#xawbnaY#U#x#IaCa0aCbg.paobn#U#Ua0aCaCaCb#aCaC.C.Wa0.C.baYawawaYblaw#D.s.Nbla9#p.nafa9ajafa9#pa9#pafa9a9a9#pa9blaYaY.b#xaYaYawa0#xa0a0#UaYbla9a9a9a9#L.7#L",
|
||||
"#Laf#La9.7af.7af#L#Laja9.7a9a9bj#D#D#D#MaY.NaYaY#MaY#Ua0amam.5.5aSal#PabbrayaTaTaGara7aZaZaZbm#vb#amamaCa0#x.C#x#I#x#x.CaC.CaC.5b#aob#aCamaC#xbn#I#xaY.s#D#sa9#s#Da9.Ea9.7a9.Ea9#D#D#D#D#s#D#D#D#Dbl#D#M#Dbl#sbl#DaYblaY.saY#DaY#MaY.Nbl.sbl#D#DaYaY.baYaYbn.CbnbnaYaYbn#x#x#x#xaYbnam#Sama0.N#s.NaY.Naw.Naw.NaY.NblaYaw#x#x#x#IaYaYawbl#x#I#xa0#Ia0aC.pbgb#bgb#.pa0.V.pb#.Vb#bgbm.taOaFaFao#U#x.bbn#IaYaYaY.NaYbl#Dbl#Da9a9a9a9a9a9a9a9a9a9.na9a9a9bl#DblaY#x#xaY.R#xaCama0#x#xbl#s#Daf.7af.7#L",
|
||||
"#L#L.7a9.7a9a9.7af#La9a9a9#D#D#D#D#MaYaY.N#x#I#x#xaY#x#xamaO.0bbaT#PaD#VaTaRar#eaBaZbmaFaFamb#ama0aCama0.C.C#x#I#xaY#I#x#x.W.CaCaOaFaob#aoamaC.C#I.b.NaY#s#Da9.7.n.7a9.7.n.7a9.7#D#D#D#D#D#D#D#D#D#M#D#Dbl#D#Dbl#D#D#sbl#Dbl#D#D#D#D#Dbl#D#Dbl#DaYaYaYbn#x#x#x#IaYbnaY#IaY#xaY#IaYbna0aBbmao#x.NaY.saY.NaY.NaY.saYaw.NaY#x#I#x#xaw#x.N#I.C.CavaCaFaOa#aBa##vbm#Sbm.taFbmbmaZaBbh#kbhbhaZ#Sa#b#a0aCa0a0#U#xaYaw.Nbl#Mbl.n#D.n.7a9a9.na9a9#sa9#Da9a9a9.n#D#D#xaY#xawaYbnama0ambnaYblbl#Da9#Da9#L.7",
|
||||
"a9a9a9afa9#La9a9.na9a9bj.n#D#D#saY.NaY#x#x#x#x#x#Ubnambga#.0#u#uaH#4#aazanaBaZbm#SaFaOb#bgamamama0.C.C.W.C#Ibf#xbf#I#x#x.C.Cao.8a#aOaOamaoa0.Wa0aY#xaw.N#D#s.7a9.7.n.7a9.7#L.7aj#D#D#s#D#D#D#s#D#D#Dbl#D#Dbl#D#Dbl#D#D#Dbl#D#Dbl#D#Dbl#D#D#D#DblaY.NaYawaY#xbn#xaYaYaYbn#x#x#x#x#U#xamaBaBaBa0.Caw#xaY#IaY#xaY#x#x#x#Ibn#xa0.Wa0.CaoamamaCamao.5azaz.G.Gar#e.G#a#eaz#ear#e#a.X#a#jaGak.faSaZ#vb#ambga0a0a0#I#x#xaw#xblaY#Da9#Da9#D#D#Da9#Da9#Da9.na9a9#D#DblaY#x.Rbna0.Cama0#x#xbl#Dbla9#D.7.7a9",
|
||||
"a9.7a9.7a9.na9.7a9.7#s#D#D#D#D.N#x#x#x#I#x#x.Ca0amaOa#.yanaBan#u.6aBa#amb#a0b#amamb#amamamaoa0aoa0aCambn.C.C#x#Ia0.C.CaCamao.5aO#vaFaOb#aoa0a0.WaYaw.NaY#s#D.7.n.7a9.7.n.7a9.7a9#D#D#D#D#D#D#D#Dbl#D#Dbl#D#Dbl#D#D#Dbl#D#D#D#D#Dbl#D#D#D#Dbl#D#D#sbl#D.NaYaYaY#xaYaYaY#xaYaYaY#xaYa0a0bmaz#uaOam.C.W.C.C.C.C.W#x.W#xamamamaoam.5aoaF#v.y.0#uaB.wal.2ayal.2aya6aTa6alaR.2ayayaT#P#t.K.e.X.GaSaZaBaFb#amaoa0a0bna0aYaYawblbl#sa9bj.n.7#D.7a9bja9#Dafa9afa9bl.Naw.N#U.CaCaFaoamama0aYaY#D#D#Da9#L.7",
|
||||
"a9a9.na9.7a9a9a9a9#D#D.N#s#DaY.saY#x.C.Ca0aoamao.0aZaBaZaB.0aBa#amb#a0aCaC.pa0a0aob#ama0am.C.Ca0.5b#amaCam.W.C.CaCa0ao.5amaOaF#vaF.8amamama0aqa0aYaw.Naw#D#Da9.7.n.7a9.7.7af.E#L#Da9#Da9#Da9#Da9#Da9#Da9#Da9#Da9a9a9afa9afa9afa9a9a9a9a9a9a9a9a9bl#D#Dbl.N.NaYaYaY.RawbnaY#x#I#xawa0b##Sazbha##vamaqao.Cavamao.5ao.5.8.8aF#v.0.yaZaB.waza7az.G.G#aararar.X#a.Xar#eazazaralalalayayaya6.Ial.XaSaS#va#aFaO.5aC.CaC#xbnaY.N#M#D#D#D.7a9.7.Ea9.7.7.Eaf#La9#D#D.N.NaYbnbnamamb#aoama0aYawblaY#D#D#D.7",
|
||||
".7a9.7a9a9a9.Ea9bja9#s.NaYaw.NaYa0.Wa0aCamamao.5a7az.waZa#aFaFaFamamaC#xbn#xam.5amamamaoama0aoa0aOaFaoambgamaCam.8aFaOaFaOaFaF#vaFaFaOb#aoamaCamawaY.Naw#D#D.Ea9.7a9.7.n.7.7a9.7#D#D#D#D#D#D#D#D#D#Dbl#D#Mbl#D#Ma9a9a9a9a9a9a9a9.na9a9.na9a9.na9#D#D#D#DblaY.saYaYaYaY#xaY#xaY#xaYbnaObmazaZ#Sa#.8.8.8.5am.8.5.8a##va#.ybbbb.w#uazarar#a#eazaSaz#ua7aZaZaZaZ.Tbm#SbmbmaZan#uaSaz#aalaR.2.IaGaraSaZaBa#aFaoama0aC.R#IawaYbl#D#D#Da9.7.7a9.7.7a9.7af#L.na9#D#s.N.NaYaCamaoaFamama0aYaYaY#D#D#Dbj#D",
|
||||
".N.N.N.N#D#D#D#DawaY.Nbf#xaqaqavamamaF#v.0#u.w#e#va#b#.5amamamaF#I#x#x#x#Ia0#x#x#x#I#x#xa0ao.5amamaoaFa#a#aBaZaZ.TaBaZ#SaFaFaF.5ao.5aoam.C.W#x#xaYaY.saY.N#s#D#Dajafaja9a9a9.7a9#Da9bja9#D.7#Da9#Dbl#Dbl#D#Dbl#D#Da9.7a9.7a9a9bja9#Da9#D#D#Dbl.Nbl#Dbl#D#D#Dbl.NaYaYaYaYaYawaYaY.Nbfa0b#bmaBana#bma#bm#u.6#T.oaR.Gararal#aalalal#Taraz.6#uan.0.0b#.8b#aob#aoambgamam.8aoamaO.8aFaBbhaz.Gar.X.X#abhazan.TaZbmbma#aCa0#xaYbfaY#s#D.s.N#D#D#sa9.7.7#s.7.7.7a9a9#D.7#DaYam.5aOa#amambf.N.N#s#D.NaYbf",
|
||||
"aYaYaY.saY#s#D#D#D.s#x.Wao.8aq.5.yaB#uanaBan#uanaFaOamaob#aoamaobn#x#U.Ca0.C.C.Wbna0a0aoaF.5#va#.ya#.yaBaZaBbh#u#SaBaZaOa#.8aFbg.5aoamaobn.Cbn#x.sbl.NaY#D#Da9#Daf#L#La9.7a9a9.7#D#D#D#D#D#D#D#Dbl#Dbl#DaY#DaY#D#Da9a9.7a9#D.7a9a9a9a9#Dbl#D#D#D#D#D#D#D#D#D#D#DaYaYaYaYaYaYaYaY.N#x#xbgaFaZ#ua#bgaF#vanaz#ealalazazaz.Garaz#q#ebhananaZaZa#a#a#aCama0a0aoa0ama0aqaoamamaFaoam.8a##SaZ#uana7aSbhaBaZaZbmaOaFaOaFb#ambnbn#IaY.NaY#D#D#D#D.7.7b..7#D#Da9.7#s#D.n#D#MaY#Iama#aFaoa0#x.saY#D#Dbl.N#x",
|
||||
".Nbo.N.N#xbf#xbf#x#Ia0a0aOa#aBaz.GaP.wan.ya#a#a#aCamambgama0a0a0.Wa0.C#xa0a0a0amamaoaFama#a#.0#vaSazbh#uanaBanaZa#aOaFaO.5aOaqamaoama0.C.C#Ibn#IaYaYaw#D#s#D.E.7#Laf#La9a9.7a9a9.7a9.7a9.7a9.7a9#D#D#D#D#Dbl#D#Da9.7#Da9.7a9.7#Da9.na9a9#D#Dbl#Dbl#Dbl#Dbl#D#D#p#D#D#D#D#D#D#D#D.N#DaYa0b##SaBaZamamaF#v.0#u.6.wan#u#uaSananaZaBa##vaFaFaoamamama0a0aCa0bna0#xaCa0a0.Cao.CaoamaoaF.5aOaFaFa#aFaFaF.5aoamaFamaFaob#bga0aobnbn#x#x#M#Dbl#s#Da9.7a9.s#D#D#D.N#DaY.N#Daw#xa0aoaF.5b##IaYaY#DawaYaw#x",
|
||||
".N.N#Ibf#x.W.C.W.5#v.yaZ.G#z.Kba.o#e.w.0a#a##va#amamaOaFaOaFbgamama0amaoam.8.5.5a#aFaFa#aBan#ubh#a.Xar.Gbh#uaZaBaO.5aoamamaC.C.Wa0a0.W.C#I#x#x#xaY#saY#D#D.7af.7af#L#La9a9.7#D.7#Da9.7a9.7a9bja9a9a9a9a9a9a9a9afa9.7a9.7#L.7a9afa9a9a9a9a9#Da9#D#Dbl#D#D#D#p#D#D#D#D#Dbl#Dbl#Dbl.s.NaY#xa0a#aB.0amamamaFa#a#a#a#aBaZaZaZ#va#.0a#b#b#bgamambn.Cbn.Wa0.C.C.C.Wa0.C.C.C.Wa0.Ca0.Ca0aoamama0a0bn#Ubn.Wa0.Ca0.W.C#U#xb#.Vb#b#a0ama0a0aYaY#D#D#D#s#D#saYaY.s.NaYaw.NawaYaY#Ia0amamaOam.C#x#xaYaw#x#x.C",
|
||||
".C.W.Caqaq.5.5.5anaP.o.Ya8#obs.g#TaS.wan.0#va##v.0bm.0a#.0a#a#.yamaoaFamaOa#aOa##va##S.0aZ#uaSaz#aaG#a.Gaz#uan#u#vaOam.8aCaq.W.C.C.Wa0#x#x#x#IaYawbl#D#sa9a9#L#Lajaf#L.na9a9.7a9.7a9#D.7#Da9.7a9a9a9af.7afa9.7a9.7af#L#Laf#La9.7afafa9.na9a9bl#Da9.na9a9a9a9a9afa9.na9a9.7a9a9a9.N#D.N#M#xaOaZaBamaOam.8am.8a#.5a##va#aoaFaFamamaoa0a0bnaC#x#x#x#x#I#xaY#xaY#xaY#I#x#x#x#I#x#I#xa0bn#I#xawbl.Nbl.Naw.NaY.NaY#xaYaCa0ao.Vbgb#b#b#awbnaYaYblblaYbl.NawblaY.NaYaYaYawaY#x#Ia0bga#aOamaC.C#xa0.Wa0am",
|
||||
"aoaFa#aOa##v.y.ya4.2#4.4a8aDaTaRanananaZaBaFaFaF#v.0#v.0#v.0#v.0amb#aob#amam.5aFamaOaFa##v.0.yaZaz.wanazaz.w.w.waO#vao.5aoamaCam.Wa0#x#xaw#xaYaY#D#M#Da9a9.E#L#L#L#Laf.7a9.7#Da9.7a9#L#L#L#L.7#L#L#L#L#L#L#L#La2#La2#L#L#L#L#L#Lafajafafa9a9a9afa9a9a9a9a9afa9a9a9.7a9.7a9a9.7a9.N#D#D#DaYam#SaZaF.5aFamamamamaoaFamamb#amamaoa0a0bnaC#x#x#xaY#IaYaYaYaYaYaYaYaY#xaY#IaYaYaYaYaY.s#xaY#D#D#D.7.n#D#D#D#M#D.N.saY#xa0a0amamambgambnbn#UaY#x#xaY.saY#x.NaYaw#x#I#x#x#I#xa0a0aF#vaZ.5a#amaCa0am#v.5",
|
||||
"an#uan#uan#ua7#uaz#a.Gaz.GaSaZaZ#vbybca#.5aoamb#.5b#amb#amb#amb#aCama0amamaob#amaCa0a0aoaFaFa#byaOby#v.yaZaB#u#ua##v#S#v.5ao.5aoa0#I#xaY#x#IaYaw#Dbla9#s#L#L#La9#Laf#La9#La9.7a9#L#L.7af.7af#Laf#L#L#L#L#L#L#L#Laf#Lafa2af#L.3#Lafafafafa9afa9a9#Laf#Laf#L#Laf#L#L#L#L#L#L#L#L#L.s#D#s.7#DaCa##ua#.0.5.5amama0a0amaoamaCamaCa0#xbn#x#x#x#xawbfaY.N.N.N.s.N.N.s.Nbl.Nbl.NaY.NaY.Nbl#D#D#s.7.7#D.7a9.n#p#Dbl#DblaY#x#x#xbnbnama0am.Vama0b#aCa0#x#xbn#I#x#x#xbnbn#x.Ca0a0aCam#van.wan#vbyaF#va#.yan",
|
||||
"alal.Ga7bhaZaZaZa##Sa#aFb#ao.5.8aFaFamama0amamaobn#Ubn#Ua0#Ibn#Ua0a0a0aCa0amamao#x#xaCa0aoamao.5avam.8.8#v.yaB#u#SaBaB#u#S#vaO.8amaCbn#x#I#xawaYbl#sa9a9#La9.7ajafaj#La9#L.7#Da9.7#Laf#L#L#L#L.7a2#ga2a2a2a2a2a2#La2#L#La2#L#L#La2af#Laf.na9a9a9af#Laf#La9af.7af#L#L#L#L#Laj#L#L#D#D.7#s#D.CaBbhbb.y.0aOama0aoa0ama0ama0bnbn#xaYaCbnbn#x#xaYaY.Naw.NaY.NaY.NaY.NaY#DaY#M#Dbl#M#D#Da9.7a9#Dbjb..7afa9.na9bl#DaY.N#Ibf.W#xaC.Ca0amamb#b#a0ama0ama0#xbn#x#U#x#U.C#UamaCama0ao.0.w.6.wan.yan.yan.waP",
|
||||
"#q.6a#aF.5aCa0a0bnbna0aCa0amb#am#U.Vbnbn#xa0.C#x#x.NaY.NaY.N.N.N#D#s.NaY.NawaY.N#M.s.N#x.C.Wamaq#UaCaCb#bgaOa##vbg#v#v#u.w#uaZ.yaO.5aoama0.RaYaw#D#D.7.n#Laj#L#L#L#La2#La2#La2#g#Laf#L#L#L#La2#La2#L#La2#La2#L#La2af#L.3#Laf#Lafajaf#La2#La2#La2#L#L#Laf#La2#L#L#L#La2#L#Laf#L#La2#La9#D#x#xaoaO.Xbha#ama0#x#x.CaC.Ca0aC.C#x#IbnaYaYawaYaYaYaYaY.N#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D.7.E.7.7.7af.7.7aj#L#L.7.E.N.N.NaY.N.N.N.NaY.NaYbl#IaYbna0aoaFaOamaoamamamaFaF.5b#aOa#a#aZ#u#a.2.waP.w.w.waZan#u",
|
||||
".GanaB.5a0a0#xaCbn#Ibna0a0a0amam.Va0bnbn#x#x#I.C.NaY.Naw.N#s#D#D#D#D#s#D#D#D#saY#D#DaY.saY#x.W.Cbn#Ua0aCaoamaOaFaob##v#uaB.y#vaOa#aO.5bga0#U#x.R#D#D.n.7.7#Lbp#L#La2#L#g#L#g#La2#L#L#Lafa2a2#La2#L#La2#La2#La2#Lafa2#L#La2#La2#Laf#L#Laf#Laf#L#L#Laf#L#La2#La2#La2af#Lafa2#L.3#L.j#La9#DaY#xa0#v#aa7a#b#a0bn#x.C#x#x#x#x#xbn#x#x#IaYaYaYaYaYawaY#D#D#D#D#D#D#D#D#Da9#D#D#Dbj#Da9a9#La9af.E.7a9#Laf#Laf.7a9#D.N.N.saY.Nbl#DaY#D.NaYaYaY#xa0b#.5aFbga#aFaFbma#.ybm#vaZ#SaBan.G#q.2.w#u.6#uan.y.0.0",
|
||||
".6#u.0b#a0#x#xa0bnbn#x#xbn#Ibn#x.RawaY#x#I#x#xbfaYaw.N#D#D.7.7.7a9#D#Da9#Da9#D#Da9a9#D#D.N.N#x#x#I#x#Ia0ao.8am.8aCa0bg#v#vaOb#aoaFaOaFama0a0#Ubn#s#D#Da9.E#L#Lajbpa2#ga2a2aja2#gafa2#La2#La2#La2#Laf#La2#L#Laf#La2#Laf#Laf#Laf#L#Laf#L#Laf#La2afa2#La2af#La2#L.3#La2a2#L#L#L#L#La2#La9#s.N#xa0bg.Xana#aFamam.C#xbn#xbn#x#x#x#xbnaYaYaYawaYaYaYaY#Da9#Da9#Da9#Da9.7#D.7a9.7a9a9.7.7.7.7.7a9#L.7.n#L#Laja9a9#D.saY#D.N#D#D#D#D.saY#DaYaYa0a0amb#aFbm#SbmaBaB#ubha7aB#u#uazaz#Tal#q#uanaB.0a#.0a##u",
|
||||
"azaBa#aobn#x#x#x#x#x#Ibn#xaY#xaYaYaYaYaY.NaY.NaY#D#D#D#D#D.7a9.7#sa9a9bja9.7#D.Ea9bj.n#D#D.NaY.N#MaYaY#Ia0aoaoam#IaCa0ao.5ao.CaCbg.5b#aoa0aC#xa0aYaY#s.7a9#Lbp#La2bpa2#L#g#L#ga2#Laf#L#La2#La2#La2#La2#La2#La2#Lafa2#Laf#L#L#L.3aj#L#La2ajaf#L#La2#L#La2#La2#La2#La2#La2a2a2afa2#La2#L#DblaY#IamazaSaBaFama0#x.C#xaY#xaY#x#U#x#xaYaYaYaYaYaYaY#D#D#D#Dbj#D#Dbj#Da9a9a9.7a9a9bja9.7afa9aja9.7af.7#Lafa9a9#D#D#D#D#D#D#D#D#D#D#D.NaY#I#xbnaoamam.5a#bma#aZaZaZaZ#uaZanaz#q#TaR.o#q#uaB.0a#.0#uaZ#u",
|
||||
"an#vb#a0#x#x#xaYaYblaYaYaYaYaYaYaYaYaYblaY.N.N.sbl#D#Da9#D.7a9#L#D.7#sa9.7a9.7#Da9a9#Da9a9#s#D.Naw#Daw#xaCa0.C#x#U#xaCaoaCa0#Ibna0a0aoa0aCa0a0#UaY#M#D#Da9.7#L.7a2a2#ga2a2#ga2#g#La2#La2#La2#La2#La2#La2#Laf#L#Laf#Lafaj#Laf#L#Lafa2af#L#La2#Lafa2#Laf#La2#La2#La2#La2#L#La2#L#La2#Laj#Dbl.NaY#UaZ.TaBaFam.C.C#xaYaYaYaYaYaY#x#xawaYaYaYaYaY#Dbl#D.Ea9a9.7a9a9.7#D.7#Da9bja9.7a9a9.n.7a9a9a9.na9a9a9a9.na9a9a9#D#D#D#D#D.7#D#D#DaY#x#x#xbna0aCamaFaOa#bma#bmaBaZaZaB.6.Gal.o#e.GazanaBaZ#u#u#uan",
|
||||
"#vaFama0awbnaYaYaY.NaY#D#DaY#D#M#Dbl#s#D#D#s#D#D#Dbl#D.n#Daf.E.7a9a9.7a9a9a9a9a9.7a9.7a9.7a9a9a9#D.n#D.N#x#I#I.W.C#I.Caoam#U#xaw#Ia0#I#x#x#I#x#IaYaY#Dblbja9a9#L#La2bpa2bpa2#La2#Laf#Laf#La2#La2af#L#La2#La2afa2#Laf#L#Lafaj#Laf#L#L#La2#Laf#La2#L#La2#La2#La2#L#La2#La2#L#La2#L#L#Lafa9#sblaY#xb#bm#SaFambn#xaYaYaYaYaYaYaYaYaYaYaYaYawaYaY#Dbl.7a9bja9.7a9bja9#L#L#La9.7a9a9.7a9.7a9a9.7a9.7a9a9a9a9a9a9a9a9a9#D#Da9#D#Da9#Da9.N.NaYaY#x#x#xaYa0ama0am.5aF.5a##vaZan#TaR.Gazana7.wan#uaZan#uaZ",
|
||||
"b#a0#xaYaYaYaY#x#DaY#D#D#M#Da9a9#D#D#D#D#Da9#D#p#Da9#D.7a9.7#L#La9a9a9.7#L#L.7a9.na9a9.7af#L#L#L#La9.7#s.N#I#x#x.C.CaCa0.W.W#xawaYawaYawaY.NaYaYaYawaY#sbl.7#D.7#L.ja2#ga2#ga2#g#La2#La2#Laf#L#L#La2af#L#L#L#Laf#Lajaf#Laf#Laf#Lajafaf#Laf#L#La2#Laf#Lafa2#La2#La2#L#L#L.3#Laf#La2#L#La9a9#D#MaY.b#yaFbgam#x.N#saYaYaYaYaYaYaYaYaYaYaYaYaYaY#Dbla9.7#L#L.7#L#L#L.7af#La9#La9#La9afafafafa9a9a9a9a9.na9a9a9.n#pa9.n.7a9.7a9.7a9.7#D#D#D#s#DblaYblaY#x#xaCa0aCa0amaOaZ#u#q.G.6#uaBana7azaZaZaZaZa#",
|
||||
"a0a0a0aYblaYaY#xaYaY#Dbl#Da9a9af.7.7#Da9a9a9a9a9a9a9.n#Da9.7#L#L#La9.7af#L#Lafa9.7a9#L#Lajafa2aj#L.7.n#D.N#xbo#I#x.Waq.8aoa0#I.Nawbl#sbl#DaY#saYawaYaYbl#D#Da9a9#L#Lbpa2#L#g#La2#Laf#Laf#La2#L.3#Laf#L#Lafaf#Laf#Laf#L#Laf#L#Lafaf#L#Laf#Laf#Lafa2#La2#L#La2#Laf#L#L.3#L#L#L#L#L#L#L#L.na9a9blblbn#Hbga0#xaYaYa9blaYblaYblaYblaYaYawaYaYaYaYbl#Da9a9a9a9a9a9a9a9#L#L#L.7a9.7a9a9#La9a9a9a9af.nafa9#pa9#pa9#pa9a9#Da9#D.7#Da9bja9a9.7a9a9a9#D#Dbl#D#saYaY#x.Cbn.WaF#San.Ga4aZa#a#aZ#uanaZaBa#bma#",
|
||||
"bnaYaYawaYaY#M.N#D#D#D#D#D#D#Da9a9#D.nbja9.7a9.7a9.7.7a9#La9a9a9.7a9#L#L.7af.7a9#Laf#Lafa9.7a9a9#L.7#La9a9#DaY#Ua0#UaCa0#I#x#I#I.N#s#D#D#sa9#D#Da9#D#s#D#Daw#DaYajaf#L#L#Laf#L#La2a2a2#La2#La2#L#La2a2a2a2bpaj#Lajaf#Lajaf#Lajafaja9ajafajaf#L#Lafafafafa2#L#L#La2#L#L#L.3#L.3#L#La2#L#Lafa9.na9aYbnb#b#am.C.NaWa9bj#D#Dbj#D.N.NaYaY#DawaY#DaY#D#D.7a9.7a9.7a9a9#Laf#Laf#Laf#L#Lafafaf#La9#D#D#D#L#Lafajaf#Laf#L#L#L#L#L#L.7.7.7a9a9.7a9#D#D#D#DaYaY.N#x#Ia0.Ca0aF#vaF#vaOb#aob#aoaFaBaZ.0a#.5am",
|
||||
"#U#x.RaYaYaYbl#D#D#D#D#s#D#Da9#D#D.7#Da9.7a9bja9.7a9af.7a9a9.7a9af.7a9af#L#L#La9a2afaj#L#La9.7a9aj#L#La9.nblaYaY#Ia0aC.W#x#I.N.s#D#s#D.n#D#D#D#sa9a9a9#Dbl#D#D.Na9a9a9a9a9#La9#L#Laf#Laf#Laf#Laf#Laj#L.7aj#L#L.7afajafaf#Laf#Laf#Laf#L#Laf#L#Lafafafaf#Lafa2#L#L#L#La2af#L#L#L#La2a2af#L#La9bja9.Rawa0.8a0.C.Nbj#Da9a9#Da9#D#DaY#DaYbl.Nblaw#Dbl#D.7a9a9.7a9a9bjaf#Lajaf#L#Laf#Lafafafa9a9#Da9#D#Laf#Laf#L#L#Lafaj#L#L.7#L.7af.7#La9a9.7#D#D#D#D#D.NaY#x#x.C.CaoaFaFaOaOamamamamaCaF#v#v.0#vb#am",
|
||||
"bnbnawaYaYaY#Dbl.n#D#D#Da9bja9bj.n#D.7a9#D.7a9a9a9.7a9a9#La9a9a9#L#L#L#L#Laf#L#La2a2a2af#La9a9a9#L#Laf.7a9#D#IaY#UbnaC#xaY.N.saY.s#D#Db.#D.n#D.7a9a9#Da9#D#D#D#Da9bja9#Da9#Da9#Da9a9a9a9a9a9a9a9#Laf#L#Lafafajaf#La9#Lajaf#Lajaf.7#Laf#L#Lajaf#Lajafaf.3#L#L#L#Laf#Laf#La2a2#La2#La2#La2af.Ea9.naY#xaCamam#x.Nbj#s.7#D#D#D#Dbj#D#Dbl#Dbl.Nbl#Dbla9a9a9a9a9a9a9a9afafafafajafafajafaf.na9a9a9#D#D#Lajaf#L#Lafa2#L#Laf#L#L#La9.7a9a9.7a9a9#Da9#D#D#D#MaY#x#x.CaCa0aFaOaFamaFaCa0a0bnaCb#aOaFaOama0",
|
||||
"#IaYaYaYawaYaw#D#D#D#s#D#sa9#sa9.7a9a9a9.7a9#L.7#La9af.7a9a9.Ea9afaj#Laf#L#La2#La2a2a2#La2#La9#L#L#Laja9a9blaYaY#I#U#xaw.Naw#D#Da9#sa9#sa9.7a9.7ajaf.Ea9a9.7a9#D#D#D#D#Dbj#D#D#Da9#D#D#D#sbl#D#sa9a9a9a9a9#Da9#Dafajafaf.Eaf.7afajaf#Lajafaf#Lafafafajaf#Laf#L#L#Laf#L#L#Lafa2#La2a2af#L#La9a9a9aw#x.Vaoa0#x.Nbja9#D#D.7#D#D#D#Dbl#DaY#DblaYaY.Na9a9a9a9a9.7a9a9#La9afa9afa9af#pafa9#pa9a9a9.7a9#Laf#Laf#L#L#L#Laf#L#Laf.7a9#D.7a9.7a9.7#D#Dbj#Dbl.NaY#x#I.Ca0aqbgaFamaoambn.Cbn#U#xbna0aCama0a0",
|
||||
"aYaY#IaYbl.N.N#D#s#D#D#D#D#D#Da9a9a9.7a9a9a9a9#Laf#L#Laf#L#Laf#L#Lafa2a2a2a2a2a2a2a2a2a2a2#L#Lafa2#L#La9a9#DaY#Ubn#I#xaYaw#D#s.sa9bj.n#Da9.Ea9.7#L.7#L#L.7a9.7#L#Da9#Da9#Da9#Da9#Dbl#Dbl#D#Dbl#Dbl#s#D.na9#s#D#Ma9a9.n#Laf#Lajaf#Laf#Laf#L#Lafajafafafaf#Laf#L#L#La2#L.3#L#L#Lafa2a2#L#Lafa9.na9#Dawa0bga0#x.N#s#Da9#D#D#D#D#D#D.Nbl#DaYaYaYawaYa9.na9#La9afa9afa9a9a9a9a9a9a9a9a9#pa9a9a9a9a9a9#L#Lafaj#L.3#La2afafa2af#La9a9a9afa9.7a9#D#D#D#D#DaY.N#x#xa0a0aoaFbgama0a0a0aCa0aYaY.baYbnbnaC#x",
|
||||
"aYaYblbl#D#Da9.7a9a9a9a9.na9a9.7ajafaj#L#L#La2#L#L#L#L#Lafaj#Lafa2a2#L.j#La2#La2a2a2a2#La2af#L#L#L#L#L#La9#MaYaY#Ibn#MaY#D.s#D#s.7.na9.Ea9.7aj#La2aj#L#Laj#L#L.7.7a9.7.7a9.7a9.7#M#Dbl#MblblaYbl.sbl#Dbl#D#Dbl#Daf.Ea9af.Eafa9af#Lafaj#L#Laf#Lafafafafafaf#Laj#L#Laf#L#La2afa2#La2#L.3#L#L.7#Da9#DaYaCama0#Ibla9#Dbj#D#Da9#D#D.N#MaY#DblawaYaYaY#pa9a9a9#pa9a9a9afa9afa9#p.na9a9#Mbla9a9a9#La9.7afaj#Laf#L#Laf#Laf#Laf.7afa9afa9a9.7a9#D.7#D#D#D#Dblaw#x#x.WamamaOb#aOa0aC.Cbn.C#U.RaYaY.b#xbna0",
|
||||
"aYaY#D#D#D#s.7.7a9.7a9.7a9a9.7a9#Laf#Laf#Laf#Lafa2a2a2a2#La2a2aja2a2.3a2a2a2a2a2aaaaa2a2a2a2a2#La2#L#La9a9#DaY#I.RaYaw#D#M#D#s#D.n.7a9.n#L.7af#La2a2a2#La2#L#L#La9a9.7a9a9.7a9a9a9#pa9a9a9.n#pblaYaY#IaY#IaYaw#x.na9af#Laf#Laj#Laf#La9afajaf#L#Lafafafaj#Laf#L#Lafa2#L.3#L#L#L#La2a2#L#Laf.na9.n#D.NbnaCaobn#D#s#D.n#D#D#D.N.NaY#DaY#Dbl.NaYaYaw#D#pa9#p.n#pa9#pa9a9.n#pa9#pa9#pa9#D#pa9afafajaf#Laf#L#Laf#L#Laj.3af.3afafa9a9a9.7a9.7a9#D#D#D#D.NaY.N#xa0ama0aob#ama0a0a0bn#Ibna0#x.bbnaY#Uamam",
|
||||
"#MaY#s#D#D.7#La9#L.7.na9a9.7a9a9#L#L#L#La2#La2#La2a2a2aja2#La2afa2aja2#La2a2a2a2#gaaa2a2a2a2a2a2a2#L#La9a9blaYaYaY#MaY#M.N#D.n#D.na9.n.7#L.E#L#L.ja2a2a2#g#L#L#L#Lajaf#Lajaf#L#La9a9#pa9#pbla9.naYawaYaYaY.RaYaY.na9.na9aj.7af.n#Lafaj#Laf#Lajafafajafafaf#L#L#L#Laf#L#La2afa2af#L#La2af#L.7a9a9.7aw#xaCa0#IaYa9#D#D#D#D#D.NaY.saY#Dbl#DaYaYaYaY.na9#pa9a9#p.na9af#p#pa9a9a9#pa9#Dbl#Da9.na9#L#Laf#L#Lafajaf#Lafafafafafafafa9a9afa9a9bja9bj#D#D#D#DaY#x.Wa0av.5.pamaCa0#Ua0#x#xa0bnaYaw.R.Cb#am",
|
||||
"amam#xbla9a9a9a9a9a9.7a9.7afa2#Laf#Laf#La2#La2#La2a2a2a2a2a2a2a2#Laf#Laf#La2#L.3a2a2a2a2asa2#La2#gafa9blaYawaYaYawbn#IaYawaw#D#Da9.Ea9#Lafaf#L#L#L#La2a2a2a2a2a2a2a2#La2af#L#Lafajaf#L.na9bja9#D#p#pbl#M#x#Ia0bn#I.NaY#D#Da9a9.7af.Eafa9aja9#Lafa9a9a9a9#Lafa9afajafafafaf#Lafafa2.ja2afajaf#L.na2a9aY.Cbgam#x#Ma9.n#Lajafa9.N.N#pa9bl.N#MaYaYaY#p#pa9#pa9#pa9#p#pa9#p.n#p#p.n#pa9#pa9a9#paf#pa9a9.n#pafafafafafafafa9afa9afa9a9.na9a9a9a9a9#D#D.n#paYaYa0amb#amb#a0a0a0.Ca0#I#xaw#xaY#x#xaCa0aC",
|
||||
"ama0#xbla9.na9a9bja9#Da9a9ajaf#La2aj#Lafa2#La2#La2a2#La2#La2#La2af#Lafa2#Laf#L#La2a2a2asa2a2a2a2a2#La9blaYaYaYawaYaY#xawaY.N#s#Daja9#Lafajaf#Laf#L.j#La2#La2#La2#La2#La2#L#L#L#L#L#Laf.7a9#D.n#Da9.nblblaYaY#xaC#x#IaY.s#D#sa9.na9a9a9a9a9a9a9a9a9afa9afa9a9#La9afafaj#Lafaf#Lafa2#La2#Lafafaj#La2.naw.CamaC#xaY#D#D#La9a9#sbl.Na9#M#DblaYaYaY#xbla9#p#pa9#pa9#pa9#pa9#p#pa9#p#p#pa9.n#pa9a9a9af#pafa9afa9a9afa9#La9af.7afa9afafa9afa9a9.na9#Dbl#p#pblbn#U.5bg.5a0aoa0a0#Ua0#xbnaYaYaY#U#xbn#xa0",
|
||||
"amaCaYaYaw#Dbl#sa9#D.7a9.7af#L#Lafaf#L#La2#La2#La2a2a2a2a2a2a2a2#L#L#Lafaja2#L.3a2a2a2#La2a2a2a2#ga9#D#MaYaY#UaY#xaw#Ibl.Naw#D#Dafafaja9#L#Laf#La2#La2a2a2a2a2a2a2.jafa2#Laf#Laf#Laf#La9a9.7#Da9a9a9#sblawaY#x#x#IaY.NaY#D#D#D#D#sbl#s#D#sa9a9.na9.na9a9.nafa9afafafafafafafajafa2#L.3#L#Laja9#Daj#DaY.Ca0aoa0aY#D#Ma9.na9#D#DaYblblblaYaYaYaYaYbl#pa9#pa9#pa9#pa9#p#Ma9bl#p#D#pa9a9#pa9#pa9#pa9#pa9#pa9#paf#pa9afa9afa9afa9afa9a9a9a9a9a9a9#Da9bla9awaYa0a0ama0b#a0a0a0#x#U#x#xaw#xaw#xbn#I#xa0",
|
||||
"b#b#aCaYaYbl#Dblbja9#D.na9#Lajaf#L#L#Lafa2#La2#La2a2#La2#La2#La2afafaj#L#Laf#L#La2#La2a2a2a2#La2#La9blaYbnbn.R#IaY#U#xaYaw.N#D#s#L.Eaf#Lafaj#L#L#La2#La2#La2#La2afa2a2a2#L#L#L#Lafajaf.7.n#Da9b.afa9a9a9#DaY#I#x.NaY#saY#s#D#s#DaYaYaYblaY#DaY#Dbla9a9a9a9a9a9a9.na9a9.na9a9a9a9#La2aj#Lafa9a9a9af#Mawa0aCa0a0bn.NaYbl#D#M#DaY.NaYaYaYawaYaYawaYbl.na9#pa9#pa9#pblbla9#p#pa9#p.na9#pa9.n#pafa9af.naf#pajafafafafa9a9a9afa9af.7afaf.nafa9a9af#D#DblblaYaY#xaCa0.Ca0aobnaCbn#xawaYaY.RaYaYaY#xbn#x",
|
||||
"a0bnbnbnaYaYbl#D.n#D#sa9a9#Laf#L#L.3#L#L#La2#Lafa2a2a2a2a2a2a2a2#L#Lafaf#L#La2#L#La2#L#L#La2#L#Laf.nblaY.bbn#U#x#Ubn#Ibl.NaYa9.7a9afaja9#Lafaf#La2a2aja2a2a2a2a2a2a2a2a2af#Laf#L#L#L#La9a9.7#Da9#Laja9#D#D.NaYaY#s#D#D#DaY.NaY.saY.saY.NblaY#DaY#sbl#sbla9#Da9#Da9a9.na9a9afa9ajafaf#Lafa9a9#D#sa9blaY#Ua0aob#aC#xaYaw#D#DblaY#IaYawaYaYaYaYaYaYbl#pbla9#pa9#pa9bl#M#p#D#p#M#p#pa9#pa9#pa9a9#pa9#p#pa9#p#pafafaf.nafa9a9#La9afafa9afa9a9afa9#Da9bl.NaYawbn#x#x#x#Ubna0#xbnaY#xaYawaYaw#xawaY#x#U",
|
||||
"#Ubn#Uam#UaYaYbl#Da9bja9a9#L#Laf#L#Laf#Laf#La2#La2a2#La2#La2#La2af#L#L#L#Laf#La2af#L#La2#L#La2#Lafa9bl.Ra0.pa0bn#U#xawaY#M.N#s.7.na9#Lafaj#L#Lafa2a2a2a2#La2#La2a2a2a2a2#L#L#L#Laf#Laf.7a9#D.7#Dafaf#L.na9#Daw.N.n#D#D#s#Daw#DaYaYaYaYawaYaYawbla9bla9bla9.n#D#Ma9a9a9#Da9#sa9#p#Laf#La9.7.n#D#D#DaYawa0a0aob#amaCa0aYaYaY#DaY#xaYaYaYaYaYbl#Dbl#p#pa9#pa9#pa9#p#pbl#p#pa9#pa9bl#p.na9a9#pa9#pa9af#pafa9af.na9afa9a9aja9a9afa9#Laf.7afa9.7afbl#D#D#DaYaYaY#xaY#xa0bnbn#U.RawaY.baYaYblaY.R#IaYaY",
|
||||
".Rbnb#a0a0#xaYbl#s#D#sa9.Eaf#L#La2#Laj#La2a2#L#La2a2a2a2a2a2a2a2#La2afa2afa2#Laf.7af#La9a9#Lafa9a9a9.R.Ra0.V#UbnaYaYaY#D#D#D#D.7afajaf.Eafaf#L#La2#La2#La2a2a2a2a2a2#La2#L.3.7#Lafaj#La9a9.n#Da9#Laj.7a9.7#D.N.Na9.n#D#DaY.NaY.sbl#Mblbl#Dbl#Dbl#D#Dbl#s#Dbl#Dbla9#Da9.nbla9a9#Dajaf.na9#D#D#D#sblawaY#x#Ub#b#aO.5a0aCaYaYawaY#x#xaYaYaY.sblbl.na9#pa9#pa9#pa9#pblbla9#M#p#Dblbl.n#p#p.na9#p.n#p.na9#pa9#pa9af#pa9afa9a9af#Laf#Lafafa9afa9a9#Da9bl#D#M.NaY.Naw#x#UbnbnaYaYaY#xaYbl#MblaYaYaYaY#I",
|
||||
"#Fbn.Vaoa0bnaYblbja9#Da9a9#Lajaf#Laf#Laf#L#L.3#La2a2#La2#La2#La2af#L#L#L#Lafaj#La9#L#La9a9#L#Lafa9blaw.R#Ua0bnbn#IaYaw#D#s#Da9#s#La9#Laf#L#L#L#La2a2a2.j#L#La2#La2a2a2a2#L#Laf#L#Laf#Laf.7#D.7#s#L#L#La9.7#D.sbf.n#Da9#Daw#DaY.N#pbl#M#D#p.n#pa9#sbl#D#D#Dbl#D#D.na9#Dbl.n#Da9a9af#La9.7a9#s#DaYaY#x.baYbnaoamaFaFaoa0#IbnaYaY.R#x#xaYaYbl#Da9#pa9#pa9#pa9#pbla9#M#pa9#pa9#p#Mbl#pa9a9a9#pa9a9#pa9#paf.naf#pafafa9a9a9afa9af.7afa9#L#La9a9af#D#D#D#DaY#D#DaY.NaYbnbn#U#x.baYaYaw#paY#D#MaY#IaYaY",
|
||||
"blaw#xa0ambn#xaYawblbl#D#pa9afafa2a2a2a2a2a2#La2#L#La2#La2#La2#La2a2a2afa2#La9a9a9a9a9#D#D#D#D#D#pbl#paY.Rbn#I#x#pa9a9a9a9.7.7a9afajaf.n#Laf#L#L#L#L#La2a2a2#ga2a2bpa2#L#L#L#L.7af#Laf.7a9a9a9#Da9a9#sa9#D#D#D.Na9a9a9#sbl#D#Ma9bl#Dblbl#Dblblbla9a9a9afa9a9a9a9a9a9afa9a9a9a9.nafa9a9.na9a9#D.naY.RaYbna0a0b#aobgb#bg.Va0aCaY#D#Mbl#Mbl#Dblbl#Dbl#Dbl#Dbl#Dblbla9#pbla9#p#pa9#p#p#p#p#p#pa9#pa9#p#p#p#pa9a9afa9aja9afaf#Lafaf#La9afa9#Lafa9a9af#sa9#Dbl#DaYbl.N#UbnbnbnaYaY#IaYaY#MaY#xaYaYaYaY",
|
||||
"aYaYbn.Ca0a0#I#xaYaYblbl.naf#Lafaja2#La2#La2a2a2#La2#La2#La2#La2a2a2#L#L#L#L#L#Lafa9af#D#p#Dbl#D#F.nblblaYaYaYaYa9.n.7a9a9.7a9.7afafaf#L#L#L#L#La2#ga2#ga2bpa2#L#ga2a2#L#L#L#L#L#Laj#Laf.7a9bja9.7#D.7#D#D#D.Naw#D#M#D#p#D#p#D#Dbl#sbl#Dblbl#Dbla9.na9.naf#paja9afa9.na9a9afa9a9afajafa9a9a9blblaYawaY#Ua0aC.5am.V.Vb#ama0aYaY#xblaY#DaYbl#M#Dbl#Dbla9bla9bla9bl#D#p.n#pbla9bl#p#p.na9#p.na9#p.na9bl.na9afa9a9a9a9afa9#La9af.7afa9a9#Laf#Lafa9a9a9a9a9#D#DaY#saYbnbn#U#x#UaYaYaYaYaYaYawaYaYaY#x",
|
||||
"aY#xbna0a0a0a0bnaYaY#Mbla9a9a9af#L#Laf#L#L#L#Lafa2#La2#La2#La2a2#La2afa2af#L.7#La9a9#D#D#D#D#DaY#pblbl#MaYaYbl.Na9a9a9.7a9#L.Eaf.naf#Laf#L#L#L#La2a2bpa2#ga2#ga2a2#L#L#L#L.7a9a9a9a9afa9a9#D#D#sa9.nbl#DaYblaYaYbl#D#D#D#M#Dbl#sblbl#Dbl#sbl#D#Ma9a9a9a9a9a9a9a9a9a9a9a9.na9a9a9.n#pa9a9#D#sbl#saYaY.RaY#xa0a0aCa0#Ua0aCbnaYaYawbl#sbl#M#Dblbl#D#pa9a9a9a9a9a9a9#p#p#D#p.n#pa9.n#p#p#pbl#pa9a9#p#pa9#p#pa9a9afa9af#Lafaf#Lafaf#La9a9afa9af#La9afa9a9bl#D#p#DaY#DbnaCbnbnaYaY#IaYaYaw#xaYaYbn#I.R",
|
||||
".Raw#xa0aC.Ca0a0.baYaYblbla9a9af#Laf#L#La2afa2#L#La2#Lafa2#La2a2a2a2a2#L#L#Laf#L#D#p#Dbl#DblaYaY#pblblbl#Dbl#D#Dafa9af#L#La9#L.7afaf#Lajaf#L#L#L#L#ga2a2#La2bpa2#L#L#Laf#La9.7#Da9a9a9#D#Dbl#DaYblblaYaYaYawaYaY#xawaYaYaYaYaYaYaYaYaYaYaY.NblaYa9a9#pa9a9#pa9#p.n#Da9a9a9#Da9#D#pa9bl.na9blaYblblaYaY#IaYbnbna0#Ua0b#b#a0aYaYblblbl.Nblbl#Dbl#Da9a9afa9afa9afa9#Ma9#pa9#pbl#pbl#p#p#pa9#pa9#pa9a9bl#p.na9a9a9a9#La9af.7afa9#La9afa9a9af.7afafafa9a9a9#D#D#DblaYbnbn#Ibn#IaY.RawaYaYaYaYaYaY#x#x",
|
||||
"bnbnbnbna0a0a0amaYaYaYaY#D.na9a9afa9afa9#L#L#Laf#L#L#La2#La2#L#La2#L#Laf#L#L#Laf#D#Dbl#DblaYaYaYa9.nblbl#D#D#Dblafaf#L#L#L#L#L#L.naf#Laf#L#L#L#L#ga2bpa2#ga2a2#gaf.3af.7afa9a9.n#D#Dbl#sblbl.NaYaYaYaYawaY#x#xaYaYaYaYaYawaYawaYaYawaYawaYblaYblblbl#Dbl#M#Dblbl#Dbl#D#Dbl#s#Dbl.n#pa9blawblawaYaw.RaY.RaY#U#xbn#UbnaCaOama0aYbl#Dbl#Mbl.Nblbl#Da9.na9a9a9a9a9a9a9#pbl#pa9#pa9#p#p#p#M#p#p.n#pa9.n#pa9#pa9a9afa9#Lafa9afa9#Lafafa9afafa9af#La9#La9af#Dbl#Daw.NawbnbnbnbnaYaY#xaYbn.baY.RaY#xbnbn",
|
||||
"ama0bna0#Uambgb#aY.RawaYbl#Da9a9a9.7a9.7a9af.7#L#La2af#Laf#L#L#La2a2#La2#Laf#L.7#pblblaYaYblaYaYblblbl#Da9a9a9.7afajaf#L.3#L#L#L#Lafaf#L#L#L#L#L#L#ga2a2bpa2bpa2#La9#Lafa9af#D#D#Dbl#DaYaYaw#xaYaYawaYaY#xbnbnaYawaYaYaYaYbnaYaYaY.RaY.RaY.baYawbl#Mblblblbl#Mblbl#D#D#M#Dbl#D#D#pbl#MblblaYaYaY.RaYaYawbnaYbnawaYaYa0aO.Fa0#x.R#Dbl.Nbl#Mbl#sbla9a9a9a9afafafaf#p#p.na9bl.nbl#p.n#p#pa9#pa9a9#p#pbl#pa9a9a9a9a9#La9afa9a9afa9#Laf#La9afa9af#Lafa9a9#D#Dbl#DblaYbna0#Ubn#I.RawaYawaYaYaY#UbnaCbn",
|
||||
".Va0bna0.V.Vb#.5bn#xaYaYaY#Da9a9a9#La9#La9#L#Laf#L#L#La2#La2afa2#La2#Laf#La9a9a9blaY#MaYaYaYaYaYbl#Dbl#Dafa9#L#Lafa2a2a2a2a2#L#Lafaj#Laf#L#L#L#La2a2bpa2#ga2a2#gafafafa9a9a9bl#pbl#DblaYaYaYaY#xaY.Rbnbn#Ua0a0a0aYaYaYaYaYaYaY#U.R.b.R.R#U.Rbn.RaYaYawblaYblaYbl.N#MaY#DaYblaYbl#sblblblawblaYaYawbnaY.RaYaw.RaY#IbnaCb#aOb#.Vbn#DblblawaYblbl#Da9a9a9a9.7a9.7a9#D#pbl#p#p#pa9#p#p#p#pbla9#pa9a9#pa9.n#pa9.na9a9afafa9a9afa9#Laf.7af#La9afa9#Lafa9a9a9bl#s#DaY#sbnbnbnbnaYaY#x.Rbnbnbnbnbn#xa0a0",
|
||||
"a0.Vbn.bbna0b#b##UbnaYaY#D#Ma9a9.Ea9a9a9.7a9.7#Lafa2a2#La2af#L#La2a2#L#L#Laf.7.7blblaYblaYaYaYaY#DaYa9a9a9#La2#La2a2#La2#L#ga2#Lafafafa2#L#L#L#L#L#ga2#g#La2bpa2afafa9af#p#Da9#D#DaY#D#DaYaYaY#x.RaYaYbnbna0a0a0aYaYaY.RaY#UaYaYaYaYaYaYaYaYaYaYawblaYaYaYblaYblaYbl.NblaY#s.Nblblbl#MblaYawaYaY.Raw.RawaY.b#x.baY#xa0aob#bga0bnbl#sblaYaYbl#sbla9.n.7a9.n.7a9a9#pa9#pa9#p#D#pbl#p#p.na9#p.na9#p.n#pbl#pa9a9a9af.7a9afa9.na9a9afaf#Lafa9afa9af#La9.nbl#D#D#DblaYbnbn#UaYaYaYawaY.RaY.Rawbnbna0a0",
|
||||
"aYaYaYaYaYaY.N#xaYaYawbnaYaYaYaYbl#Dafa9afa9.7#L#L#L#L#L#L#L#L#L.3a2afafa9#D#DaY.R.R#x.RaYawaYaYa9.7a9#L#L#Lafa2a2a2a2a2#g#L#L#Lafafajafafa2#L#L#L#L.7#L#L#L#L#L#L#L#Laf.7#La9a9a9.7a9#D#D#D#D#Dblbl#IaY#xaY#xaYaYaYaYawaYaYaYaYaYawaYaYawaYaYaw#Fbl#M#FblaYaYaY.R.R.R.R.R.R.R.RawaYaYaYaYaYaYawaYbl.NaYaYaYbn#Ibn.baY#Ua0aOb#.Vbg#HaY.bbla9a9.na9a9a9a9.7a9a9.Ea9#p.na9a9.n#pa9#pbl#p#pa9#p#pa9#p#pa9#pa9#pa9a9#pa9.na9afafaf#L#Laf#L#L#L#L#Lafa9a9a9#pblbl.Nbl#x.R#xaY.R#x#xaYaw.RaYaYaYaYaY#D",
|
||||
"aYblaYaYaY#IaY.NblawaYaYaYaYaYaY#Dbla9a9a9a9a9#L#L#L#L#L#L#L#L#L#Laf#Lafa9#Dbl.N.R.Raw.RaYaYaYaY.7#Da9.7af#La2#La2#ga2#ga2#L#L#Lafafafaf#L#L#L#L.7#L#L#L#L.7#L.7a2a2#L#Laf#La9bja9#D.7#D#D#D#D#D#D#DaYaYaYaYaY#xaYaYaYaYaYaYaYaw#xaY#xaYaYawaYaYbl#FblaY#MaYblaw.R.b.R#MaY#FaY#FaYaYaYblaY#MaYaYblawaY.RawaYawaYbnaY#Ibnao#SaBaF.p#H#U.RaY#Ma9#Da9a9.7a9a9a9a9a9a9a9a9#pa9#pa9.na9#pa9a9#pa9#pa9#p#D#p#s#pa9a9afa9af#pafafafafaf#L#L#Lafaj#Lafaja9#pa9a9#Dbl#DblaY#UaYaYaw#x#xbnaYblaw.RaYaY#Dbl",
|
||||
"blaYblaYaY#D.NaY#pblblaY.RaYaYaYbl#Dbl#Da9a9.7a9#L#L#L#L#L#Laf#Laf.nafa9#D#DaYaYbn.RbnaYaY.R#xaYa9.7a9#L#L#La2#La2a2#g#L#L#L#L.7afajafaf#Laf#L#L#L#L#L#L#L#L#L#La2#La2a2#L#L#L#L#L#La9.7#Da9bj#DblblaYaYaYaYaYaYbl#Dbl#D#Dbl#Dblbl#Mbl#MaYblaY#Mbl.nbl#pa9aYblaYblaYaYaY.RawaYaY#M#F#M#Fbl#F#F#M#p#p#p#MblaYaYaY#UbnbnaCam#SaBbm#H.p.p.RaYaYbla9.na9a9.na9a9a9a9a9#pa9a9#pa9#pa9#pbla9#pa9#pa9#pa9#p#p#pa9#pa9#pa9#pa9a9afafafaf.3afajafafafafafa9.n#pa9#p#Dbl.N.RbnaY.RaYbnaY#x.b.RaYaYblbl#Dbl",
|
||||
"#DblblaY#Dbl#D#Dbl#DawaYaYawaYaYaYaYbl#Dbl#D#Da9#Da9#Da9#Da9.7a9a9#p#Dbl#DaYaYaw.R.RaYbnaYaY#xaY#D#Da9.7#L#L#L#La2#ga2#L#L#L.7afafafafafaj#L#L#L#L#L#L#La2#L#L#La2a2a2#La2#L.7#La9#L.7a9.7#D#D#D.N#Dbl.sbl#D#Dbl#D#D#D#Dbl#D#D#Da9#D#D#Da9#D.n#D#pa9#pa9a9blblblblaYblblblblblbl#p#Fbl#p#pbl#pbl#p#M#pblbl#Faw#FbnbnaCamaCaF#SaZ#Hb#bgbnaw.Raw#Da9a9a9a9a9a9.na9afa9a9#p.na9a9#p.na9#pa9#pa9#pa9#M#p#D#p.na9a9a9af#pajafafafafaf#Lafa9afa9a9afaf#paf#p.n#Dbl#DblbnaYbn#Ubn#x#U#xbn.baYblaY#DaY#D",
|
||||
"blblaY#DaY#D#D#Dbl#Dbl#DblaYaYaYaYaYaYaY#M#Dbla9#D#D#D#D#D#D#D#Dbl#Dbl#DaYaYaYaYbn.R#U.RaY.R#xaY.7a9.7#Laf#La2#La2a2#L#L#L#La9.7afafafaf#Laf#L#La2#g#L#g#L#ga2a2a2a2#La2a2#La2#L#L#Laf.7a9a9#Da9#DblaYaYbl.Nbl#Da9a9a9a9a9a9a9a9.na9.na9a9.na9a9ajafa9.na9a9.na9blblbl#Dblblblbl#M#p#p#p#p#p.n#p#p#p#p#M#pblbl#MbnbnbnaCa0aF#SaZ.V.V.VbgbnaYaYaYbl#D#D#D#D#D#Dbla9#p.na9#pa9#pa9#pbla9#pa9#pa9#pa9#pa9#pa9#pa9af#pa9#pafafaf#Lafa9a9a9a9a9afa9a9afafa9#p#Dbl#saY#x.bbn#xbn#I#xbnbnbnbnawbl#Dblbl",
|
||||
"a9#pa9bl#M#Dbl#Da9a9#D#D#D#D#D.Nbn#U.RaYaYaY#D#Dbl#D#Dbl#D#Dbl#DaYblaYaYaYawaYaYaY.RaYbn#xaw#xaY.7a9#D#L.7a2#Laf#L#Laf#La9a9#Da9afafajaf#L#L#L#Lbpa2a2a2#ga2a2bpa2a2a2a2a2a2#La2.3#L#L#La9.7a9.7bl.NaYaY#D#pa9#pa9a9a9afafa9a9a9afafafajafafafafafajaf#La9a9a9bj.na9#D.n#Da9#s#D#p#p#p#p.n#pbl#p#p.n#pa9bl#Mblbl#UaY#U#x#Ub#aB.l.V.V.V.VaCbnaY.R#D#Mblbl#Mblblbla9#pa9#pafa9a9#pa9#p#pa9#pa9#pa9#pbl.n#D#pa9#pa9afafafafafafafafafa9#p.na9a9a9a9afafafa9#p#DaYaY.Rbn#x#Ubnbn#xaCa0aCbnaYaYblbla9",
|
||||
"#pa9#p#Dbl#Da9#Da9afa9bla9bl#DblaYaYbnaYaYaYaYaYblaYblaYblaYaYblaYaYaYaYaYaYaYaY.Rbn.R#xaY.RaYaYa9.7a9#Laf#L#L#Lafaf#Lafa9a9a9.nafafafaf#Laf#L#Laa#ga2#ga2a2#ga2aaasa2a2#La2a2#L#L#L.3#La9.7a9#DaYblaYblbla9a9ajaf#Laf#L#Lafajaf#Lafafaf#Laf#L#La2#L#L#L#L#L.7.7a9a9a9a9a9.na9a9.na9a9a9a9a9a9.na9a9.n#D#D#D#D#D#MblawawbnaC.F.t.Fb#.Vb#.Vbnaw#xaYaYaYaY.NaY#D#Da9#pa9a9#p.n#pa9.nbla9#pa9#pa9#pa9#p#p#pa9.na9afafafafafafafafafa9a9afa9af#pafafafafa9#p#Dblblaw#xbn#Ubn#x#IbnaCb#aCbnawaY#D.na9",
|
||||
"#pa9#pa9a9#Dbla9a9a9af#D#Da9#D#D#xbn#xbnaYaYblaYaYaYaYaYaYaYaYaYbnaYaYaYaYaYaYaY.R.R.RbnaYaYaYaY#D.7#Da9#La2#Lafajafafa9a9a9a9#Dafafafaf#La2#L#La2a2#ga2a2#gaaa2asaaa2a2a2a2a2a2a2#L#L#La9a9.7a9#D.saY#D.n#pafaf#Lafaj#L#Laf#L#Laf#L#L#L#L#Lafaja2a2a2a2#L.E#L#La9a9a9.7a9a9a9a9a9.7a9.na9a9a9a9.E#L.7.7#D#s#D#s#Fblbl#M#xbnbg.t.F.t.V.V.VaCa0aY#DaYaYaYaY.Nblbl.na9#p.na9a9#pa9#p#pa9#pa9#pa9#pa9#p#D#pa9#p#pa9afafafaf#Lafafa9af#pa9#pa9afa9afafaf#pa9a9#D#DaYbnbn#xbn#Ua0bna0bg.Va0aYblbl#pa9"
|
||||
};
|
@ -0,0 +1,18 @@
|
||||
/* XPM */
|
||||
static char *xman[] = {
|
||||
/* width height ncolors chars_per_pixel */
|
||||
"8 8 3 1",
|
||||
/* colors */
|
||||
"e g4 black c pale turquoise 4",
|
||||
"f m white c light golden rod yellow g4 grey",
|
||||
"g g white c lemon chiffon m black",
|
||||
/* pixels */
|
||||
"eeeeeeee",
|
||||
"ffffffff",
|
||||
"gggggggg",
|
||||
"gggggggg",
|
||||
"gggggggg",
|
||||
"gggggggg",
|
||||
"gggggggg",
|
||||
"gggggggg"
|
||||
};
|
After Width: | Height: | Size: 24 KiB |
BIN
tests/benchmarks/gui/image/qimagereader/images/noclearcode.bmp
Normal file
After Width: | Height: | Size: 326 B |
BIN
tests/benchmarks/gui/image/qimagereader/images/noclearcode.gif
Normal file
After Width: | Height: | Size: 130 B |
@ -0,0 +1,788 @@
|
||||
/* XPM */
|
||||
static char *dummy[]={
|
||||
"8 8 777 2",
|
||||
"#R c #000000",
|
||||
"fn c #000001",
|
||||
".e c #000069",
|
||||
".f c #00006d",
|
||||
".g c #00006e",
|
||||
"#d c #0042b4",
|
||||
"aJ c #010101",
|
||||
"g0 c #010102",
|
||||
"dr c #010202",
|
||||
"gd c #010203",
|
||||
"#J c #0157bb",
|
||||
"e. c #020202",
|
||||
"du c #020304",
|
||||
"fR c #030303",
|
||||
"jJ c #040404",
|
||||
"hf c #040608",
|
||||
"fE c #040609",
|
||||
"cO c #04070a",
|
||||
"k# c #050505",
|
||||
"gC c #050709",
|
||||
"ka c #060606",
|
||||
"br c #06080a",
|
||||
"dY c #06090d",
|
||||
"hI c #070707",
|
||||
"in c #07090b",
|
||||
"cL c #070a0e",
|
||||
"cd c #070b0f",
|
||||
"e0 c #080808",
|
||||
"gZ c #080b0e",
|
||||
"eu c #080b0f",
|
||||
"dz c #080c10",
|
||||
"hD c #090909",
|
||||
"fq c #090d11",
|
||||
"cH c #090e13",
|
||||
"jB c #0a0a0a",
|
||||
"#U c #0a0d0f",
|
||||
"a4 c #0a0d10",
|
||||
"g3 c #0a0d11",
|
||||
"fu c #0a0f14",
|
||||
"cj c #0a1016",
|
||||
"kb c #0b0b0b",
|
||||
"#n c #0b0d0f",
|
||||
"a1 c #0b0e10",
|
||||
"g8 c #0b0f13",
|
||||
"f4 c #0b0f14",
|
||||
"hE c #0c0c0c",
|
||||
"bf c #0c0f12",
|
||||
".X c #0c28a0",
|
||||
"bT c #0d0d0d",
|
||||
"ax c #0d1014",
|
||||
"hr c #0d1217",
|
||||
"dH c #0d141b",
|
||||
"jy c #0e0e0e",
|
||||
"aW c #0e1115",
|
||||
"eH c #0e141b",
|
||||
"bE c #0f0f0f",
|
||||
"ar c #0f1317",
|
||||
"g5 c #0f1419",
|
||||
"hg c #0f151a",
|
||||
"fh c #0f151c",
|
||||
"dJ c #0f171f",
|
||||
"gI c #101010",
|
||||
".z c #101094",
|
||||
"h. c #10161b",
|
||||
"gm c #10161c",
|
||||
"eL c #10171f",
|
||||
"hK c #111111",
|
||||
"at c #11161b",
|
||||
"fC c #111820",
|
||||
"dA c #111922",
|
||||
"aj c #1163c4",
|
||||
"bJ c #121212",
|
||||
"#Z c #12161a",
|
||||
"ba c #12171c",
|
||||
"ho c #12181e",
|
||||
"jK c #131313",
|
||||
"iq c #13191d",
|
||||
"cA c #131e2a",
|
||||
"c7 c #141414",
|
||||
"dR c #141e29",
|
||||
"jr c #151515",
|
||||
"aA c #151a1f",
|
||||
"hq c #151c23",
|
||||
"fl c #151e28",
|
||||
"eV c #151e29",
|
||||
"d4 c #161616",
|
||||
"hw c #161e25",
|
||||
"jk c #171717",
|
||||
"bs c #171d23",
|
||||
"g9 c #171f27",
|
||||
"eC c #17212b",
|
||||
"b9 c #172432",
|
||||
"d5 c #181818",
|
||||
"as c #181e24",
|
||||
"bn c #181f25",
|
||||
"bS c #191919",
|
||||
"gr c #19232d",
|
||||
"ed c #1a1a1a",
|
||||
".d c #1a1a6e",
|
||||
"gB c #1a242e",
|
||||
"eK c #1a2531",
|
||||
"dQ c #1a2633",
|
||||
"hL c #1b1b1b",
|
||||
"g1 c #1b242d",
|
||||
"g# c #1b252f",
|
||||
"eJ c #1b2734",
|
||||
"d1 c #1b2937",
|
||||
"bW c #1c1c1c",
|
||||
"gW c #1c262f",
|
||||
"ci c #1c2b3b",
|
||||
"cs c #1c2c3c",
|
||||
"e# c #1d1d1d",
|
||||
"#3 c #1d232a",
|
||||
"f8 c #1d2833",
|
||||
"fI c #1d2936",
|
||||
"eO c #1d2a38",
|
||||
"cw c #1d2e3f",
|
||||
"jR c #1e1e1e",
|
||||
"a2 c #1e262e",
|
||||
"eP c #1e2b39",
|
||||
"dE c #1e2d3d",
|
||||
"cF c #1e2f41",
|
||||
"aO c #1e6ec9",
|
||||
"c4 c #1f1f1f",
|
||||
"gx c #1f2a36",
|
||||
"c# c #1f3043",
|
||||
"j2 c #202020",
|
||||
"bk c #202931",
|
||||
"ht c #202c36",
|
||||
"eF c #202f3e",
|
||||
"b7 c #203245",
|
||||
"cB c #203246",
|
||||
"hG c #212121",
|
||||
"aE c #212932",
|
||||
"bp c #212a32",
|
||||
"hl c #212d38",
|
||||
"cc c #213347",
|
||||
".M c #214eb7",
|
||||
"hF c #222222",
|
||||
"#7 c #222a32",
|
||||
"fw c #223040",
|
||||
"eU c #223141",
|
||||
"jC c #232323",
|
||||
"bb c #232c35",
|
||||
"ga c #23303d",
|
||||
"cv c #23364a",
|
||||
"cn c #23364b",
|
||||
"jl c #242424",
|
||||
"gj c #243240",
|
||||
"cm c #24374c",
|
||||
"c. c #24384d",
|
||||
"bF c #252525",
|
||||
"be c #252f39",
|
||||
"gt c #253341",
|
||||
"dU c #253649",
|
||||
".Y c #256cc9",
|
||||
"jG c #262626",
|
||||
"h8 c #26333d",
|
||||
"hb c #263440",
|
||||
"gs c #263443",
|
||||
"cr c #263b51",
|
||||
"cW c #272727",
|
||||
"aC c #27313b",
|
||||
"a9 c #27313c",
|
||||
"fk c #273748",
|
||||
"eR c #27384b",
|
||||
"cq c #273d55",
|
||||
"jV c #282828",
|
||||
"#5 c #28313b",
|
||||
"b0 c #2877ce",
|
||||
"gL c #292929",
|
||||
"#Y c #29323c",
|
||||
"hu c #293744",
|
||||
"fK c #293a4d",
|
||||
"jP c #2a2a2a",
|
||||
"#w c #2a323b",
|
||||
"bg c #2a3540",
|
||||
"dF c #2a3f55",
|
||||
"jn c #2b2b2b",
|
||||
"a6 c #2b3641",
|
||||
"jY c #2c2c2c",
|
||||
"h5 c #2c3b47",
|
||||
"hp c #2c3c4a",
|
||||
"gp c #2c3c4d",
|
||||
"cx c #2c445e",
|
||||
"bU c #2d2d2d",
|
||||
"h# c #2d3e4c",
|
||||
"dS c #2d435b",
|
||||
"e5 c #2e2e2e",
|
||||
"cG c #2e4762",
|
||||
"jF c #2f2f2f",
|
||||
"aG c #2f3b48",
|
||||
"gU c #2f3f4e",
|
||||
"ck c #2f4966",
|
||||
"j0 c #303030",
|
||||
"a0 c #303d4a",
|
||||
"he c #304251",
|
||||
"cQ c #307ace",
|
||||
"e4 c #313131",
|
||||
"ew c #31465d",
|
||||
"dW c #314862",
|
||||
"ce c #314b68",
|
||||
"jm c #323232",
|
||||
"bm c #323f4d",
|
||||
"k. c #333333",
|
||||
"e3 c #343434",
|
||||
"hi c #344757",
|
||||
"eT c #344b64",
|
||||
"b8 c #34506f",
|
||||
"dj c #347fd1",
|
||||
"bX c #353535",
|
||||
"f9 c #35485c",
|
||||
"ac c #363636",
|
||||
"#V c #36434f",
|
||||
"fv c #364c64",
|
||||
"dV c #36506d",
|
||||
"c2 c #373737",
|
||||
"ev c #37506a",
|
||||
"bI c #383838",
|
||||
"bw c #384655",
|
||||
"h4 c #384b5a",
|
||||
"hk c #384c5d",
|
||||
"ea c #393939",
|
||||
"bh c #394857",
|
||||
"gX c #394d5f",
|
||||
"#e c #3981d2",
|
||||
"e6 c #3a3a3a",
|
||||
"eS c #3a546f",
|
||||
"em c #3a81d2",
|
||||
"#F c #3b3b3b",
|
||||
"eQ c #3b5571",
|
||||
"dT c #3b5776",
|
||||
"cI c #3b5c7f",
|
||||
"gJ c #3c3c3c",
|
||||
"hX c #3c5060",
|
||||
"fi c #3c546f",
|
||||
"gG c #3d3d3d",
|
||||
"jv c #3e3e3e",
|
||||
"az c #3e4e5e",
|
||||
"fL c #3e5772",
|
||||
"bK c #3f3f3f",
|
||||
"gD c #3f576f",
|
||||
"fJ c #3f5874",
|
||||
"d2 c #3f86d5",
|
||||
"jx c #404040",
|
||||
"#8 c #404e5d",
|
||||
"bv c #405161",
|
||||
"cf c #406389",
|
||||
"jL c #414141",
|
||||
"iG c #415561",
|
||||
"im c #415663",
|
||||
"gz c #415971",
|
||||
"et c #415d7c",
|
||||
"cz c #41658c",
|
||||
"f# c #418ad7",
|
||||
"jT c #424242",
|
||||
"gy c #425b74",
|
||||
"fs c #425d7a",
|
||||
"#K c #4288d4",
|
||||
"jQ c #434343",
|
||||
"eX c #438cda",
|
||||
"j8 c #444444",
|
||||
".L c #44449a",
|
||||
"eZ c #454545",
|
||||
"#s c #455362",
|
||||
"fx c #45617f",
|
||||
"cK c #456b94",
|
||||
"aP c #458cd5",
|
||||
"ab c #464646",
|
||||
".n c #46469f",
|
||||
"aH c #46586a",
|
||||
"gV c #465f74",
|
||||
"d0 c #46678c",
|
||||
"c9 c #474747",
|
||||
"aF c #47596c",
|
||||
"a3 c #475a6d",
|
||||
"ex c #476687",
|
||||
"jU c #484848",
|
||||
"by c #485b6e",
|
||||
"gq c #48627d",
|
||||
"dI c #486b91",
|
||||
"cC c #48709b",
|
||||
"js c #494949",
|
||||
"#2 c #495a6b",
|
||||
"ih c #49606f",
|
||||
"hm c #49637a",
|
||||
"gk c #49647f",
|
||||
"j7 c #4a4a4a",
|
||||
"dt c #4a6e94",
|
||||
"ak c #4a8dd7",
|
||||
"b1 c #4a90db",
|
||||
"c1 c #4b4b4b",
|
||||
"bx c #4b5f72",
|
||||
"fr c #4b698a",
|
||||
"dG c #4b6e95",
|
||||
"co c #4b75a2",
|
||||
"fW c #4b91db",
|
||||
"bD c #4c4c4c",
|
||||
"hc c #4c687f",
|
||||
"j6 c #4d4d4d",
|
||||
"#Q c #4d5f71",
|
||||
"ik c #4d6676",
|
||||
"hH c #4e4e4e",
|
||||
"#0 c #4e5f72",
|
||||
"aD c #4e6277",
|
||||
"b. c #4e6377",
|
||||
"gN c #4e91dc",
|
||||
"c0 c #4f4f4f",
|
||||
"bj c #4f6378",
|
||||
"dZ c #4f759e",
|
||||
"cD c #4f7aa9",
|
||||
"hN c #4f8dcd",
|
||||
"kd c #505050",
|
||||
"#S c #506275",
|
||||
"#6 c #506376",
|
||||
"ge c #506e8c",
|
||||
"af c #515151",
|
||||
"b# c #51667b",
|
||||
"dk c #5195df",
|
||||
"cT c #525252",
|
||||
".c c #525280",
|
||||
"bq c #52677d",
|
||||
"iH c #526b79",
|
||||
"fj c #527397",
|
||||
"eW c #52769d",
|
||||
"dy c #527aa5",
|
||||
"hJ c #535353",
|
||||
"#x c #536476",
|
||||
"eG c #53789f",
|
||||
"jM c #545454",
|
||||
"#r c #546577",
|
||||
"bz c #546a80",
|
||||
"dM c #547ca8",
|
||||
"fP c #5499e2",
|
||||
"jp c #555555",
|
||||
"iK c #556f7e",
|
||||
"bM c #565656",
|
||||
"fB c #56799f",
|
||||
"dC c #567fab",
|
||||
"gE c #569be2",
|
||||
"cU c #575757",
|
||||
"h7 c #57748b",
|
||||
"gc c #577797",
|
||||
"fN c #577ba1",
|
||||
"dx c #5780ad",
|
||||
"cg c #5787bb",
|
||||
"i4 c #585858",
|
||||
"iF c #587483",
|
||||
"hy c #587792",
|
||||
"g2 c #587893",
|
||||
"fy c #587ca3",
|
||||
"eA c #587ea7",
|
||||
"jW c #595959",
|
||||
"bu c #597087",
|
||||
"ia c #5984b2",
|
||||
"ae c #5a5a5a",
|
||||
"#t c #5a6c7f",
|
||||
"bd c #5a7189",
|
||||
"ij c #5a7789",
|
||||
"eI c #5a81ab",
|
||||
"bR c #5b5b5b",
|
||||
"ch c #5b8dc3",
|
||||
"en c #5b9be1",
|
||||
"ke c #5c5c5c",
|
||||
"cP c #5c8fc5",
|
||||
"j5 c #5d5d5d",
|
||||
"iN c #5d7fa0",
|
||||
"gl c #5d80a3",
|
||||
"fp c #5d83ac",
|
||||
"cl c #5d8fc6",
|
||||
"b2 c #5d9de6",
|
||||
"c8 c #5e5e5e",
|
||||
"hh c #5e7f9c",
|
||||
"hn c #5e809d",
|
||||
"i3 c #5f5f5f",
|
||||
"#1 c #5f758c",
|
||||
"a8 c #5f7890",
|
||||
"g7 c #5f819e",
|
||||
"cJ c #5f93cc",
|
||||
"jz c #606060",
|
||||
"ct c #6094cd",
|
||||
"bO c #616161",
|
||||
"eN c #618cb9",
|
||||
"jH c #626262",
|
||||
"iW c #627c8d",
|
||||
"hd c #6285a3",
|
||||
"ey c #628dbb",
|
||||
"dO c #6290c4",
|
||||
"ca c #6297d1",
|
||||
"jI c #636363",
|
||||
"eM c #638fbd",
|
||||
"jN c #646464",
|
||||
"fH c #648db9",
|
||||
"eE c #648fbe",
|
||||
"cb c #649ad5",
|
||||
"hA c #64a8e2",
|
||||
"jw c #656565",
|
||||
"#k c #65798f",
|
||||
"fF c #658eba",
|
||||
"fA c #658fbb",
|
||||
"fa c #65a4e7",
|
||||
"b3 c #65a6e8",
|
||||
"jX c #666666",
|
||||
"hW c #6688a3",
|
||||
"gh c #668cb2",
|
||||
"aI c #6696cb",
|
||||
"dN c #6697cc",
|
||||
"bA c #6699ce",
|
||||
"cu c #669edb",
|
||||
"#C c #676767",
|
||||
"f3 c #678db4",
|
||||
"dl c #67a6eb",
|
||||
"kc c #686868",
|
||||
"cS c #696969",
|
||||
"dK c #699bd2",
|
||||
"cN c #69a2e0",
|
||||
"cy c #69a3e1",
|
||||
"fX c #69a6e8",
|
||||
"jD c #6a6a6a",
|
||||
"av c #6a84a1",
|
||||
"ds c #6a9cd3",
|
||||
"dL c #6a9cd4",
|
||||
"jt c #6b6b6b",
|
||||
"fo c #6b97c6",
|
||||
"cE c #6ba5e4",
|
||||
"jS c #6c6c6c",
|
||||
"aV c #6c88a4",
|
||||
"ir c #6c8ea4",
|
||||
"il c #6c8fa5",
|
||||
"eD c #6c9bce",
|
||||
"dB c #6c9ed7",
|
||||
"dq c #6c9fd8",
|
||||
"cM c #6ca7e7",
|
||||
"cp c #6ca8e8",
|
||||
"eo c #6cabed",
|
||||
"i2 c #6d6d6d",
|
||||
"#T c #6d869f",
|
||||
"#W c #6d87a0",
|
||||
"gY c #6d94b5",
|
||||
"aa c #6d9bcb",
|
||||
"eB c #6d9dd0",
|
||||
"dw c #6da0d9",
|
||||
"dD c #6da1da",
|
||||
"b4 c #6dacee",
|
||||
"h9 c #6dafe2",
|
||||
"i6 c #6e6e6e",
|
||||
"bt c #6e8aa7",
|
||||
"fM c #6e9bcb",
|
||||
"dP c #6ea3dc",
|
||||
"b5 c #6eabee",
|
||||
"jd c #707070",
|
||||
"ix c #7088a2",
|
||||
"hx c #7098ba",
|
||||
"f7 c #7099c3",
|
||||
"dv c #70a5df",
|
||||
"b6 c #70adef",
|
||||
"iy c #70aff1",
|
||||
"dm c #70aff2",
|
||||
"jE c #717171",
|
||||
"#m c #7188a0",
|
||||
"#u c #7189a1",
|
||||
"aY c #718eac",
|
||||
"gO c #71aced",
|
||||
"jq c #727272",
|
||||
"gb c #729cc6",
|
||||
"hO c #72afee",
|
||||
"ib c #72afef",
|
||||
"e7 c #737373",
|
||||
"#y c #738ba4",
|
||||
"#A c #739eca",
|
||||
".j c #747474",
|
||||
"#9 c #748fab",
|
||||
"hs c #749ec1",
|
||||
"f6 c #749fca",
|
||||
".i c #757575",
|
||||
"#q c #758da6",
|
||||
"a5 c #7593b1",
|
||||
"bo c #7594b2",
|
||||
"ii c #759bb3",
|
||||
"fb c #75b3f4",
|
||||
"ep c #75b4f3",
|
||||
"is c #75b8e2",
|
||||
"ag c #767676",
|
||||
"fz c #76a6da",
|
||||
"ez c #76a9e0",
|
||||
"dX c #76adeb",
|
||||
".h c #777777",
|
||||
".m c #777794",
|
||||
"iX c #77a6b3",
|
||||
"dn c #77b1f4",
|
||||
"gK c #787878",
|
||||
"#4 c #7894b0",
|
||||
"fG c #78a9dd",
|
||||
"j# c #797979",
|
||||
"bV c #7a7a7a",
|
||||
"do c #7ab4f4",
|
||||
"jA c #7b7b7b",
|
||||
"io c #7ba3bc",
|
||||
"dp c #7bb5f5",
|
||||
".k c #7c7c7c",
|
||||
"bc c #7c9cbd",
|
||||
"gi c #7caad8",
|
||||
"aQ c #7cb0e7",
|
||||
"fY c #7cb8f9",
|
||||
"iM c #7cbee2",
|
||||
"j1 c #7d7d7d",
|
||||
"aX c #7d9ebf",
|
||||
"fm c #7db0e7",
|
||||
"j4 c #7e7e7e",
|
||||
".8 c #7ea5ce",
|
||||
"#D c #7f7f7f",
|
||||
"hv c #7facd3",
|
||||
"gn c #7faedd",
|
||||
"eb c #808080",
|
||||
"er c #80bdf9",
|
||||
"j3 c #818181",
|
||||
"hz c #81afd6",
|
||||
"gu c #81b0e0",
|
||||
"eq c #81bbf9",
|
||||
"fc c #81bbfc",
|
||||
"#b c #828282",
|
||||
"iE c #82aac0",
|
||||
"i5 c #838383",
|
||||
"ha c #83b1d9",
|
||||
"es c #83bcf9",
|
||||
"ad c #848484",
|
||||
"go c #84b5e6",
|
||||
".v c #858585",
|
||||
"#p c #85a0bc",
|
||||
"bN c #868686",
|
||||
"hZ c #86b3d6",
|
||||
"fD c #86bcf6",
|
||||
"fO c #86bcf7",
|
||||
"gP c #86c1ff",
|
||||
"di c #878787",
|
||||
"ft c #87bdf8",
|
||||
"bH c #888888",
|
||||
"iT c #88cfe2",
|
||||
"jZ c #898989",
|
||||
"#z c #89a5c3",
|
||||
"g. c #89bbee",
|
||||
"fg c #89c0fc",
|
||||
"fd c #89c2fd",
|
||||
"hP c #89c3ff",
|
||||
"jb c #8a8a8a",
|
||||
"#o c #8aa6c4",
|
||||
"jc c #8b8b8b",
|
||||
".S c #8baccf",
|
||||
"iI c #8bb6ce",
|
||||
"al c #8bb9e8",
|
||||
"hj c #8bbde7",
|
||||
"gw c #8bbef2",
|
||||
"ff c #8bc3ff",
|
||||
"fe c #8bc4ff",
|
||||
"fZ c #8bc6ff",
|
||||
"ec c #8c8c8c",
|
||||
"gv c #8cbff3",
|
||||
"jO c #8d8d8d",
|
||||
"a# c #8dadce",
|
||||
"ic c #8dc7ff",
|
||||
"#H c #8e8e8e",
|
||||
"a. c #8eaed0",
|
||||
"#L c #8ebae8",
|
||||
"hY c #8ebee3",
|
||||
"g4 c #8ec1ec",
|
||||
"iO c #8ecbff",
|
||||
"ju c #8f8f8f",
|
||||
"bi c #8fb5da",
|
||||
"h6 c #8fc0e5",
|
||||
"f5 c #8fc4f9",
|
||||
"jf c #909090",
|
||||
"bl c #90b6dc",
|
||||
"i1 c #90dfe2",
|
||||
"bC c #919191",
|
||||
"aB c #91b5dc",
|
||||
"aZ c #91b7dd",
|
||||
"hV c #91c2e8",
|
||||
"gf c #91c6fc",
|
||||
"gg c #91c7fd",
|
||||
"f0 c #91c8ff",
|
||||
"i7 c #929292",
|
||||
"gA c #92c8fe",
|
||||
"iz c #92ccff",
|
||||
"iU c #939393",
|
||||
"a7 c #93b9e0",
|
||||
"f2 c #93c9ff",
|
||||
"gQ c #93ccff",
|
||||
"e8 c #949494",
|
||||
".y c #9494b0",
|
||||
"h1 c #94c6ec",
|
||||
"f1 c #94caff",
|
||||
"j9 c #959595",
|
||||
"#X c #95b7da",
|
||||
"cX c #969696",
|
||||
"ay c #96bbe3",
|
||||
"#f c #96bde8",
|
||||
"aR c #96c3ee",
|
||||
"gR c #96cfff",
|
||||
".J c #979797",
|
||||
"hQ c #97cfff",
|
||||
"fT c #989898",
|
||||
"#j c #98b6d7",
|
||||
"#l c #98b7d8",
|
||||
"iJ c #98c7e1",
|
||||
"g6 c #98cffd",
|
||||
"jj c #999999",
|
||||
"aS c #99c4ee",
|
||||
"h3 c #99ccf4",
|
||||
"gS c #99d0ff",
|
||||
".l c #9a9a9a",
|
||||
".b c #9a9aa4",
|
||||
"aw c #9ac1ea",
|
||||
"gT c #9ad1ff",
|
||||
"dg c #9b9b9b",
|
||||
".N c #9bbee8",
|
||||
"aq c #9bc1eb",
|
||||
"am c #9bc4ee",
|
||||
"eg c #9c9c9c",
|
||||
"au c #9cc3ed",
|
||||
"ao c #9cc5ee",
|
||||
"c5 c #9d9d9d",
|
||||
"aT c #9dc7ef",
|
||||
"hU c #9dd2fb",
|
||||
"hR c #9dd3ff",
|
||||
"dh c #9e9e9e",
|
||||
"#v c #9ebee0",
|
||||
".Z c #9ec3e8",
|
||||
"#M c #9ec3ed",
|
||||
"#N c #9ec5ed",
|
||||
"ap c #9ec5ef",
|
||||
"aU c #9ec7f0",
|
||||
"h2 c #9ed4fd",
|
||||
"id c #9ed6ff",
|
||||
"df c #9f9f9f",
|
||||
"an c #9fc5ee",
|
||||
"h0 c #9fd5fe",
|
||||
"aM c #a0a0a0",
|
||||
"hT c #a0d6ff",
|
||||
"jh c #a1a1a1",
|
||||
"hS c #a1d7ff",
|
||||
"ji c #a2a2a2",
|
||||
"#P c #a2c7ed",
|
||||
"i8 c #a3a3a3",
|
||||
"#O c #a3c8ed",
|
||||
"iA c #a3daff",
|
||||
"j. c #a4a4a4",
|
||||
"je c #a5a5a5",
|
||||
"#g c #a5c8ed",
|
||||
"ip c #a5dafb",
|
||||
"iv c #a6a6a6",
|
||||
".F c #a6bed4",
|
||||
"de c #a7a7a7",
|
||||
"#h c #a7c9ed",
|
||||
"if c #a7ddff",
|
||||
"ie c #a7deff",
|
||||
"eh c #a8a8a8",
|
||||
"#i c #a8caee",
|
||||
"iL c #a8dbf8",
|
||||
"ig c #a8deff",
|
||||
"iP c #a8e0ff",
|
||||
"iY c #a8e2e6",
|
||||
"hC c #a9a9a9",
|
||||
".0 c #a9caed",
|
||||
"#B c #aaaaaa",
|
||||
"fU c #ababab",
|
||||
".5 c #abc9e9",
|
||||
"iB c #abe3ff",
|
||||
"e2 c #acacac",
|
||||
".6 c #accaea",
|
||||
"jo c #adadad",
|
||||
".1 c #adcbed",
|
||||
".7 c #adccec",
|
||||
"iD c #ade2ff",
|
||||
"iC c #ade3ff",
|
||||
"fS c #aeaeae",
|
||||
".4 c #aecded",
|
||||
"db c #afafaf",
|
||||
".A c #afbbe7",
|
||||
".2 c #afccee",
|
||||
".3 c #afceee",
|
||||
"d6 c #b0b0b0",
|
||||
"iQ c #b0e9ff",
|
||||
"bG c #b1b1b1",
|
||||
"jg c #b2b2b2",
|
||||
"#E c #b3b3b3",
|
||||
".O c #b3d1ed",
|
||||
"gF c #b4b4b4",
|
||||
"cY c #b5b5b5",
|
||||
"iR c #b5ebff",
|
||||
"hM c #b6b6b6",
|
||||
"iS c #b6ecff",
|
||||
"d9 c #b7b7b7",
|
||||
".U c #b8b8b8",
|
||||
".u c #b9b9b9",
|
||||
"dd c #bababa",
|
||||
".P c #bad4ee",
|
||||
"bL c #bbbbbb",
|
||||
".Q c #bbd4ef",
|
||||
".R c #bbd5f0",
|
||||
"e9 c #bcbcbc",
|
||||
"c3 c #bdbdbd",
|
||||
"f. c #bebebe",
|
||||
"d8 c #bfbfbf",
|
||||
".o c #bfc2e8",
|
||||
"iZ c #bffdff",
|
||||
"iw c #c0c0c0",
|
||||
"iV c #c1c1c1",
|
||||
"i0 c #c1feff",
|
||||
"ei c #c2c2c2",
|
||||
"ej c #c3c3c3",
|
||||
"#a c #c4c4c4",
|
||||
"el c #c5c5c5",
|
||||
"d7 c #c6c6c6",
|
||||
".r c #c6cbda",
|
||||
"ek c #c7c7c7",
|
||||
"aN c #c8c8c8",
|
||||
"#G c #c9c9c9",
|
||||
"aL c #cacaca",
|
||||
"ai c #cbcbcb",
|
||||
".B c #cbddf2",
|
||||
"bZ c #cccccc",
|
||||
".C c #cce0f3",
|
||||
"dc c #cdcdcd",
|
||||
"ah c #cecece",
|
||||
"da c #cfcfcf",
|
||||
".E c #cfe1f3",
|
||||
".D c #cfe1f4",
|
||||
"#I c #d0d0d0",
|
||||
"cV c #d1d1d1",
|
||||
"fQ c #d2d2d2",
|
||||
"bB c #d3d3d3",
|
||||
"#c c #d4d4d4",
|
||||
"d# c #d5d5d5",
|
||||
"aK c #d6d6d6",
|
||||
"cZ c #d7d7d7",
|
||||
"c6 c #d8d8d8",
|
||||
"gH c #d9d9d9",
|
||||
".W c #dadada",
|
||||
"gM c #dbdbdb",
|
||||
"bQ c #dcdcdc",
|
||||
"e1 c #dddddd",
|
||||
"cR c #dedede",
|
||||
"d. c #dfdfdf",
|
||||
"bP c #e0e0e0",
|
||||
"i# c #e1e1e1",
|
||||
"bY c #e2e2e2",
|
||||
".K c #e3e3e3",
|
||||
"ee c #e4e4e4",
|
||||
"d3 c #e5e5e5",
|
||||
"ef c #e6e6e6",
|
||||
".p c #e6e9f6",
|
||||
"fV c #e7e7e7",
|
||||
"eY c #e8e8e8",
|
||||
".a c #e9e9e9",
|
||||
".q c #e9edf8",
|
||||
".V c #eaeaea",
|
||||
"## c #ebebeb",
|
||||
"Qt c #ececec",
|
||||
".w c #ededed",
|
||||
".x c #eeeeee",
|
||||
"#. c #efefef",
|
||||
".# c #f0f0f0",
|
||||
".9 c #f1f1f1",
|
||||
".I c #f2f2f2",
|
||||
".T c #f3f3f3",
|
||||
"ja c #f4f4f4",
|
||||
"i9 c #f5f5f5",
|
||||
"hB c #f6f6f6",
|
||||
".H c #f7f7f7",
|
||||
".G c #f8f8f8",
|
||||
"i. c #f9f9f9",
|
||||
"kg c #fafafa",
|
||||
"kf c #fbfbfb",
|
||||
".t c #fcfcfc",
|
||||
".s c #fdfdfd",
|
||||
"it c #fefefe",
|
||||
"iu c #ffffff",
|
||||
"QtQtQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQtQt"};
|
BIN
tests/benchmarks/gui/image/qimagereader/images/runners.ppm
Normal file
BIN
tests/benchmarks/gui/image/qimagereader/images/task210380.jpg
Normal file
After Width: | Height: | Size: 953 KiB |
31
tests/benchmarks/gui/image/qimagereader/images/teapot.ppm
Normal file
2
tests/benchmarks/gui/image/qimagereader/images/test.ppm
Normal file
@ -0,0 +1,2 @@
|
||||
P6 10 10 1023
|
||||
<03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03><03>
|
260
tests/benchmarks/gui/image/qimagereader/images/test.xpm
Normal file
@ -0,0 +1,260 @@
|
||||
/* XPM */
|
||||
static char * test_xpm[] = {
|
||||
"256 256 1 1",
|
||||
" c grey",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
788
tests/benchmarks/gui/image/qimagereader/images/transparent.xpm
Normal file
@ -0,0 +1,788 @@
|
||||
/* XPM */
|
||||
static char *dummy[]={
|
||||
"8 8 777 2",
|
||||
"#R c none",
|
||||
"fn c #000001",
|
||||
".e c #000069",
|
||||
".f c #00006d",
|
||||
".g c #00006e",
|
||||
"#d c #0042b4",
|
||||
"aJ c #010101",
|
||||
"g0 c #010102",
|
||||
"dr c #010202",
|
||||
"gd c #010203",
|
||||
"#J c #0157bb",
|
||||
"e. c #020202",
|
||||
"du c #020304",
|
||||
"fR c #030303",
|
||||
"jJ c #040404",
|
||||
"hf c #040608",
|
||||
"fE c #040609",
|
||||
"cO c #04070a",
|
||||
"k# c #050505",
|
||||
"gC c #050709",
|
||||
"ka c #060606",
|
||||
"br c #06080a",
|
||||
"dY c #06090d",
|
||||
"hI c #070707",
|
||||
"in c #07090b",
|
||||
"cL c #070a0e",
|
||||
"cd c #070b0f",
|
||||
"e0 c #080808",
|
||||
"gZ c #080b0e",
|
||||
"eu c #080b0f",
|
||||
"dz c #080c10",
|
||||
"hD c #090909",
|
||||
"fq c #090d11",
|
||||
"cH c #090e13",
|
||||
"jB c #0a0a0a",
|
||||
"#U c #0a0d0f",
|
||||
"a4 c #0a0d10",
|
||||
"g3 c #0a0d11",
|
||||
"fu c #0a0f14",
|
||||
"cj c #0a1016",
|
||||
"kb c #0b0b0b",
|
||||
"#n c #0b0d0f",
|
||||
"a1 c #0b0e10",
|
||||
"g8 c #0b0f13",
|
||||
"f4 c #0b0f14",
|
||||
"hE c #0c0c0c",
|
||||
"bf c #0c0f12",
|
||||
".X c #0c28a0",
|
||||
"bT c #0d0d0d",
|
||||
"ax c #0d1014",
|
||||
"hr c #0d1217",
|
||||
"dH c #0d141b",
|
||||
"jy c #0e0e0e",
|
||||
"aW c #0e1115",
|
||||
"eH c #0e141b",
|
||||
"bE c #0f0f0f",
|
||||
"ar c #0f1317",
|
||||
"g5 c #0f1419",
|
||||
"hg c #0f151a",
|
||||
"fh c #0f151c",
|
||||
"dJ c #0f171f",
|
||||
"gI c #101010",
|
||||
".z c #101094",
|
||||
"h. c #10161b",
|
||||
"gm c #10161c",
|
||||
"eL c #10171f",
|
||||
"hK c #111111",
|
||||
"at c #11161b",
|
||||
"fC c #111820",
|
||||
"dA c #111922",
|
||||
"aj c #1163c4",
|
||||
"bJ c #121212",
|
||||
"#Z c #12161a",
|
||||
"ba c #12171c",
|
||||
"ho c #12181e",
|
||||
"jK c #131313",
|
||||
"iq c #13191d",
|
||||
"cA c #131e2a",
|
||||
"c7 c #141414",
|
||||
"dR c #141e29",
|
||||
"jr c #151515",
|
||||
"aA c #151a1f",
|
||||
"hq c #151c23",
|
||||
"fl c #151e28",
|
||||
"eV c #151e29",
|
||||
"d4 c #161616",
|
||||
"hw c #161e25",
|
||||
"jk c #171717",
|
||||
"bs c #171d23",
|
||||
"g9 c #171f27",
|
||||
"eC c #17212b",
|
||||
"b9 c #172432",
|
||||
"d5 c #181818",
|
||||
"as c #181e24",
|
||||
"bn c #181f25",
|
||||
"bS c #191919",
|
||||
"gr c #19232d",
|
||||
"ed c #1a1a1a",
|
||||
".d c #1a1a6e",
|
||||
"gB c #1a242e",
|
||||
"eK c #1a2531",
|
||||
"dQ c #1a2633",
|
||||
"hL c #1b1b1b",
|
||||
"g1 c #1b242d",
|
||||
"g# c #1b252f",
|
||||
"eJ c #1b2734",
|
||||
"d1 c #1b2937",
|
||||
"bW c #1c1c1c",
|
||||
"gW c #1c262f",
|
||||
"ci c #1c2b3b",
|
||||
"cs c #1c2c3c",
|
||||
"e# c #1d1d1d",
|
||||
"#3 c #1d232a",
|
||||
"f8 c #1d2833",
|
||||
"fI c #1d2936",
|
||||
"eO c #1d2a38",
|
||||
"cw c #1d2e3f",
|
||||
"jR c #1e1e1e",
|
||||
"a2 c #1e262e",
|
||||
"eP c #1e2b39",
|
||||
"dE c #1e2d3d",
|
||||
"cF c #1e2f41",
|
||||
"aO c #1e6ec9",
|
||||
"c4 c #1f1f1f",
|
||||
"gx c #1f2a36",
|
||||
"c# c #1f3043",
|
||||
"j2 c #202020",
|
||||
"bk c #202931",
|
||||
"ht c #202c36",
|
||||
"eF c #202f3e",
|
||||
"b7 c #203245",
|
||||
"cB c #203246",
|
||||
"hG c #212121",
|
||||
"aE c #212932",
|
||||
"bp c #212a32",
|
||||
"hl c #212d38",
|
||||
"cc c #213347",
|
||||
".M c #214eb7",
|
||||
"hF c #222222",
|
||||
"#7 c #222a32",
|
||||
"fw c #223040",
|
||||
"eU c #223141",
|
||||
"jC c #232323",
|
||||
"bb c #232c35",
|
||||
"ga c #23303d",
|
||||
"cv c #23364a",
|
||||
"cn c #23364b",
|
||||
"jl c #242424",
|
||||
"gj c #243240",
|
||||
"cm c #24374c",
|
||||
"c. c #24384d",
|
||||
"bF c #252525",
|
||||
"be c #252f39",
|
||||
"gt c #253341",
|
||||
"dU c #253649",
|
||||
".Y c #256cc9",
|
||||
"jG c #262626",
|
||||
"h8 c #26333d",
|
||||
"hb c #263440",
|
||||
"gs c #263443",
|
||||
"cr c #263b51",
|
||||
"cW c #272727",
|
||||
"aC c #27313b",
|
||||
"a9 c #27313c",
|
||||
"fk c #273748",
|
||||
"eR c #27384b",
|
||||
"cq c #273d55",
|
||||
"jV c #282828",
|
||||
"#5 c #28313b",
|
||||
"b0 c #2877ce",
|
||||
"gL c #292929",
|
||||
"#Y c #29323c",
|
||||
"hu c #293744",
|
||||
"fK c #293a4d",
|
||||
"jP c #2a2a2a",
|
||||
"#w c #2a323b",
|
||||
"bg c #2a3540",
|
||||
"dF c #2a3f55",
|
||||
"jn c #2b2b2b",
|
||||
"a6 c #2b3641",
|
||||
"jY c #2c2c2c",
|
||||
"h5 c #2c3b47",
|
||||
"hp c #2c3c4a",
|
||||
"gp c #2c3c4d",
|
||||
"cx c #2c445e",
|
||||
"bU c #2d2d2d",
|
||||
"h# c #2d3e4c",
|
||||
"dS c #2d435b",
|
||||
"e5 c #2e2e2e",
|
||||
"cG c #2e4762",
|
||||
"jF c #2f2f2f",
|
||||
"aG c #2f3b48",
|
||||
"gU c #2f3f4e",
|
||||
"ck c #2f4966",
|
||||
"j0 c #303030",
|
||||
"a0 c #303d4a",
|
||||
"he c #304251",
|
||||
"cQ c #307ace",
|
||||
"e4 c #313131",
|
||||
"ew c #31465d",
|
||||
"dW c #314862",
|
||||
"ce c #314b68",
|
||||
"jm c #323232",
|
||||
"bm c #323f4d",
|
||||
"k. c #333333",
|
||||
"e3 c #343434",
|
||||
"hi c #344757",
|
||||
"eT c #344b64",
|
||||
"b8 c #34506f",
|
||||
"dj c #347fd1",
|
||||
"bX c #353535",
|
||||
"f9 c #35485c",
|
||||
"ac c #363636",
|
||||
"#V c #36434f",
|
||||
"fv c #364c64",
|
||||
"dV c #36506d",
|
||||
"c2 c #373737",
|
||||
"ev c #37506a",
|
||||
"bI c #383838",
|
||||
"bw c #384655",
|
||||
"h4 c #384b5a",
|
||||
"hk c #384c5d",
|
||||
"ea c #393939",
|
||||
"bh c #394857",
|
||||
"gX c #394d5f",
|
||||
"#e c #3981d2",
|
||||
"e6 c #3a3a3a",
|
||||
"eS c #3a546f",
|
||||
"em c #3a81d2",
|
||||
"#F c #3b3b3b",
|
||||
"eQ c #3b5571",
|
||||
"dT c #3b5776",
|
||||
"cI c #3b5c7f",
|
||||
"gJ c #3c3c3c",
|
||||
"hX c #3c5060",
|
||||
"fi c #3c546f",
|
||||
"gG c #3d3d3d",
|
||||
"jv c #3e3e3e",
|
||||
"az c #3e4e5e",
|
||||
"fL c #3e5772",
|
||||
"bK c #3f3f3f",
|
||||
"gD c #3f576f",
|
||||
"fJ c #3f5874",
|
||||
"d2 c #3f86d5",
|
||||
"jx c #404040",
|
||||
"#8 c #404e5d",
|
||||
"bv c #405161",
|
||||
"cf c #406389",
|
||||
"jL c #414141",
|
||||
"iG c #415561",
|
||||
"im c #415663",
|
||||
"gz c #415971",
|
||||
"et c #415d7c",
|
||||
"cz c #41658c",
|
||||
"f# c #418ad7",
|
||||
"jT c #424242",
|
||||
"gy c #425b74",
|
||||
"fs c #425d7a",
|
||||
"#K c #4288d4",
|
||||
"jQ c #434343",
|
||||
"eX c #438cda",
|
||||
"j8 c #444444",
|
||||
".L c #44449a",
|
||||
"eZ c #454545",
|
||||
"#s c #455362",
|
||||
"fx c #45617f",
|
||||
"cK c #456b94",
|
||||
"aP c #458cd5",
|
||||
"ab c #464646",
|
||||
".n c #46469f",
|
||||
"aH c #46586a",
|
||||
"gV c #465f74",
|
||||
"d0 c #46678c",
|
||||
"c9 c #474747",
|
||||
"aF c #47596c",
|
||||
"a3 c #475a6d",
|
||||
"ex c #476687",
|
||||
"jU c #484848",
|
||||
"by c #485b6e",
|
||||
"gq c #48627d",
|
||||
"dI c #486b91",
|
||||
"cC c #48709b",
|
||||
"js c #494949",
|
||||
"#2 c #495a6b",
|
||||
"ih c #49606f",
|
||||
"hm c #49637a",
|
||||
"gk c #49647f",
|
||||
"j7 c #4a4a4a",
|
||||
"dt c #4a6e94",
|
||||
"ak c #4a8dd7",
|
||||
"b1 c #4a90db",
|
||||
"c1 c #4b4b4b",
|
||||
"bx c #4b5f72",
|
||||
"fr c #4b698a",
|
||||
"dG c #4b6e95",
|
||||
"co c #4b75a2",
|
||||
"fW c #4b91db",
|
||||
"bD c #4c4c4c",
|
||||
"hc c #4c687f",
|
||||
"j6 c #4d4d4d",
|
||||
"#Q c #4d5f71",
|
||||
"ik c #4d6676",
|
||||
"hH c #4e4e4e",
|
||||
"#0 c #4e5f72",
|
||||
"aD c #4e6277",
|
||||
"b. c #4e6377",
|
||||
"gN c #4e91dc",
|
||||
"c0 c #4f4f4f",
|
||||
"bj c #4f6378",
|
||||
"dZ c #4f759e",
|
||||
"cD c #4f7aa9",
|
||||
"hN c #4f8dcd",
|
||||
"kd c #505050",
|
||||
"#S c #506275",
|
||||
"#6 c #506376",
|
||||
"ge c #506e8c",
|
||||
"af c #515151",
|
||||
"b# c #51667b",
|
||||
"dk c #5195df",
|
||||
"cT c #525252",
|
||||
".c c #525280",
|
||||
"bq c #52677d",
|
||||
"iH c #526b79",
|
||||
"fj c #527397",
|
||||
"eW c #52769d",
|
||||
"dy c #527aa5",
|
||||
"hJ c #535353",
|
||||
"#x c #536476",
|
||||
"eG c #53789f",
|
||||
"jM c #545454",
|
||||
"#r c #546577",
|
||||
"bz c #546a80",
|
||||
"dM c #547ca8",
|
||||
"fP c #5499e2",
|
||||
"jp c #555555",
|
||||
"iK c #556f7e",
|
||||
"bM c #565656",
|
||||
"fB c #56799f",
|
||||
"dC c #567fab",
|
||||
"gE c #569be2",
|
||||
"cU c #575757",
|
||||
"h7 c #57748b",
|
||||
"gc c #577797",
|
||||
"fN c #577ba1",
|
||||
"dx c #5780ad",
|
||||
"cg c #5787bb",
|
||||
"i4 c #585858",
|
||||
"iF c #587483",
|
||||
"hy c #587792",
|
||||
"g2 c #587893",
|
||||
"fy c #587ca3",
|
||||
"eA c #587ea7",
|
||||
"jW c #595959",
|
||||
"bu c #597087",
|
||||
"ia c #5984b2",
|
||||
"ae c #5a5a5a",
|
||||
"#t c #5a6c7f",
|
||||
"bd c #5a7189",
|
||||
"ij c #5a7789",
|
||||
"eI c #5a81ab",
|
||||
"bR c #5b5b5b",
|
||||
"ch c #5b8dc3",
|
||||
"en c #5b9be1",
|
||||
"ke c #5c5c5c",
|
||||
"cP c #5c8fc5",
|
||||
"j5 c #5d5d5d",
|
||||
"iN c #5d7fa0",
|
||||
"gl c #5d80a3",
|
||||
"fp c #5d83ac",
|
||||
"cl c #5d8fc6",
|
||||
"b2 c #5d9de6",
|
||||
"c8 c #5e5e5e",
|
||||
"hh c #5e7f9c",
|
||||
"hn c #5e809d",
|
||||
"i3 c #5f5f5f",
|
||||
"#1 c #5f758c",
|
||||
"a8 c #5f7890",
|
||||
"g7 c #5f819e",
|
||||
"cJ c #5f93cc",
|
||||
"jz c #606060",
|
||||
"ct c #6094cd",
|
||||
"bO c #616161",
|
||||
"eN c #618cb9",
|
||||
"jH c #626262",
|
||||
"iW c #627c8d",
|
||||
"hd c #6285a3",
|
||||
"ey c #628dbb",
|
||||
"dO c #6290c4",
|
||||
"ca c #6297d1",
|
||||
"jI c #636363",
|
||||
"eM c #638fbd",
|
||||
"jN c #646464",
|
||||
"fH c #648db9",
|
||||
"eE c #648fbe",
|
||||
"cb c #649ad5",
|
||||
"hA c #64a8e2",
|
||||
"jw c #656565",
|
||||
"#k c #65798f",
|
||||
"fF c #658eba",
|
||||
"fA c #658fbb",
|
||||
"fa c #65a4e7",
|
||||
"b3 c #65a6e8",
|
||||
"jX c #666666",
|
||||
"hW c #6688a3",
|
||||
"gh c #668cb2",
|
||||
"aI c #6696cb",
|
||||
"dN c #6697cc",
|
||||
"bA c #6699ce",
|
||||
"cu c #669edb",
|
||||
"#C c #676767",
|
||||
"f3 c #678db4",
|
||||
"dl c #67a6eb",
|
||||
"kc c #686868",
|
||||
"cS c #696969",
|
||||
"dK c #699bd2",
|
||||
"cN c #69a2e0",
|
||||
"cy c #69a3e1",
|
||||
"fX c #69a6e8",
|
||||
"jD c #6a6a6a",
|
||||
"av c #6a84a1",
|
||||
"ds c #6a9cd3",
|
||||
"dL c #6a9cd4",
|
||||
"jt c #6b6b6b",
|
||||
"fo c #6b97c6",
|
||||
"cE c #6ba5e4",
|
||||
"jS c #6c6c6c",
|
||||
"aV c #6c88a4",
|
||||
"ir c #6c8ea4",
|
||||
"il c #6c8fa5",
|
||||
"eD c #6c9bce",
|
||||
"dB c #6c9ed7",
|
||||
"dq c #6c9fd8",
|
||||
"cM c #6ca7e7",
|
||||
"cp c #6ca8e8",
|
||||
"eo c #6cabed",
|
||||
"i2 c #6d6d6d",
|
||||
"#T c #6d869f",
|
||||
"#W c #6d87a0",
|
||||
"gY c #6d94b5",
|
||||
"aa c #6d9bcb",
|
||||
"eB c #6d9dd0",
|
||||
"dw c #6da0d9",
|
||||
"dD c #6da1da",
|
||||
"b4 c #6dacee",
|
||||
"h9 c #6dafe2",
|
||||
"i6 c #6e6e6e",
|
||||
"bt c #6e8aa7",
|
||||
"fM c #6e9bcb",
|
||||
"dP c #6ea3dc",
|
||||
"b5 c #6eabee",
|
||||
"jd c #707070",
|
||||
"ix c #7088a2",
|
||||
"hx c #7098ba",
|
||||
"f7 c #7099c3",
|
||||
"dv c #70a5df",
|
||||
"b6 c #70adef",
|
||||
"iy c #70aff1",
|
||||
"dm c #70aff2",
|
||||
"jE c #717171",
|
||||
"#m c #7188a0",
|
||||
"#u c #7189a1",
|
||||
"aY c #718eac",
|
||||
"gO c #71aced",
|
||||
"jq c #727272",
|
||||
"gb c #729cc6",
|
||||
"hO c #72afee",
|
||||
"ib c #72afef",
|
||||
"e7 c #737373",
|
||||
"#y c #738ba4",
|
||||
"#A c #739eca",
|
||||
".j c #747474",
|
||||
"#9 c #748fab",
|
||||
"hs c #749ec1",
|
||||
"f6 c #749fca",
|
||||
".i c #757575",
|
||||
"#q c #758da6",
|
||||
"a5 c #7593b1",
|
||||
"bo c #7594b2",
|
||||
"ii c #759bb3",
|
||||
"fb c #75b3f4",
|
||||
"ep c #75b4f3",
|
||||
"is c #75b8e2",
|
||||
"ag c #767676",
|
||||
"fz c #76a6da",
|
||||
"ez c #76a9e0",
|
||||
"dX c #76adeb",
|
||||
".h c #777777",
|
||||
".m c #777794",
|
||||
"iX c #77a6b3",
|
||||
"dn c #77b1f4",
|
||||
"gK c #787878",
|
||||
"#4 c #7894b0",
|
||||
"fG c #78a9dd",
|
||||
"j# c #797979",
|
||||
"bV c #7a7a7a",
|
||||
"do c #7ab4f4",
|
||||
"jA c #7b7b7b",
|
||||
"io c #7ba3bc",
|
||||
"dp c #7bb5f5",
|
||||
".k c #7c7c7c",
|
||||
"bc c #7c9cbd",
|
||||
"gi c #7caad8",
|
||||
"aQ c #7cb0e7",
|
||||
"fY c #7cb8f9",
|
||||
"iM c #7cbee2",
|
||||
"j1 c #7d7d7d",
|
||||
"aX c #7d9ebf",
|
||||
"fm c #7db0e7",
|
||||
"j4 c #7e7e7e",
|
||||
".8 c #7ea5ce",
|
||||
"#D c #7f7f7f",
|
||||
"hv c #7facd3",
|
||||
"gn c #7faedd",
|
||||
"eb c #808080",
|
||||
"er c #80bdf9",
|
||||
"j3 c #818181",
|
||||
"hz c #81afd6",
|
||||
"gu c #81b0e0",
|
||||
"eq c #81bbf9",
|
||||
"fc c #81bbfc",
|
||||
"#b c #828282",
|
||||
"iE c #82aac0",
|
||||
"i5 c #838383",
|
||||
"ha c #83b1d9",
|
||||
"es c #83bcf9",
|
||||
"ad c #848484",
|
||||
"go c #84b5e6",
|
||||
".v c #858585",
|
||||
"#p c #85a0bc",
|
||||
"bN c #868686",
|
||||
"hZ c #86b3d6",
|
||||
"fD c #86bcf6",
|
||||
"fO c #86bcf7",
|
||||
"gP c #86c1ff",
|
||||
"di c #878787",
|
||||
"ft c #87bdf8",
|
||||
"bH c #888888",
|
||||
"iT c #88cfe2",
|
||||
"jZ c #898989",
|
||||
"#z c #89a5c3",
|
||||
"g. c #89bbee",
|
||||
"fg c #89c0fc",
|
||||
"fd c #89c2fd",
|
||||
"hP c #89c3ff",
|
||||
"jb c #8a8a8a",
|
||||
"#o c #8aa6c4",
|
||||
"jc c #8b8b8b",
|
||||
".S c #8baccf",
|
||||
"iI c #8bb6ce",
|
||||
"al c #8bb9e8",
|
||||
"hj c #8bbde7",
|
||||
"gw c #8bbef2",
|
||||
"ff c #8bc3ff",
|
||||
"fe c #8bc4ff",
|
||||
"fZ c #8bc6ff",
|
||||
"ec c #8c8c8c",
|
||||
"gv c #8cbff3",
|
||||
"jO c #8d8d8d",
|
||||
"a# c #8dadce",
|
||||
"ic c #8dc7ff",
|
||||
"#H c #8e8e8e",
|
||||
"a. c #8eaed0",
|
||||
"#L c #8ebae8",
|
||||
"hY c #8ebee3",
|
||||
"g4 c #8ec1ec",
|
||||
"iO c #8ecbff",
|
||||
"ju c #8f8f8f",
|
||||
"bi c #8fb5da",
|
||||
"h6 c #8fc0e5",
|
||||
"f5 c #8fc4f9",
|
||||
"jf c #909090",
|
||||
"bl c #90b6dc",
|
||||
"i1 c #90dfe2",
|
||||
"bC c #919191",
|
||||
"aB c #91b5dc",
|
||||
"aZ c #91b7dd",
|
||||
"hV c #91c2e8",
|
||||
"gf c #91c6fc",
|
||||
"gg c #91c7fd",
|
||||
"f0 c #91c8ff",
|
||||
"i7 c #929292",
|
||||
"gA c #92c8fe",
|
||||
"iz c #92ccff",
|
||||
"iU c #939393",
|
||||
"a7 c #93b9e0",
|
||||
"f2 c #93c9ff",
|
||||
"gQ c #93ccff",
|
||||
"e8 c #949494",
|
||||
".y c #9494b0",
|
||||
"h1 c #94c6ec",
|
||||
"f1 c #94caff",
|
||||
"j9 c #959595",
|
||||
"#X c #95b7da",
|
||||
"cX c #969696",
|
||||
"ay c #96bbe3",
|
||||
"#f c #96bde8",
|
||||
"aR c #96c3ee",
|
||||
"gR c #96cfff",
|
||||
".J c #979797",
|
||||
"hQ c #97cfff",
|
||||
"fT c #989898",
|
||||
"#j c #98b6d7",
|
||||
"#l c #98b7d8",
|
||||
"iJ c #98c7e1",
|
||||
"g6 c #98cffd",
|
||||
"jj c #999999",
|
||||
"aS c #99c4ee",
|
||||
"h3 c #99ccf4",
|
||||
"gS c #99d0ff",
|
||||
".l c #9a9a9a",
|
||||
".b c #9a9aa4",
|
||||
"aw c #9ac1ea",
|
||||
"gT c #9ad1ff",
|
||||
"dg c #9b9b9b",
|
||||
".N c #9bbee8",
|
||||
"aq c #9bc1eb",
|
||||
"am c #9bc4ee",
|
||||
"eg c #9c9c9c",
|
||||
"au c #9cc3ed",
|
||||
"ao c #9cc5ee",
|
||||
"c5 c #9d9d9d",
|
||||
"aT c #9dc7ef",
|
||||
"hU c #9dd2fb",
|
||||
"hR c #9dd3ff",
|
||||
"dh c #9e9e9e",
|
||||
"#v c #9ebee0",
|
||||
".Z c #9ec3e8",
|
||||
"#M c #9ec3ed",
|
||||
"#N c #9ec5ed",
|
||||
"ap c #9ec5ef",
|
||||
"aU c #9ec7f0",
|
||||
"h2 c #9ed4fd",
|
||||
"id c #9ed6ff",
|
||||
"df c #9f9f9f",
|
||||
"an c #9fc5ee",
|
||||
"h0 c #9fd5fe",
|
||||
"aM c #a0a0a0",
|
||||
"hT c #a0d6ff",
|
||||
"jh c #a1a1a1",
|
||||
"hS c #a1d7ff",
|
||||
"ji c #a2a2a2",
|
||||
"#P c #a2c7ed",
|
||||
"i8 c #a3a3a3",
|
||||
"#O c #a3c8ed",
|
||||
"iA c #a3daff",
|
||||
"j. c #a4a4a4",
|
||||
"je c #a5a5a5",
|
||||
"#g c #a5c8ed",
|
||||
"ip c #a5dafb",
|
||||
"iv c #a6a6a6",
|
||||
".F c #a6bed4",
|
||||
"de c #a7a7a7",
|
||||
"#h c #a7c9ed",
|
||||
"if c #a7ddff",
|
||||
"ie c #a7deff",
|
||||
"eh c #a8a8a8",
|
||||
"#i c #a8caee",
|
||||
"iL c #a8dbf8",
|
||||
"ig c #a8deff",
|
||||
"iP c #a8e0ff",
|
||||
"iY c #a8e2e6",
|
||||
"hC c #a9a9a9",
|
||||
".0 c #a9caed",
|
||||
"#B c #aaaaaa",
|
||||
"fU c #ababab",
|
||||
".5 c #abc9e9",
|
||||
"iB c #abe3ff",
|
||||
"e2 c #acacac",
|
||||
".6 c #accaea",
|
||||
"jo c #adadad",
|
||||
".1 c #adcbed",
|
||||
".7 c #adccec",
|
||||
"iD c #ade2ff",
|
||||
"iC c #ade3ff",
|
||||
"fS c #aeaeae",
|
||||
".4 c #aecded",
|
||||
"db c #afafaf",
|
||||
".A c #afbbe7",
|
||||
".2 c #afccee",
|
||||
".3 c #afceee",
|
||||
"d6 c #b0b0b0",
|
||||
"iQ c #b0e9ff",
|
||||
"bG c #b1b1b1",
|
||||
"jg c #b2b2b2",
|
||||
"#E c #b3b3b3",
|
||||
".O c #b3d1ed",
|
||||
"gF c #b4b4b4",
|
||||
"cY c #b5b5b5",
|
||||
"iR c #b5ebff",
|
||||
"hM c #b6b6b6",
|
||||
"iS c #b6ecff",
|
||||
"d9 c #b7b7b7",
|
||||
".U c #b8b8b8",
|
||||
".u c #b9b9b9",
|
||||
"dd c #bababa",
|
||||
".P c #bad4ee",
|
||||
"bL c #bbbbbb",
|
||||
".Q c #bbd4ef",
|
||||
".R c #bbd5f0",
|
||||
"e9 c #bcbcbc",
|
||||
"c3 c #bdbdbd",
|
||||
"f. c #bebebe",
|
||||
"d8 c #bfbfbf",
|
||||
".o c #bfc2e8",
|
||||
"iZ c #bffdff",
|
||||
"iw c #c0c0c0",
|
||||
"iV c #c1c1c1",
|
||||
"i0 c #c1feff",
|
||||
"ei c #c2c2c2",
|
||||
"ej c #c3c3c3",
|
||||
"#a c #c4c4c4",
|
||||
"el c #c5c5c5",
|
||||
"d7 c #c6c6c6",
|
||||
".r c #c6cbda",
|
||||
"ek c #c7c7c7",
|
||||
"aN c #c8c8c8",
|
||||
"#G c #c9c9c9",
|
||||
"aL c #cacaca",
|
||||
"ai c #cbcbcb",
|
||||
".B c #cbddf2",
|
||||
"bZ c #cccccc",
|
||||
".C c #cce0f3",
|
||||
"dc c #cdcdcd",
|
||||
"ah c #cecece",
|
||||
"da c #cfcfcf",
|
||||
".E c #cfe1f3",
|
||||
".D c #cfe1f4",
|
||||
"#I c #d0d0d0",
|
||||
"cV c #d1d1d1",
|
||||
"fQ c #d2d2d2",
|
||||
"bB c #d3d3d3",
|
||||
"#c c #d4d4d4",
|
||||
"d# c #d5d5d5",
|
||||
"aK c #d6d6d6",
|
||||
"cZ c #d7d7d7",
|
||||
"c6 c #d8d8d8",
|
||||
"gH c #d9d9d9",
|
||||
".W c #dadada",
|
||||
"gM c #dbdbdb",
|
||||
"bQ c #dcdcdc",
|
||||
"e1 c #dddddd",
|
||||
"cR c #dedede",
|
||||
"d. c #dfdfdf",
|
||||
"bP c #e0e0e0",
|
||||
"i# c #e1e1e1",
|
||||
"bY c #e2e2e2",
|
||||
".K c #e3e3e3",
|
||||
"ee c #e4e4e4",
|
||||
"d3 c #e5e5e5",
|
||||
"ef c #e6e6e6",
|
||||
".p c #e6e9f6",
|
||||
"fV c #e7e7e7",
|
||||
"eY c #e8e8e8",
|
||||
".a c #e9e9e9",
|
||||
".q c #e9edf8",
|
||||
".V c #eaeaea",
|
||||
"## c #ebebeb",
|
||||
"Qt c #ececec",
|
||||
".w c #ededed",
|
||||
".x c #eeeeee",
|
||||
"#. c #efefef",
|
||||
".# c #f0f0f0",
|
||||
".9 c #f1f1f1",
|
||||
".I c #f2f2f2",
|
||||
".T c #f3f3f3",
|
||||
"ja c #f4f4f4",
|
||||
"i9 c #f5f5f5",
|
||||
"hB c #f6f6f6",
|
||||
".H c #f7f7f7",
|
||||
".G c #f8f8f8",
|
||||
"i. c #f9f9f9",
|
||||
"kg c #fafafa",
|
||||
"kf c #fbfbfb",
|
||||
".t c #fcfcfc",
|
||||
".s c #fdfdfd",
|
||||
"it c #fefefe",
|
||||
"iu c #ffffff",
|
||||
"#RQtQtQtQtQtQt#R",
|
||||
"QtQtQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQtQt",
|
||||
"QtQtQtQtQtQtQtQt",
|
||||
"#RQtQtQtQtQtQt#R"};
|
BIN
tests/benchmarks/gui/image/qimagereader/images/trolltech.gif
Normal file
After Width: | Height: | Size: 42 KiB |
BIN
tests/benchmarks/gui/image/qimagereader/images/tst7.bmp
Normal file
After Width: | Height: | Size: 582 B |
BIN
tests/benchmarks/gui/image/qimagereader/images/tst7.png
Normal file
After Width: | Height: | Size: 167 B |
201
tests/benchmarks/gui/image/qimagereader/tst_qimagereader.cpp
Normal file
@ -0,0 +1,201 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <qtest.h>
|
||||
#include <QBuffer>
|
||||
#include <QDebug>
|
||||
#include <QFile>
|
||||
#include <QImage>
|
||||
#include <QImageReader>
|
||||
#include <QImageWriter>
|
||||
#include <QPixmap>
|
||||
#include <QSet>
|
||||
#include <QTimer>
|
||||
|
||||
typedef QMap<QString, QString> QStringMap;
|
||||
typedef QList<int> QIntList;
|
||||
Q_DECLARE_METATYPE(QStringMap)
|
||||
Q_DECLARE_METATYPE(QIntList)
|
||||
|
||||
class tst_QImageReader : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
tst_QImageReader();
|
||||
virtual ~tst_QImageReader();
|
||||
|
||||
public slots:
|
||||
void initTestCase();
|
||||
void init();
|
||||
void cleanup();
|
||||
|
||||
private slots:
|
||||
void readImage_data();
|
||||
void readImage();
|
||||
|
||||
void setScaledSize_data();
|
||||
void setScaledSize();
|
||||
|
||||
void setClipRect_data();
|
||||
void setClipRect();
|
||||
|
||||
void setScaledClipRect_data();
|
||||
void setScaledClipRect();
|
||||
|
||||
private:
|
||||
QList< QPair<QString, QByteArray> > images; // filename, format
|
||||
QString prefix;
|
||||
};
|
||||
|
||||
tst_QImageReader::tst_QImageReader()
|
||||
{
|
||||
images << QPair<QString, QByteArray>(QLatin1String("colorful.bmp"), QByteArray("bmp"));
|
||||
images << QPair<QString, QByteArray>(QLatin1String("font.bmp"), QByteArray("bmp"));
|
||||
images << QPair<QString, QByteArray>(QLatin1String("crash-signed-char.bmp"), QByteArray("bmp"));
|
||||
images << QPair<QString, QByteArray>(QLatin1String("4bpp-rle.bmp"), QByteArray("bmp"));
|
||||
images << QPair<QString, QByteArray>(QLatin1String("tst7.bmp"), QByteArray("bmp"));
|
||||
images << QPair<QString, QByteArray>(QLatin1String("16bpp.bmp"), QByteArray("bmp"));
|
||||
images << QPair<QString, QByteArray>(QLatin1String("negativeheight.bmp"), QByteArray("bmp"));
|
||||
images << QPair<QString, QByteArray>(QLatin1String("marble.xpm"), QByteArray("xpm"));
|
||||
images << QPair<QString, QByteArray>(QLatin1String("kollada.png"), QByteArray("png"));
|
||||
images << QPair<QString, QByteArray>(QLatin1String("teapot.ppm"), QByteArray("ppm"));
|
||||
images << QPair<QString, QByteArray>(QLatin1String("runners.ppm"), QByteArray("ppm"));
|
||||
images << QPair<QString, QByteArray>(QLatin1String("test.ppm"), QByteArray("ppm"));
|
||||
images << QPair<QString, QByteArray>(QLatin1String("gnus.xbm"), QByteArray("xbm"));
|
||||
#if defined QTEST_HAVE_JPEG
|
||||
images << QPair<QString, QByteArray>(QLatin1String("beavis.jpg"), QByteArray("jpeg"));
|
||||
images << QPair<QString, QByteArray>(QLatin1String("YCbCr_cmyk.jpg"), QByteArray("jpeg"));
|
||||
images << QPair<QString, QByteArray>(QLatin1String("YCbCr_rgb.jpg"), QByteArray("jpeg"));
|
||||
images << QPair<QString, QByteArray>(QLatin1String("task210380.jpg"), QByteArray("jpeg"));
|
||||
#endif
|
||||
#if defined QTEST_HAVE_GIF
|
||||
images << QPair<QString, QByteArray>(QLatin1String("earth.gif"), QByteArray("gif"));
|
||||
images << QPair<QString, QByteArray>(QLatin1String("trolltech.gif"), QByteArray("gif"));
|
||||
#endif
|
||||
}
|
||||
|
||||
tst_QImageReader::~tst_QImageReader()
|
||||
{
|
||||
}
|
||||
|
||||
void tst_QImageReader::initTestCase()
|
||||
{
|
||||
prefix = QFINDTESTDATA("images/");
|
||||
if (prefix.isEmpty())
|
||||
QFAIL("Can't find images directory!");
|
||||
}
|
||||
|
||||
void tst_QImageReader::init()
|
||||
{
|
||||
}
|
||||
|
||||
void tst_QImageReader::cleanup()
|
||||
{
|
||||
}
|
||||
|
||||
void tst_QImageReader::readImage_data()
|
||||
{
|
||||
QTest::addColumn<QString>("fileName");
|
||||
QTest::addColumn<QByteArray>("format");
|
||||
|
||||
for (int i = 0; i < images.size(); ++i) {
|
||||
const QString file = images[i].first;
|
||||
const QByteArray format = images[i].second;
|
||||
QTest::newRow(qPrintable(file)) << file << format;
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QImageReader::readImage()
|
||||
{
|
||||
QFETCH(QString, fileName);
|
||||
QFETCH(QByteArray, format);
|
||||
|
||||
QBENCHMARK {
|
||||
QImageReader io(prefix + fileName, format);
|
||||
QImage image = io.read();
|
||||
QVERIFY(!image.isNull());
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QImageReader::setScaledSize_data()
|
||||
{
|
||||
QTest::addColumn<QString>("fileName");
|
||||
QTest::addColumn<QByteArray>("format");
|
||||
QTest::addColumn<QSize>("newSize");
|
||||
|
||||
for (int i = 0; i < images.size(); ++i) {
|
||||
const QString file = images[i].first;
|
||||
const QByteArray format = images[i].second;
|
||||
QSize size(200, 200);
|
||||
if (file == QLatin1String("teapot"))
|
||||
size = QSize(400, 400);
|
||||
else if (file == QLatin1String("test.ppm"))
|
||||
size = QSize(10, 10);
|
||||
QTest::newRow(qPrintable(file)) << file << format << size;
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QImageReader::setScaledSize()
|
||||
{
|
||||
QFETCH(QString, fileName);
|
||||
QFETCH(QSize, newSize);
|
||||
QFETCH(QByteArray, format);
|
||||
|
||||
QBENCHMARK {
|
||||
QImageReader reader(prefix + fileName, format);
|
||||
reader.setScaledSize(newSize);
|
||||
QImage image = reader.read();
|
||||
QCOMPARE(image.size(), newSize);
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QImageReader::setClipRect_data()
|
||||
{
|
||||
QTest::addColumn<QString>("fileName");
|
||||
QTest::addColumn<QByteArray>("format");
|
||||
QTest::addColumn<QRect>("newRect");
|
||||
|
||||
for (int i = 0; i < images.size(); ++i) {
|
||||
const QString file = images[i].first;
|
||||
const QByteArray format = images[i].second;
|
||||
QTest::newRow(qPrintable(file)) << file << format << QRect(0, 0, 50, 50);
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QImageReader::setClipRect()
|
||||
{
|
||||
QFETCH(QString, fileName);
|
||||
QFETCH(QRect, newRect);
|
||||
QFETCH(QByteArray, format);
|
||||
|
||||
QBENCHMARK {
|
||||
QImageReader reader(prefix + fileName, format);
|
||||
reader.setClipRect(newRect);
|
||||
QImage image = reader.read();
|
||||
QCOMPARE(image.rect(), newRect);
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QImageReader::setScaledClipRect_data()
|
||||
{
|
||||
setClipRect_data();
|
||||
}
|
||||
|
||||
void tst_QImageReader::setScaledClipRect()
|
||||
{
|
||||
QFETCH(QString, fileName);
|
||||
QFETCH(QRect, newRect);
|
||||
QFETCH(QByteArray, format);
|
||||
|
||||
QBENCHMARK {
|
||||
QImageReader reader(prefix + fileName, format);
|
||||
reader.setScaledSize(QSize(300, 300));
|
||||
reader.setScaledClipRect(newRect);
|
||||
QImage image = reader.read();
|
||||
QCOMPARE(image.rect(), newRect);
|
||||
}
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QImageReader)
|
||||
#include "tst_qimagereader.moc"
|
14
tests/benchmarks/gui/image/qimagescale/CMakeLists.txt
Normal file
@ -0,0 +1,14 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_bench_imageScale Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_benchmark(tst_bench_imageScale
|
||||
SOURCES
|
||||
tst_qimagescale.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::Test
|
||||
)
|
110
tests/benchmarks/gui/image/qimagescale/tst_qimagescale.cpp
Normal file
@ -0,0 +1,110 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <qtest.h>
|
||||
#include <QImage>
|
||||
|
||||
class tst_QImageScale : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
private slots:
|
||||
void scaleRgb32_data();
|
||||
void scaleRgb32();
|
||||
|
||||
void scaleArgb32pm_data();
|
||||
void scaleArgb32pm();
|
||||
|
||||
private:
|
||||
QImage generateImageRgb32(int width, int height);
|
||||
QImage generateImageArgb32(int width, int height);
|
||||
};
|
||||
|
||||
void tst_QImageScale::scaleRgb32_data()
|
||||
{
|
||||
QTest::addColumn<QImage>("inputImage");
|
||||
QTest::addColumn<QSize>("outputSize");
|
||||
|
||||
QImage image = generateImageRgb32(1000, 1000);
|
||||
QTest::newRow("1000x1000 -> 2000x2000") << image << QSize(2000, 2000);
|
||||
QTest::newRow("1000x1000 -> 2000x1000") << image << QSize(2000, 1000);
|
||||
QTest::newRow("1000x1000 -> 1000x2000") << image << QSize(1000, 2000);
|
||||
QTest::newRow("1000x1000 -> 2000x500") << image << QSize(2000, 500);
|
||||
QTest::newRow("1000x1000 -> 500x2000") << image << QSize(500, 2000);
|
||||
QTest::newRow("1000x1000 -> 500x500") << image << QSize(500, 500);
|
||||
QTest::newRow("1000x1000 -> 200x200") << image << QSize(200, 200);
|
||||
}
|
||||
|
||||
void tst_QImageScale::scaleRgb32()
|
||||
{
|
||||
QFETCH(QImage, inputImage);
|
||||
QFETCH(QSize, outputSize);
|
||||
|
||||
QBENCHMARK {
|
||||
volatile QImage output = inputImage.scaled(outputSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
|
||||
// we need the volatile and the following to make sure the compiler does not do
|
||||
// anything stupid :)
|
||||
(void)output;
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QImageScale::scaleArgb32pm_data()
|
||||
{
|
||||
QTest::addColumn<QImage>("inputImage");
|
||||
QTest::addColumn<QSize>("outputSize");
|
||||
|
||||
QImage image = generateImageArgb32(1000, 1000).convertToFormat(QImage::Format_ARGB32_Premultiplied);
|
||||
QTest::newRow("1000x1000 -> 2000x2000") << image << QSize(2000, 2000);
|
||||
QTest::newRow("1000x1000 -> 2000x1000") << image << QSize(2000, 1000);
|
||||
QTest::newRow("1000x1000 -> 1000x2000") << image << QSize(1000, 2000);
|
||||
QTest::newRow("1000x1000 -> 2000x500") << image << QSize(2000, 500);
|
||||
QTest::newRow("1000x1000 -> 500x2000") << image << QSize(500, 2000);
|
||||
QTest::newRow("1000x1000 -> 500x500") << image << QSize(500, 500);
|
||||
QTest::newRow("1000x1000 -> 200x200") << image << QSize(200, 200);
|
||||
}
|
||||
|
||||
void tst_QImageScale::scaleArgb32pm()
|
||||
{
|
||||
QFETCH(QImage, inputImage);
|
||||
QFETCH(QSize, outputSize);
|
||||
|
||||
QBENCHMARK {
|
||||
volatile QImage output = inputImage.scaled(outputSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
|
||||
// we need the volatile and the following to make sure the compiler does not do
|
||||
// anything stupid :)
|
||||
(void)output;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Fill a RGB32 image with "random" pixel values.
|
||||
*/
|
||||
QImage tst_QImageScale::generateImageRgb32(int width, int height)
|
||||
{
|
||||
QImage image(width, height, QImage::Format_RGB32);
|
||||
|
||||
for (int y = 0; y < image.height(); ++y) {
|
||||
QRgb *scanline = (QRgb*)image.scanLine(y);
|
||||
for (int x = 0; x < width; ++x)
|
||||
scanline[x] = qRgb(x, y, x ^ y);
|
||||
}
|
||||
return image;
|
||||
}
|
||||
|
||||
/*
|
||||
Fill a ARGB32 image with "random" pixel values.
|
||||
*/
|
||||
QImage tst_QImageScale::generateImageArgb32(int width, int height)
|
||||
{
|
||||
QImage image(width, height, QImage::Format_ARGB32);
|
||||
const int byteWidth = width * 4;
|
||||
|
||||
for (int y = 0; y < image.height(); ++y) {
|
||||
uchar *scanline = image.scanLine(y);
|
||||
for (int x = 0; x < byteWidth; ++x)
|
||||
scanline[x] = x ^ y;
|
||||
}
|
||||
return image;
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QImageScale)
|
||||
#include "tst_qimagescale.moc"
|
15
tests/benchmarks/gui/image/qpixmap/CMakeLists.txt
Normal file
@ -0,0 +1,15 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_bench_qpixmap Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_benchmark(tst_bench_qpixmap
|
||||
SOURCES
|
||||
tst_qpixmap.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::GuiPrivate
|
||||
Qt::Test
|
||||
)
|
277
tests/benchmarks/gui/image/qpixmap/tst_qpixmap.cpp
Normal file
@ -0,0 +1,277 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <qtest.h>
|
||||
#include <QBitmap>
|
||||
#include <QDir>
|
||||
#include <QImage>
|
||||
#include <QImageReader>
|
||||
#include <QPainter>
|
||||
#include <QPixmap>
|
||||
#include <private/qpixmap_raster_p.h>
|
||||
|
||||
class tst_QPixmap : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
tst_QPixmap();
|
||||
|
||||
private slots:
|
||||
void fill_data();
|
||||
void fill();
|
||||
|
||||
void scaled_data();
|
||||
void scaled();
|
||||
void transformed_data();
|
||||
void transformed();
|
||||
void mask_data();
|
||||
void mask();
|
||||
|
||||
void fromImageReader_data();
|
||||
void fromImageReader();
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(QImage::Format)
|
||||
Q_DECLARE_METATYPE(Qt::AspectRatioMode)
|
||||
Q_DECLARE_METATYPE(Qt::TransformationMode)
|
||||
|
||||
QPixmap rasterPixmap(int width, int height)
|
||||
{
|
||||
QPlatformPixmap *data =
|
||||
new QRasterPlatformPixmap(QPlatformPixmap::PixmapType);
|
||||
|
||||
data->resize(width, height);
|
||||
|
||||
return QPixmap(data);
|
||||
}
|
||||
|
||||
QPixmap rasterPixmap(const QSize &size)
|
||||
{
|
||||
return rasterPixmap(size.width(), size.height());
|
||||
}
|
||||
|
||||
QPixmap rasterPixmap(const QImage &image)
|
||||
{
|
||||
QPlatformPixmap *data =
|
||||
new QRasterPlatformPixmap(QPlatformPixmap::PixmapType);
|
||||
|
||||
data->fromImage(image, Qt::AutoColor);
|
||||
|
||||
return QPixmap(data);
|
||||
}
|
||||
|
||||
tst_QPixmap::tst_QPixmap()
|
||||
{
|
||||
}
|
||||
|
||||
void tst_QPixmap::fill_data()
|
||||
{
|
||||
QTest::addColumn<bool>("opaque");
|
||||
QTest::addColumn<int>("width");
|
||||
QTest::addColumn<int>("height");
|
||||
|
||||
QTest::newRow("opaque 16x16") << true << 16 << 16;
|
||||
QTest::newRow("!opaque 16x16") << false << 16 << 16;
|
||||
QTest::newRow("opaque 587x128") << true << 587 << 128;
|
||||
QTest::newRow("!opaque 587x128") << false << 587 << 128;
|
||||
}
|
||||
|
||||
void tst_QPixmap::fill()
|
||||
{
|
||||
QFETCH(bool, opaque);
|
||||
QFETCH(int, width);
|
||||
QFETCH(int, height);
|
||||
|
||||
const QColor color = opaque ? QColor(255, 0, 0) : QColor(255, 0, 0, 200);
|
||||
QPixmap pixmap = rasterPixmap(width, height);
|
||||
|
||||
QBENCHMARK {
|
||||
pixmap.fill(color);
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QPixmap::scaled_data()
|
||||
{
|
||||
QTest::addColumn<QSize>("size");
|
||||
QTest::addColumn<QSize>("scale");
|
||||
QTest::addColumn<Qt::AspectRatioMode>("ratioMode");
|
||||
QTest::addColumn<Qt::TransformationMode>("transformMode");
|
||||
|
||||
QTest::newRow("16x16 => 32x32") << QSize(16, 16) << QSize(32, 32)
|
||||
<< Qt::IgnoreAspectRatio
|
||||
<< Qt::FastTransformation;
|
||||
QTest::newRow("100x100 => 200x200") << QSize(100, 100) << QSize(200, 200)
|
||||
<< Qt::IgnoreAspectRatio
|
||||
<< Qt::FastTransformation;
|
||||
QTest::newRow("100x100 => 200x200") << QSize(100, 100) << QSize(200, 200)
|
||||
<< Qt::IgnoreAspectRatio
|
||||
<< Qt::FastTransformation;
|
||||
QTest::newRow("80x80 => 200x200") << QSize(137, 137) << QSize(200, 200)
|
||||
<< Qt::IgnoreAspectRatio
|
||||
<< Qt::FastTransformation;
|
||||
|
||||
}
|
||||
|
||||
void tst_QPixmap::scaled()
|
||||
{
|
||||
QFETCH(QSize, size);
|
||||
QFETCH(QSize, scale);
|
||||
QFETCH(Qt::AspectRatioMode, ratioMode);
|
||||
QFETCH(Qt::TransformationMode, transformMode);
|
||||
|
||||
QPixmap opaque = rasterPixmap(size);
|
||||
QPixmap transparent = rasterPixmap(size);
|
||||
opaque.fill(QColor(255, 0, 0));
|
||||
transparent.fill(QColor(255, 0, 0, 200));
|
||||
|
||||
QPixmap scaled1;
|
||||
QPixmap scaled2;
|
||||
QBENCHMARK {
|
||||
scaled1 = opaque.scaled(scale, ratioMode, transformMode);
|
||||
scaled2 = transparent.scaled(scale, ratioMode, transformMode);
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QPixmap::transformed_data()
|
||||
{
|
||||
QTest::addColumn<QSize>("size");
|
||||
QTest::addColumn<QTransform>("transform");
|
||||
QTest::addColumn<Qt::TransformationMode>("transformMode");
|
||||
|
||||
QTest::newRow("16x16 rotate(90)") << QSize(16, 16)
|
||||
<< QTransform().rotate(90)
|
||||
<< Qt::FastTransformation;
|
||||
QTest::newRow("16x16 rotate(199)") << QSize(16, 16)
|
||||
<< QTransform().rotate(199)
|
||||
<< Qt::FastTransformation;
|
||||
QTest::newRow("16x16 shear(2,1)") << QSize(16, 16)
|
||||
<< QTransform().shear(2, 1)
|
||||
<< Qt::FastTransformation;
|
||||
QTest::newRow("16x16 rotate(199).shear(2,1)") << QSize(16, 16)
|
||||
<< QTransform().rotate(199).shear(2, 1)
|
||||
<< Qt::FastTransformation;
|
||||
QTest::newRow("100x100 rotate(90)") << QSize(100, 100)
|
||||
<< QTransform().rotate(90)
|
||||
<< Qt::FastTransformation;
|
||||
QTest::newRow("100x100 rotate(199)") << QSize(100, 100)
|
||||
<< QTransform().rotate(199)
|
||||
<< Qt::FastTransformation;
|
||||
QTest::newRow("100x100 shear(2,1)") << QSize(100, 100)
|
||||
<< QTransform().shear(2, 1)
|
||||
<< Qt::FastTransformation;
|
||||
QTest::newRow("100x100 shear(2,1) smooth") << QSize(100, 100)
|
||||
<< QTransform().shear(2, 1)
|
||||
<< Qt::SmoothTransformation;
|
||||
QTest::newRow("100x100 rotate(199).shear(2,1)") << QSize(100, 100)
|
||||
<< QTransform().rotate(199).shear(2, 1)
|
||||
<< Qt::FastTransformation;
|
||||
}
|
||||
|
||||
void tst_QPixmap::transformed()
|
||||
{
|
||||
QFETCH(QSize, size);
|
||||
QFETCH(QTransform, transform);
|
||||
QFETCH(Qt::TransformationMode, transformMode);
|
||||
|
||||
QPixmap opaque = rasterPixmap(size);
|
||||
QPixmap transparent = rasterPixmap(size);
|
||||
opaque.fill(QColor(255, 0, 0));
|
||||
transparent.fill(QColor(255, 0, 0, 200));
|
||||
|
||||
QPixmap transformed1;
|
||||
QPixmap transformed2;
|
||||
QBENCHMARK {
|
||||
transformed1 = opaque.transformed(transform, transformMode);
|
||||
transformed2 = transparent.transformed(transform, transformMode);
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QPixmap::mask_data()
|
||||
{
|
||||
QTest::addColumn<QSize>("size");
|
||||
|
||||
QTest::newRow("1x1") << QSize(1, 1);
|
||||
QTest::newRow("9x9") << QSize(9, 9);
|
||||
QTest::newRow("16x16") << QSize(16, 16);
|
||||
QTest::newRow("128x128") << QSize(128, 128);
|
||||
QTest::newRow("333x333") << QSize(333, 333);
|
||||
QTest::newRow("2048x128") << QSize(2048, 128);
|
||||
}
|
||||
|
||||
void tst_QPixmap::mask()
|
||||
{
|
||||
QFETCH(QSize, size);
|
||||
|
||||
QPixmap src = rasterPixmap(size);
|
||||
src.fill(Qt::transparent);
|
||||
{
|
||||
QPainter p(&src);
|
||||
p.drawLine(QPoint(0, 0), QPoint(src.width(), src.height()));
|
||||
}
|
||||
|
||||
QBENCHMARK {
|
||||
QBitmap bitmap = src.mask();
|
||||
QVERIFY(bitmap.size() == src.size());
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QPixmap::fromImageReader_data()
|
||||
{
|
||||
const QString tempDir = QDir::tempPath();
|
||||
QTest::addColumn<QString>("filename");
|
||||
|
||||
QImage image(2000, 2000, QImage::Format_ARGB32);
|
||||
image.fill(0);
|
||||
{
|
||||
// Generate an image with opaque and transparent pixels
|
||||
// with an interesting distribution.
|
||||
QPainter painter(&image);
|
||||
|
||||
QRadialGradient radialGrad(QPointF(1000, 1000), 1000);
|
||||
radialGrad.setColorAt(0, QColor(255, 0, 0, 255));
|
||||
radialGrad.setColorAt(0.5, QColor(0, 255, 0, 255));
|
||||
radialGrad.setColorAt(0.9, QColor(0, 0, 255, 100));
|
||||
radialGrad.setColorAt(1, QColor(0, 0, 0, 0));
|
||||
|
||||
painter.fillRect(image.rect(), radialGrad);
|
||||
}
|
||||
image.save("test.png");
|
||||
|
||||
// RGB32
|
||||
const QString rgb32Path = tempDir + QString::fromLatin1("/rgb32.jpg");
|
||||
image.save(rgb32Path);
|
||||
QTest::newRow("gradient RGB32") << rgb32Path;
|
||||
|
||||
// ARGB32
|
||||
const QString argb32Path = tempDir + QString::fromLatin1("/argb32.png");
|
||||
image.save(argb32Path);
|
||||
QTest::newRow("gradient ARGB32") << argb32Path;
|
||||
|
||||
// Indexed 8
|
||||
const QString indexed8Path = tempDir + QString::fromLatin1("/indexed8.gif");
|
||||
image.save(indexed8Path);
|
||||
QTest::newRow("gradient indexed8") << indexed8Path;
|
||||
|
||||
}
|
||||
|
||||
void tst_QPixmap::fromImageReader()
|
||||
{
|
||||
QFETCH(QString, filename);
|
||||
// warmup
|
||||
{
|
||||
QImageReader imageReader(filename);
|
||||
QPixmap::fromImageReader(&imageReader);
|
||||
}
|
||||
|
||||
QBENCHMARK {
|
||||
QImageReader imageReader(filename);
|
||||
QPixmap::fromImageReader(&imageReader);
|
||||
}
|
||||
QFile::remove(filename);
|
||||
}
|
||||
|
||||
|
||||
QTEST_MAIN(tst_QPixmap)
|
||||
|
||||
#include "tst_qpixmap.moc"
|
14
tests/benchmarks/gui/image/qpixmapcache/CMakeLists.txt
Normal file
@ -0,0 +1,14 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_bench_qpixmapcache Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_benchmark(tst_bench_qpixmapcache
|
||||
SOURCES
|
||||
tst_qpixmapcache.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::Test
|
||||
)
|
171
tests/benchmarks/gui/image/qpixmapcache/tst_qpixmapcache.cpp
Normal file
@ -0,0 +1,171 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <qtest.h>
|
||||
#include <QPixmapCache>
|
||||
|
||||
class tst_QPixmapCache : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
tst_QPixmapCache();
|
||||
virtual ~tst_QPixmapCache();
|
||||
|
||||
public slots:
|
||||
void init();
|
||||
void cleanup();
|
||||
|
||||
private slots:
|
||||
void insert_data();
|
||||
void insert();
|
||||
void find_data();
|
||||
void find();
|
||||
void styleUseCaseComplexKey();
|
||||
void styleUseCaseComplexKey_data();
|
||||
};
|
||||
|
||||
tst_QPixmapCache::tst_QPixmapCache()
|
||||
{
|
||||
}
|
||||
|
||||
tst_QPixmapCache::~tst_QPixmapCache()
|
||||
{
|
||||
}
|
||||
|
||||
void tst_QPixmapCache::init()
|
||||
{
|
||||
}
|
||||
|
||||
void tst_QPixmapCache::cleanup()
|
||||
{
|
||||
}
|
||||
|
||||
void tst_QPixmapCache::insert_data()
|
||||
{
|
||||
QTest::addColumn<bool>("cacheType");
|
||||
QTest::newRow("QPixmapCache") << true;
|
||||
QTest::newRow("QPixmapCache (int API)") << false;
|
||||
}
|
||||
|
||||
QList<QPixmapCache::Key> keys;
|
||||
|
||||
void tst_QPixmapCache::insert()
|
||||
{
|
||||
QFETCH(bool, cacheType);
|
||||
QPixmap p;
|
||||
if (cacheType) {
|
||||
QBENCHMARK {
|
||||
for (int i = 0 ; i <= 10000 ; i++)
|
||||
QPixmapCache::insert(QString::asprintf("my-key-%d", i), p);
|
||||
}
|
||||
} else {
|
||||
QBENCHMARK {
|
||||
for (int i = 0 ; i <= 10000 ; i++)
|
||||
keys.append(QPixmapCache::insert(p));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QPixmapCache::find_data()
|
||||
{
|
||||
QTest::addColumn<bool>("cacheType");
|
||||
QTest::newRow("QPixmapCache") << true;
|
||||
QTest::newRow("QPixmapCache (int API)") << false;
|
||||
}
|
||||
|
||||
void tst_QPixmapCache::find()
|
||||
{
|
||||
QFETCH(bool, cacheType);
|
||||
QPixmap p;
|
||||
if (cacheType) {
|
||||
QBENCHMARK {
|
||||
for (int i = 0 ; i <= 10000 ; i++)
|
||||
QPixmapCache::find(QString::asprintf("my-key-%d", i), &p);
|
||||
}
|
||||
} else {
|
||||
QBENCHMARK {
|
||||
for (int i = 0 ; i <= 10000 ; i++)
|
||||
QPixmapCache::find(keys.at(i), &p);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void tst_QPixmapCache::styleUseCaseComplexKey_data()
|
||||
{
|
||||
QTest::addColumn<bool>("cacheType");
|
||||
QTest::newRow("QPixmapCache") << true;
|
||||
QTest::newRow("QPixmapCache (int API)") << false;
|
||||
}
|
||||
|
||||
struct styleStruct {
|
||||
QString key;
|
||||
uint state;
|
||||
uint direction;
|
||||
uint complex;
|
||||
uint palette;
|
||||
int width;
|
||||
int height;
|
||||
bool operator==(const styleStruct &str) const
|
||||
{
|
||||
return str.state == state && str.direction == direction
|
||||
&& str.complex == complex && str.palette == palette && str.width == width
|
||||
&& str.height == height && str.key == key;
|
||||
}
|
||||
};
|
||||
|
||||
uint qHash(const styleStruct &myStruct)
|
||||
{
|
||||
return qHash(myStruct.state);
|
||||
}
|
||||
|
||||
void tst_QPixmapCache::styleUseCaseComplexKey()
|
||||
{
|
||||
QFETCH(bool, cacheType);
|
||||
QPixmap p;
|
||||
if (cacheType) {
|
||||
QBENCHMARK {
|
||||
for (int i = 0 ; i <= 10000 ; i++)
|
||||
QPixmapCache::insert(QString::asprintf("%s-%d-%d-%d-%d-%d-%d", QString("my-progressbar-%1").arg(i).toLatin1().constData(), 5, 3, 0, 358, 100, 200), p);
|
||||
|
||||
for (int i = 0 ; i <= 10000 ; i++)
|
||||
QPixmapCache::find(QString::asprintf("%s-%d-%d-%d-%d-%d-%d", QString("my-progressbar-%1").arg(i).toLatin1().constData(), 5, 3, 0, 358, 100, 200), &p);
|
||||
}
|
||||
} else {
|
||||
QHash<styleStruct, QPixmapCache::Key> hash;
|
||||
QBENCHMARK {
|
||||
for (int i = 0 ; i <= 10000 ; i++)
|
||||
{
|
||||
styleStruct myStruct;
|
||||
myStruct.key = QString("my-progressbar-%1").arg(i);
|
||||
myStruct.key = QChar(5);
|
||||
myStruct.key = QChar(4);
|
||||
myStruct.key = QChar(3);
|
||||
myStruct.palette = 358;
|
||||
myStruct.width = 100;
|
||||
myStruct.key = QChar(200);
|
||||
QPixmapCache::Key key = QPixmapCache::insert(p);
|
||||
hash.insert(myStruct, key);
|
||||
}
|
||||
for (int i = 0 ; i <= 10000 ; i++)
|
||||
{
|
||||
styleStruct myStruct;
|
||||
myStruct.key = QString("my-progressbar-%1").arg(i);
|
||||
myStruct.key = QChar(5);
|
||||
myStruct.key = QChar(4);
|
||||
myStruct.key = QChar(3);
|
||||
myStruct.palette = 358;
|
||||
myStruct.width = 100;
|
||||
myStruct.key = QChar(200);
|
||||
QPixmapCache::Key key = hash.value(myStruct);
|
||||
QPixmapCache::find(key, &p);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
QTEST_MAIN(tst_QPixmapCache)
|
||||
#include "tst_qpixmapcache.moc"
|
5
tests/benchmarks/gui/kernel/CMakeLists.txt
Normal file
@ -0,0 +1,5 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
add_subdirectory(qguimetatype)
|
||||
add_subdirectory(qguivariant)
|
14
tests/benchmarks/gui/kernel/qguimetatype/CMakeLists.txt
Normal file
@ -0,0 +1,14 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_bench_qguimetatype Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_benchmark(tst_bench_qguimetatype
|
||||
SOURCES
|
||||
tst_qguimetatype.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::Test
|
||||
)
|
@ -0,0 +1,83 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <qtest.h>
|
||||
#include <QtCore/qmetatype.h>
|
||||
#include <QScopeGuard>
|
||||
|
||||
class tst_QGuiMetaType : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private slots:
|
||||
void constructInPlace_data();
|
||||
void constructInPlace();
|
||||
void constructInPlaceCopy_data();
|
||||
void constructInPlaceCopy();
|
||||
private:
|
||||
void constructableGuiTypes();
|
||||
};
|
||||
|
||||
|
||||
void tst_QGuiMetaType::constructableGuiTypes()
|
||||
{
|
||||
QTest::addColumn<int>("typeId");
|
||||
for (int i = QMetaType::FirstGuiType; i <= QMetaType::LastGuiType; ++i) {
|
||||
if (QMetaType metaType(i); metaType.isValid())
|
||||
QTest::newRow(metaType.name()) << i;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void tst_QGuiMetaType::constructInPlace_data()
|
||||
{
|
||||
constructableGuiTypes();
|
||||
}
|
||||
|
||||
void tst_QGuiMetaType::constructInPlace()
|
||||
{
|
||||
QFETCH(int, typeId);
|
||||
QMetaType type(typeId);
|
||||
int size = type.sizeOf();
|
||||
void *storage = qMallocAligned(size, 2 * sizeof(qlonglong));
|
||||
auto cleanUp = qScopeGuard([&]() {
|
||||
qFreeAligned(storage);
|
||||
});
|
||||
QCOMPARE(type.construct(storage, /*copy=*/0), storage);
|
||||
type.destruct(storage);
|
||||
QBENCHMARK {
|
||||
for (int i = 0; i < 100000; ++i) {
|
||||
type.construct(storage, /*copy=*/0);
|
||||
type.destruct(storage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QGuiMetaType::constructInPlaceCopy_data()
|
||||
{
|
||||
constructableGuiTypes();
|
||||
}
|
||||
|
||||
void tst_QGuiMetaType::constructInPlaceCopy()
|
||||
{
|
||||
QFETCH(int, typeId);
|
||||
QMetaType type(typeId);
|
||||
int size = type.sizeOf();
|
||||
void *storage = qMallocAligned(size, 2 * sizeof(qlonglong));
|
||||
void *other = type.create();
|
||||
auto cleanUp = qScopeGuard([&]() {
|
||||
type.destroy(other);
|
||||
qFreeAligned(storage);
|
||||
});
|
||||
QCOMPARE(type.construct(storage, other), storage);
|
||||
type.destruct(storage);
|
||||
QBENCHMARK {
|
||||
for (int i = 0; i < 100000; ++i) {
|
||||
type.construct(storage, other);
|
||||
type.destruct(storage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QGuiMetaType)
|
||||
#include "tst_qguimetatype.moc"
|
14
tests/benchmarks/gui/kernel/qguivariant/CMakeLists.txt
Normal file
@ -0,0 +1,14 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_bench_qguivariant Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_benchmark(tst_bench_qguivariant
|
||||
SOURCES
|
||||
tst_qguivariant.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::Test
|
||||
)
|
75
tests/benchmarks/gui/kernel/qguivariant/tst_qguivariant.cpp
Normal file
@ -0,0 +1,75 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <qtest.h>
|
||||
#include <QtCore/qvariant.h>
|
||||
|
||||
#define ITERATION_COUNT 1e5
|
||||
|
||||
class tst_QGuiVariant : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
tst_QGuiVariant();
|
||||
virtual ~tst_QGuiVariant();
|
||||
|
||||
private slots:
|
||||
void createGuiType_data();
|
||||
void createGuiType();
|
||||
void createGuiTypeCopy_data();
|
||||
void createGuiTypeCopy();
|
||||
};
|
||||
|
||||
tst_QGuiVariant::tst_QGuiVariant()
|
||||
{
|
||||
}
|
||||
|
||||
tst_QGuiVariant::~tst_QGuiVariant()
|
||||
{
|
||||
}
|
||||
|
||||
void tst_QGuiVariant::createGuiType_data()
|
||||
{
|
||||
QTest::addColumn<int>("typeId");
|
||||
for (int i = QMetaType::FirstGuiType; i <= QMetaType::LastGuiType; ++i) {
|
||||
if (QMetaType metaType(i); metaType.isValid())
|
||||
QTest::newRow(metaType.name()) << i;
|
||||
}
|
||||
}
|
||||
|
||||
// Tests how fast a Qt GUI type can be default-constructed by a
|
||||
// QVariant. The purpose of this benchmark is to measure the overhead
|
||||
// of creating (and destroying) a QVariant compared to creating the
|
||||
// type directly.
|
||||
void tst_QGuiVariant::createGuiType()
|
||||
{
|
||||
QFETCH(int, typeId);
|
||||
QBENCHMARK {
|
||||
for (int i = 0; i < ITERATION_COUNT; ++i)
|
||||
QVariant(QMetaType(typeId));
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QGuiVariant::createGuiTypeCopy_data()
|
||||
{
|
||||
createGuiType_data();
|
||||
}
|
||||
|
||||
// Tests how fast a Qt GUI type can be copy-constructed by a
|
||||
// QVariant. The purpose of this benchmark is to measure the overhead
|
||||
// of creating (and destroying) a QVariant compared to creating the
|
||||
// type directly.
|
||||
void tst_QGuiVariant::createGuiTypeCopy()
|
||||
{
|
||||
QFETCH(int, typeId);
|
||||
QVariant other((QMetaType(typeId)));
|
||||
const void *copy = other.constData();
|
||||
QBENCHMARK {
|
||||
for (int i = 0; i < ITERATION_COUNT; ++i)
|
||||
QVariant(QMetaType(typeId), copy);
|
||||
}
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QGuiVariant)
|
||||
#include "tst_qguivariant.moc"
|
5
tests/benchmarks/gui/math3d/CMakeLists.txt
Normal file
@ -0,0 +1,5 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
add_subdirectory(qmatrix4x4)
|
||||
add_subdirectory(qquaternion)
|
14
tests/benchmarks/gui/math3d/qmatrix4x4/CMakeLists.txt
Normal file
@ -0,0 +1,14 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_bench_qmatrix4x4 Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_benchmark(tst_bench_qmatrix4x4
|
||||
SOURCES
|
||||
tst_qmatrix4x4.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::Test
|
||||
)
|
636
tests/benchmarks/gui/math3d/qmatrix4x4/tst_qmatrix4x4.cpp
Normal file
@ -0,0 +1,636 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <QTest>
|
||||
#include <QtGui/qmatrix4x4.h>
|
||||
|
||||
class tst_QMatrix4x4 : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
tst_QMatrix4x4() {}
|
||||
~tst_QMatrix4x4() {}
|
||||
|
||||
private slots:
|
||||
void multiply_data();
|
||||
void multiply();
|
||||
|
||||
void multiplyInPlace_data();
|
||||
void multiplyInPlace();
|
||||
|
||||
void multiplyDirect_data();
|
||||
void multiplyDirect();
|
||||
|
||||
void mapVector3D_data();
|
||||
void mapVector3D();
|
||||
|
||||
void mapVector2D_data();
|
||||
void mapVector2D();
|
||||
|
||||
void mapVectorDirect_data();
|
||||
void mapVectorDirect();
|
||||
|
||||
void compareTranslate_data();
|
||||
void compareTranslate();
|
||||
|
||||
void compareTranslateAfterScale_data();
|
||||
void compareTranslateAfterScale();
|
||||
|
||||
void compareTranslateAfterRotate_data();
|
||||
void compareTranslateAfterRotate();
|
||||
|
||||
void compareScale_data();
|
||||
void compareScale();
|
||||
|
||||
void compareScaleAfterTranslate_data();
|
||||
void compareScaleAfterTranslate();
|
||||
|
||||
void compareScaleAfterRotate_data();
|
||||
void compareScaleAfterRotate();
|
||||
|
||||
void compareRotate_data();
|
||||
void compareRotate();
|
||||
|
||||
void compareRotateAfterTranslate_data();
|
||||
void compareRotateAfterTranslate();
|
||||
|
||||
void compareRotateAfterScale_data();
|
||||
void compareRotateAfterScale();
|
||||
};
|
||||
|
||||
static float const generalValues[16] =
|
||||
{1.0f, 2.0f, 3.0f, 4.0f,
|
||||
5.0f, 6.0f, 7.0f, 8.0f,
|
||||
9.0f, 10.0f, 11.0f, 12.0f,
|
||||
13.0f, 14.0f, 15.0f, 16.0f};
|
||||
|
||||
void tst_QMatrix4x4::multiply_data()
|
||||
{
|
||||
QTest::addColumn<QMatrix4x4>("m1");
|
||||
QTest::addColumn<QMatrix4x4>("m2");
|
||||
|
||||
QTest::newRow("identity * identity")
|
||||
<< QMatrix4x4() << QMatrix4x4();
|
||||
QTest::newRow("identity * general")
|
||||
<< QMatrix4x4() << QMatrix4x4(generalValues);
|
||||
QTest::newRow("general * identity")
|
||||
<< QMatrix4x4(generalValues) << QMatrix4x4();
|
||||
QTest::newRow("general * general")
|
||||
<< QMatrix4x4(generalValues) << QMatrix4x4(generalValues);
|
||||
}
|
||||
|
||||
QMatrix4x4 mresult;
|
||||
|
||||
void tst_QMatrix4x4::multiply()
|
||||
{
|
||||
QFETCH(QMatrix4x4, m1);
|
||||
QFETCH(QMatrix4x4, m2);
|
||||
|
||||
QMatrix4x4 m3;
|
||||
|
||||
QBENCHMARK {
|
||||
m3 = m1 * m2;
|
||||
}
|
||||
|
||||
// Force the result to be stored so the compiler doesn't
|
||||
// optimize away the contents of the benchmark loop.
|
||||
mresult = m3;
|
||||
}
|
||||
|
||||
void tst_QMatrix4x4::multiplyInPlace_data()
|
||||
{
|
||||
multiply_data();
|
||||
}
|
||||
|
||||
void tst_QMatrix4x4::multiplyInPlace()
|
||||
{
|
||||
QFETCH(QMatrix4x4, m1);
|
||||
QFETCH(QMatrix4x4, m2);
|
||||
|
||||
QMatrix4x4 m3;
|
||||
|
||||
QBENCHMARK {
|
||||
m3 = m1;
|
||||
m3 *= m2;
|
||||
}
|
||||
|
||||
// Force the result to be stored so the compiler doesn't
|
||||
// optimize away the contents of the benchmark loop.
|
||||
mresult = m3;
|
||||
}
|
||||
|
||||
// Use a direct naive multiplication algorithm. This is used
|
||||
// to compare against the optimized routines to see if they are
|
||||
// actually faster than the naive implementation.
|
||||
void tst_QMatrix4x4::multiplyDirect_data()
|
||||
{
|
||||
multiply_data();
|
||||
}
|
||||
void tst_QMatrix4x4::multiplyDirect()
|
||||
{
|
||||
QFETCH(QMatrix4x4, m1);
|
||||
QFETCH(QMatrix4x4, m2);
|
||||
|
||||
QMatrix4x4 m3;
|
||||
|
||||
const float *m1data = m1.constData();
|
||||
const float *m2data = m2.constData();
|
||||
float *m3data = m3.data();
|
||||
|
||||
QBENCHMARK {
|
||||
for (int row = 0; row < 4; ++row) {
|
||||
for (int col = 0; col < 4; ++col) {
|
||||
m3data[col * 4 + row] = 0.0f;
|
||||
for (int j = 0; j < 4; ++j) {
|
||||
m3data[col * 4 + row] +=
|
||||
m1data[j * 4 + row] * m2data[col * 4 + j];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QVector3D vresult;
|
||||
|
||||
void tst_QMatrix4x4::mapVector3D_data()
|
||||
{
|
||||
QTest::addColumn<QMatrix4x4>("m1");
|
||||
|
||||
QTest::newRow("identity") << QMatrix4x4();
|
||||
QTest::newRow("general") << QMatrix4x4(generalValues);
|
||||
|
||||
QMatrix4x4 t1;
|
||||
t1.translate(-100.5f, 64.0f, 75.25f);
|
||||
QTest::newRow("translate3D") << t1;
|
||||
|
||||
QMatrix4x4 t2;
|
||||
t2.translate(-100.5f, 64.0f);
|
||||
QTest::newRow("translate2D") << t2;
|
||||
|
||||
QMatrix4x4 s1;
|
||||
s1.scale(-100.5f, 64.0f, 75.25f);
|
||||
QTest::newRow("scale3D") << s1;
|
||||
|
||||
QMatrix4x4 s2;
|
||||
s2.scale(-100.5f, 64.0f);
|
||||
QTest::newRow("scale2D") << s2;
|
||||
}
|
||||
void tst_QMatrix4x4::mapVector3D()
|
||||
{
|
||||
QFETCH(QMatrix4x4, m1);
|
||||
|
||||
QVector3D v(10.5f, -2.0f, 3.0f);
|
||||
QVector3D result;
|
||||
|
||||
m1.optimize();
|
||||
|
||||
QBENCHMARK {
|
||||
result = m1.map(v);
|
||||
Q_UNUSED(result)
|
||||
}
|
||||
|
||||
// Force the result to be stored so the compiler doesn't
|
||||
// optimize away the contents of the benchmark loop.
|
||||
vresult = result;
|
||||
}
|
||||
|
||||
QPointF vresult2;
|
||||
|
||||
void tst_QMatrix4x4::mapVector2D_data()
|
||||
{
|
||||
mapVector3D_data();
|
||||
}
|
||||
void tst_QMatrix4x4::mapVector2D()
|
||||
{
|
||||
QFETCH(QMatrix4x4, m1);
|
||||
|
||||
QPointF v(10.5f, -2.0f);
|
||||
QPointF result;
|
||||
|
||||
m1.optimize();
|
||||
|
||||
QBENCHMARK {
|
||||
result = m1.map(v);
|
||||
Q_UNUSED(result)
|
||||
}
|
||||
|
||||
// Force the result to be stored so the compiler doesn't
|
||||
// optimize away the contents of the benchmark loop.
|
||||
vresult2 = result;
|
||||
}
|
||||
|
||||
// Use a direct naive multiplication algorithm. This is used
|
||||
// to compare against the optimized routines to see if they are
|
||||
// actually faster than the naive implementation.
|
||||
void tst_QMatrix4x4::mapVectorDirect_data()
|
||||
{
|
||||
mapVector3D_data();
|
||||
}
|
||||
void tst_QMatrix4x4::mapVectorDirect()
|
||||
{
|
||||
QFETCH(QMatrix4x4, m1);
|
||||
|
||||
const float *m1data = m1.constData();
|
||||
float v[4] = {10.5f, -2.0f, 3.0f, 1.0f};
|
||||
float result[4];
|
||||
|
||||
QBENCHMARK {
|
||||
for (int row = 0; row < 4; ++row) {
|
||||
result[row] = 0.0f;
|
||||
for (int col = 0; col < 4; ++col) {
|
||||
result[row] += m1data[col * 4 + row] * v[col];
|
||||
}
|
||||
}
|
||||
result[0] /= result[3];
|
||||
result[1] /= result[3];
|
||||
result[2] /= result[3];
|
||||
}
|
||||
}
|
||||
|
||||
// Compare the performance of QTransform::translate() to
|
||||
// QMatrix4x4::translate().
|
||||
void tst_QMatrix4x4::compareTranslate_data()
|
||||
{
|
||||
QTest::addColumn<bool>("useQTransform");
|
||||
QTest::addColumn<QVector3D>("translation");
|
||||
|
||||
QTest::newRow("QTransform::translate(0, 0, 0)")
|
||||
<< true << QVector3D(0, 0, 0);
|
||||
QTest::newRow("QMatrix4x4::translate(0, 0, 0)")
|
||||
<< false << QVector3D(0, 0, 0);
|
||||
|
||||
QTest::newRow("QTransform::translate(1, 2, 0)")
|
||||
<< true << QVector3D(1, 2, 0);
|
||||
QTest::newRow("QMatrix4x4::translate(1, 2, 0)")
|
||||
<< false << QVector3D(1, 2, 0);
|
||||
|
||||
QTest::newRow("QTransform::translate(1, 2, 4)")
|
||||
<< true << QVector3D(1, 2, 4);
|
||||
QTest::newRow("QMatrix4x4::translate(1, 2, 4)")
|
||||
<< false << QVector3D(1, 2, 4);
|
||||
}
|
||||
void tst_QMatrix4x4::compareTranslate()
|
||||
{
|
||||
QFETCH(bool, useQTransform);
|
||||
QFETCH(QVector3D, translation);
|
||||
|
||||
float x = translation.x();
|
||||
float y = translation.y();
|
||||
float z = translation.z();
|
||||
|
||||
if (useQTransform) {
|
||||
QTransform t;
|
||||
QBENCHMARK {
|
||||
t.translate(x, y);
|
||||
}
|
||||
} else if (z == 0.0f) {
|
||||
QMatrix4x4 m;
|
||||
QBENCHMARK {
|
||||
m.translate(x, y);
|
||||
}
|
||||
} else {
|
||||
QMatrix4x4 m;
|
||||
QBENCHMARK {
|
||||
m.translate(x, y, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Compare the performance of QTransform::translate() to
|
||||
// QMatrix4x4::translate() after priming the matrix with a scale().
|
||||
void tst_QMatrix4x4::compareTranslateAfterScale_data()
|
||||
{
|
||||
compareTranslate_data();
|
||||
}
|
||||
void tst_QMatrix4x4::compareTranslateAfterScale()
|
||||
{
|
||||
QFETCH(bool, useQTransform);
|
||||
QFETCH(QVector3D, translation);
|
||||
|
||||
float x = translation.x();
|
||||
float y = translation.y();
|
||||
float z = translation.z();
|
||||
|
||||
if (useQTransform) {
|
||||
QTransform t;
|
||||
t.scale(3, 4);
|
||||
QBENCHMARK {
|
||||
t.translate(x, y);
|
||||
}
|
||||
} else if (z == 0.0f) {
|
||||
QMatrix4x4 m;
|
||||
m.scale(3, 4);
|
||||
QBENCHMARK {
|
||||
m.translate(x, y);
|
||||
}
|
||||
} else {
|
||||
QMatrix4x4 m;
|
||||
m.scale(3, 4, 5);
|
||||
QBENCHMARK {
|
||||
m.translate(x, y, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Compare the performance of QTransform::translate() to
|
||||
// QMatrix4x4::translate() after priming the matrix with a rotate().
|
||||
void tst_QMatrix4x4::compareTranslateAfterRotate_data()
|
||||
{
|
||||
compareTranslate_data();
|
||||
}
|
||||
void tst_QMatrix4x4::compareTranslateAfterRotate()
|
||||
{
|
||||
QFETCH(bool, useQTransform);
|
||||
QFETCH(QVector3D, translation);
|
||||
|
||||
float x = translation.x();
|
||||
float y = translation.y();
|
||||
float z = translation.z();
|
||||
|
||||
if (useQTransform) {
|
||||
QTransform t;
|
||||
t.rotate(45.0f);
|
||||
QBENCHMARK {
|
||||
t.translate(x, y);
|
||||
}
|
||||
} else if (z == 0.0f) {
|
||||
QMatrix4x4 m;
|
||||
m.rotate(45.0f, 0, 0, 1);
|
||||
QBENCHMARK {
|
||||
m.translate(x, y);
|
||||
}
|
||||
} else {
|
||||
QMatrix4x4 m;
|
||||
m.rotate(45.0f, 0, 0, 1);
|
||||
QBENCHMARK {
|
||||
m.translate(x, y, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Compare the performance of QTransform::scale() to
|
||||
// QMatrix4x4::scale().
|
||||
void tst_QMatrix4x4::compareScale_data()
|
||||
{
|
||||
QTest::addColumn<bool>("useQTransform");
|
||||
QTest::addColumn<QVector3D>("scale");
|
||||
|
||||
QTest::newRow("QTransform::scale(1, 1, 1)")
|
||||
<< true << QVector3D(1, 1, 1);
|
||||
QTest::newRow("QMatrix4x4::scale(1, 1, 1)")
|
||||
<< false << QVector3D(1, 1, 1);
|
||||
|
||||
QTest::newRow("QTransform::scale(3, 6, 1)")
|
||||
<< true << QVector3D(3, 6, 1);
|
||||
QTest::newRow("QMatrix4x4::scale(3, 6, 1)")
|
||||
<< false << QVector3D(3, 6, 1);
|
||||
|
||||
QTest::newRow("QTransform::scale(3, 6, 4)")
|
||||
<< true << QVector3D(3, 6, 4);
|
||||
QTest::newRow("QMatrix4x4::scale(3, 6, 4)")
|
||||
<< false << QVector3D(3, 6, 4);
|
||||
}
|
||||
void tst_QMatrix4x4::compareScale()
|
||||
{
|
||||
QFETCH(bool, useQTransform);
|
||||
QFETCH(QVector3D, scale);
|
||||
|
||||
float x = scale.x();
|
||||
float y = scale.y();
|
||||
float z = scale.z();
|
||||
|
||||
if (useQTransform) {
|
||||
QTransform t;
|
||||
QBENCHMARK {
|
||||
t.scale(x, y);
|
||||
}
|
||||
} else if (z == 1.0f) {
|
||||
QMatrix4x4 m;
|
||||
QBENCHMARK {
|
||||
m.scale(x, y);
|
||||
}
|
||||
} else {
|
||||
QMatrix4x4 m;
|
||||
QBENCHMARK {
|
||||
m.scale(x, y, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Compare the performance of QTransform::scale() to
|
||||
// QMatrix4x4::scale() after priming the matrix with a translate().
|
||||
void tst_QMatrix4x4::compareScaleAfterTranslate_data()
|
||||
{
|
||||
compareScale_data();
|
||||
}
|
||||
void tst_QMatrix4x4::compareScaleAfterTranslate()
|
||||
{
|
||||
QFETCH(bool, useQTransform);
|
||||
QFETCH(QVector3D, scale);
|
||||
|
||||
float x = scale.x();
|
||||
float y = scale.y();
|
||||
float z = scale.z();
|
||||
|
||||
if (useQTransform) {
|
||||
QTransform t;
|
||||
t.translate(20, 34);
|
||||
QBENCHMARK {
|
||||
t.scale(x, y);
|
||||
}
|
||||
} else if (z == 1.0f) {
|
||||
QMatrix4x4 m;
|
||||
m.translate(20, 34);
|
||||
QBENCHMARK {
|
||||
m.scale(x, y);
|
||||
}
|
||||
} else {
|
||||
QMatrix4x4 m;
|
||||
m.translate(20, 34, 42);
|
||||
QBENCHMARK {
|
||||
m.scale(x, y, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Compare the performance of QTransform::scale() to
|
||||
// QMatrix4x4::scale() after priming the matrix with a rotate().
|
||||
void tst_QMatrix4x4::compareScaleAfterRotate_data()
|
||||
{
|
||||
compareScale_data();
|
||||
}
|
||||
void tst_QMatrix4x4::compareScaleAfterRotate()
|
||||
{
|
||||
QFETCH(bool, useQTransform);
|
||||
QFETCH(QVector3D, scale);
|
||||
|
||||
float x = scale.x();
|
||||
float y = scale.y();
|
||||
float z = scale.z();
|
||||
|
||||
if (useQTransform) {
|
||||
QTransform t;
|
||||
t.rotate(45.0f);
|
||||
QBENCHMARK {
|
||||
t.scale(x, y);
|
||||
}
|
||||
} else if (z == 1.0f) {
|
||||
QMatrix4x4 m;
|
||||
m.rotate(45.0f, 0, 0, 1);
|
||||
QBENCHMARK {
|
||||
m.scale(x, y);
|
||||
}
|
||||
} else {
|
||||
QMatrix4x4 m;
|
||||
m.rotate(45.0f, 0, 0, 1);
|
||||
QBENCHMARK {
|
||||
m.scale(x, y, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Compare the performance of QTransform::rotate() to
|
||||
// QMatrix4x4::rotate().
|
||||
void tst_QMatrix4x4::compareRotate_data()
|
||||
{
|
||||
QTest::addColumn<bool>("useQTransform");
|
||||
QTest::addColumn<float>("angle");
|
||||
QTest::addColumn<QVector3D>("rotation");
|
||||
QTest::addColumn<int>("axis");
|
||||
|
||||
QTest::newRow("QTransform::rotate(0, ZAxis)")
|
||||
<< true << 0.0f << QVector3D(0, 0, 1) << int(Qt::ZAxis);
|
||||
QTest::newRow("QMatrix4x4::rotate(0, ZAxis)")
|
||||
<< false << 0.0f << QVector3D(0, 0, 1) << int(Qt::ZAxis);
|
||||
|
||||
QTest::newRow("QTransform::rotate(45, ZAxis)")
|
||||
<< true << 45.0f << QVector3D(0, 0, 1) << int(Qt::ZAxis);
|
||||
QTest::newRow("QMatrix4x4::rotate(45, ZAxis)")
|
||||
<< false << 45.0f << QVector3D(0, 0, 1) << int(Qt::ZAxis);
|
||||
|
||||
QTest::newRow("QTransform::rotate(90, ZAxis)")
|
||||
<< true << 90.0f << QVector3D(0, 0, 1) << int(Qt::ZAxis);
|
||||
QTest::newRow("QMatrix4x4::rotate(90, ZAxis)")
|
||||
<< false << 90.0f << QVector3D(0, 0, 1) << int(Qt::ZAxis);
|
||||
|
||||
QTest::newRow("QTransform::rotate(0, YAxis)")
|
||||
<< true << 0.0f << QVector3D(0, 1, 0) << int(Qt::YAxis);
|
||||
QTest::newRow("QMatrix4x4::rotate(0, YAxis)")
|
||||
<< false << 0.0f << QVector3D(0, 1, 0) << int(Qt::YAxis);
|
||||
|
||||
QTest::newRow("QTransform::rotate(45, YAxis)")
|
||||
<< true << 45.0f << QVector3D(0, 1, 0) << int(Qt::YAxis);
|
||||
QTest::newRow("QMatrix4x4::rotate(45, YAxis)")
|
||||
<< false << 45.0f << QVector3D(0, 1, 0) << int(Qt::YAxis);
|
||||
|
||||
QTest::newRow("QTransform::rotate(90, YAxis)")
|
||||
<< true << 90.0f << QVector3D(0, 1, 0) << int(Qt::YAxis);
|
||||
QTest::newRow("QMatrix4x4::rotate(90, YAxis)")
|
||||
<< false << 90.0f << QVector3D(0, 1, 0) << int(Qt::YAxis);
|
||||
|
||||
QTest::newRow("QTransform::rotate(0, XAxis)")
|
||||
<< true << 0.0f << QVector3D(0, 1, 0) << int(Qt::XAxis);
|
||||
QTest::newRow("QMatrix4x4::rotate(0, XAxis)")
|
||||
<< false << 0.0f << QVector3D(0, 1, 0) << int(Qt::XAxis);
|
||||
|
||||
QTest::newRow("QTransform::rotate(45, XAxis)")
|
||||
<< true << 45.0f << QVector3D(1, 0, 0) << int(Qt::XAxis);
|
||||
QTest::newRow("QMatrix4x4::rotate(45, XAxis)")
|
||||
<< false << 45.0f << QVector3D(1, 0, 0) << int(Qt::XAxis);
|
||||
|
||||
QTest::newRow("QTransform::rotate(90, XAxis)")
|
||||
<< true << 90.0f << QVector3D(1, 0, 0) << int(Qt::XAxis);
|
||||
QTest::newRow("QMatrix4x4::rotate(90, XAxis)")
|
||||
<< false << 90.0f << QVector3D(1, 0, 0) << int(Qt::XAxis);
|
||||
}
|
||||
void tst_QMatrix4x4::compareRotate()
|
||||
{
|
||||
QFETCH(bool, useQTransform);
|
||||
QFETCH(float, angle);
|
||||
QFETCH(QVector3D, rotation);
|
||||
QFETCH(int, axis);
|
||||
|
||||
float x = rotation.x();
|
||||
float y = rotation.y();
|
||||
float z = rotation.z();
|
||||
|
||||
if (useQTransform) {
|
||||
QTransform t;
|
||||
QBENCHMARK {
|
||||
t.rotate(angle, Qt::Axis(axis));
|
||||
}
|
||||
} else {
|
||||
QMatrix4x4 m;
|
||||
QBENCHMARK {
|
||||
m.rotate(angle, x, y, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Compare the performance of QTransform::rotate() to
|
||||
// QMatrix4x4::rotate() after priming the matrix with a translate().
|
||||
void tst_QMatrix4x4::compareRotateAfterTranslate_data()
|
||||
{
|
||||
compareRotate_data();
|
||||
}
|
||||
void tst_QMatrix4x4::compareRotateAfterTranslate()
|
||||
{
|
||||
QFETCH(bool, useQTransform);
|
||||
QFETCH(float, angle);
|
||||
QFETCH(QVector3D, rotation);
|
||||
QFETCH(int, axis);
|
||||
|
||||
float x = rotation.x();
|
||||
float y = rotation.y();
|
||||
float z = rotation.z();
|
||||
|
||||
if (useQTransform) {
|
||||
QTransform t;
|
||||
t.translate(3, 4);
|
||||
QBENCHMARK {
|
||||
t.rotate(angle, Qt::Axis(axis));
|
||||
}
|
||||
} else {
|
||||
QMatrix4x4 m;
|
||||
m.translate(3, 4, 5);
|
||||
QBENCHMARK {
|
||||
m.rotate(angle, x, y, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Compare the performance of QTransform::rotate() to
|
||||
// QMatrix4x4::rotate() after priming the matrix with a scale().
|
||||
void tst_QMatrix4x4::compareRotateAfterScale_data()
|
||||
{
|
||||
compareRotate_data();
|
||||
}
|
||||
void tst_QMatrix4x4::compareRotateAfterScale()
|
||||
{
|
||||
QFETCH(bool, useQTransform);
|
||||
QFETCH(float, angle);
|
||||
QFETCH(QVector3D, rotation);
|
||||
QFETCH(int, axis);
|
||||
|
||||
float x = rotation.x();
|
||||
float y = rotation.y();
|
||||
float z = rotation.z();
|
||||
|
||||
if (useQTransform) {
|
||||
QTransform t;
|
||||
t.scale(3, 4);
|
||||
QBENCHMARK {
|
||||
t.rotate(angle, Qt::Axis(axis));
|
||||
}
|
||||
} else {
|
||||
QMatrix4x4 m;
|
||||
m.scale(3, 4, 5);
|
||||
QBENCHMARK {
|
||||
m.rotate(angle, x, y, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QMatrix4x4)
|
||||
|
||||
#include "tst_qmatrix4x4.moc"
|
14
tests/benchmarks/gui/math3d/qquaternion/CMakeLists.txt
Normal file
@ -0,0 +1,14 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_bench_qquaternion Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_benchmark(tst_bench_qquaternion
|
||||
SOURCES
|
||||
tst_qquaternion.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::Test
|
||||
)
|
85
tests/benchmarks/gui/math3d/qquaternion/tst_qquaternion.cpp
Normal file
@ -0,0 +1,85 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <qtest.h>
|
||||
#include <QQuaternion>
|
||||
|
||||
class tst_QQuaternion : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
tst_QQuaternion();
|
||||
virtual ~tst_QQuaternion();
|
||||
|
||||
public slots:
|
||||
void init();
|
||||
void cleanup();
|
||||
|
||||
private slots:
|
||||
void multiply_data();
|
||||
void multiply();
|
||||
};
|
||||
|
||||
tst_QQuaternion::tst_QQuaternion()
|
||||
{
|
||||
}
|
||||
|
||||
tst_QQuaternion::~tst_QQuaternion()
|
||||
{
|
||||
}
|
||||
|
||||
void tst_QQuaternion::init()
|
||||
{
|
||||
}
|
||||
|
||||
void tst_QQuaternion::cleanup()
|
||||
{
|
||||
}
|
||||
|
||||
void tst_QQuaternion::multiply_data()
|
||||
{
|
||||
QTest::addColumn<float>("x1");
|
||||
QTest::addColumn<float>("y1");
|
||||
QTest::addColumn<float>("z1");
|
||||
QTest::addColumn<float>("w1");
|
||||
QTest::addColumn<float>("x2");
|
||||
QTest::addColumn<float>("y2");
|
||||
QTest::addColumn<float>("z2");
|
||||
QTest::addColumn<float>("w2");
|
||||
|
||||
QTest::newRow("null")
|
||||
<< 0.0f << 0.0f << 0.0f << 0.0f
|
||||
<< 0.0f << 0.0f << 0.0f << 0.0f;
|
||||
|
||||
QTest::newRow("unitvec")
|
||||
<< 1.0f << 0.0f << 0.0f << 1.0f
|
||||
<< 0.0f << 1.0f << 0.0f << 1.0f;
|
||||
|
||||
QTest::newRow("complex")
|
||||
<< 1.0f << 2.0f << 3.0f << 7.0f
|
||||
<< 4.0f << 5.0f << 6.0f << 8.0f;
|
||||
}
|
||||
|
||||
void tst_QQuaternion::multiply()
|
||||
{
|
||||
QFETCH(float, x1);
|
||||
QFETCH(float, y1);
|
||||
QFETCH(float, z1);
|
||||
QFETCH(float, w1);
|
||||
QFETCH(float, x2);
|
||||
QFETCH(float, y2);
|
||||
QFETCH(float, z2);
|
||||
QFETCH(float, w2);
|
||||
|
||||
QQuaternion q1(w1, x1, y1, z1);
|
||||
QQuaternion q2(w2, x2, y2, z2);
|
||||
|
||||
QBENCHMARK {
|
||||
QQuaternion q3 = q1 * q2;
|
||||
Q_UNUSED(q3)
|
||||
}
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QQuaternion)
|
||||
#include "tst_qquaternion.moc"
|
12
tests/benchmarks/gui/painting/CMakeLists.txt
Normal file
@ -0,0 +1,12 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
add_subdirectory(drawtexture)
|
||||
add_subdirectory(qcolor)
|
||||
add_subdirectory(qregion)
|
||||
add_subdirectory(qtransform)
|
||||
add_subdirectory(lancebench)
|
||||
if(TARGET Qt::Widgets)
|
||||
add_subdirectory(qpainter)
|
||||
add_subdirectory(qtbench)
|
||||
endif()
|
15
tests/benchmarks/gui/painting/drawtexture/CMakeLists.txt
Normal file
@ -0,0 +1,15 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_bench_drawtexture Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_benchmark(tst_bench_drawtexture
|
||||
SOURCES
|
||||
tst_drawtexture.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::GuiPrivate
|
||||
Qt::Test
|
||||
)
|
521
tests/benchmarks/gui/painting/drawtexture/tst_drawtexture.cpp
Normal file
@ -0,0 +1,521 @@
|
||||
// Copyright (C) 2017 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <qtest.h>
|
||||
#include <QPainter>
|
||||
#include <QImage>
|
||||
|
||||
Q_DECLARE_METATYPE(QImage::Format)
|
||||
|
||||
#define SIZE 400
|
||||
|
||||
class tst_DrawTexture : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
void paint(bool smooth);
|
||||
|
||||
private slots:
|
||||
void simpleUpscale_data();
|
||||
void simpleUpscale();
|
||||
void simpleUpscaleSmooth_data();
|
||||
void simpleUpscaleSmooth();
|
||||
|
||||
void downscale_data();
|
||||
void downscale();
|
||||
void downscaleSmooth_data();
|
||||
void downscaleSmooth();
|
||||
|
||||
void upscale_data();
|
||||
void upscale();
|
||||
void upscaleSmooth_data();
|
||||
void upscaleSmooth();
|
||||
|
||||
void rotate_data();
|
||||
void rotate();
|
||||
void rotateSmooth_data();
|
||||
void rotateSmooth();
|
||||
|
||||
void perspective_data();
|
||||
void perspective();
|
||||
void perspectiveSmooth_data();
|
||||
void perspectiveSmooth();
|
||||
};
|
||||
|
||||
void tst_DrawTexture::simpleUpscale_data()
|
||||
{
|
||||
QTest::addColumn<QImage::Format>("sourceFormat");
|
||||
QTest::addColumn<QImage::Format>("targetFormat");
|
||||
QTest::addColumn<QTransform>("transform");
|
||||
|
||||
|
||||
QTransform matrix;
|
||||
matrix.scale(1.5, 1.5);
|
||||
QTest::newRow("rgb32 1.5x,1.5x on rgb32") << QImage::Format_RGB32
|
||||
<< QImage::Format_RGB32
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm 1.5x,1.5x on argb32pm") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("argb32 1.5x,1.5x on argb32pm") << QImage::Format_ARGB32
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgba8888pm 1.5x,1.5x on rgba8888pm") << QImage::Format_RGBA8888_Premultiplied
|
||||
<< QImage::Format_RGBA8888_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgb16 1.5x,1.5x on rgb16") << QImage::Format_RGB16
|
||||
<< QImage::Format_RGB16
|
||||
<< matrix;
|
||||
QTest::newRow("rgb16 1.5x,1.5x on argb32pm") << QImage::Format_RGB16
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm 1.5x,1.5x on rgb30") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_RGB30
|
||||
<< matrix;
|
||||
matrix.reset();
|
||||
matrix.scale(5, 5);
|
||||
QTest::newRow("rgb32 5x,5x on rgb32") << QImage::Format_RGB32
|
||||
<< QImage::Format_RGB32
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm 5x,5x on argb32pm") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("argb32 5x,5x on argb32pm") << QImage::Format_ARGB32
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgba8888pm 5x,5x on rgba8888pm") << QImage::Format_RGBA8888_Premultiplied
|
||||
<< QImage::Format_RGBA8888_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgb16 5x,5x on rgb16") << QImage::Format_RGB16
|
||||
<< QImage::Format_RGB16
|
||||
<< matrix;
|
||||
QTest::newRow("rgb16 5x,5x on rgb32") << QImage::Format_RGB16
|
||||
<< QImage::Format_RGB32
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm 5x,5x on rgb30") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_RGB30
|
||||
<< matrix;
|
||||
matrix.reset();
|
||||
matrix.translate(0, SIZE);
|
||||
matrix.scale(16, -1);
|
||||
QTest::newRow("rgb32 16x,-1x on rgb32") << QImage::Format_RGB32
|
||||
<< QImage::Format_RGB32
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm 16x,-1x on argb32pm") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("argb32 16x,-1x on argb32pm") << QImage::Format_ARGB32
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgba8888pm 16x,-1x on rgba8888pm") << QImage::Format_RGBA8888_Premultiplied
|
||||
<< QImage::Format_RGBA8888_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgb16 16x,-1x on rgb16") << QImage::Format_RGB16
|
||||
<< QImage::Format_RGB16
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm 16x,-1x on rgb30") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_RGB30
|
||||
<< matrix;
|
||||
}
|
||||
|
||||
void tst_DrawTexture::downscale_data()
|
||||
{
|
||||
QTest::addColumn<QImage::Format>("sourceFormat");
|
||||
QTest::addColumn<QImage::Format>("targetFormat");
|
||||
QTest::addColumn<QTransform>("transform");
|
||||
|
||||
|
||||
QTransform matrix;
|
||||
matrix.translate(SIZE, 0);
|
||||
matrix.scale(-1.5, 1.5);
|
||||
QTest::newRow("rgb32 -1.5x,1.5x on rgb32") << QImage::Format_RGB32
|
||||
<< QImage::Format_RGB32
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm -1.5x,1.5x on argb32pm") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("argb32 -1.5x,1.5x on argb32pm") << QImage::Format_ARGB32
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgba8888pm -1.5x,1.5x on rgba8888pm") << QImage::Format_RGBA8888_Premultiplied
|
||||
<< QImage::Format_RGBA8888_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgb16 -1.5x,1.5x on rgb16") << QImage::Format_RGB16
|
||||
<< QImage::Format_RGB16
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm -1.5x,1.5x on rgb30") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_RGB30
|
||||
<< matrix;
|
||||
matrix.reset();
|
||||
matrix.scale(.5, .5);
|
||||
QTest::newRow("rgb32 .5x,.5x on rgb32") << QImage::Format_RGB32
|
||||
<< QImage::Format_RGB32
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm .5x,.5x on argb32pm") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("argb32 .5x,.5x on argb32pm") << QImage::Format_ARGB32
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgba8888pm .5x,.5x on rgba8888pm") << QImage::Format_RGBA8888_Premultiplied
|
||||
<< QImage::Format_RGBA8888_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgb16 .5x,.5x on rgb16") << QImage::Format_RGB16
|
||||
<< QImage::Format_RGB16
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm .5x,.5x on rgb30") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_RGB30
|
||||
<< matrix;
|
||||
matrix.reset();
|
||||
matrix.scale(.2, 2);
|
||||
QTest::newRow("rgb32 .2x,2x on rgb32") << QImage::Format_RGB32
|
||||
<< QImage::Format_RGB32
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm .2x,2x on argb32pm") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("argb32 .2x,2x on argb32pm") << QImage::Format_ARGB32
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgba8888pm .2x,2x on rgba8888pm") << QImage::Format_RGBA8888_Premultiplied
|
||||
<< QImage::Format_RGBA8888_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgb16 .2x,2x on rgb16") << QImage::Format_RGB16
|
||||
<< QImage::Format_RGB16
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm .2x,2x on rgb30") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_RGB30
|
||||
<< matrix;
|
||||
}
|
||||
|
||||
void tst_DrawTexture::upscale_data()
|
||||
{
|
||||
QTest::addColumn<QImage::Format>("sourceFormat");
|
||||
QTest::addColumn<QImage::Format>("targetFormat");
|
||||
QTest::addColumn<QTransform>("transform");
|
||||
|
||||
|
||||
QTransform matrix;
|
||||
matrix.translate(SIZE, 0);
|
||||
matrix.scale(-8, 8);
|
||||
QTest::newRow("rgb32 -8x,8x on rgb32") << QImage::Format_RGB32
|
||||
<< QImage::Format_RGB32
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm -8x,8x on argb32pm") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("argb32 -8x,8x on argb32pm") << QImage::Format_ARGB32
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgba8888pm -8x,8x on rgba8888pm") << QImage::Format_RGBA8888_Premultiplied
|
||||
<< QImage::Format_RGBA8888_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgb16 -8x,8x on rgb16") << QImage::Format_RGB16
|
||||
<< QImage::Format_RGB16
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm -8x,8x on rgb30") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_RGB30
|
||||
<< matrix;
|
||||
matrix.reset();
|
||||
matrix.translate(SIZE, SIZE);
|
||||
matrix.scale(-10, -10);
|
||||
QTest::newRow("rgb32 -10x,-10x on rgb32") << QImage::Format_RGB32
|
||||
<< QImage::Format_RGB32
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm -10x,-10x on argb32pm") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("argb32 -10x,-10x on argb32pm") << QImage::Format_ARGB32
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgba8888pm -10x,-10x on rgba8888pm") << QImage::Format_RGBA8888_Premultiplied
|
||||
<< QImage::Format_RGBA8888_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgb16 -10x,-10x on rgb16") << QImage::Format_RGB16
|
||||
<< QImage::Format_RGB16
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm -10x,-10x on rgb30") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_RGB30
|
||||
<< matrix;
|
||||
|
||||
matrix.reset();
|
||||
matrix.translate(SIZE, 0);
|
||||
matrix.scale(-1, 16);
|
||||
QTest::newRow("rgb32 -1x,16x on rgb32") << QImage::Format_RGB32
|
||||
<< QImage::Format_RGB32
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm -1x,16x on argb32pm") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("argb32 -1x,16x on argb32pm") << QImage::Format_ARGB32
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgba8888pm -1x,16x on rgba8888pm") << QImage::Format_RGBA8888_Premultiplied
|
||||
<< QImage::Format_RGBA8888_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgb16 -1x,16x on rgb16") << QImage::Format_RGB16
|
||||
<< QImage::Format_RGB16
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm -1x,16x on rgb30") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_RGB30
|
||||
<< matrix;
|
||||
}
|
||||
|
||||
void tst_DrawTexture::rotate_data()
|
||||
{
|
||||
QTest::addColumn<QImage::Format>("sourceFormat");
|
||||
QTest::addColumn<QImage::Format>("targetFormat");
|
||||
QTest::addColumn<QTransform>("transform");
|
||||
|
||||
QTransform matrix;
|
||||
matrix.translate(SIZE/2, SIZE/2);
|
||||
matrix.rotate(-90);
|
||||
matrix.translate(-SIZE/2, -SIZE/2);
|
||||
QTest::newRow("rgb32 -90deg on rgb32") << QImage::Format_RGB32
|
||||
<< QImage::Format_RGB32
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm -90deg on argb32pm") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("argb32 -90deg on argb32pm") << QImage::Format_ARGB32
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgba8888pm -90deg on rgba8888pm") << QImage::Format_RGBA8888_Premultiplied
|
||||
<< QImage::Format_RGBA8888_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgb16 -90deg rgb16") << QImage::Format_RGB16
|
||||
<< QImage::Format_RGB16
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm -90deg on rgb30") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_RGB30
|
||||
<< matrix;
|
||||
matrix.reset();
|
||||
matrix.translate(SIZE/2, SIZE/2);
|
||||
matrix.rotate(45);
|
||||
matrix.translate(-SIZE/2, -SIZE/2);
|
||||
QTest::newRow("rgb32 45deg on rgb32") << QImage::Format_RGB32
|
||||
<< QImage::Format_RGB32
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm 45deg on argb32pm") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("argb32 45deg on argb32pm") << QImage::Format_ARGB32
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgba8888pm 45deg on rgba8888pm") << QImage::Format_RGBA8888_Premultiplied
|
||||
<< QImage::Format_RGBA8888_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgb16 45deg on rgb16") << QImage::Format_RGB16
|
||||
<< QImage::Format_RGB16
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm 45deg on rgb30") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_RGB30
|
||||
<< matrix;
|
||||
|
||||
matrix.reset();
|
||||
matrix.translate(SIZE/2, SIZE/2);
|
||||
matrix.rotate(135);
|
||||
matrix.scale(2, 2);
|
||||
matrix.translate(-SIZE/4, -SIZE/4);
|
||||
QTest::newRow("rgb32 rotate+scale on rgb32") << QImage::Format_RGB32
|
||||
<< QImage::Format_RGB32
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm rotate+scale on argb32pm") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("argb32 rotate+scale on argb32pm") << QImage::Format_ARGB32
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgba8888pm rotate+scale on rgba8888pm") << QImage::Format_RGBA8888_Premultiplied
|
||||
<< QImage::Format_RGBA8888_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgb16 rotate+scale on rgb16") << QImage::Format_RGB16
|
||||
<< QImage::Format_RGB16
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm rotate+scale on rgb30") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_RGB30
|
||||
<< matrix;
|
||||
}
|
||||
|
||||
void tst_DrawTexture::perspective_data()
|
||||
{
|
||||
QTest::addColumn<QImage::Format>("sourceFormat");
|
||||
QTest::addColumn<QImage::Format>("targetFormat");
|
||||
QTest::addColumn<QTransform>("transform");
|
||||
|
||||
QTransform matrix;
|
||||
QPolygonF quad1, quad2;
|
||||
quad1 << QPointF(0.0, 0.0) << QPointF(SIZE,0.0) << QPointF(SIZE,SIZE) << QPointF(0.0,SIZE);
|
||||
quad2 << QPointF(SIZE/6, SIZE/6) << QPointF(SIZE*4/5,SIZE/5) << QPointF(SIZE*4/5,SIZE*5/6) << QPointF(SIZE/5,SIZE*3/5);
|
||||
QTransform::quadToQuad(quad1, quad2, matrix);
|
||||
|
||||
QTest::newRow("rgb32 perspective1 on rgb32") << QImage::Format_RGB32
|
||||
<< QImage::Format_RGB32
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm perspective1 on argb32pm") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("argb32 perspective1 on argb32pm") << QImage::Format_ARGB32
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgba8888pm perspective1 on rgba8888pm") << QImage::Format_RGBA8888_Premultiplied
|
||||
<< QImage::Format_RGBA8888_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgb16 perspective1 on rgb16") << QImage::Format_RGB16
|
||||
<< QImage::Format_RGB16
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm perspective1 on rgb30") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_RGB30
|
||||
<< matrix;
|
||||
|
||||
matrix.reset();
|
||||
quad1.clear(); quad2.clear();
|
||||
quad1 << QPointF(0.0, 0.0) << QPointF(SIZE,0.0) << QPointF(SIZE,SIZE) << QPointF(0.0,SIZE);
|
||||
quad2 << QPointF(0.0, 0.0) << QPointF(SIZE*4/5,SIZE/4) << QPointF(SIZE*4/5,SIZE*3/4) << QPointF(0.0,SIZE);
|
||||
QTransform::quadToQuad(quad1, quad2, matrix);
|
||||
|
||||
QTest::newRow("rgb32 perspective2 on rgb32") << QImage::Format_RGB32
|
||||
<< QImage::Format_RGB32
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm perspective2 on argb32pm") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("argb32 perspective2 on argb32pm") << QImage::Format_ARGB32
|
||||
<< QImage::Format_ARGB32_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgba8888pm perspective2 on rgba8888pm") << QImage::Format_RGBA8888_Premultiplied
|
||||
<< QImage::Format_RGBA8888_Premultiplied
|
||||
<< matrix;
|
||||
QTest::newRow("rgb16 perspective2 on rgb16") << QImage::Format_RGB16
|
||||
<< QImage::Format_RGB16
|
||||
<< matrix;
|
||||
QTest::newRow("argb32pm perspective2 on rgb30") << QImage::Format_ARGB32_Premultiplied
|
||||
<< QImage::Format_RGB30
|
||||
<< matrix;
|
||||
}
|
||||
|
||||
void tst_DrawTexture::simpleUpscaleSmooth_data()
|
||||
{
|
||||
simpleUpscale_data();
|
||||
}
|
||||
|
||||
void tst_DrawTexture::downscaleSmooth_data()
|
||||
{
|
||||
downscale_data();
|
||||
}
|
||||
|
||||
void tst_DrawTexture::upscaleSmooth_data()
|
||||
{
|
||||
upscale_data();
|
||||
}
|
||||
|
||||
void tst_DrawTexture::rotateSmooth_data()
|
||||
{
|
||||
rotate_data();
|
||||
}
|
||||
|
||||
void tst_DrawTexture::perspectiveSmooth_data()
|
||||
{
|
||||
perspective_data();
|
||||
}
|
||||
|
||||
static QImage createImage(const QSize &size, QImage::Format format, bool smooth)
|
||||
{
|
||||
QImage base(size, format);
|
||||
base.fill(Qt::transparent);
|
||||
QLinearGradient grad(0.0, 0.0, 1.0, 0.0);
|
||||
grad.setCoordinateMode(QGradient::ObjectBoundingMode);
|
||||
grad.setColorAt(0.0, Qt::red);
|
||||
grad.setColorAt(0.4, Qt::white);
|
||||
grad.setColorAt(0.6, Qt::white);
|
||||
grad.setColorAt(1.0, Qt::blue);
|
||||
QBrush brush(grad);
|
||||
QPainter p(&base);
|
||||
p.setRenderHint(QPainter::Antialiasing, smooth);
|
||||
p.setBrush(brush);
|
||||
p.setPen(Qt::NoPen);
|
||||
p.drawEllipse(0, 0, size.width(), size.height());
|
||||
p.end();
|
||||
return base;
|
||||
}
|
||||
|
||||
|
||||
void tst_DrawTexture::paint(bool smooth)
|
||||
{
|
||||
QFETCH(QImage::Format, sourceFormat);
|
||||
QFETCH(QImage::Format, targetFormat);
|
||||
QFETCH(QTransform, transform);
|
||||
|
||||
QSize size(SIZE, SIZE);
|
||||
QRect rect(QPoint(0,0), size);
|
||||
if (transform.isAffine())
|
||||
rect = transform.inverted().mapRect(rect);
|
||||
|
||||
QImage sourceImage = createImage(rect.size(), sourceFormat, smooth);
|
||||
QImage targetImage(size, targetFormat);
|
||||
targetImage.fill(Qt::gray);
|
||||
|
||||
QPainter p(&targetImage);
|
||||
p.setRenderHints(QPainter::SmoothPixmapTransform, smooth);
|
||||
p.setRenderHints(QPainter::Antialiasing, smooth);
|
||||
p.setWorldTransform(transform, false);
|
||||
|
||||
QBENCHMARK {
|
||||
p.drawImage(0, 0, sourceImage);
|
||||
}
|
||||
// targetImage.save(QString::fromLatin1(QTest::currentTestFunction()) + QChar('_') + QString::fromLatin1(QTest::currentDataTag()) + QStringLiteral(".png"));
|
||||
}
|
||||
|
||||
void tst_DrawTexture::simpleUpscale()
|
||||
{
|
||||
paint(false);
|
||||
}
|
||||
|
||||
void tst_DrawTexture::upscale()
|
||||
{
|
||||
paint(false);
|
||||
}
|
||||
|
||||
void tst_DrawTexture::downscale()
|
||||
{
|
||||
paint(false);
|
||||
}
|
||||
|
||||
void tst_DrawTexture::rotate()
|
||||
{
|
||||
paint(false);
|
||||
}
|
||||
|
||||
void tst_DrawTexture::perspective()
|
||||
{
|
||||
paint(false);
|
||||
}
|
||||
|
||||
void tst_DrawTexture::simpleUpscaleSmooth()
|
||||
{
|
||||
paint(true);
|
||||
}
|
||||
|
||||
void tst_DrawTexture::upscaleSmooth()
|
||||
{
|
||||
paint(true);
|
||||
}
|
||||
|
||||
void tst_DrawTexture::downscaleSmooth()
|
||||
{
|
||||
paint(true);
|
||||
}
|
||||
|
||||
void tst_DrawTexture::rotateSmooth()
|
||||
{
|
||||
paint(true);
|
||||
}
|
||||
|
||||
void tst_DrawTexture::perspectiveSmooth()
|
||||
{
|
||||
paint(true);
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_DrawTexture)
|
||||
|
||||
#include "tst_drawtexture.moc"
|
70
tests/benchmarks/gui/painting/lancebench/CMakeLists.txt
Normal file
@ -0,0 +1,70 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_bench_lancebench Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_benchmark(tst_bench_lancebench
|
||||
SOURCES
|
||||
../../../../baseline/shared/paintcommands.cpp ../../../../baseline/shared/paintcommands.h
|
||||
tst_lancebench.cpp
|
||||
INCLUDE_DIRECTORIES
|
||||
../../../../baseline/shared
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::GuiPrivate
|
||||
Qt::Test
|
||||
)
|
||||
|
||||
# Resources:
|
||||
set(images_resource_files
|
||||
"images/alpha.png"
|
||||
"images/alpha2x2.png"
|
||||
"images/bitmap.png"
|
||||
"images/border.png"
|
||||
"images/borderimage.png"
|
||||
"images/dome_argb32.png"
|
||||
"images/dome_indexed.png"
|
||||
"images/dome_indexed_mask.png"
|
||||
"images/dome_mono.png"
|
||||
"images/dome_mono_128.png"
|
||||
"images/dome_mono_palette.png"
|
||||
"images/dome_rgb32.png"
|
||||
"images/dot.png"
|
||||
"images/face.png"
|
||||
"images/gam030.png"
|
||||
"images/gam045.png"
|
||||
"images/gam056.png"
|
||||
"images/gam100.png"
|
||||
"images/gam200.png"
|
||||
"images/image.png"
|
||||
"images/mask.png"
|
||||
"images/mask_100.png"
|
||||
"images/masked.png"
|
||||
"images/sign.png"
|
||||
"images/solid.png"
|
||||
"images/solid2x2.png"
|
||||
"images/struct-image-01.jpg"
|
||||
"images/struct-image-01.png"
|
||||
"images/zebra.png"
|
||||
)
|
||||
|
||||
list(TRANSFORM images_resource_files PREPEND "../../../../baseline/painting/")
|
||||
|
||||
qt_internal_add_resource(tst_bench_lancebench "images"
|
||||
PREFIX
|
||||
"/"
|
||||
BASE
|
||||
"../../../../baseline/painting"
|
||||
FILES
|
||||
${images_resource_files}
|
||||
)
|
||||
|
||||
## Scopes:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_extend_target(tst_bench_lancebench CONDITION QT_FEATURE_opengl
|
||||
LIBRARIES
|
||||
Qt::OpenGL
|
||||
)
|
303
tests/benchmarks/gui/painting/lancebench/tst_lancebench.cpp
Normal file
@ -0,0 +1,303 @@
|
||||
// Copyright (C) 2018 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include "paintcommands.h"
|
||||
|
||||
#include <qtest.h>
|
||||
#include <QDir>
|
||||
#include <QPainter>
|
||||
|
||||
#ifndef QT_NO_OPENGL
|
||||
#include <QOpenGLFramebufferObjectFormat>
|
||||
#include <QOpenGLContext>
|
||||
#include <QOpenGLPaintDevice>
|
||||
#endif
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
class tst_LanceBench : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
tst_LanceBench();
|
||||
|
||||
private:
|
||||
enum GraphicsEngine {
|
||||
Raster = 0,
|
||||
OpenGL = 1
|
||||
};
|
||||
|
||||
void setupTestSuite(const QStringList& blacklist = QStringList());
|
||||
void runTestSuite(GraphicsEngine engine, QImage::Format format, const QSurfaceFormat &contextFormat = QSurfaceFormat());
|
||||
void paint(QPaintDevice *device, GraphicsEngine engine, QImage::Format format, const QStringList &script, const QString &filePath);
|
||||
|
||||
QStringList qpsFiles;
|
||||
QHash<QString, QStringList> scripts;
|
||||
QString scriptsDir;
|
||||
|
||||
private slots:
|
||||
void initTestCase();
|
||||
void cleanupTestCase() {}
|
||||
|
||||
void testRasterARGB32PM_data();
|
||||
void testRasterARGB32PM();
|
||||
void testRasterRGB32_data();
|
||||
void testRasterRGB32();
|
||||
void testRasterARGB32_data();
|
||||
void testRasterARGB32();
|
||||
void testRasterRGB16_data();
|
||||
void testRasterRGB16();
|
||||
void testRasterBGR30_data();
|
||||
void testRasterBGR30();
|
||||
void testRasterARGB8565PM_data();
|
||||
void testRasterARGB8565PM();
|
||||
void testRasterGrayscale8_data();
|
||||
void testRasterGrayscale8();
|
||||
|
||||
#ifndef QT_NO_OPENGL
|
||||
void testOpenGL_data();
|
||||
void testOpenGL();
|
||||
void testCoreOpenGL_data();
|
||||
void testCoreOpenGL();
|
||||
private:
|
||||
bool checkSystemGLSupport();
|
||||
bool checkSystemCoreGLSupport();
|
||||
#endif
|
||||
};
|
||||
|
||||
tst_LanceBench::tst_LanceBench()
|
||||
{
|
||||
}
|
||||
|
||||
void tst_LanceBench::initTestCase()
|
||||
{
|
||||
QString baseDir = QFINDTESTDATA("../../../../baseline/painting/scripts/text.qps");
|
||||
scriptsDir = baseDir.left(baseDir.lastIndexOf('/')) + '/';
|
||||
QDir qpsDir(scriptsDir);
|
||||
qpsFiles = qpsDir.entryList(QStringList() << QLatin1String("*.qps"), QDir::Files | QDir::Readable);
|
||||
if (qpsFiles.isEmpty()) {
|
||||
qWarning() << "No qps script files found in" << qpsDir.path();
|
||||
QSKIP("Aborted due to errors.");
|
||||
}
|
||||
|
||||
std::sort(qpsFiles.begin(), qpsFiles.end());
|
||||
for (const QString& fileName : std::as_const(qpsFiles)) {
|
||||
QFile file(scriptsDir + fileName);
|
||||
file.open(QFile::ReadOnly);
|
||||
QByteArray cont = file.readAll();
|
||||
scripts.insert(fileName, QString::fromUtf8(cont).split(QLatin1Char('\n'), Qt::SkipEmptyParts));
|
||||
}
|
||||
}
|
||||
|
||||
void tst_LanceBench::testRasterARGB32PM_data()
|
||||
{
|
||||
setupTestSuite();
|
||||
}
|
||||
|
||||
void tst_LanceBench::testRasterARGB32PM()
|
||||
{
|
||||
runTestSuite(Raster, QImage::Format_ARGB32_Premultiplied);
|
||||
}
|
||||
|
||||
void tst_LanceBench::testRasterRGB32_data()
|
||||
{
|
||||
setupTestSuite();
|
||||
}
|
||||
|
||||
void tst_LanceBench::testRasterRGB32()
|
||||
{
|
||||
runTestSuite(Raster, QImage::Format_RGB32);
|
||||
}
|
||||
|
||||
void tst_LanceBench::testRasterARGB32_data()
|
||||
{
|
||||
setupTestSuite();
|
||||
}
|
||||
|
||||
void tst_LanceBench::testRasterARGB32()
|
||||
{
|
||||
runTestSuite(Raster, QImage::Format_ARGB32);
|
||||
}
|
||||
|
||||
void tst_LanceBench::testRasterRGB16_data()
|
||||
{
|
||||
setupTestSuite();
|
||||
}
|
||||
|
||||
void tst_LanceBench::testRasterRGB16()
|
||||
{
|
||||
runTestSuite(Raster, QImage::Format_RGB16);
|
||||
}
|
||||
|
||||
void tst_LanceBench::testRasterBGR30_data()
|
||||
{
|
||||
setupTestSuite();
|
||||
}
|
||||
|
||||
void tst_LanceBench::testRasterBGR30()
|
||||
{
|
||||
runTestSuite(Raster, QImage::Format_BGR30);
|
||||
}
|
||||
|
||||
void tst_LanceBench::testRasterARGB8565PM_data()
|
||||
{
|
||||
setupTestSuite();
|
||||
}
|
||||
|
||||
void tst_LanceBench::testRasterARGB8565PM()
|
||||
{
|
||||
runTestSuite(Raster, QImage::Format_ARGB8565_Premultiplied);
|
||||
}
|
||||
|
||||
void tst_LanceBench::testRasterGrayscale8_data()
|
||||
{
|
||||
setupTestSuite();
|
||||
}
|
||||
|
||||
void tst_LanceBench::testRasterGrayscale8()
|
||||
{
|
||||
runTestSuite(Raster, QImage::Format_Grayscale8);
|
||||
}
|
||||
|
||||
#ifndef QT_NO_OPENGL
|
||||
bool tst_LanceBench::checkSystemGLSupport()
|
||||
{
|
||||
QWindow win;
|
||||
win.setSurfaceType(QSurface::OpenGLSurface);
|
||||
win.create();
|
||||
QOpenGLFramebufferObjectFormat fmt;
|
||||
fmt.setAttachment(QOpenGLFramebufferObject::CombinedDepthStencil);
|
||||
fmt.setSamples(4);
|
||||
QOpenGLContext ctx;
|
||||
if (!ctx.create() || !ctx.makeCurrent(&win))
|
||||
return false;
|
||||
QOpenGLFramebufferObject fbo(800, 800, fmt);
|
||||
if (!fbo.isValid() || !fbo.bind())
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool tst_LanceBench::checkSystemCoreGLSupport()
|
||||
{
|
||||
if (QOpenGLContext::openGLModuleType() != QOpenGLContext::LibGL)
|
||||
return false;
|
||||
|
||||
QSurfaceFormat coreFormat;
|
||||
coreFormat.setVersion(3, 2);
|
||||
coreFormat.setProfile(QSurfaceFormat::CoreProfile);
|
||||
QWindow win;
|
||||
win.setSurfaceType(QSurface::OpenGLSurface);
|
||||
win.setFormat(coreFormat);
|
||||
win.create();
|
||||
QOpenGLFramebufferObjectFormat fmt;
|
||||
fmt.setAttachment(QOpenGLFramebufferObject::CombinedDepthStencil);
|
||||
fmt.setSamples(4);
|
||||
QOpenGLContext ctx;
|
||||
ctx.setFormat(coreFormat);
|
||||
if (!ctx.create() || !ctx.makeCurrent(&win))
|
||||
return false;
|
||||
QOpenGLFramebufferObject fbo(800, 800, fmt);
|
||||
if (!fbo.isValid() || !fbo.bind())
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void tst_LanceBench::testOpenGL_data()
|
||||
{
|
||||
if (!checkSystemGLSupport())
|
||||
QSKIP("System under test does not meet preconditions for GL testing. Skipping.");
|
||||
QStringList localBlacklist = QStringList() << QLatin1String("rasterops.qps");
|
||||
setupTestSuite(localBlacklist);
|
||||
}
|
||||
|
||||
void tst_LanceBench::testOpenGL()
|
||||
{
|
||||
runTestSuite(OpenGL, QImage::Format_RGB32);
|
||||
}
|
||||
|
||||
void tst_LanceBench::testCoreOpenGL_data()
|
||||
{
|
||||
if (!checkSystemCoreGLSupport())
|
||||
QSKIP("System under test does not meet preconditions for Core Profile GL testing. Skipping.");
|
||||
QStringList localBlacklist = QStringList() << QLatin1String("rasterops.qps");
|
||||
setupTestSuite(localBlacklist);
|
||||
}
|
||||
|
||||
void tst_LanceBench::testCoreOpenGL()
|
||||
{
|
||||
QSurfaceFormat coreFormat;
|
||||
coreFormat.setVersion(3, 2);
|
||||
coreFormat.setProfile(QSurfaceFormat::CoreProfile);
|
||||
runTestSuite(OpenGL, QImage::Format_RGB32, coreFormat);
|
||||
}
|
||||
#endif
|
||||
|
||||
void tst_LanceBench::setupTestSuite(const QStringList& blacklist)
|
||||
{
|
||||
QTest::addColumn<QString>("qpsFile");
|
||||
for (const QString &fileName : std::as_const(qpsFiles)) {
|
||||
if (blacklist.contains(fileName))
|
||||
continue;
|
||||
QTest::newRow(fileName.toLatin1()) << fileName;
|
||||
}
|
||||
}
|
||||
|
||||
void tst_LanceBench::runTestSuite(GraphicsEngine engine, QImage::Format format, const QSurfaceFormat &contextFormat)
|
||||
{
|
||||
QFETCH(QString, qpsFile);
|
||||
|
||||
QString filePath = scriptsDir + qpsFile;
|
||||
QStringList script = scripts.value(qpsFile);
|
||||
QImage rendered;
|
||||
|
||||
if (engine == Raster) {
|
||||
QImage img(800, 800, format);
|
||||
paint(&img, engine, format, script, QFileInfo(filePath).absoluteFilePath());
|
||||
rendered = img;
|
||||
#ifndef QT_NO_OPENGL
|
||||
} else if (engine == OpenGL) {
|
||||
QWindow win;
|
||||
win.setSurfaceType(QSurface::OpenGLSurface);
|
||||
win.setFormat(contextFormat);
|
||||
win.create();
|
||||
QOpenGLFramebufferObjectFormat fmt;
|
||||
fmt.setAttachment(QOpenGLFramebufferObject::CombinedDepthStencil);
|
||||
fmt.setSamples(4);
|
||||
QOpenGLContext ctx;
|
||||
ctx.setFormat(contextFormat);
|
||||
QVERIFY(ctx.create());
|
||||
QVERIFY(ctx.makeCurrent(&win));
|
||||
QOpenGLFramebufferObject fbo(800, 800, fmt);
|
||||
fbo.bind();
|
||||
QOpenGLPaintDevice pdv(800, 800);
|
||||
paint(&pdv, engine, format, script, QFileInfo(filePath).absoluteFilePath());
|
||||
rendered = fbo.toImage().convertToFormat(format);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void tst_LanceBench::paint(QPaintDevice *device, GraphicsEngine engine, QImage::Format format, const QStringList &script, const QString &filePath)
|
||||
{
|
||||
PaintCommands pcmd(script, 800, 800, format);
|
||||
switch (engine) {
|
||||
case OpenGL:
|
||||
pcmd.setType(OpenGLBufferType); // version/profile is communicated through the context's format()
|
||||
break;
|
||||
case Raster:
|
||||
pcmd.setType(ImageType);
|
||||
break;
|
||||
}
|
||||
pcmd.setFilePath(filePath);
|
||||
QBENCHMARK {
|
||||
QPainter p(device);
|
||||
pcmd.setPainter(&p);
|
||||
pcmd.runCommands();
|
||||
p.end();
|
||||
}
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_LanceBench)
|
||||
|
||||
#include "tst_lancebench.moc"
|
15
tests/benchmarks/gui/painting/qcolor/CMakeLists.txt
Normal file
@ -0,0 +1,15 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_bench_qcolor Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_benchmark(tst_bench_qcolor
|
||||
SOURCES
|
||||
tst_qcolor.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::GuiPrivate
|
||||
Qt::Test
|
||||
)
|
37
tests/benchmarks/gui/painting/qcolor/tst_qcolor.cpp
Normal file
@ -0,0 +1,37 @@
|
||||
// Copyright (C) 2016 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author David Faure <david.faure@kdab.com>
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <qtest.h>
|
||||
#include <QColor>
|
||||
|
||||
|
||||
class tst_QColor : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private slots:
|
||||
void nameRgb();
|
||||
void nameArgb();
|
||||
};
|
||||
|
||||
void tst_QColor::nameRgb()
|
||||
{
|
||||
QColor color(128, 255, 10);
|
||||
QCOMPARE(color.name(), QStringLiteral("#80ff0a"));
|
||||
QBENCHMARK {
|
||||
color.name();
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QColor::nameArgb()
|
||||
{
|
||||
QColor color(128, 255, 0, 102);
|
||||
QCOMPARE(color.name(QColor::HexArgb), QStringLiteral("#6680ff00"));
|
||||
QBENCHMARK {
|
||||
color.name(QColor::HexArgb);
|
||||
}
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QColor)
|
||||
|
||||
#include "tst_qcolor.moc"
|
17
tests/benchmarks/gui/painting/qpainter/CMakeLists.txt
Normal file
@ -0,0 +1,17 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_bench_qpainter Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_benchmark(tst_bench_qpainter
|
||||
SOURCES
|
||||
tst_qpainter.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::GuiPrivate
|
||||
Qt::Test
|
||||
Qt::Widgets
|
||||
Qt::WidgetsPrivate
|
||||
)
|
1665
tests/benchmarks/gui/painting/qpainter/tst_qpainter.cpp
Normal file
14
tests/benchmarks/gui/painting/qregion/CMakeLists.txt
Normal file
@ -0,0 +1,14 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_bench_qregion Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_benchmark(tst_bench_qregion
|
||||
SOURCES
|
||||
main.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::Test
|
||||
)
|
101
tests/benchmarks/gui/painting/qregion/main.cpp
Normal file
@ -0,0 +1,101 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
// This file contains benchmarks for QRegion functions.
|
||||
|
||||
#include <QDebug>
|
||||
#include <qtest.h>
|
||||
|
||||
class tst_qregion : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
private slots:
|
||||
void map_data();
|
||||
void map();
|
||||
|
||||
void intersects_data();
|
||||
void intersects();
|
||||
};
|
||||
|
||||
|
||||
void tst_qregion::map_data()
|
||||
{
|
||||
QTest::addColumn<QRegion>("region");
|
||||
|
||||
{
|
||||
QRegion region(0, 0, 100, 100);
|
||||
QTest::newRow("single rect") << region;
|
||||
}
|
||||
{
|
||||
QRegion region;
|
||||
region = region.united(QRect(0, 0, 100, 100));
|
||||
region = region.united(QRect(120, 20, 100, 100));
|
||||
|
||||
QTest::newRow("two rects") << region;
|
||||
}
|
||||
{
|
||||
QRegion region(0, 0, 100, 100, QRegion::Ellipse);
|
||||
QTest::newRow("ellipse") << region;
|
||||
}
|
||||
}
|
||||
|
||||
void tst_qregion::map()
|
||||
{
|
||||
QFETCH(QRegion, region);
|
||||
|
||||
QTransform transform;
|
||||
transform.rotate(30);
|
||||
QBENCHMARK {
|
||||
transform.map(region);
|
||||
}
|
||||
}
|
||||
|
||||
void tst_qregion::intersects_data()
|
||||
{
|
||||
QTest::addColumn<QRegion>("region");
|
||||
QTest::addColumn<QRect>("rect");
|
||||
|
||||
QRegion region(0, 0, 100, 100);
|
||||
QRegion complexRegion;
|
||||
complexRegion = complexRegion.united(QRect(0, 0, 100, 100));
|
||||
complexRegion = complexRegion.united(QRect(120, 20, 100, 100));
|
||||
|
||||
{
|
||||
QRect rect(0, 0, 100, 100);
|
||||
QTest::newRow("same -- simple") << region << rect;
|
||||
}
|
||||
{
|
||||
QRect rect(10, 10, 10, 10);
|
||||
QTest::newRow("inside -- simple") << region << rect;
|
||||
}
|
||||
{
|
||||
QRect rect(110, 110, 10, 10);
|
||||
QTest::newRow("outside -- simple") << region << rect;
|
||||
}
|
||||
|
||||
{
|
||||
QRect rect(0, 0, 100, 100);
|
||||
QTest::newRow("same -- complex") << complexRegion << rect;
|
||||
}
|
||||
{
|
||||
QRect rect(10, 10, 10, 10);
|
||||
QTest::newRow("inside -- complex") << complexRegion << rect;
|
||||
}
|
||||
{
|
||||
QRect rect(110, 110, 10, 10);
|
||||
QTest::newRow("outside -- complex") << complexRegion << rect;
|
||||
}
|
||||
}
|
||||
|
||||
void tst_qregion::intersects()
|
||||
{
|
||||
QFETCH(QRegion, region);
|
||||
QFETCH(QRect, rect);
|
||||
|
||||
QBENCHMARK {
|
||||
region.intersects(rect);
|
||||
}
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_qregion)
|
||||
|
||||
#include "main.moc"
|
15
tests/benchmarks/gui/painting/qtbench/CMakeLists.txt
Normal file
@ -0,0 +1,15 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_bench_qtbench Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_benchmark(tst_bench_qtbench
|
||||
SOURCES
|
||||
tst_qtbench.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::Test
|
||||
Qt::Widgets
|
||||
)
|
794
tests/benchmarks/gui/painting/qtbench/benchmarktests.h
Normal file
@ -0,0 +1,794 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#ifndef BENCHMARKTESTS_H
|
||||
#define BENCHMARKTESTS_H
|
||||
|
||||
#include <QApplication>
|
||||
#include <QTextDocument>
|
||||
#include <QTextLayout>
|
||||
#include <QFontMetrics>
|
||||
#include <QDebug>
|
||||
#include <QStaticText>
|
||||
#include <QPainter>
|
||||
#include <QPainterPath>
|
||||
#include <QRandomGenerator>
|
||||
|
||||
class Benchmark
|
||||
{
|
||||
public:
|
||||
virtual ~Benchmark() {}
|
||||
|
||||
Benchmark(const QSize &size)
|
||||
: m_size(size)
|
||||
{
|
||||
for (int i=0; i<16; ++i) {
|
||||
m_colors[i] = QColor::fromRgbF((QRandomGenerator::global()->bounded(4)) / 3.0,
|
||||
(QRandomGenerator::global()->bounded(4)) / 3.0,
|
||||
(QRandomGenerator::global()->bounded(4)) / 3.0,
|
||||
1);
|
||||
}
|
||||
}
|
||||
|
||||
virtual void draw(QPainter *p, const QRect &rect, int iteration) = 0;
|
||||
virtual QString name() const = 0;
|
||||
|
||||
inline const QSize &size() const
|
||||
{
|
||||
return m_size;
|
||||
}
|
||||
virtual void begin(QPainter *, int iterations = 1) { Q_UNUSED(iterations); }
|
||||
virtual void end(QPainter *) { }
|
||||
|
||||
inline const QColor &randomColor(int i) { return m_colors[i % 16]; }
|
||||
|
||||
protected:
|
||||
QColor m_colors[16];
|
||||
QSize m_size;
|
||||
};
|
||||
|
||||
class PaintingRectAdjuster
|
||||
{
|
||||
public:
|
||||
PaintingRectAdjuster()
|
||||
: m_benchmark(0),
|
||||
m_bounds(),
|
||||
m_screen_filled(false)
|
||||
{
|
||||
}
|
||||
|
||||
const QRect &newPaintingRect() {
|
||||
m_rect.translate(m_rect.width(), 0);
|
||||
|
||||
if (m_rect.right() > m_bounds.width()) {
|
||||
m_rect.moveLeft(m_bounds.left());
|
||||
m_rect.translate(0,m_rect.height());
|
||||
if (m_rect.bottom() > m_bounds.height()) {
|
||||
m_screen_filled = true;
|
||||
m_rect.moveTo(m_bounds.topLeft());
|
||||
}
|
||||
}
|
||||
return m_rect;
|
||||
}
|
||||
|
||||
inline bool isScreenFilled() const
|
||||
{ return m_screen_filled; }
|
||||
|
||||
void reset(const QRect &bounds)
|
||||
{
|
||||
m_bounds = bounds;
|
||||
m_rect.moveTo(m_bounds.topLeft());
|
||||
m_rect = QRect(m_bounds.topLeft(),m_benchmark->size());
|
||||
m_rect.translate(-m_rect.width(),0);
|
||||
m_screen_filled = false;
|
||||
}
|
||||
|
||||
inline void setNewBenchmark( Benchmark *benchmark )
|
||||
{
|
||||
m_benchmark = benchmark;
|
||||
}
|
||||
|
||||
protected:
|
||||
Benchmark *m_benchmark;
|
||||
QRect m_rect;
|
||||
QRect m_bounds;
|
||||
bool m_screen_filled;
|
||||
};
|
||||
|
||||
class FillRectBenchmark : public Benchmark
|
||||
{
|
||||
public:
|
||||
FillRectBenchmark(int size)
|
||||
: Benchmark(QSize(size, size))
|
||||
{
|
||||
}
|
||||
|
||||
void draw(QPainter *p, const QRect &rect, int iterationCount) override
|
||||
{
|
||||
p->fillRect(rect, randomColor(iterationCount));
|
||||
}
|
||||
|
||||
QString name() const override
|
||||
{
|
||||
return QString::fromLatin1("fillRect(%1)").arg(m_size.width());
|
||||
}
|
||||
};
|
||||
|
||||
class ImageFillRectBenchmark : public Benchmark
|
||||
{
|
||||
public:
|
||||
ImageFillRectBenchmark(int size)
|
||||
: Benchmark(QSize(size, size))
|
||||
{
|
||||
int s = QRandomGenerator::global()->bounded(24) + 8;
|
||||
m_content = QImage(s, s, QImage::Format_ARGB32_Premultiplied);
|
||||
QPainter p(&m_content);
|
||||
p.fillRect(0, 0, s, s, Qt::white);
|
||||
p.fillRect(s/2, 0, s/2, s/2, Qt::gray);
|
||||
p.fillRect(0, s/2, s/2, s/2, Qt::gray);
|
||||
p.end();
|
||||
|
||||
m_brush = QBrush(m_content);
|
||||
}
|
||||
|
||||
void draw(QPainter *p, const QRect &rect, int) override { p->fillRect(rect, m_brush); }
|
||||
|
||||
QString name() const override
|
||||
{
|
||||
return QString::fromLatin1("fillRect with image(%1)").arg(m_size.width());
|
||||
}
|
||||
|
||||
private:
|
||||
QImage m_content;
|
||||
QBrush m_brush;
|
||||
};
|
||||
|
||||
|
||||
class DrawRectBenchmark : public Benchmark
|
||||
{
|
||||
public:
|
||||
DrawRectBenchmark(int size)
|
||||
: Benchmark(QSize(size, size))
|
||||
{
|
||||
}
|
||||
|
||||
void begin(QPainter *p, int) override
|
||||
{
|
||||
p->setPen(Qt::NoPen);
|
||||
p->setBrush(randomColor(m_size.width()));
|
||||
}
|
||||
|
||||
void draw(QPainter *p, const QRect &rect, int) override { p->drawRect(rect); }
|
||||
|
||||
QString name() const override
|
||||
{
|
||||
return QString::fromLatin1("drawRect(%1)").arg(m_size.width());
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
class DrawRectWithBrushChangeBenchmark : public Benchmark
|
||||
{
|
||||
public:
|
||||
DrawRectWithBrushChangeBenchmark(int size)
|
||||
: Benchmark(QSize(size, size))
|
||||
{
|
||||
}
|
||||
|
||||
void begin(QPainter *p, int) override { p->setPen(Qt::NoPen); }
|
||||
|
||||
void draw(QPainter *p, const QRect &rect, int i) override
|
||||
{
|
||||
p->setBrush(randomColor(i));
|
||||
p->drawRect(rect);
|
||||
}
|
||||
|
||||
QString name() const override
|
||||
{
|
||||
return QString::fromLatin1("drawRect with brushchange(%1)").arg(m_size.width());
|
||||
}
|
||||
};
|
||||
|
||||
class RoundRectBenchmark : public Benchmark
|
||||
{
|
||||
public:
|
||||
RoundRectBenchmark(int size)
|
||||
: Benchmark(QSize(size, size))
|
||||
{
|
||||
m_roundness = size / 4.;
|
||||
}
|
||||
|
||||
void begin(QPainter *p, int) override
|
||||
{
|
||||
p->setPen(Qt::NoPen);
|
||||
p->setBrush(Qt::red);
|
||||
}
|
||||
|
||||
void draw(QPainter *p, const QRect &rect, int) override
|
||||
{
|
||||
p->drawRoundedRect(rect, m_roundness, m_roundness);
|
||||
}
|
||||
|
||||
QString name() const override
|
||||
{
|
||||
return QString::fromLatin1("drawRoundedRect(%1)").arg(m_size.width());
|
||||
}
|
||||
|
||||
qreal m_roundness;
|
||||
};
|
||||
|
||||
|
||||
class ArcsBenchmark : public Benchmark
|
||||
{
|
||||
public:
|
||||
enum Type {
|
||||
Stroked = 0x0001,
|
||||
Filled = 0x0002,
|
||||
|
||||
ArcShape = 0x0010,
|
||||
ChordShape = 0x0020,
|
||||
PieShape = 0x0040,
|
||||
CircleShape = 0x0080,
|
||||
Shapes = 0x00f0
|
||||
|
||||
};
|
||||
|
||||
ArcsBenchmark(int size, uint type)
|
||||
: Benchmark(QSize(size, size)),
|
||||
m_type(type)
|
||||
{
|
||||
}
|
||||
|
||||
void begin(QPainter *p, int) override
|
||||
{
|
||||
if (m_type & Stroked)
|
||||
p->setPen(Qt::black);
|
||||
else
|
||||
p->setPen(Qt::NoPen);
|
||||
|
||||
if (m_type & Filled)
|
||||
p->setBrush(Qt::red);
|
||||
else
|
||||
p->setBrush(Qt::NoBrush);
|
||||
}
|
||||
|
||||
void draw(QPainter *p, const QRect &rect, int) override
|
||||
{
|
||||
switch (m_type & Shapes) {
|
||||
case ArcShape:
|
||||
p->drawArc(rect, 45*16, 120*16);
|
||||
break;
|
||||
case ChordShape:
|
||||
p->drawChord(rect, 45*16, 120*16);
|
||||
break;
|
||||
case PieShape:
|
||||
p->drawPie(rect, 45*16, 120*16);
|
||||
break;
|
||||
case CircleShape:
|
||||
p->drawEllipse(rect);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
QString name() const override
|
||||
{
|
||||
QString fillStroke;
|
||||
|
||||
if ((m_type & (Stroked|Filled)) == (Stroked|Filled)) {
|
||||
fillStroke = QLatin1String("Fill & Outline");
|
||||
} else if (m_type & Stroked) {
|
||||
fillStroke = QLatin1String("Outline");
|
||||
} else if (m_type & Filled) {
|
||||
fillStroke = QLatin1String("Fill");
|
||||
}
|
||||
|
||||
QString shape;
|
||||
if (m_type & PieShape) shape = QLatin1String("drawPie");
|
||||
else if (m_type & ChordShape) shape = QLatin1String("drawChord");
|
||||
else if (m_type & ArcShape) shape = QLatin1String("drawArc");
|
||||
else if (m_type & CircleShape) shape = QLatin1String("drawEllipse");
|
||||
|
||||
return QString::fromLatin1("%1(%2) %3").arg(shape).arg(m_size.width()).arg(fillStroke);
|
||||
}
|
||||
|
||||
uint m_type;
|
||||
};
|
||||
|
||||
|
||||
class DrawScaledImage : public Benchmark
|
||||
{
|
||||
public:
|
||||
DrawScaledImage(const QImage &image, qreal scale, bool asPixmap)
|
||||
: Benchmark(QSize(image.width(), image.height())),
|
||||
m_image(image),
|
||||
m_type(asPixmap ? "Pixmap" : "Image"),
|
||||
m_scale(scale),
|
||||
m_as_pixmap(asPixmap)
|
||||
{
|
||||
m_pixmap = QPixmap::fromImage(m_image);
|
||||
}
|
||||
DrawScaledImage(const QString& type, const QPixmap &pixmap, qreal scale)
|
||||
: Benchmark(QSize(pixmap.width(), pixmap.height())),
|
||||
m_type(type),
|
||||
m_scale(scale),
|
||||
m_as_pixmap(true),
|
||||
m_pixmap(pixmap)
|
||||
{
|
||||
}
|
||||
|
||||
void begin(QPainter *p, int) override { p->scale(m_scale, m_scale); }
|
||||
|
||||
void draw(QPainter *p, const QRect &rect, int) override
|
||||
{
|
||||
if (m_as_pixmap)
|
||||
p->drawPixmap(rect.topLeft(), m_pixmap);
|
||||
else
|
||||
p->drawImage(rect.topLeft(), m_image);
|
||||
}
|
||||
|
||||
QString name() const override
|
||||
{
|
||||
return QString::fromLatin1("draw%4(%1) at scale=%2, depth=%3")
|
||||
.arg(m_size.width())
|
||||
.arg(m_scale)
|
||||
.arg(m_as_pixmap ? m_pixmap.depth() : m_image.depth())
|
||||
.arg(m_type);
|
||||
}
|
||||
|
||||
private:
|
||||
QImage m_image;
|
||||
QString m_type;
|
||||
qreal m_scale;
|
||||
bool m_as_pixmap;
|
||||
QPixmap m_pixmap;
|
||||
};
|
||||
|
||||
class DrawTransformedImage : public Benchmark
|
||||
{
|
||||
public:
|
||||
DrawTransformedImage(const QImage &image, bool asPixmap)
|
||||
: Benchmark(QSize(image.width(), image.height())),
|
||||
m_image(image),
|
||||
m_type(asPixmap ? "Pixmap" : "Image"),
|
||||
m_as_pixmap(asPixmap)
|
||||
{
|
||||
m_pixmap = QPixmap::fromImage(m_image);
|
||||
}
|
||||
DrawTransformedImage(const QString& type, const QPixmap &pixmap)
|
||||
: Benchmark(QSize(pixmap.width(), pixmap.height())),
|
||||
m_type(type),
|
||||
m_as_pixmap(true),
|
||||
m_pixmap(pixmap)
|
||||
{
|
||||
}
|
||||
|
||||
void draw(QPainter *p, const QRect &rect, int) override
|
||||
{
|
||||
QTransform oldTransform = p->transform();
|
||||
p->translate(0.5 * rect.width() + rect.left(), 0.5 * rect.height() + rect.top());
|
||||
p->shear(0.25, 0.0);
|
||||
p->rotate(5.0);
|
||||
if (m_as_pixmap)
|
||||
p->drawPixmap(-0.5 * rect.width(), -0.5 * rect.height(), m_pixmap);
|
||||
else
|
||||
p->drawImage(-0.5 * rect.width(), -0.5 * rect.height(), m_image);
|
||||
p->setTransform(oldTransform);
|
||||
}
|
||||
|
||||
QString name() const override
|
||||
{
|
||||
return QString::fromLatin1("draw%3(%1) w/transform, depth=%2")
|
||||
.arg(m_size.width())
|
||||
.arg(m_as_pixmap ? m_pixmap.depth() : m_image.depth())
|
||||
.arg(m_type);
|
||||
}
|
||||
|
||||
private:
|
||||
QImage m_image;
|
||||
QString m_type;
|
||||
bool m_as_pixmap;
|
||||
QPixmap m_pixmap;
|
||||
};
|
||||
|
||||
|
||||
class DrawImage : public Benchmark
|
||||
{
|
||||
public:
|
||||
DrawImage(const QImage &image, bool asPixmap)
|
||||
: Benchmark(QSize(image.width(), image.height())),
|
||||
m_image(image),
|
||||
m_type(asPixmap ? "Pixmap" : "Image"),
|
||||
m_as_pixmap(asPixmap)
|
||||
{
|
||||
m_pixmap = QPixmap::fromImage(image);
|
||||
}
|
||||
DrawImage(const QString& type, const QPixmap &pixmap)
|
||||
: Benchmark(QSize(pixmap.width(), pixmap.height())),
|
||||
m_type(type),
|
||||
m_as_pixmap(true),
|
||||
m_pixmap(pixmap)
|
||||
{
|
||||
}
|
||||
|
||||
void draw(QPainter *p, const QRect &rect, int) override
|
||||
{
|
||||
if (m_as_pixmap)
|
||||
p->drawPixmap(rect.topLeft(), m_pixmap);
|
||||
else
|
||||
p->drawImage(rect.topLeft(), m_image);
|
||||
}
|
||||
|
||||
QString name() const override
|
||||
{
|
||||
return QString::fromLatin1("draw%2(%1), depth=%3")
|
||||
.arg(m_size.width())
|
||||
.arg(m_type)
|
||||
.arg(m_as_pixmap ? m_pixmap.depth() : m_image.depth());
|
||||
}
|
||||
|
||||
private:
|
||||
QImage m_image;
|
||||
QString m_type;
|
||||
bool m_as_pixmap;
|
||||
QPixmap m_pixmap;
|
||||
};
|
||||
|
||||
|
||||
class DrawText : public Benchmark
|
||||
{
|
||||
public:
|
||||
enum Mode {
|
||||
PainterMode,
|
||||
PainterQPointMode,
|
||||
LayoutMode,
|
||||
DocumentMode,
|
||||
PixmapMode,
|
||||
StaticTextMode,
|
||||
StaticTextWithMaximumSizeMode,
|
||||
StaticTextBackendOptimizations
|
||||
};
|
||||
|
||||
DrawText(const QString &text, Mode mode)
|
||||
: Benchmark(QSize()), m_mode(mode), m_text(text), m_document(text), m_layout(text)
|
||||
{
|
||||
}
|
||||
|
||||
void begin(QPainter *p, int iterations) override
|
||||
{
|
||||
m_staticTexts.clear();
|
||||
m_currentStaticText = 0;
|
||||
m_pixmaps.clear();
|
||||
m_currentPixmap = 0;
|
||||
QRect m_bounds = QRect(0,0,p->device()->width(), p->device()->height());
|
||||
switch (m_mode) {
|
||||
case PainterMode:
|
||||
m_size = (p->boundingRect(m_bounds, 0, m_text)).size();
|
||||
// m_rect = m_rect.translated(-m_rect.topLeft());
|
||||
break;
|
||||
case DocumentMode:
|
||||
m_size = QSize(m_document.size().toSize());
|
||||
break;
|
||||
case PixmapMode:
|
||||
for (int i=0; i<4; ++i) {
|
||||
m_size = (p->boundingRect(m_bounds, 0, m_text)).size();
|
||||
QPixmap pixmap = QPixmap(m_size);
|
||||
pixmap.fill(Qt::transparent);
|
||||
{
|
||||
QPainter p(&pixmap);
|
||||
p.drawText(pixmap.rect(), m_text);
|
||||
}
|
||||
m_pixmaps.append(pixmap);
|
||||
}
|
||||
break;
|
||||
|
||||
case LayoutMode: {
|
||||
QRect r = p->boundingRect(m_bounds, 0, m_text);
|
||||
QStringList lines = m_text.split('\n');
|
||||
int height = 0;
|
||||
int leading = p->fontMetrics().leading();
|
||||
m_layout.beginLayout();
|
||||
for (int i=0; i<lines.size(); ++i) {
|
||||
QTextLine textLine = m_layout.createLine();
|
||||
if (textLine.isValid()) {
|
||||
textLine.setLineWidth(r.width());
|
||||
textLine.setPosition(QPointF(0, height));
|
||||
height += leading + textLine.height();
|
||||
}
|
||||
}
|
||||
m_layout.endLayout();
|
||||
m_layout.setCacheEnabled(true);
|
||||
m_size = m_layout.boundingRect().toRect().size();
|
||||
break; }
|
||||
|
||||
case StaticTextWithMaximumSizeMode: {
|
||||
QStaticText staticText;
|
||||
m_size = (p->boundingRect(m_bounds, 0, m_text)).size();
|
||||
staticText.setTextWidth(m_size.width() + 10);
|
||||
staticText.setText(m_text);
|
||||
staticText.prepare(p->transform(), p->font());
|
||||
m_staticTexts.append(staticText);
|
||||
break;
|
||||
}
|
||||
case StaticTextBackendOptimizations: {
|
||||
m_size = (p->boundingRect(m_bounds, 0, m_text)).size();
|
||||
for (int i=0; i<iterations; ++i) {
|
||||
QStaticText staticText;
|
||||
staticText.setPerformanceHint(QStaticText::AggressiveCaching);
|
||||
staticText.setTextWidth(m_size.width() + 10);
|
||||
staticText.setText(m_text);
|
||||
staticText.prepare(p->transform(), p->font());
|
||||
m_staticTexts.append(staticText);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case StaticTextMode: {
|
||||
QStaticText staticText;
|
||||
staticText.setText(m_text);
|
||||
staticText.prepare(p->transform(), p->font());
|
||||
m_staticTexts.append(staticText);
|
||||
|
||||
QFontMetrics fm(p->font());
|
||||
m_size = QSize(fm.horizontalAdvance(m_text, m_text.size()), fm.height());
|
||||
|
||||
break;
|
||||
}
|
||||
case PainterQPointMode: {
|
||||
QFontMetrics fm(p->font());
|
||||
m_size = QSize(fm.horizontalAdvance(m_text, m_text.size()), fm.height());
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void draw(QPainter *p, const QRect &rect, int) override
|
||||
{
|
||||
switch (m_mode) {
|
||||
case PainterMode:
|
||||
p->drawText(rect, 0, m_text);
|
||||
break;
|
||||
case PainterQPointMode:
|
||||
p->drawText(rect.topLeft(), m_text);
|
||||
break;
|
||||
case PixmapMode:
|
||||
p->drawPixmap(rect.topLeft(), m_pixmaps.at(m_currentPixmap));
|
||||
m_currentPixmap = (m_currentPixmap + 1) % m_pixmaps.size();
|
||||
break;
|
||||
case DocumentMode:
|
||||
p->translate(rect.topLeft());
|
||||
m_document.drawContents(p);
|
||||
p->translate(-rect.topLeft());
|
||||
break;
|
||||
case LayoutMode:
|
||||
m_layout.draw(p, rect.topLeft());
|
||||
break;
|
||||
case StaticTextWithMaximumSizeMode:
|
||||
case StaticTextMode:
|
||||
p->drawStaticText(rect.topLeft(), m_staticTexts.at(0));
|
||||
break;
|
||||
case StaticTextBackendOptimizations:
|
||||
p->drawStaticText(rect.topLeft(), m_staticTexts.at(m_currentStaticText));
|
||||
m_currentStaticText = (m_currentStaticText + 1) % m_staticTexts.size();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
QString name() const override
|
||||
{
|
||||
int letters = m_text.size();
|
||||
int lines = m_text.count('\n');
|
||||
if (lines == 0)
|
||||
lines = 1;
|
||||
QString type;
|
||||
switch (m_mode) {
|
||||
case PainterMode: type = "drawText(rect)"; break;
|
||||
case PainterQPointMode: type = "drawText(point)"; break;
|
||||
case LayoutMode: type = "layout.draw()"; break;
|
||||
case DocumentMode: type = "doc.drawContents()"; break;
|
||||
case PixmapMode: type = "pixmap cached text"; break;
|
||||
case StaticTextMode: type = "drawStaticText()"; break;
|
||||
case StaticTextWithMaximumSizeMode: type = "drawStaticText() w/ maxsize"; break;
|
||||
case StaticTextBackendOptimizations: type = "drawStaticText() w/ backend optimizations"; break;
|
||||
}
|
||||
|
||||
return QString::fromLatin1("%3, len=%1, lines=%2")
|
||||
.arg(letters)
|
||||
.arg(lines)
|
||||
.arg(type);
|
||||
}
|
||||
|
||||
private:
|
||||
Mode m_mode;
|
||||
QString m_text;
|
||||
QTextDocument m_document;
|
||||
QTextLayout m_layout;
|
||||
|
||||
QList<QPixmap> m_pixmaps;
|
||||
int m_currentPixmap;
|
||||
|
||||
int m_currentStaticText;
|
||||
QList<QStaticText> m_staticTexts;
|
||||
};
|
||||
|
||||
class ClippedDrawRectBenchmark : public Benchmark
|
||||
{
|
||||
public:
|
||||
enum ClipType {
|
||||
RectClip,
|
||||
TwoRectRegionClip,
|
||||
EllipseRegionClip,
|
||||
TwoRectPathClip,
|
||||
EllipsePathClip,
|
||||
AAEllipsePathClip,
|
||||
EllipseRegionThenRectClip,
|
||||
EllipsePathThenRectClip
|
||||
};
|
||||
|
||||
ClippedDrawRectBenchmark(int size, ClipType type)
|
||||
: Benchmark(QSize(size, size)), m_type(type)
|
||||
{
|
||||
}
|
||||
|
||||
void begin(QPainter *p, int) override
|
||||
{
|
||||
QRect m_bounds = QRect(0,0,p->device()->width(), p->device()->height());
|
||||
p->setPen(Qt::NoPen);
|
||||
p->setBrush(Qt::red);
|
||||
|
||||
switch (m_type) {
|
||||
case RectClip:
|
||||
p->setClipRect(m_bounds.adjusted(1, 1, -1, -1));
|
||||
break;
|
||||
case TwoRectRegionClip:
|
||||
p->setClipRegion(QRegion(m_bounds.adjusted(0, 0, -1, -1))
|
||||
| QRegion(m_bounds.adjusted(1, 1, 0, 0)));
|
||||
break;
|
||||
case EllipseRegionClip:
|
||||
p->setClipRegion(QRegion(m_bounds, QRegion::Ellipse));
|
||||
break;
|
||||
case TwoRectPathClip:
|
||||
{
|
||||
QPainterPath path;
|
||||
path.addRect(m_bounds.adjusted(0, 0, -1, -1));
|
||||
path.addRect(m_bounds.adjusted(1, 1, 0, 0));
|
||||
path.setFillRule(Qt::WindingFill);
|
||||
p->setClipPath(path);
|
||||
}
|
||||
break;
|
||||
case EllipsePathClip:
|
||||
{
|
||||
QPainterPath path;
|
||||
path.addEllipse(m_bounds);
|
||||
p->setClipPath(path);
|
||||
}
|
||||
break;
|
||||
case AAEllipsePathClip:
|
||||
{
|
||||
QPainterPath path;
|
||||
path.addEllipse(m_bounds);
|
||||
p->setRenderHint(QPainter::Antialiasing);
|
||||
p->setClipPath(path);
|
||||
p->setRenderHint(QPainter::Antialiasing, false);
|
||||
}
|
||||
break;
|
||||
case EllipseRegionThenRectClip:
|
||||
p->setClipRegion(QRegion(m_bounds, QRegion::Ellipse));
|
||||
p->setClipRegion(QRegion(m_bounds.width() / 4,
|
||||
m_bounds.height() / 4,
|
||||
m_bounds.width() / 2,
|
||||
m_bounds.height() / 2), Qt::IntersectClip);
|
||||
break;
|
||||
case EllipsePathThenRectClip:
|
||||
{
|
||||
QPainterPath path;
|
||||
path.addEllipse(m_bounds);
|
||||
p->setClipPath(path);
|
||||
p->setClipRegion(QRegion(m_bounds.width() / 4,
|
||||
m_bounds.height() / 4,
|
||||
m_bounds.width() / 2,
|
||||
m_bounds.height() / 2), Qt::IntersectClip);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void draw(QPainter *p, const QRect &rect, int) override { p->drawRect(rect); }
|
||||
|
||||
QString name() const override
|
||||
{
|
||||
QString namedType;
|
||||
switch (m_type) {
|
||||
case RectClip:
|
||||
namedType = "rect";
|
||||
break;
|
||||
case TwoRectRegionClip:
|
||||
namedType = "two-rect-region";
|
||||
break;
|
||||
case EllipseRegionClip:
|
||||
namedType = "ellipse-region";
|
||||
break;
|
||||
case TwoRectPathClip:
|
||||
namedType = "two-rect-path";
|
||||
break;
|
||||
case EllipsePathClip:
|
||||
namedType = "ellipse-path";
|
||||
break;
|
||||
case AAEllipsePathClip:
|
||||
namedType = "aa-ellipse-path";
|
||||
break;
|
||||
case EllipseRegionThenRectClip:
|
||||
namedType = "ellipseregion&rect";
|
||||
break;
|
||||
case EllipsePathThenRectClip:
|
||||
namedType = "ellipsepath&rect";
|
||||
break;
|
||||
}
|
||||
return QString::fromLatin1("%1-clipped-drawRect(%2)").arg(namedType).arg(m_size.width());
|
||||
}
|
||||
|
||||
ClipType m_type;
|
||||
};
|
||||
|
||||
class LinesBenchmark : public Benchmark
|
||||
{
|
||||
public:
|
||||
enum LineType {
|
||||
Horizontal_Integer,
|
||||
Diagonal_Integer,
|
||||
Vertical_Integer,
|
||||
Horizontal_Float,
|
||||
Diagonal_Float,
|
||||
Vertical_Float
|
||||
};
|
||||
|
||||
LinesBenchmark(int length, LineType type)
|
||||
: Benchmark(QSize(qAbs(length), qAbs(length))),
|
||||
m_type(type),
|
||||
m_length(length)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void draw(QPainter *p, const QRect &rect, int) override
|
||||
{
|
||||
switch (m_type) {
|
||||
case Horizontal_Integer:
|
||||
p->drawLine(QLine(rect.x(), rect.y(), rect.x() + m_length, rect.y()));
|
||||
break;
|
||||
case Diagonal_Integer:
|
||||
p->drawLine(QLine(rect.x(), rect.y(), rect.x() + m_length, rect.y() + m_length));
|
||||
break;
|
||||
case Vertical_Integer:
|
||||
p->drawLine(QLine(rect.x() + 4, rect.y(), rect.x() + 4, rect.y() + m_length));
|
||||
break;
|
||||
case Horizontal_Float:
|
||||
p->drawLine(QLineF(rect.x(), rect.y(), rect.x() + m_length, rect.y()));
|
||||
break;
|
||||
case Diagonal_Float:
|
||||
p->drawLine(QLineF(rect.x(), rect.y(), rect.x() + m_length, rect.y() + m_length));
|
||||
break;
|
||||
case Vertical_Float:
|
||||
p->drawLine(QLineF(rect.x() + 4, rect.y(), rect.x() + 4, rect.y() + m_length));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
QString name() const override
|
||||
{
|
||||
const char *names[] = {
|
||||
"Hor_I",
|
||||
"Diag_I",
|
||||
"Ver_I",
|
||||
"Hor_F",
|
||||
"Diag_F",
|
||||
"Ver_F"
|
||||
};
|
||||
return QString::fromLatin1("drawLine(size=%1,type=%2)").arg(m_length).arg(names[m_type]);
|
||||
}
|
||||
|
||||
LineType m_type;
|
||||
int m_length;
|
||||
};
|
||||
|
||||
#endif // BENCHMARKTESTS_H
|
214
tests/benchmarks/gui/painting/qtbench/tst_qtbench.cpp
Normal file
@ -0,0 +1,214 @@
|
||||
// Copyright (C) 2020 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <qtest.h>
|
||||
|
||||
#include <QtCore/qmath.h>
|
||||
#include <QtCore/QElapsedTimer>
|
||||
#include <QtWidgets/QWidget>
|
||||
|
||||
#include "benchmarktests.h"
|
||||
|
||||
class BenchWidget : public QWidget
|
||||
{
|
||||
public:
|
||||
BenchWidget(Benchmark *benchmark);
|
||||
|
||||
void paintEvent(QPaintEvent *event) override;
|
||||
|
||||
bool done() const { return m_done; }
|
||||
qreal result() const { return m_result; }
|
||||
|
||||
public:
|
||||
QElapsedTimer timer;
|
||||
|
||||
Benchmark *m_benchmark;
|
||||
|
||||
bool m_done;
|
||||
qreal m_result;
|
||||
|
||||
uint m_total;
|
||||
uint m_iteration;
|
||||
|
||||
QList<uint> iterationTimes;
|
||||
};
|
||||
|
||||
void BenchWidget::paintEvent(QPaintEvent *)
|
||||
{
|
||||
if (m_done)
|
||||
return;
|
||||
|
||||
QPainter p(this);
|
||||
|
||||
m_benchmark->begin(&p, 100);
|
||||
|
||||
PaintingRectAdjuster adjuster;
|
||||
adjuster.setNewBenchmark(m_benchmark);
|
||||
adjuster.reset(rect());
|
||||
|
||||
for (int i = 0; i < 100; ++i)
|
||||
m_benchmark->draw(&p, adjuster.newPaintingRect(), i);
|
||||
|
||||
m_benchmark->end(&p);
|
||||
|
||||
++m_iteration;
|
||||
|
||||
uint currentElapsed = timer.isValid() ? timer.elapsed() : 0;
|
||||
timer.restart();
|
||||
|
||||
m_total += currentElapsed;
|
||||
|
||||
// warm up for at most 5 iterations or half a second
|
||||
if (m_iteration >= 5 || m_total >= 500) {
|
||||
iterationTimes << currentElapsed;
|
||||
|
||||
if (iterationTimes.size() >= 5) {
|
||||
qreal mean = 0;
|
||||
qreal stddev = 0;
|
||||
uint min = INT_MAX;
|
||||
|
||||
for (int i = 0; i < iterationTimes.size(); ++i) {
|
||||
mean += iterationTimes.at(i);
|
||||
min = qMin(min, iterationTimes.at(i));
|
||||
}
|
||||
|
||||
mean /= qreal(iterationTimes.size());
|
||||
|
||||
for (int i = 0; i < iterationTimes.size(); ++i) {
|
||||
qreal delta = iterationTimes.at(i) - mean;
|
||||
stddev += delta * delta;
|
||||
}
|
||||
|
||||
stddev = qSqrt(stddev / iterationTimes.size());
|
||||
|
||||
stddev = 100 * stddev / mean;
|
||||
// do 50 iterations, break earlier if we spend more than 5 seconds or have a low std deviation after 2 seconds
|
||||
if (iterationTimes.size() >= 50 || m_total >= 5000 || (m_total >= 2000 && stddev < 4)) {
|
||||
m_result = min;
|
||||
m_done = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BenchWidget::BenchWidget(Benchmark *benchmark)
|
||||
: m_benchmark(benchmark)
|
||||
, m_done(false)
|
||||
, m_result(0)
|
||||
, m_total(0)
|
||||
, m_iteration(0)
|
||||
{
|
||||
setWindowTitle(benchmark->name());
|
||||
resize(640, 480);
|
||||
}
|
||||
|
||||
class tst_QtBench : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private slots:
|
||||
void qtBench();
|
||||
void qtBench_data();
|
||||
};
|
||||
|
||||
QString makeString(int length)
|
||||
{
|
||||
const char chars[] = "abcd efgh ijkl mnop qrst uvwx yz!$. ABCD 1234";
|
||||
const int len = int(strlen(chars));
|
||||
|
||||
QString ret;
|
||||
for (int j = 0; j < length; j++) {
|
||||
ret += QChar(chars[(j * 97) % len]);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void tst_QtBench::qtBench_data()
|
||||
{
|
||||
QTest::addColumn<void *>("benchmark");
|
||||
|
||||
QString shortString = makeString(5);
|
||||
QString middleString = makeString(50);
|
||||
QString longString = makeString(35) + "\n"
|
||||
+ makeString(45) + "\n"
|
||||
+ makeString(75);
|
||||
QString superLongString = "Lorem ipsum dolor sit am\n"
|
||||
"et, consectetur adipisci\n"
|
||||
"ng elit. Integer mi leo,\n"
|
||||
"interdum ut congue at, p\n"
|
||||
"ulvinar et tellus. Quisq\n"
|
||||
"ue pretium eleifend laci\n"
|
||||
"nia. Ut semper gravida l\n"
|
||||
"ectus in commodo. Vestib\n"
|
||||
"ulum pharetra arcu in en\n"
|
||||
"im ultrices hendrerit. P\n"
|
||||
"ellentesque habitant mor\n"
|
||||
"bi tristique senectus et\n"
|
||||
"netus et malesuada fames\n"
|
||||
"ac turpis egestas. Ut er\n"
|
||||
"os sem, feugiat in eleme\n"
|
||||
"ntum in, porta sit amet \n"
|
||||
"neque. Fusce mi tellus, \n"
|
||||
"congue non dapibus eget,\n"
|
||||
"pharetra quis quam. Duis\n"
|
||||
"dui massa, pulvinar ac s\n"
|
||||
"odales pharetra, dictum \n"
|
||||
"in enim. Phasellus a nis\n"
|
||||
"i erat, sed pellentesque\n"
|
||||
"mi. Curabitur sed.";
|
||||
|
||||
QList<Benchmark *> benchmarks;
|
||||
benchmarks << (new DrawText(shortString, DrawText::PainterMode));
|
||||
benchmarks << (new DrawText(middleString, DrawText::PainterMode));
|
||||
benchmarks << (new DrawText(longString, DrawText::PainterMode));
|
||||
benchmarks << (new DrawText(superLongString, DrawText::PainterMode));
|
||||
|
||||
benchmarks << (new DrawText(shortString, DrawText::PainterQPointMode));
|
||||
benchmarks << (new DrawText(middleString, DrawText::PainterQPointMode));
|
||||
benchmarks << (new DrawText(longString, DrawText::PainterQPointMode));
|
||||
benchmarks << (new DrawText(superLongString, DrawText::PainterQPointMode));
|
||||
|
||||
benchmarks << (new DrawText(shortString, DrawText::PixmapMode));
|
||||
benchmarks << (new DrawText(middleString, DrawText::PixmapMode));
|
||||
benchmarks << (new DrawText(longString, DrawText::PixmapMode));
|
||||
benchmarks << (new DrawText(superLongString, DrawText::PixmapMode));
|
||||
|
||||
benchmarks << (new DrawText(shortString, DrawText::StaticTextMode));
|
||||
benchmarks << (new DrawText(middleString, DrawText::StaticTextMode));
|
||||
benchmarks << (new DrawText(longString, DrawText::StaticTextMode));
|
||||
benchmarks << (new DrawText(superLongString, DrawText::StaticTextMode));
|
||||
|
||||
benchmarks << (new DrawText(shortString, DrawText::StaticTextWithMaximumSizeMode));
|
||||
benchmarks << (new DrawText(middleString, DrawText::StaticTextWithMaximumSizeMode));
|
||||
benchmarks << (new DrawText(longString, DrawText::StaticTextWithMaximumSizeMode));
|
||||
benchmarks << (new DrawText(superLongString, DrawText::StaticTextWithMaximumSizeMode));
|
||||
|
||||
benchmarks << (new DrawText(shortString, DrawText::StaticTextBackendOptimizations));
|
||||
benchmarks << (new DrawText(middleString, DrawText::StaticTextBackendOptimizations));
|
||||
benchmarks << (new DrawText(longString, DrawText::StaticTextBackendOptimizations));
|
||||
benchmarks << (new DrawText(superLongString, DrawText::StaticTextBackendOptimizations));
|
||||
|
||||
foreach (Benchmark *benchmark, benchmarks)
|
||||
QTest::newRow(qPrintable(benchmark->name())) << reinterpret_cast<void *>(benchmark);
|
||||
}
|
||||
|
||||
void tst_QtBench::qtBench()
|
||||
{
|
||||
QFETCH(void *, benchmark);
|
||||
|
||||
BenchWidget widget(reinterpret_cast<Benchmark *>(benchmark));
|
||||
widget.show();
|
||||
QVERIFY(QTest::qWaitForWindowExposed(&widget));
|
||||
|
||||
while (!widget.done()) {
|
||||
widget.update();
|
||||
QApplication::processEvents();
|
||||
}
|
||||
|
||||
QTest::setBenchmarkResult(widget.result(), QTest::WalltimeMilliseconds);
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QtBench)
|
||||
#include "tst_qtbench.moc"
|
14
tests/benchmarks/gui/painting/qtransform/CMakeLists.txt
Normal file
@ -0,0 +1,14 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_bench_qtransform Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_benchmark(tst_bench_qtransform
|
||||
SOURCES
|
||||
tst_qtransform.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::Test
|
||||
)
|
547
tests/benchmarks/gui/painting/qtransform/tst_qtransform.cpp
Normal file
@ -0,0 +1,547 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <qtest.h>
|
||||
#include <QTransform>
|
||||
#include <QPainterPath>
|
||||
|
||||
class tst_QTransform : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
tst_QTransform();
|
||||
virtual ~tst_QTransform();
|
||||
|
||||
public slots:
|
||||
void init();
|
||||
void cleanup();
|
||||
|
||||
private slots:
|
||||
void construct();
|
||||
void translate_data();
|
||||
void translate();
|
||||
void scale_data();
|
||||
void scale();
|
||||
void shear_data();
|
||||
void shear();
|
||||
void rotate_data();
|
||||
void rotate();
|
||||
void rotateXYZ_data();
|
||||
void rotateXYZ();
|
||||
void operatorAssign_data();
|
||||
void operatorAssign();
|
||||
void operatorEqual_data();
|
||||
void operatorEqual();
|
||||
void operatorNotEqual_data();
|
||||
void operatorNotEqual();
|
||||
void operatorMultiply_data();
|
||||
void operatorMultiply();
|
||||
void operatorPlusEqualScalar_data();
|
||||
void operatorPlusEqualScalar();
|
||||
void operatorMinusEqualScalar_data();
|
||||
void operatorMinusEqualScalar();
|
||||
void operatorMultiplyEqual_data();
|
||||
void operatorMultiplyEqual();
|
||||
void operatorMultiplyEqualScalar_data();
|
||||
void operatorMultiplyEqualScalar();
|
||||
void operatorDivideEqualScalar_data();
|
||||
void operatorDivideEqualScalar();
|
||||
void mapQPoint_data();
|
||||
void mapQPoint();
|
||||
void mapQPointF_data();
|
||||
void mapQPointF();
|
||||
void mapRect_data();
|
||||
void mapRect();
|
||||
void mapRectF_data();
|
||||
void mapRectF();
|
||||
void mapQPolygon_data();
|
||||
void mapQPolygon();
|
||||
void mapQPolygonF_data();
|
||||
void mapQPolygonF();
|
||||
void mapQRegion_data();
|
||||
void mapQRegion();
|
||||
void mapToPolygon_data();
|
||||
void mapToPolygon();
|
||||
void mapQPainterPath_data();
|
||||
void mapQPainterPath();
|
||||
void isIdentity_data();
|
||||
void isIdentity();
|
||||
void isAffine_data();
|
||||
void isAffine();
|
||||
void isInvertible_data();
|
||||
void isInvertible();
|
||||
void isRotating_data();
|
||||
void isRotating();
|
||||
void isScaling_data();
|
||||
void isScaling();
|
||||
void isTranslating_data();
|
||||
void isTranslating();
|
||||
void type_data();
|
||||
void type();
|
||||
void determinant_data();
|
||||
void determinant();
|
||||
void adjoint_data();
|
||||
void adjoint();
|
||||
void transposed_data();
|
||||
void transposed();
|
||||
void inverted_data();
|
||||
void inverted();
|
||||
|
||||
private:
|
||||
QMap<const char *, QTransform> generateTransforms() const;
|
||||
};
|
||||
|
||||
tst_QTransform::tst_QTransform()
|
||||
{
|
||||
}
|
||||
|
||||
tst_QTransform::~tst_QTransform()
|
||||
{
|
||||
}
|
||||
|
||||
void tst_QTransform::init()
|
||||
{
|
||||
}
|
||||
|
||||
void tst_QTransform::cleanup()
|
||||
{
|
||||
}
|
||||
|
||||
QMap<const char *, QTransform> tst_QTransform::generateTransforms() const
|
||||
{
|
||||
QMap<const char *, QTransform> x;
|
||||
x["0: identity"] = QTransform();
|
||||
x["1: translate"] = QTransform().translate(10, 10);
|
||||
x["2: translate"] = QTransform().translate(-10, -10);
|
||||
x["3: rotate45"] = QTransform().rotate(45);
|
||||
x["4: rotate90"] = QTransform().rotate(90);
|
||||
x["5: rotate180"] = QTransform().rotate(180);
|
||||
x["6: shear2,2"] = QTransform().shear(2, 2);
|
||||
x["7: shear-2,-2"] = QTransform().shear(-2, -2);
|
||||
x["8: scaleUp2,2"] = QTransform().scale(2, 2);
|
||||
x["9: scaleUp2,3"] = QTransform().scale(2, 3);
|
||||
x["10: scaleDown0.5,0.5"] = QTransform().scale(0.5, 0.5);
|
||||
x["11: scaleDown0.5,0.25"] = QTransform().scale(0.5, 0.25);
|
||||
x["12: rotateX"] = QTransform().rotate(45, Qt::XAxis);
|
||||
x["13: rotateY"] = QTransform().rotate(45, Qt::YAxis);
|
||||
x["14: rotateXY"] = QTransform().rotate(45, Qt::XAxis).rotate(45, Qt::YAxis);
|
||||
x["15: rotateYZ"] = QTransform().rotate(45, Qt::YAxis).rotate(45, Qt::ZAxis);
|
||||
x["16: full"] = QTransform().translate(10, 10).rotate(45).shear(2, 2).scale(2, 2).rotate(45, Qt::YAxis).rotate(45, Qt::XAxis).rotate(45, Qt::ZAxis);
|
||||
return x;
|
||||
}
|
||||
|
||||
void tst_QTransform::construct()
|
||||
{
|
||||
QBENCHMARK {
|
||||
QTransform x;
|
||||
}
|
||||
}
|
||||
|
||||
#define SINGLE_DATA_IMPLEMENTATION(func) \
|
||||
void tst_QTransform::func##_data() \
|
||||
{ \
|
||||
QTest::addColumn<QTransform>("transform"); \
|
||||
QMap<const char *, QTransform> x = generateTransforms(); \
|
||||
for (auto it = x.begin(), end = x.end(); it != end; ++it) { \
|
||||
QTest::newRow(it.key()) << it.value(); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define DOUBLE_DATA_IMPLEMENTATION(func) \
|
||||
void tst_QTransform::func##_data() \
|
||||
{ \
|
||||
QTest::addColumn<QTransform>("x1"); \
|
||||
QTest::addColumn<QTransform>("x2"); \
|
||||
QMap<const char *, QTransform> x = generateTransforms(); \
|
||||
for (auto it = x.cbegin(), end = x.cend(); it != end; ++it) { \
|
||||
const char *key1 = it.key(); \
|
||||
QTransform x1 = it.value(); \
|
||||
for (auto it2 = x.cbegin(), end = x.cend(); it2 != end; ++it2) { \
|
||||
QTest::newRow(QString("%1 + %2").arg(key1).arg(it2.key()).toLatin1().constData()) \
|
||||
<< x1 << it2.value(); \
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(translate)
|
||||
|
||||
void tst_QTransform::translate()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QTransform x = transform;
|
||||
QBENCHMARK {
|
||||
x.translate(10, 10);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(scale)
|
||||
|
||||
void tst_QTransform::scale()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QTransform x = transform;
|
||||
QBENCHMARK {
|
||||
x.scale(2, 2);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(shear)
|
||||
|
||||
void tst_QTransform::shear()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QTransform x = transform;
|
||||
QBENCHMARK {
|
||||
x.shear(2, 2);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(rotate)
|
||||
|
||||
void tst_QTransform::rotate()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QTransform x = transform;
|
||||
QBENCHMARK {
|
||||
x.rotate(45);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(rotateXYZ)
|
||||
|
||||
void tst_QTransform::rotateXYZ()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QTransform x = transform;
|
||||
QBENCHMARK {
|
||||
x.rotate(45, Qt::XAxis);
|
||||
x.rotate(45, Qt::YAxis);
|
||||
x.rotate(45, Qt::ZAxis);
|
||||
}
|
||||
}
|
||||
|
||||
DOUBLE_DATA_IMPLEMENTATION(operatorAssign)
|
||||
|
||||
void tst_QTransform::operatorAssign()
|
||||
{
|
||||
QFETCH(QTransform, x1);
|
||||
QFETCH(QTransform, x2);
|
||||
QTransform x = x1;
|
||||
QBENCHMARK {
|
||||
x = x2;
|
||||
}
|
||||
}
|
||||
|
||||
DOUBLE_DATA_IMPLEMENTATION(operatorEqual)
|
||||
|
||||
void tst_QTransform::operatorEqual()
|
||||
{
|
||||
QFETCH(QTransform, x1);
|
||||
QFETCH(QTransform, x2);
|
||||
QTransform x = x1;
|
||||
QBENCHMARK {
|
||||
[[maybe_unused]] auto r = x == x2;
|
||||
}
|
||||
}
|
||||
|
||||
DOUBLE_DATA_IMPLEMENTATION(operatorNotEqual)
|
||||
|
||||
void tst_QTransform::operatorNotEqual()
|
||||
{
|
||||
QFETCH(QTransform, x1);
|
||||
QFETCH(QTransform, x2);
|
||||
QTransform x = x1;
|
||||
QBENCHMARK {
|
||||
[[maybe_unused]] auto r = x != x2;
|
||||
}
|
||||
}
|
||||
|
||||
DOUBLE_DATA_IMPLEMENTATION(operatorMultiply)
|
||||
|
||||
void tst_QTransform::operatorMultiply()
|
||||
{
|
||||
QFETCH(QTransform, x1);
|
||||
QFETCH(QTransform, x2);
|
||||
QTransform x = x1;
|
||||
QBENCHMARK {
|
||||
[[maybe_unused]] auto r = x * x2;
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(operatorPlusEqualScalar)
|
||||
|
||||
void tst_QTransform::operatorPlusEqualScalar()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QTransform x = transform;
|
||||
QBENCHMARK {
|
||||
x += 3.14;
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(operatorMinusEqualScalar)
|
||||
|
||||
void tst_QTransform::operatorMinusEqualScalar()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QTransform x = transform;
|
||||
QBENCHMARK {
|
||||
x -= 3.14;
|
||||
}
|
||||
}
|
||||
|
||||
DOUBLE_DATA_IMPLEMENTATION(operatorMultiplyEqual)
|
||||
|
||||
void tst_QTransform::operatorMultiplyEqual()
|
||||
{
|
||||
QFETCH(QTransform, x1);
|
||||
QFETCH(QTransform, x2);
|
||||
QTransform x = x1;
|
||||
QBENCHMARK {
|
||||
x *= x2;
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(operatorMultiplyEqualScalar)
|
||||
|
||||
void tst_QTransform::operatorMultiplyEqualScalar()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QTransform x = transform;
|
||||
QBENCHMARK {
|
||||
x *= 3;
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(operatorDivideEqualScalar)
|
||||
|
||||
void tst_QTransform::operatorDivideEqualScalar()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QTransform x = transform;
|
||||
QBENCHMARK {
|
||||
x /= 3;
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(mapQPoint)
|
||||
|
||||
void tst_QTransform::mapQPoint()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QTransform x = transform;
|
||||
QBENCHMARK {
|
||||
[[maybe_unused]] auto r = x.map(QPoint(3, 3));
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(mapQPointF)
|
||||
|
||||
void tst_QTransform::mapQPointF()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QTransform x = transform;
|
||||
QBENCHMARK {
|
||||
[[maybe_unused]] auto r = x.map(QPointF(3, 3));
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(mapRect)
|
||||
|
||||
void tst_QTransform::mapRect()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QTransform x = transform;
|
||||
QBENCHMARK {
|
||||
[[maybe_unused]] auto r = x.mapRect(QRect(0, 0, 100, 100));
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(mapRectF)
|
||||
|
||||
void tst_QTransform::mapRectF()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QTransform x = transform;
|
||||
QBENCHMARK {
|
||||
[[maybe_unused]] auto r = x.mapRect(QRectF(0, 0, 100, 100));
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(mapQPolygon)
|
||||
|
||||
void tst_QTransform::mapQPolygon()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QTransform x = transform;
|
||||
QPolygon poly = QPolygon(QRect(0, 0, 100, 100));
|
||||
QBENCHMARK {
|
||||
[[maybe_unused]] auto r = x.map(poly);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(mapQPolygonF)
|
||||
|
||||
void tst_QTransform::mapQPolygonF()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QTransform x = transform;
|
||||
QPolygonF poly = QPolygonF(QRectF(0, 0, 100, 100));
|
||||
QBENCHMARK {
|
||||
[[maybe_unused]] auto r = x.map(poly);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(mapQRegion)
|
||||
|
||||
void tst_QTransform::mapQRegion()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QTransform x = transform;
|
||||
QRegion region;
|
||||
for (int i = 0; i < 10; ++i)
|
||||
region += QRect(i * 10, i * 10, 100, 100);
|
||||
QBENCHMARK {
|
||||
[[maybe_unused]] auto r = x.map(region);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(mapToPolygon)
|
||||
|
||||
void tst_QTransform::mapToPolygon()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QTransform x = transform;
|
||||
QBENCHMARK {
|
||||
[[maybe_unused]] auto r = x.mapToPolygon(QRect(0, 0, 100, 100));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(mapQPainterPath)
|
||||
|
||||
void tst_QTransform::mapQPainterPath()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QTransform x = transform;
|
||||
QPainterPath path;
|
||||
for (int i = 0; i < 10; ++i)
|
||||
path.addEllipse(i * 10, i * 10, 100, 100);
|
||||
QBENCHMARK {
|
||||
[[maybe_unused]] auto r = x.map(path);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(isIdentity)
|
||||
|
||||
void tst_QTransform::isIdentity()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QBENCHMARK {
|
||||
[[maybe_unused]] auto r = transform.isIdentity();
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(isAffine)
|
||||
|
||||
void tst_QTransform::isAffine()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QBENCHMARK {
|
||||
[[maybe_unused]] auto r = transform.isAffine();
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(isInvertible)
|
||||
|
||||
void tst_QTransform::isInvertible()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QBENCHMARK {
|
||||
[[maybe_unused]] auto r = transform.isInvertible();
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(isRotating)
|
||||
|
||||
void tst_QTransform::isRotating()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QBENCHMARK {
|
||||
[[maybe_unused]] auto r = transform.isRotating();
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(isScaling)
|
||||
|
||||
void tst_QTransform::isScaling()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QBENCHMARK {
|
||||
[[maybe_unused]] auto r = transform.isScaling();
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(isTranslating)
|
||||
|
||||
void tst_QTransform::isTranslating()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QBENCHMARK {
|
||||
[[maybe_unused]] auto r = transform.isTranslating();
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(type)
|
||||
|
||||
void tst_QTransform::type()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QBENCHMARK {
|
||||
[[maybe_unused]] auto r = transform.type();
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(determinant)
|
||||
|
||||
void tst_QTransform::determinant()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QBENCHMARK {
|
||||
[[maybe_unused]] auto r = transform.determinant();
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(adjoint)
|
||||
|
||||
void tst_QTransform::adjoint()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QBENCHMARK {
|
||||
Q_UNUSED(transform.adjoint())
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(transposed)
|
||||
|
||||
void tst_QTransform::transposed()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QBENCHMARK {
|
||||
Q_UNUSED(transform.transposed())
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_DATA_IMPLEMENTATION(inverted)
|
||||
|
||||
void tst_QTransform::inverted()
|
||||
{
|
||||
QFETCH(QTransform, transform);
|
||||
QBENCHMARK {
|
||||
Q_UNUSED(transform.inverted())
|
||||
}
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QTransform)
|
||||
#include "tst_qtransform.moc"
|
6
tests/benchmarks/gui/text/CMakeLists.txt
Normal file
@ -0,0 +1,6 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
add_subdirectory(qfontmetrics)
|
||||
add_subdirectory(qtext)
|
||||
add_subdirectory(qtextdocument)
|
14
tests/benchmarks/gui/text/qfontmetrics/CMakeLists.txt
Normal file
@ -0,0 +1,14 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_bench_QFontMetrics Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_benchmark(tst_bench_QFontMetrics
|
||||
SOURCES
|
||||
main.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::Test
|
||||
)
|
75
tests/benchmarks/gui/text/qfontmetrics/main.cpp
Normal file
@ -0,0 +1,75 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <QObject>
|
||||
#include <QFont>
|
||||
#include <QFontMetrics>
|
||||
|
||||
#include <qtest.h>
|
||||
|
||||
//this test benchmarks the once-off (per font configuration) cost
|
||||
//associated with using QFontMetrics
|
||||
class tst_QFontMetrics : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
tst_QFontMetrics() {}
|
||||
private slots:
|
||||
void fontmetrics_create();
|
||||
void fontmetrics_create_once_loaded();
|
||||
|
||||
void fontmetrics_height();
|
||||
void fontmetrics_height_once_loaded();
|
||||
|
||||
private:
|
||||
void testQFontMetrics(const QFontMetrics &fm);
|
||||
};
|
||||
|
||||
void tst_QFontMetrics::testQFontMetrics( const QFontMetrics &fm )
|
||||
{
|
||||
int fontHeight = fm.height();
|
||||
Q_UNUSED(fontHeight);
|
||||
}
|
||||
|
||||
void tst_QFontMetrics::fontmetrics_create()
|
||||
{
|
||||
QBENCHMARK {
|
||||
QFont boldfont = QGuiApplication::font();
|
||||
boldfont.setBold( true );
|
||||
boldfont.setPointSize(boldfont.pointSize() * 1.5 );
|
||||
QFontMetrics bfm( boldfont );
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QFontMetrics::fontmetrics_create_once_loaded()
|
||||
{
|
||||
QBENCHMARK {
|
||||
QFont boldfont = QGuiApplication::font();
|
||||
boldfont.setBold( true );
|
||||
boldfont.setPointSize(boldfont.pointSize() * 1.5 );
|
||||
QFontMetrics bfm( boldfont );
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QFontMetrics::fontmetrics_height()
|
||||
{
|
||||
QFont boldfont = QGuiApplication::font();
|
||||
boldfont.setBold( true );
|
||||
boldfont.setPointSize(boldfont.pointSize() * 1.5 );
|
||||
QFontMetrics bfm( boldfont );
|
||||
|
||||
QBENCHMARK { testQFontMetrics(bfm); }
|
||||
}
|
||||
|
||||
void tst_QFontMetrics::fontmetrics_height_once_loaded()
|
||||
{
|
||||
QFont boldfont = QGuiApplication::font();
|
||||
boldfont.setBold( true );
|
||||
boldfont.setPointSize(boldfont.pointSize() * 1.5 );
|
||||
QFontMetrics bfm( boldfont );
|
||||
QBENCHMARK { testQFontMetrics(bfm); }
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QFontMetrics)
|
||||
|
||||
#include "main.moc"
|
15
tests/benchmarks/gui/text/qtext/CMakeLists.txt
Normal file
@ -0,0 +1,15 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_bench_QText Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_benchmark(tst_bench_QText
|
||||
SOURCES
|
||||
main.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::GuiPrivate
|
||||
Qt::Test
|
||||
)
|
4
tests/benchmarks/gui/text/qtext/bidi.txt
Normal file
@ -0,0 +1,4 @@
|
||||
chinese
|
||||
欧洲,软件+互联网
用统一码 (Unicode) 走遍世界
将于1997年 3 月10日-12日在德国 Mainz 市举行的第十届统一码国际研讨会现在开始注册。 本次会议将汇集各方面的专家。 涉及的领域包括: 国际互联网和统一码 ,国际化和本地化 ,统一码在操作系统和应用软件中的实现 ,字型 ,文本格式以及多文种计算等。
当世界需要沟通时,请用Unicode!
|
||||
hebrew-bidi
|
||||
אײראָפּע: פּראָגראַמװאַרג און די װעלטנעץ: אוניקאָד איבער דער גאָרער װעלט פֿאַרשרײַבט זיך שױן אױף דער צענטער אינטערנאַציאָנאַלער אוניקאָד-קאָנפֿערענץ, װאָס װעט פֿאָרקומען דעם 10טן ביזן 12טן מאַרץ, 1997, אין מײַנץ, דײַטשלאַנד. די קאָנפֿערענץ װעט צוזאַמענברענגן מבֿינים פֿון װעלטנעץ, אוניקאָד, אי אַלװעלטלעכן אי סבֿיבֿהדיקן פּראָגראַמװאַרג, אַרײַנשטעלן אוניקאָד אין אָפּעריר-סיסטעמען און אָנװענדונגען, שריפֿטן, טעקסט-אױסשטעל, און מערשפּראַכיקע קאָמפּיוטערײַ.
|
419
tests/benchmarks/gui/text/qtext/main.cpp
Normal file
@ -0,0 +1,419 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <QDebug>
|
||||
#include <QTextDocument>
|
||||
#include <QTextDocumentWriter>
|
||||
#include <QTextLayout>
|
||||
#include <QTextCursor>
|
||||
#include <qmath.h>
|
||||
#include <QFile>
|
||||
#include <QPainter>
|
||||
#include <QBuffer>
|
||||
#include <qtest.h>
|
||||
|
||||
Q_DECLARE_METATYPE(QList<QTextLayout::FormatRange>)
|
||||
|
||||
class tst_QText: public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
tst_QText() {
|
||||
m_lorem = QString::fromLatin1("Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.");
|
||||
m_shortLorem = QString::fromLatin1("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.");
|
||||
}
|
||||
|
||||
private slots:
|
||||
void loadHtml_data();
|
||||
void loadHtml();
|
||||
|
||||
void shaping_data();
|
||||
void shaping();
|
||||
|
||||
void odfWriting_empty();
|
||||
void odfWriting_text();
|
||||
void odfWriting_images();
|
||||
|
||||
void constructDocument();
|
||||
|
||||
void newLineReplacement();
|
||||
void formatManipulation();
|
||||
void fontResolution();
|
||||
|
||||
void layout_data();
|
||||
void layout();
|
||||
void formattedLayout_data();
|
||||
void formattedLayout();
|
||||
void paintLayoutToPixmap();
|
||||
void paintLayoutToPixmap_painterFill();
|
||||
|
||||
void document();
|
||||
void paintDocToPixmap();
|
||||
void paintDocToPixmap_painterFill();
|
||||
|
||||
private:
|
||||
QSize setupTextLayout(QTextLayout *layout, bool wrap = true, int wrapWidth = 100);
|
||||
|
||||
QString m_lorem;
|
||||
QString m_shortLorem;
|
||||
};
|
||||
|
||||
void tst_QText::loadHtml_data()
|
||||
{
|
||||
QTest::addColumn<QString>("source");
|
||||
QTest::newRow("empty") << QString();
|
||||
QTest::newRow("simple") << QString::fromLatin1("<html><b>Foo</b></html>");
|
||||
QTest::newRow("simple2") << QString::fromLatin1("<b>Foo</b>");
|
||||
|
||||
QString parag = QString::fromLatin1("<p>%1</p>").arg(m_lorem);
|
||||
QString header = QString::fromLatin1("<html><head><title>test</title></head><body>");
|
||||
QTest::newRow("long") << QString::fromLatin1("<html><head><title>test</title></head><body>") + parag + parag + parag
|
||||
+ parag + parag + parag + parag + parag + parag + parag + parag + parag + parag + parag + parag + parag + parag
|
||||
+ QString::fromLatin1("</html>");
|
||||
QTest::newRow("table") << header + QLatin1String("<table border=\"1\"1><tr><td>xx</td></tr><tr><td colspan=\"2\">")
|
||||
+ parag + QLatin1String("</td></tr></table></html");
|
||||
QTest::newRow("crappy") << header + QLatin1String("<table border=\"1\"1><tr><td>xx</td></tr><tr><td colspan=\"2\">")
|
||||
+ parag;
|
||||
}
|
||||
|
||||
void tst_QText::loadHtml()
|
||||
{
|
||||
QFETCH(QString, source);
|
||||
QTextDocument doc;
|
||||
QBENCHMARK {
|
||||
doc.setHtml(source);
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QText::shaping_data()
|
||||
{
|
||||
QTest::addColumn<QString>("parag");
|
||||
QTest::newRow("empty") << QString();
|
||||
QTest::newRow("lorem") << m_lorem;
|
||||
QTest::newRow("short") << QString::fromLatin1("Lorem ipsum dolor sit amet");
|
||||
|
||||
QString testFile = QFINDTESTDATA("bidi.txt");
|
||||
QVERIFY2(!testFile.isEmpty(), "cannot find test file bidi.txt!");
|
||||
QFile file(testFile);
|
||||
QVERIFY(file.open(QFile::ReadOnly));
|
||||
QByteArray data = file.readAll();
|
||||
QVERIFY(data.size() > 1000);
|
||||
QStringList list = QString::fromUtf8(data.data()).split(QLatin1Char('\n'), Qt::SkipEmptyParts);
|
||||
QVERIFY(list.size() % 2 == 0); // even amount as we have title and then content.
|
||||
for (int i = 0; i < list.size(); i += 2) {
|
||||
QTest::newRow(list.at(i).toLatin1()) << list.at(i+1);
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QText::shaping()
|
||||
{
|
||||
QFETCH(QString, parag);
|
||||
|
||||
QTextLayout lay(parag);
|
||||
lay.setCacheEnabled(false);
|
||||
|
||||
// do one run to make sure any fonts are loaded.
|
||||
lay.beginLayout();
|
||||
lay.createLine();
|
||||
lay.endLayout();
|
||||
|
||||
QBENCHMARK {
|
||||
lay.beginLayout();
|
||||
lay.createLine();
|
||||
lay.endLayout();
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QText::odfWriting_empty()
|
||||
{
|
||||
QVERIFY(QTextDocumentWriter::supportedDocumentFormats().contains("ODF")); // odf compiled in
|
||||
QTextDocument *doc = new QTextDocument();
|
||||
// write it
|
||||
QBENCHMARK {
|
||||
QBuffer buffer;
|
||||
buffer.open(QIODevice::WriteOnly);
|
||||
QTextDocumentWriter writer(&buffer, "ODF");
|
||||
writer.write(doc);
|
||||
}
|
||||
delete doc;
|
||||
}
|
||||
|
||||
void tst_QText::odfWriting_text()
|
||||
{
|
||||
QTextDocument *doc = new QTextDocument();
|
||||
QTextCursor cursor(doc);
|
||||
QTextBlockFormat bf;
|
||||
bf.setIndent(2);
|
||||
cursor.insertBlock(bf);
|
||||
cursor.insertText(m_lorem);
|
||||
bf.setTopMargin(10);
|
||||
cursor.insertBlock(bf);
|
||||
cursor.insertText(m_lorem);
|
||||
bf.setRightMargin(30);
|
||||
cursor.insertBlock(bf);
|
||||
cursor.insertText(m_lorem);
|
||||
|
||||
// write it
|
||||
QBENCHMARK {
|
||||
QBuffer buffer;
|
||||
buffer.open(QIODevice::WriteOnly);
|
||||
QTextDocumentWriter writer(&buffer, "ODF");
|
||||
writer.write(doc);
|
||||
}
|
||||
delete doc;
|
||||
}
|
||||
|
||||
void tst_QText::odfWriting_images()
|
||||
{
|
||||
QTextDocument *doc = new QTextDocument();
|
||||
QTextCursor cursor(doc);
|
||||
cursor.insertText(m_lorem);
|
||||
QImage image(400, 200, QImage::Format_ARGB32_Premultiplied);
|
||||
cursor.insertImage(image);
|
||||
cursor.insertText(m_lorem);
|
||||
|
||||
// write it
|
||||
QBENCHMARK {
|
||||
QBuffer buffer;
|
||||
buffer.open(QIODevice::WriteOnly);
|
||||
QTextDocumentWriter writer(&buffer, "ODF");
|
||||
writer.write(doc);
|
||||
}
|
||||
delete doc;
|
||||
}
|
||||
|
||||
QSize tst_QText::setupTextLayout(QTextLayout *layout, bool wrap, int wrapWidth)
|
||||
{
|
||||
layout->setCacheEnabled(true);
|
||||
|
||||
int height = 0;
|
||||
qreal widthUsed = 0;
|
||||
qreal lineWidth = 0;
|
||||
|
||||
//set manual width
|
||||
if (wrap)
|
||||
lineWidth = wrapWidth;
|
||||
|
||||
layout->beginLayout();
|
||||
while (1) {
|
||||
QTextLine line = layout->createLine();
|
||||
if (!line.isValid())
|
||||
break;
|
||||
|
||||
if (wrap)
|
||||
line.setLineWidth(lineWidth);
|
||||
}
|
||||
layout->endLayout();
|
||||
|
||||
for (int i = 0; i < layout->lineCount(); ++i) {
|
||||
QTextLine line = layout->lineAt(i);
|
||||
widthUsed = qMax(widthUsed, line.naturalTextWidth());
|
||||
line.setPosition(QPointF(0, height));
|
||||
height += int(line.height());
|
||||
}
|
||||
return QSize(qCeil(widthUsed), height);
|
||||
}
|
||||
|
||||
void tst_QText::constructDocument()
|
||||
{
|
||||
QTextDocument *doc = new QTextDocument;
|
||||
delete doc;
|
||||
|
||||
QBENCHMARK {
|
||||
QTextDocument *doc = new QTextDocument;
|
||||
delete doc;
|
||||
}
|
||||
}
|
||||
|
||||
//this step is needed before giving the string to a QTextLayout
|
||||
void tst_QText::newLineReplacement()
|
||||
{
|
||||
QString text = QString::fromLatin1("H\ne\nl\nl\no\n\nW\no\nr\nl\nd");
|
||||
|
||||
QBENCHMARK {
|
||||
QString tmp = text;
|
||||
tmp.replace(QLatin1Char('\n'), QChar::LineSeparator);
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QText::formatManipulation()
|
||||
{
|
||||
QFont font;
|
||||
|
||||
QBENCHMARK {
|
||||
QTextCharFormat format;
|
||||
format.setFont(font);
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QText::fontResolution()
|
||||
{
|
||||
QFont font;
|
||||
QFont font2;
|
||||
font.setFamily("DejaVu");
|
||||
font2.setBold(true);
|
||||
|
||||
QBENCHMARK {
|
||||
QFont res = font.resolve(font2);
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QText::layout_data()
|
||||
{
|
||||
QTest::addColumn<bool>("wrap");
|
||||
QTest::newRow("wrap") << true;
|
||||
QTest::newRow("nowrap") << false;
|
||||
}
|
||||
|
||||
void tst_QText::layout()
|
||||
{
|
||||
QFETCH(bool,wrap);
|
||||
QTextLayout layout(m_shortLorem);
|
||||
setupTextLayout(&layout, wrap);
|
||||
|
||||
QBENCHMARK {
|
||||
QTextLayout layout(m_shortLorem);
|
||||
setupTextLayout(&layout, wrap);
|
||||
}
|
||||
}
|
||||
|
||||
//### requires tst_QText to be a friend of QTextLayout
|
||||
/*void tst_QText::stackTextLayout()
|
||||
{
|
||||
QStackTextEngine engine(m_shortLorem, qApp->font());
|
||||
QTextLayout layout(&engine);
|
||||
setupTextLayout(&layout);
|
||||
|
||||
QBENCHMARK {
|
||||
QStackTextEngine engine(m_shortLorem, qApp->font());
|
||||
QTextLayout layout(&engine);
|
||||
setupTextLayout(&layout);
|
||||
}
|
||||
}*/
|
||||
|
||||
void tst_QText::formattedLayout_data()
|
||||
{
|
||||
QTest::addColumn<QString>("text");
|
||||
QTest::addColumn<QList<QTextLayout::FormatRange>>("ranges");
|
||||
|
||||
QTextCharFormat format;
|
||||
format.setForeground(QColor("steelblue"));
|
||||
|
||||
{
|
||||
QList<QTextLayout::FormatRange> ranges;
|
||||
|
||||
QTextLayout::FormatRange formatRange;
|
||||
formatRange.format = format;
|
||||
formatRange.start = 0;
|
||||
formatRange.length = 50;
|
||||
ranges.append(formatRange);
|
||||
|
||||
QTest::newRow("short-single") << m_shortLorem << ranges;
|
||||
}
|
||||
{
|
||||
QList<QTextLayout::FormatRange> ranges;
|
||||
|
||||
QString text = m_lorem.repeated(100);
|
||||
const int width = 1;
|
||||
for (int i = 0; i < text.size(); i += width) {
|
||||
QTextLayout::FormatRange formatRange;
|
||||
formatRange.format.setForeground(QBrush(QColor(i % 255, 255, 255)));
|
||||
formatRange.start = i;
|
||||
formatRange.length = width;
|
||||
ranges.append(formatRange);
|
||||
}
|
||||
|
||||
QTest::newRow("long-many") << m_shortLorem << ranges;
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QText::formattedLayout()
|
||||
{
|
||||
QFETCH(QString, text);
|
||||
QFETCH(QList<QTextLayout::FormatRange>, ranges);
|
||||
|
||||
QTextLayout layout(text);
|
||||
layout.setFormats(ranges);
|
||||
setupTextLayout(&layout);
|
||||
|
||||
QBENCHMARK {
|
||||
QTextLayout layout(text);
|
||||
layout.setFormats(ranges);
|
||||
setupTextLayout(&layout);
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QText::paintLayoutToPixmap()
|
||||
{
|
||||
QTextLayout layout(m_shortLorem);
|
||||
QSize size = setupTextLayout(&layout);
|
||||
|
||||
QBENCHMARK {
|
||||
QPixmap img(size);
|
||||
img.fill(Qt::transparent);
|
||||
QPainter p(&img);
|
||||
layout.draw(&p, QPointF(0, 0));
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QText::paintLayoutToPixmap_painterFill()
|
||||
{
|
||||
QTextLayout layout(m_shortLorem);
|
||||
QSize size = setupTextLayout(&layout);
|
||||
|
||||
QBENCHMARK {
|
||||
QPixmap img(size);
|
||||
QPainter p(&img);
|
||||
p.setCompositionMode(QPainter::CompositionMode_Source);
|
||||
p.fillRect(0, 0, img.width(), img.height(), Qt::transparent);
|
||||
p.setCompositionMode(QPainter::CompositionMode_SourceOver);
|
||||
layout.draw(&p, QPointF(0, 0));
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QText::document()
|
||||
{
|
||||
QTextDocument *doc = new QTextDocument;
|
||||
Q_UNUSED(doc);
|
||||
|
||||
QBENCHMARK {
|
||||
QTextDocument *doc = new QTextDocument;
|
||||
doc->setHtml(m_shortLorem);
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QText::paintDocToPixmap()
|
||||
{
|
||||
QTextDocument *doc = new QTextDocument;
|
||||
doc->setHtml(m_shortLorem);
|
||||
doc->setTextWidth(300);
|
||||
QSize size = doc->size().toSize();
|
||||
|
||||
QBENCHMARK {
|
||||
QPixmap img(size);
|
||||
img.fill(Qt::transparent);
|
||||
QPainter p(&img);
|
||||
doc->drawContents(&p);
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QText::paintDocToPixmap_painterFill()
|
||||
{
|
||||
QTextDocument *doc = new QTextDocument;
|
||||
doc->setHtml(m_shortLorem);
|
||||
doc->setTextWidth(300);
|
||||
QSize size = doc->size().toSize();
|
||||
|
||||
QBENCHMARK {
|
||||
QPixmap img(size);
|
||||
QPainter p(&img);
|
||||
p.setCompositionMode(QPainter::CompositionMode_Source);
|
||||
p.fillRect(0, 0, img.width(), img.height(), Qt::transparent);
|
||||
p.setCompositionMode(QPainter::CompositionMode_SourceOver);
|
||||
doc->drawContents(&p);
|
||||
}
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QText)
|
||||
|
||||
#include "main.moc"
|
15
tests/benchmarks/gui/text/qtextdocument/CMakeLists.txt
Normal file
@ -0,0 +1,15 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_bench_QTextDocument Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_benchmark(tst_bench_QTextDocument
|
||||
SOURCES
|
||||
main.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
Qt::GuiPrivate
|
||||
Qt::Test
|
||||
)
|