From ca6969564ff39336b4d488ad2dcdd2d5c945d586 Mon Sep 17 00:00:00 2001 From: BigBahss Date: Fri, 25 Sep 2020 11:53:07 -0400 Subject: [PATCH 1/9] Add MapRuler (right-click & drag in events view) --- include/editor.h | 2 + include/ui/mapruler.h | 71 +++++++++++++++++++++++++ porymap.pro | 12 +++-- src/editor.cpp | 14 ++++- src/ui/draggablepixmapitem.cpp | 28 +++++++--- src/ui/mapruler.cpp | 94 ++++++++++++++++++++++++++++++++++ 6 files changed, 207 insertions(+), 14 deletions(-) create mode 100644 include/ui/mapruler.h create mode 100644 src/ui/mapruler.cpp diff --git a/include/editor.h b/include/editor.h index c9f7bcea..72b94f89 100644 --- a/include/editor.h +++ b/include/editor.h @@ -23,6 +23,7 @@ #include "settings.h" #include "movablerect.h" #include "cursortilerect.h" +#include "mapruler.h" class DraggablePixmapItem; class MetatilesPixmapItem; @@ -115,6 +116,7 @@ public: QList gridLines; MovableRect *playerViewRect = nullptr; CursorTileRect *cursorMapTileRect = nullptr; + MapRuler *map_ruler = nullptr; QGraphicsScene *scene_metatiles = nullptr; QGraphicsScene *scene_current_metatile_selection = nullptr; diff --git a/include/ui/mapruler.h b/include/ui/mapruler.h new file mode 100644 index 00000000..11adc535 --- /dev/null +++ b/include/ui/mapruler.h @@ -0,0 +1,71 @@ +#ifndef MAPRULER_H +#define MAPRULER_H + +#include +#include +#include + + +class MapRuler : public QGraphicsItem, private QLine +{ +public: + MapRuler(QColor interior = Qt::yellow, QColor exterior = Qt::black) + : interiorColor(interior), exteriorColor(exterior) + { + init(); + setAcceptedMouseButtons(Qt::RightButton); + } + void init(); + QRectF boundingRect() const override; + void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) override; + QPainterPath shape() const override; + + // Anchor the ruler on metatile 'tilePos' and show the ruler + void setAnchor(const QPoint &tilePos); + // Anchor the ruler on metatile (tileX,tileY) and show the ruler + void setAnchor(int tileX, int tileY) { setAnchor(QPoint(tileX, tileY)); } + // Release the ruler anchor and hide the ruler + void endAnchor(); + // Set the ruler end point to metatile 'tilePos' and repaint + void setEndPos(const QPoint &tilePos); + // Set the ruler end point to metatile (tileX, tileY) and repaint + void setEndPos(int tileX, int tileY) { setEndPos(QPoint(tileX, tileY)); } + + // Ruler start point in metatiles + QPoint anchor() const { return QLine::p1(); } + // Ruler end point in metatiles + QPoint endPos() const { return QLine::p2(); } + // X-coordinate of the ruler left edge in metatiles + int left() const { return qMin(anchor().x(), endPos().x()); } + // Y-coordinate of the ruler top edge in metatiles + int top() const { return qMin(anchor().y(), endPos().y()); } + // Horizontal component of the ruler in metatiles + int deltaX() const { return QLine::dx(); } + // Vertical component of the ruler in metatiles + int deltaY() const { return QLine::dy(); } + // Ruler width in metatiles + int width() const { return qAbs(deltaX()); } + // Ruler height in metatiles + int height() const { return qAbs(deltaY()); } + // Ruler width in map pixels + int pixWidth() const { return width() * 16; } + // Ruler height in map pixels + int pixHeight() const { return height() * 16; } + + bool mousePressed(Qt::MouseButtons buttons) { return buttons & acceptedMouseButtons(); } + +private: + QRect xRuler; + QRect yRuler; + QRect widthTextBox; + QRect heightTextBox; + QColor interiorColor; + QColor exteriorColor; + + static int padding; + static int thickness; + + void updateShape(); +}; + +#endif // MAPRULER_H diff --git a/porymap.pro b/porymap.pro index 04fb94e2..ff459399 100644 --- a/porymap.pro +++ b/porymap.pro @@ -68,6 +68,8 @@ SOURCES += src/core/block.cpp \ src/ui/regionmapeditor.cpp \ src/ui/newmappopup.cpp \ src/ui/mapimageexporter.cpp \ + src/ui/newtilesetdialog.cpp \ + src/ui/mapruler.cpp \ src/config.cpp \ src/editor.cpp \ src/main.cpp \ @@ -75,8 +77,7 @@ SOURCES += src/core/block.cpp \ src/project.cpp \ src/scripting.cpp \ src/settings.cpp \ - src/log.cpp \ - src/ui/newtilesetdialog.cpp + src/log.cpp HEADERS += include/core/block.h \ include/core/blockdata.h \ @@ -134,15 +135,16 @@ HEADERS += include/core/block.h \ include/ui/regionmapeditor.h \ include/ui/newmappopup.h \ include/ui/mapimageexporter.h \ + include/ui/newtilesetdialog.h \ + include/ui/overlay.h \ + include/ui/mapruler.h \ include/config.h \ include/editor.h \ include/mainwindow.h \ include/project.h \ include/scripting.h \ include/settings.h \ - include/log.h \ - include/ui/newtilesetdialog.h \ - include/ui/overlay.h + include/log.h FORMS += forms/mainwindow.ui \ forms/eventpropertiesframe.ui \ diff --git a/src/editor.cpp b/src/editor.cpp index 1345adb6..00f562fc 100644 --- a/src/editor.cpp +++ b/src/editor.cpp @@ -23,6 +23,7 @@ Editor::Editor(Ui::MainWindow* ui) this->settings = new Settings(); this->playerViewRect = new MovableRect(&this->settings->playerViewRectEnabled, 30 * 8, 20 * 8, qRgb(255, 255, 255)); this->cursorMapTileRect = new CursorTileRect(&this->settings->cursorTileRectEnabled, qRgb(255, 255, 255)); + this->map_ruler = new MapRuler(); /// Instead of updating the selected events after every single undo action /// (eg when the user rolls back several at once), only reselect events when @@ -41,6 +42,7 @@ Editor::~Editor() delete this->settings; delete this->playerViewRect; delete this->cursorMapTileRect; + delete this->map_ruler; closeProject(); } @@ -1119,7 +1121,14 @@ void Editor::mouseEvent_map(QGraphicsSceneMouseEvent *event, MapPixmapItem *item } } } else if (obj_edit_mode == "select") { - // do nothing here, at least for now + if (!this->map_ruler->isEnabled() && this->map_ruler->mousePressed(event->buttons())) { + this->map_ruler->setAnchor(x, y); + } else if (event->type() == QEvent::GraphicsSceneMouseRelease + && !this->map_ruler->mousePressed(event->buttons())) { + this->map_ruler->endAnchor(); + } else if (this->map_ruler->isEnabled()) { + this->map_ruler->setEndPos(x, y); + } } else if (obj_edit_mode == "shift" && item->map) { static QPoint selection_origin; static unsigned actionId = 0; @@ -1217,6 +1226,7 @@ bool Editor::displayMap() { delete map_item; scene->removeItem(this->playerViewRect); scene->removeItem(this->cursorMapTileRect); + scene->removeItem(this->map_ruler); } displayMetatileSelector(); @@ -1233,8 +1243,10 @@ bool Editor::displayMap() { this->playerViewRect->setZValue(1000); this->cursorMapTileRect->setZValue(1001); + this->map_ruler->setZValue(1002); scene->addItem(this->playerViewRect); scene->addItem(this->cursorMapTileRect); + scene->addItem(this->map_ruler); if (map_item) { map_item->setVisible(false); diff --git a/src/ui/draggablepixmapitem.cpp b/src/ui/draggablepixmapitem.cpp index 1743ab50..3ae3cca4 100644 --- a/src/ui/draggablepixmapitem.cpp +++ b/src/ui/draggablepixmapitem.cpp @@ -1,8 +1,7 @@ #include "draggablepixmapitem.h" - #include "editor.h" - #include "editcommands.h" +#include "mapruler.h" static unsigned currentActionId = 0; @@ -57,9 +56,15 @@ void DraggablePixmapItem::bindToUserData(QComboBox *combo, QString key) { } void DraggablePixmapItem::mousePressEvent(QGraphicsSceneMouseEvent *mouse) { + int x = static_cast(mouse->pos().x() + this->pos().x()) / 16; + int y = static_cast(mouse->pos().y() + this->pos().y()) / 16; + if (mouse->buttons() & this->editor->map_ruler->acceptedMouseButtons()) { + this->editor->map_ruler->setAnchor(x, y); + return; + } active = true; - last_x = static_cast(mouse->pos().x() + this->pos().x()) / 16; - last_y = static_cast(mouse->pos().y() + this->pos().y()) / 16; + last_x = x; + last_y = y; this->editor->selectMapEvent(this, mouse->modifiers() & Qt::ControlModifier); this->editor->selectingEvent = true; } @@ -76,7 +81,9 @@ void DraggablePixmapItem::mouseMoveEvent(QGraphicsSceneMouseEvent *mouse) { int x = static_cast(mouse->pos().x() + this->pos().x()) / 16; int y = static_cast(mouse->pos().y() + this->pos().y()) / 16; emit this->editor->map_item->hoveredMapMetatileChanged(x, y); - if (x != last_x || y != last_y) { + if (this->editor->map_ruler->isEnabled()) { + this->editor->map_ruler->setEndPos(x, y); + } else if (x != last_x || y != last_y) { QList selectedEvents; if (editor->selected_events->contains(this)) { for (DraggablePixmapItem *item : *editor->selected_events) { @@ -92,9 +99,14 @@ void DraggablePixmapItem::mouseMoveEvent(QGraphicsSceneMouseEvent *mouse) { } } -void DraggablePixmapItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *) { - active = false; - currentActionId++; +void DraggablePixmapItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouse) { + if (!(mouse->buttons() & this->editor->map_ruler->acceptedMouseButtons())) { + this->editor->map_ruler->endAnchor(); + } + if (!this->editor->map_ruler->isEnabled()) { + active = false; + currentActionId++; + } } void DraggablePixmapItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *) { diff --git a/src/ui/mapruler.cpp b/src/ui/mapruler.cpp new file mode 100644 index 00000000..c1b74a25 --- /dev/null +++ b/src/ui/mapruler.cpp @@ -0,0 +1,94 @@ +#include "mapruler.h" + +#include +#include +#include + +int MapRuler::padding = 24; +int MapRuler::thickness = 3; + + +void MapRuler::init() { + setVisible(false); + setEnabled(false); + setPoints(QPoint(), QPoint()); + xRuler = QRect(); + yRuler = QRect(); + widthTextBox = QRect(); + heightTextBox = QRect(); +} + +QRectF MapRuler::boundingRect() const { + return QRectF(-padding, -padding, pixWidth() + padding * 2, pixHeight() + padding * 2); +} + +QPainterPath MapRuler::shape() const { + QPainterPath ruler; + ruler.setFillRule(Qt::WindingFill); + ruler.addRect(xRuler); + ruler.addRect(yRuler); + ruler = ruler.simplified(); + return ruler; +} + +void MapRuler::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) { + painter->setPen(exteriorColor); + painter->setBrush(QBrush(interiorColor)); + painter->drawPath(shape()); + painter->drawText(widthTextBox, Qt::AlignCenter, QString("%1").arg(width())); + painter->drawText(heightTextBox, Qt::AlignCenter, QString("%1").arg(height())); +} + +void MapRuler::setAnchor(const QPoint &tilePos) { + setEnabled(true); + setPoints(tilePos, tilePos); + updateShape(); + setVisible(true); +} + +void MapRuler::endAnchor() { + setVisible(false); + setEnabled(false); + prepareGeometryChange(); + init(); +} + +void MapRuler::setEndPos(const QPoint &tilePos) { + if (!isEnabled() || (tilePos == endPos() && tilePos != anchor())) + return; + prepareGeometryChange(); + setP2(tilePos); + updateShape(); +} + +void MapRuler::updateShape() { + setPos(QPoint(left() * 16 + 7, top() * 16 + 7)); + /* Determines what quadrant the ruler exists in, relative to the anchor point. The anchor point + * is the top-left corner of the metatile the ruler starts in, so a zero-length(s) ruler is + * treated as being in the bottom-right quadrant from the anchor point. */ + if (deltaX() < 0 && deltaY() < 0) { + // Top-left + xRuler = QRect(0, pixHeight(), pixWidth() + thickness, thickness); + yRuler = QRect(0, 0, thickness, pixHeight() + thickness); + widthTextBox = QRect(0, pixHeight(), pixWidth(), padding); + heightTextBox = QRect(-padding, 0, padding, pixHeight()); + } else if (deltaX() < 0) { + // Bottom-left + xRuler = QRect(0, 0, pixWidth() + thickness, thickness); + yRuler = QRect(0, 0, thickness, pixHeight() + thickness); + widthTextBox = QRect(0, -padding, pixWidth(), padding); + heightTextBox = QRect(-padding, 0, padding, pixHeight()); + } else if (deltaY() < 0) { + // Top-right + xRuler = QRect(0, pixHeight(), pixWidth() + thickness, thickness); + yRuler = QRect(pixWidth(), 0, thickness, pixHeight() + thickness); + widthTextBox = QRect(0, pixHeight(), pixWidth(), padding); + heightTextBox = QRect(pixWidth(), 0, padding, pixHeight()); + } else { + // Bottom-right + xRuler = QRect(0, 0, pixWidth() + thickness, thickness); + yRuler = QRect(pixWidth(), 0, thickness, pixHeight() + thickness); + widthTextBox = QRect(0, -padding, pixWidth(), padding); + heightTextBox = QRect(pixWidth(), 0, padding, pixHeight()); + } +} From 9565b677d2e24f2ad27988423c2d7c47b22f2303 Mon Sep 17 00:00:00 2001 From: BigBahss Date: Fri, 25 Sep 2020 11:56:02 -0400 Subject: [PATCH 2/9] Add tick marks to MapRuler --- include/ui/mapruler.h | 1 + src/ui/mapruler.cpp | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/include/ui/mapruler.h b/include/ui/mapruler.h index 11adc535..1fd97d84 100644 --- a/include/ui/mapruler.h +++ b/include/ui/mapruler.h @@ -57,6 +57,7 @@ public: private: QRect xRuler; QRect yRuler; + QLineF cornerTick; QRect widthTextBox; QRect heightTextBox; QColor interiorColor; diff --git a/src/ui/mapruler.cpp b/src/ui/mapruler.cpp index c1b74a25..f60f992b 100644 --- a/src/ui/mapruler.cpp +++ b/src/ui/mapruler.cpp @@ -28,6 +28,10 @@ QPainterPath MapRuler::shape() const { ruler.addRect(xRuler); ruler.addRect(yRuler); ruler = ruler.simplified(); + for (int x = 17.5; x < pixWidth(); x += 16) + ruler.addRect(x, xRuler.y(), 0, thickness); + for (int y = 17.5; y < pixHeight(); y += 16) + ruler.addRect(yRuler.x(), y, thickness, 0); return ruler; } @@ -35,6 +39,8 @@ void MapRuler::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidge painter->setPen(exteriorColor); painter->setBrush(QBrush(interiorColor)); painter->drawPath(shape()); + if (width() && height()) + painter->drawLine(cornerTick); painter->drawText(widthTextBox, Qt::AlignCenter, QString("%1").arg(width())); painter->drawText(heightTextBox, Qt::AlignCenter, QString("%1").arg(height())); } @@ -70,24 +76,28 @@ void MapRuler::updateShape() { // Top-left xRuler = QRect(0, pixHeight(), pixWidth() + thickness, thickness); yRuler = QRect(0, 0, thickness, pixHeight() + thickness); + cornerTick = QLineF(yRuler.x() + 0.5, xRuler.y() + thickness - 0.5, yRuler.x() + thickness, xRuler.y()); widthTextBox = QRect(0, pixHeight(), pixWidth(), padding); heightTextBox = QRect(-padding, 0, padding, pixHeight()); } else if (deltaX() < 0) { // Bottom-left xRuler = QRect(0, 0, pixWidth() + thickness, thickness); yRuler = QRect(0, 0, thickness, pixHeight() + thickness); + cornerTick = QLineF(xRuler.x() + 0.5, xRuler.y() + 0.5, xRuler.x() + thickness, xRuler.y() + thickness); widthTextBox = QRect(0, -padding, pixWidth(), padding); heightTextBox = QRect(-padding, 0, padding, pixHeight()); } else if (deltaY() < 0) { // Top-right xRuler = QRect(0, pixHeight(), pixWidth() + thickness, thickness); yRuler = QRect(pixWidth(), 0, thickness, pixHeight() + thickness); + cornerTick = QLineF(yRuler.x(), xRuler.y(), yRuler.x() + thickness - 0.5, xRuler.y() + thickness - 0.5); widthTextBox = QRect(0, pixHeight(), pixWidth(), padding); heightTextBox = QRect(pixWidth(), 0, padding, pixHeight()); } else { // Bottom-right xRuler = QRect(0, 0, pixWidth() + thickness, thickness); yRuler = QRect(pixWidth(), 0, thickness, pixHeight() + thickness); + cornerTick = QLineF(yRuler.x(), yRuler.y() + thickness, yRuler.x() + thickness - 0.5, yRuler.y() + 0.5); widthTextBox = QRect(0, -padding, pixWidth(), padding); heightTextBox = QRect(pixWidth(), 0, padding, pixHeight()); } From 84f920bb034e79a094f9c7bc2e616deb5af8aa8f Mon Sep 17 00:00:00 2001 From: BigBahss Date: Sun, 27 Sep 2020 12:17:12 -0400 Subject: [PATCH 3/9] Add static Metatile::coordFromPixmapCoord() --- include/core/metatile.h | 2 ++ src/core/metatile.cpp | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/include/core/metatile.h b/include/core/metatile.h index 77a3c687..27d515ba 100644 --- a/include/core/metatile.h +++ b/include/core/metatile.h @@ -3,6 +3,7 @@ #include "tile.h" #include +#include #include class Metatile @@ -20,6 +21,7 @@ public: Metatile *copy(); void copyInPlace(Metatile*); static int getBlockIndex(int); + static QPoint coordFromPixmapCoord(const QPointF &pixelCoord); }; #endif // METATILE_H diff --git a/src/core/metatile.cpp b/src/core/metatile.cpp index 7bf3030d..e870dcad 100644 --- a/src/core/metatile.cpp +++ b/src/core/metatile.cpp @@ -39,3 +39,9 @@ int Metatile::getBlockIndex(int index) { return index - Project::getNumMetatilesPrimary(); } } + +QPoint Metatile::coordFromPixmapCoord(const QPointF &pixelCoord) { + int x = static_cast(pixelCoord.x()) / 16; + int y = static_cast(pixelCoord.y()) / 16; + return QPoint(x, y); +} From 39aa4202655ee9a6a5dc17aa3b7e6fc9f31bc1d6 Mon Sep 17 00:00:00 2001 From: BigBahss Date: Fri, 2 Oct 2020 12:12:19 -0400 Subject: [PATCH 4/9] Turn MapRuler dimensions into a mouse-tracking tooltip, and show in status bar --- include/editor.h | 2 +- include/ui/mappixmapitem.h | 2 +- include/ui/mapruler.h | 39 +++++++------- src/editor.cpp | 51 +++++++++++------- src/mainwindow.cpp | 3 ++ src/ui/draggablepixmapitem.cpp | 48 ++++++++--------- src/ui/mappixmapitem.cpp | 4 +- src/ui/mapruler.cpp | 97 +++++++++++++++++++++++----------- 8 files changed, 147 insertions(+), 99 deletions(-) diff --git a/include/editor.h b/include/editor.h index 72b94f89..d562f20f 100644 --- a/include/editor.h +++ b/include/editor.h @@ -195,7 +195,7 @@ private slots: void onHoveredMovementPermissionCleared(); void onHoveredMetatileSelectionChanged(uint16_t); void onHoveredMetatileSelectionCleared(); - void onHoveredMapMetatileChanged(int, int); + void onHoveredMapMetatileChanged(const QPointF &scenePos, const QPoint &screenPos); void onHoveredMapMetatileCleared(); void onHoveredMapMovementPermissionChanged(int, int); void onHoveredMapMovementPermissionCleared(); diff --git a/include/ui/mappixmapitem.h b/include/ui/mappixmapitem.h index e8a1cd1c..a6ed0ab9 100644 --- a/include/ui/mappixmapitem.h +++ b/include/ui/mappixmapitem.h @@ -89,7 +89,7 @@ signals: void startPaint(QGraphicsSceneMouseEvent *, MapPixmapItem *); void endPaint(QGraphicsSceneMouseEvent *, MapPixmapItem *); void mouseEvent(QGraphicsSceneMouseEvent *, MapPixmapItem *); - void hoveredMapMetatileChanged(int x, int y); + void hoveredMapMetatileChanged(const QPointF &scenePos, const QPoint &screenPos); void hoveredMapMetatileCleared(); protected: diff --git a/include/ui/mapruler.h b/include/ui/mapruler.h index 1fd97d84..7d0be579 100644 --- a/include/ui/mapruler.h +++ b/include/ui/mapruler.h @@ -9,8 +9,9 @@ class MapRuler : public QGraphicsItem, private QLine { public: - MapRuler(QColor interior = Qt::yellow, QColor exterior = Qt::black) - : interiorColor(interior), exteriorColor(exterior) + MapRuler(QColor innerColor = Qt::yellow, QColor borderColor = Qt::black) : + innerColor(innerColor), + borderColor(borderColor) { init(); setAcceptedMouseButtons(Qt::RightButton); @@ -20,17 +21,13 @@ public: void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) override; QPainterPath shape() const override; - // Anchor the ruler on metatile 'tilePos' and show the ruler - void setAnchor(const QPoint &tilePos); - // Anchor the ruler on metatile (tileX,tileY) and show the ruler - void setAnchor(int tileX, int tileY) { setAnchor(QPoint(tileX, tileY)); } - // Release the ruler anchor and hide the ruler + // Anchor the ruler and make it visible + void setAnchor(const QPointF &scenePos, const QPoint &screenPos); + // Release the anchor and hide the ruler void endAnchor(); - // Set the ruler end point to metatile 'tilePos' and repaint - void setEndPos(const QPoint &tilePos); - // Set the ruler end point to metatile (tileX, tileY) and repaint - void setEndPos(int tileX, int tileY) { setEndPos(QPoint(tileX, tileY)); } - + // Set the end point and repaint + void setEndPos(const QPointF &scenePos, const QPoint &screenPos); + // Ruler start point in metatiles QPoint anchor() const { return QLine::p1(); } // Ruler end point in metatiles @@ -52,21 +49,25 @@ public: // Ruler height in map pixels int pixHeight() const { return height() * 16; } - bool mousePressed(Qt::MouseButtons buttons) { return buttons & acceptedMouseButtons(); } + bool isMousePressed(QGraphicsSceneMouseEvent *event) const; + bool isAnchored() const { return anchored; } + + bool locked; + QString statusMessage; private: + QColor innerColor; + QColor borderColor; QRect xRuler; QRect yRuler; QLineF cornerTick; - QRect widthTextBox; - QRect heightTextBox; - QColor interiorColor; - QColor exteriorColor; + bool anchored; - static int padding; static int thickness; - void updateShape(); + void showDimensions(const QPoint &screenPos); + void hideDimensions() const; + void updateGeometry(); }; #endif // MAPRULER_H diff --git a/src/editor.cpp b/src/editor.cpp index 00f562fc..368dd753 100644 --- a/src/editor.cpp +++ b/src/editor.cpp @@ -889,23 +889,31 @@ void Editor::onSelectedMetatilesChanged() { this->redrawCurrentMetatilesSelection(); } -void Editor::onHoveredMapMetatileChanged(int x, int y) { - this->playerViewRect->updateLocation(x, y); - this->cursorMapTileRect->updateLocation(x, y); +void Editor::onHoveredMapMetatileChanged(const QPointF &scenePos, const QPoint &screenPos) { + QPoint pos = Metatile::coordFromPixmapCoord(scenePos); + this->playerViewRect->updateLocation(pos.x(), pos.y()); + this->cursorMapTileRect->updateLocation(pos.x(), pos.y()); + if (map_item->paintingMode == MapPixmapItem::PaintMode::Metatiles - && x >= 0 && x < map->getWidth() && y >= 0 && y < map->getHeight()) { - int blockIndex = y * map->getWidth() + x; + && pos.x() >= 0 && pos.x() < map->getWidth() && pos.y() >= 0 && pos.y() < map->getHeight()) { + int blockIndex = pos.y() * map->getWidth() + pos.x(); int metatileId = map->layout->blockdata->blocks->at(blockIndex).tile; this->ui->statusBar->showMessage(QString("X: %1, Y: %2, %3, Scale = %4x") - .arg(x) - .arg(y) + .arg(pos.x()) + .arg(pos.y()) .arg(getMetatileDisplayMessage(metatileId)) .arg(QString::number(pow(scale_base, scale_exp), 'g', 2))); } else if (map_item->paintingMode == MapPixmapItem::PaintMode::EventObjects - && x >= 0 && x < map->getWidth() && y >= 0 && y < map->getHeight()) { + && pos.x() >= 0 && pos.x() < map->getWidth() && pos.y() >= 0 && pos.y() < map->getHeight()) { this->ui->statusBar->showMessage(QString("X: %1, Y: %2") - .arg(x) - .arg(y)); + .arg(pos.x()) + .arg(pos.y())); + if (this->map_ruler->isAnchored()) { + this->map_ruler->setEndPos(scenePos, screenPos); + this->ui->statusBar->showMessage( + this->ui->statusBar->currentMessage() + "; " + this->map_ruler->statusMessage + ); + } } } @@ -915,6 +923,9 @@ void Editor::onHoveredMapMetatileCleared() { if (map_item->paintingMode == MapPixmapItem::PaintMode::Metatiles || map_item->paintingMode == MapPixmapItem::PaintMode::EventObjects) { this->ui->statusBar->clearMessage(); + if (this->map_ruler->isAnchored()) { + this->ui->statusBar->showMessage(this->map_ruler->statusMessage); + } } } @@ -1121,13 +1132,15 @@ void Editor::mouseEvent_map(QGraphicsSceneMouseEvent *event, MapPixmapItem *item } } } else if (obj_edit_mode == "select") { - if (!this->map_ruler->isEnabled() && this->map_ruler->mousePressed(event->buttons())) { - this->map_ruler->setAnchor(x, y); - } else if (event->type() == QEvent::GraphicsSceneMouseRelease - && !this->map_ruler->mousePressed(event->buttons())) { - this->map_ruler->endAnchor(); - } else if (this->map_ruler->isEnabled()) { - this->map_ruler->setEndPos(x, y); + if (!this->map_ruler->isAnchored() && this->map_ruler->isMousePressed(event)) { + this->map_ruler->setAnchor(event->scenePos(), event->screenPos()); + } else if (this->map_ruler->isAnchored()) { + if (event->buttons() & Qt::LeftButton) + this->map_ruler->locked = !this->map_ruler->locked; + if (this->map_ruler->isMousePressed(event)) + this->map_ruler->endAnchor(); + else + this->map_ruler->setEndPos(event->scenePos(), event->screenPos()); } } else if (obj_edit_mode == "shift" && item->map) { static QPoint selection_origin; @@ -1292,8 +1305,8 @@ void Editor::displayMapMetatiles() { this, SLOT(onMapStartPaint(QGraphicsSceneMouseEvent*,MapPixmapItem*))); connect(map_item, SIGNAL(endPaint(QGraphicsSceneMouseEvent*,MapPixmapItem*)), this, SLOT(onMapEndPaint(QGraphicsSceneMouseEvent*,MapPixmapItem*))); - connect(map_item, SIGNAL(hoveredMapMetatileChanged(int, int)), - this, SLOT(onHoveredMapMetatileChanged(int, int))); + connect(map_item, SIGNAL(hoveredMapMetatileChanged(const QPointF&, const QPoint&)), + this, SLOT(onHoveredMapMetatileChanged(const QPointF&, const QPoint&))); connect(map_item, SIGNAL(hoveredMapMetatileCleared()), this, SLOT(onHoveredMapMetatileCleared())); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index ee1bd97e..e44753f7 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1346,6 +1346,9 @@ void MainWindow::on_mainTabBar_tabBarClicked(int index) if (projectConfig.getEncounterJsonActive()) editor->saveEncounterTabData(); } + if (index != 1) { + editor->map_ruler->endAnchor(); + } } void MainWindow::on_actionZoom_In_triggered() { diff --git a/src/ui/draggablepixmapitem.cpp b/src/ui/draggablepixmapitem.cpp index 3ae3cca4..a293aba6 100644 --- a/src/ui/draggablepixmapitem.cpp +++ b/src/ui/draggablepixmapitem.cpp @@ -2,6 +2,7 @@ #include "editor.h" #include "editcommands.h" #include "mapruler.h" +#include "metatile.h" static unsigned currentActionId = 0; @@ -56,17 +57,20 @@ void DraggablePixmapItem::bindToUserData(QComboBox *combo, QString key) { } void DraggablePixmapItem::mousePressEvent(QGraphicsSceneMouseEvent *mouse) { - int x = static_cast(mouse->pos().x() + this->pos().x()) / 16; - int y = static_cast(mouse->pos().y() + this->pos().y()) / 16; - if (mouse->buttons() & this->editor->map_ruler->acceptedMouseButtons()) { - this->editor->map_ruler->setAnchor(x, y); - return; - } active = true; - last_x = x; - last_y = y; + QPoint pos = Metatile::coordFromPixmapCoord(mouse->scenePos()); + last_x = pos.x(); + last_y = pos.y(); this->editor->selectMapEvent(this, mouse->modifiers() & Qt::ControlModifier); this->editor->selectingEvent = true; + if (!this->editor->map_ruler->isAnchored() && this->editor->map_ruler->isMousePressed(mouse)) { + this->editor->map_ruler->setAnchor(mouse->scenePos(), mouse->screenPos()); + } else if (this->editor->map_ruler->isAnchored()) { + if (mouse->buttons() & Qt::LeftButton) + this->editor->map_ruler->locked = !this->editor->map_ruler->locked; + if (this->editor->map_ruler->isMousePressed(mouse)) + this->editor->map_ruler->endAnchor(); + } } void DraggablePixmapItem::move(int x, int y) { @@ -78,12 +82,11 @@ void DraggablePixmapItem::move(int x, int y) { void DraggablePixmapItem::mouseMoveEvent(QGraphicsSceneMouseEvent *mouse) { if (active) { - int x = static_cast(mouse->pos().x() + this->pos().x()) / 16; - int y = static_cast(mouse->pos().y() + this->pos().y()) / 16; - emit this->editor->map_item->hoveredMapMetatileChanged(x, y); - if (this->editor->map_ruler->isEnabled()) { - this->editor->map_ruler->setEndPos(x, y); - } else if (x != last_x || y != last_y) { + QPoint pos = Metatile::coordFromPixmapCoord(mouse->scenePos()); + emit this->editor->map_item->hoveredMapMetatileChanged(mouse->scenePos(), mouse->screenPos()); + if (this->editor->map_ruler->isAnchored()) { + this->editor->map_ruler->setEndPos(mouse->scenePos(), mouse->screenPos()); + } else if (pos.x() != last_x || pos.y() != last_y) { QList selectedEvents; if (editor->selected_events->contains(this)) { for (DraggablePixmapItem *item : *editor->selected_events) { @@ -92,21 +95,16 @@ void DraggablePixmapItem::mouseMoveEvent(QGraphicsSceneMouseEvent *mouse) { } else { selectedEvents.append(this->event); } - editor->map->editHistory.push(new EventMove(selectedEvents, x - last_x, y - last_y, currentActionId)); - last_x = x; - last_y = y; + editor->map->editHistory.push(new EventMove(selectedEvents, pos.x() - last_x, pos.y() - last_y, currentActionId)); + last_x = pos.x(); + last_y = pos.y(); } } } -void DraggablePixmapItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouse) { - if (!(mouse->buttons() & this->editor->map_ruler->acceptedMouseButtons())) { - this->editor->map_ruler->endAnchor(); - } - if (!this->editor->map_ruler->isEnabled()) { - active = false; - currentActionId++; - } +void DraggablePixmapItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *) { + active = false; + currentActionId++; } void DraggablePixmapItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *) { diff --git a/src/ui/mappixmapitem.cpp b/src/ui/mappixmapitem.cpp index 60555d84..537a5ddf 100644 --- a/src/ui/mappixmapitem.cpp +++ b/src/ui/mappixmapitem.cpp @@ -742,7 +742,7 @@ void MapPixmapItem::draw(bool ignoreCache) { void MapPixmapItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event) { int x = static_cast(event->pos().x()) / 16; int y = static_cast(event->pos().y()) / 16; - emit this->hoveredMapMetatileChanged(x, y); + emit this->hoveredMapMetatileChanged(event->scenePos(), event->screenPos()); if (this->settings->betterCursors && this->paintingMode != MapPixmapItem::PaintMode::Disabled) { setCursor(this->settings->mapCursor); } @@ -769,7 +769,7 @@ void MapPixmapItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { void MapPixmapItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { int x = static_cast(event->pos().x()) / 16; int y = static_cast(event->pos().y()) / 16; - emit this->hoveredMapMetatileChanged(x, y); + emit this->hoveredMapMetatileChanged(event->scenePos(), event->screenPos()); emit mouseEvent(event, this); } void MapPixmapItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { diff --git a/src/ui/mapruler.cpp b/src/ui/mapruler.cpp index f60f992b..b3c8cd3d 100644 --- a/src/ui/mapruler.cpp +++ b/src/ui/mapruler.cpp @@ -1,25 +1,28 @@ #include "mapruler.h" +#include "metatile.h" #include +#include #include #include +#include -int MapRuler::padding = 24; int MapRuler::thickness = 3; void MapRuler::init() { setVisible(false); - setEnabled(false); setPoints(QPoint(), QPoint()); + anchored = false; + locked = false; + statusMessage = QString("Ruler: 0"); xRuler = QRect(); yRuler = QRect(); - widthTextBox = QRect(); - heightTextBox = QRect(); + cornerTick = QLine(); } QRectF MapRuler::boundingRect() const { - return QRectF(-padding, -padding, pixWidth() + padding * 2, pixHeight() + padding * 2); + return QRectF(-thickness, -thickness, pixWidth() + thickness * 2, pixHeight() + thickness * 2); } QPainterPath MapRuler::shape() const { @@ -36,69 +39,99 @@ QPainterPath MapRuler::shape() const { } void MapRuler::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) { - painter->setPen(exteriorColor); - painter->setBrush(QBrush(interiorColor)); + painter->setPen(QPen(borderColor)); + painter->setBrush(QBrush(innerColor)); painter->drawPath(shape()); - if (width() && height()) + if (deltaX() && deltaY()) painter->drawLine(cornerTick); - painter->drawText(widthTextBox, Qt::AlignCenter, QString("%1").arg(width())); - painter->drawText(heightTextBox, Qt::AlignCenter, QString("%1").arg(height())); } -void MapRuler::setAnchor(const QPoint &tilePos) { - setEnabled(true); +void MapRuler::setAnchor(const QPointF &scenePos, const QPoint &screenPos) { + anchored = true; + locked = false; + QPoint tilePos = Metatile::coordFromPixmapCoord(scenePos); setPoints(tilePos, tilePos); - updateShape(); + updateGeometry(); setVisible(true); + showDimensions(screenPos); } void MapRuler::endAnchor() { - setVisible(false); - setEnabled(false); + hideDimensions(); prepareGeometryChange(); init(); } -void MapRuler::setEndPos(const QPoint &tilePos) { - if (!isEnabled() || (tilePos == endPos() && tilePos != anchor())) +void MapRuler::setEndPos(const QPointF &scenePos, const QPoint &screenPos) { + if (locked) return; - prepareGeometryChange(); - setP2(tilePos); - updateShape(); + QPoint pos = Metatile::coordFromPixmapCoord(scenePos); + QPoint lastEndPos = endPos(); + setP2(pos); + if (pos != lastEndPos) + updateGeometry(); + showDimensions(screenPos); } -void MapRuler::updateShape() { +bool MapRuler::isMousePressed(QGraphicsSceneMouseEvent *event) const { + return event->buttons() & acceptedMouseButtons() && event->type() == QEvent::GraphicsSceneMousePress; +} + +void MapRuler::showDimensions(const QPoint &screenPos) { + // This is a hack to make the tool tip follow the cursor since it won't change position if the text is the same. + QToolTip::showText(screenPos + QPoint(16, -8), statusMessage + ' '); + QToolTip::showText(screenPos + QPoint(16, -8), statusMessage); +} + +void MapRuler::hideDimensions() const { + QToolTip::hideText(); +} + +void MapRuler::updateGeometry() { + prepareGeometryChange(); setPos(QPoint(left() * 16 + 7, top() * 16 + 7)); - /* Determines what quadrant the ruler exists in, relative to the anchor point. The anchor point - * is the top-left corner of the metatile the ruler starts in, so a zero-length(s) ruler is - * treated as being in the bottom-right quadrant from the anchor point. */ + /* Determine what quadrant the end point is in relative to the anchor point. The anchor + * point is the top-left corner of the metatile the ruler starts in, so a zero-length(s) + * ruler is considered to be in the bottom-right quadrant from the anchor point. */ if (deltaX() < 0 && deltaY() < 0) { // Top-left xRuler = QRect(0, pixHeight(), pixWidth() + thickness, thickness); yRuler = QRect(0, 0, thickness, pixHeight() + thickness); cornerTick = QLineF(yRuler.x() + 0.5, xRuler.y() + thickness - 0.5, yRuler.x() + thickness, xRuler.y()); - widthTextBox = QRect(0, pixHeight(), pixWidth(), padding); - heightTextBox = QRect(-padding, 0, padding, pixHeight()); + statusMessage = QString("Ruler: Left %1, Up %2").arg(width()).arg(height()); } else if (deltaX() < 0) { // Bottom-left xRuler = QRect(0, 0, pixWidth() + thickness, thickness); yRuler = QRect(0, 0, thickness, pixHeight() + thickness); cornerTick = QLineF(xRuler.x() + 0.5, xRuler.y() + 0.5, xRuler.x() + thickness, xRuler.y() + thickness); - widthTextBox = QRect(0, -padding, pixWidth(), padding); - heightTextBox = QRect(-padding, 0, padding, pixHeight()); + statusMessage = QString("Ruler: Left %1").arg(width()); + if (deltaY()) + statusMessage += QString(", Down %1").arg(height()); } else if (deltaY() < 0) { // Top-right xRuler = QRect(0, pixHeight(), pixWidth() + thickness, thickness); yRuler = QRect(pixWidth(), 0, thickness, pixHeight() + thickness); cornerTick = QLineF(yRuler.x(), xRuler.y(), yRuler.x() + thickness - 0.5, xRuler.y() + thickness - 0.5); - widthTextBox = QRect(0, pixHeight(), pixWidth(), padding); - heightTextBox = QRect(pixWidth(), 0, padding, pixHeight()); + statusMessage = QString("Ruler: "); + if (deltaX()) + statusMessage += QString("Right %1, ").arg(width()); + statusMessage += QString("Up %1").arg(height()); } else { // Bottom-right xRuler = QRect(0, 0, pixWidth() + thickness, thickness); yRuler = QRect(pixWidth(), 0, thickness, pixHeight() + thickness); cornerTick = QLineF(yRuler.x(), yRuler.y() + thickness, yRuler.x() + thickness - 0.5, yRuler.y() + 0.5); - widthTextBox = QRect(0, -padding, pixWidth(), padding); - heightTextBox = QRect(pixWidth(), 0, padding, pixHeight()); + statusMessage = QString("Ruler: "); + if (deltaX() || deltaY()) { + if (deltaX()) + statusMessage += QString("Right %1").arg(width()); + if (deltaY()) { + if (deltaX()) + statusMessage += ", "; + statusMessage += QString("Down: %1").arg(height()); + } + } else { + statusMessage += QString("0"); + } } } From e2dd4fb76bac22a08ea6d528178c3f74b8b74f1b Mon Sep 17 00:00:00 2001 From: BigBahss Date: Fri, 2 Oct 2020 14:06:58 -0400 Subject: [PATCH 5/9] Disable MapRuler when switching tool buttons --- src/editor.cpp | 4 ++-- src/mainwindow.cpp | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/editor.cpp b/src/editor.cpp index 368dd753..172f0f6c 100644 --- a/src/editor.cpp +++ b/src/editor.cpp @@ -1967,8 +1967,8 @@ void Editor::objectsView_onMousePress(QMouseEvent *event) { if (map_item && map_item->paintingMode != MapPixmapItem::PaintMode::EventObjects) { return; } - if (this->map_edit_mode == "paint" && event->buttons() & Qt::RightButton) { - this->map_edit_mode = "select"; + if (this->obj_edit_mode == "paint" && event->buttons() & Qt::RightButton) { + this->obj_edit_mode = "select"; this->settings->mapCursor = QCursor(); this->cursorMapTileRect->setSingleTileMode(); this->ui->toolButton_Paint->setChecked(false); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index e44753f7..e33e561d 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -2241,6 +2241,9 @@ void MainWindow::checkToolButtons() { else edit_mode = editor->obj_edit_mode; + if (edit_mode != "select" && editor->map_ruler) + editor->map_ruler->endAnchor(); + ui->toolButton_Paint->setChecked(edit_mode == "paint"); ui->toolButton_Select->setChecked(edit_mode == "select"); ui->toolButton_Fill->setChecked(edit_mode == "fill"); From fb5e35bd5f3882f12e732a4a11cd007c13cb07b3 Mon Sep 17 00:00:00 2001 From: BigBahss Date: Fri, 2 Oct 2020 15:32:22 -0400 Subject: [PATCH 6/9] Use Metatile::coordFromPixmapCoord() in all remaining cases --- include/ui/mappixmapitem.h | 2 +- src/editor.cpp | 51 +++++------ src/ui/bordermetatilespixmapitem.cpp | 11 ++- src/ui/collisionpixmapitem.cpp | 52 +++++------- src/ui/mappixmapitem.cpp | 121 +++++++++++---------------- 5 files changed, 96 insertions(+), 141 deletions(-) diff --git a/include/ui/mappixmapitem.h b/include/ui/mappixmapitem.h index a6ed0ab9..deed73d8 100644 --- a/include/ui/mappixmapitem.h +++ b/include/ui/mappixmapitem.h @@ -77,7 +77,7 @@ public: void updateMetatileSelection(QGraphicsSceneMouseEvent *event); void paintNormal(int x, int y, bool fromScriptCall = false); void lockNondominantAxis(QGraphicsSceneMouseEvent *event); - int adjustCoord(int coord, MapPixmapItem::Axis axis); + QPoint adjustCoords(QPoint pos); private: void paintSmartPath(int x, int y, bool fromScriptCall = false); diff --git a/src/editor.cpp b/src/editor.cpp index 172f0f6c..67b01d83 100644 --- a/src/editor.cpp +++ b/src/editor.cpp @@ -6,6 +6,7 @@ #include "mapconnection.h" #include "currentselectedmetatilespixmapitem.h" #include "mapsceneeventfilter.h" +#include "metatile.h" #include "montabwidget.h" #include "editcommands.h" #include @@ -1002,17 +1003,15 @@ bool Editor::setMap(QString map_name) { } void Editor::onMapStartPaint(QGraphicsSceneMouseEvent *event, MapPixmapItem *item) { - if (!(item->paintingMode == MapPixmapItem::PaintMode::Metatiles)) { + if (item->paintingMode != MapPixmapItem::PaintMode::Metatiles) { return; } - QPointF pos = event->pos(); - int x = static_cast(pos.x()) / 16; - int y = static_cast(pos.y()) / 16; + QPoint pos = Metatile::coordFromPixmapCoord(event->pos()); if (event->buttons() & Qt::RightButton && (map_edit_mode == "paint" || map_edit_mode == "fill")) { - this->cursorMapTileRect->initRightClickSelectionAnchor(x, y); + this->cursorMapTileRect->initRightClickSelectionAnchor(pos.x(), pos.y()); } else { - this->cursorMapTileRect->initAnchor(x, y); + this->cursorMapTileRect->initAnchor(pos.x(), pos.y()); } } @@ -1056,9 +1055,7 @@ void Editor::mouseEvent_map(QGraphicsSceneMouseEvent *event, MapPixmapItem *item return; } - QPointF pos = event->pos(); - int x = static_cast(pos.x()) / 16; - int y = static_cast(pos.y()) / 16; + QPoint pos = Metatile::coordFromPixmapCoord(event->pos()); if (item->paintingMode == MapPixmapItem::PaintMode::Metatiles) { if (map_edit_mode == "paint") { @@ -1075,8 +1072,7 @@ void Editor::mouseEvent_map(QGraphicsSceneMouseEvent *event, MapPixmapItem *item this->setStraightPathCursorMode(event); if (this->cursorMapTileRect->getStraightPathMode()) { item->lockNondominantAxis(event); - x = item->adjustCoord(x, MapPixmapItem::Axis::X); - y = item->adjustCoord(y, MapPixmapItem::Axis::Y); + pos = item->adjustCoords(pos); } item->paint(event); } @@ -1100,8 +1096,7 @@ void Editor::mouseEvent_map(QGraphicsSceneMouseEvent *event, MapPixmapItem *item this->setStraightPathCursorMode(event); if (this->cursorMapTileRect->getStraightPathMode()) { item->lockNondominantAxis(event); - x = item->adjustCoord(x, MapPixmapItem::Axis::X); - y = item->adjustCoord(y, MapPixmapItem::Axis::Y); + pos = item->adjustCoords(pos); } item->shift(event); } @@ -1125,7 +1120,7 @@ void Editor::mouseEvent_map(QGraphicsSceneMouseEvent *event, MapPixmapItem *item if (eventType != EventType::HealLocation) { DraggablePixmapItem * newEvent = addNewEvent(eventType); if (newEvent) { - newEvent->move(x, y); + newEvent->move(pos.x(), pos.y()); emit objectsChanged(); selectMapEvent(newEvent, false); } @@ -1151,18 +1146,18 @@ void Editor::mouseEvent_map(QGraphicsSceneMouseEvent *event, MapPixmapItem *item actionId++; } else { if (event->type() == QEvent::GraphicsSceneMousePress) { - selection_origin = QPoint(x, y); + selection_origin = QPoint(pos.x(), pos.y()); } else if (event->type() == QEvent::GraphicsSceneMouseMove) { - if (x != selection_origin.x() || y != selection_origin.y()) { - int xDelta = x - selection_origin.x(); - int yDelta = y - selection_origin.y(); + if (pos.x() != selection_origin.x() || pos.y() != selection_origin.y()) { + int xDelta = pos.x() - selection_origin.x(); + int yDelta = pos.y() - selection_origin.y(); QList selectedEvents; for (DraggablePixmapItem *item : getObjects()) { selectedEvents.append(item->event); } - selection_origin = QPoint(x, y); + selection_origin = QPoint(pos.x(), pos.y()); map->editHistory.push(new EventShift(selectedEvents, xDelta, yDelta, actionId)); } @@ -1170,8 +1165,8 @@ void Editor::mouseEvent_map(QGraphicsSceneMouseEvent *event, MapPixmapItem *item } } } - this->playerViewRect->updateLocation(x, y); - this->cursorMapTileRect->updateLocation(x, y); + this->playerViewRect->updateLocation(pos.x(), pos.y()); + this->cursorMapTileRect->updateLocation(pos.x(), pos.y()); } void Editor::mouseEvent_collision(QGraphicsSceneMouseEvent *event, CollisionPixmapItem *item) { @@ -1179,9 +1174,7 @@ void Editor::mouseEvent_collision(QGraphicsSceneMouseEvent *event, CollisionPixm return; } - QPointF pos = event->pos(); - int x = static_cast(pos.x()) / 16; - int y = static_cast(pos.y()) / 16; + QPoint pos = Metatile::coordFromPixmapCoord(event->pos()); if (map_edit_mode == "paint") { if (event->buttons() & Qt::RightButton) { @@ -1196,8 +1189,7 @@ void Editor::mouseEvent_collision(QGraphicsSceneMouseEvent *event, CollisionPixm this->setStraightPathCursorMode(event); if (this->cursorMapTileRect->getStraightPathMode()) { item->lockNondominantAxis(event); - x = item->adjustCoord(x, MapPixmapItem::Axis::X); - y = item->adjustCoord(y, MapPixmapItem::Axis::Y); + pos = item->adjustCoords(pos); } item->paint(event); } @@ -1217,13 +1209,12 @@ void Editor::mouseEvent_collision(QGraphicsSceneMouseEvent *event, CollisionPixm this->setStraightPathCursorMode(event); if (this->cursorMapTileRect->getStraightPathMode()) { item->lockNondominantAxis(event); - x = item->adjustCoord(x, MapPixmapItem::Axis::X); - y = item->adjustCoord(y, MapPixmapItem::Axis::Y); + pos = item->adjustCoords(pos); } item->shift(event); } - this->playerViewRect->updateLocation(x, y); - this->cursorMapTileRect->updateLocation(x, y); + this->playerViewRect->updateLocation(pos.x(), pos.y()); + this->cursorMapTileRect->updateLocation(pos.x(), pos.y()); } bool Editor::displayMap() { diff --git a/src/ui/bordermetatilespixmapitem.cpp b/src/ui/bordermetatilespixmapitem.cpp index c741bb53..1c34e707 100644 --- a/src/ui/bordermetatilespixmapitem.cpp +++ b/src/ui/bordermetatilespixmapitem.cpp @@ -1,22 +1,21 @@ #include "bordermetatilespixmapitem.h" #include "imageproviders.h" +#include "metatile.h" #include "editcommands.h" #include void BorderMetatilesPixmapItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { QList *selectedMetatiles = this->metatileSelector->getSelectedMetatiles(); QPoint selectionDimensions = this->metatileSelector->getSelectionDimensions(); - QPointF pos = event->pos(); - int x = static_cast(pos.x()) / 16; - int y = static_cast(pos.y()) / 16; + QPoint pos = Metatile::coordFromPixmapCoord(event->pos()); int width = map->getBorderWidth(); int height = map->getBorderHeight(); Blockdata *oldBorder = map->layout->border->copy(); - for (int i = 0; i < selectionDimensions.x() && (i + x) < width; i++) { - for (int j = 0; j < selectionDimensions.y() && (j + y) < height; j++) { - int blockIndex = (j + y) * width + (i + x); + for (int i = 0; i < selectionDimensions.x() && (i + pos.x()) < width; i++) { + for (int j = 0; j < selectionDimensions.y() && (j + pos.y()) < height; j++) { + int blockIndex = (j + pos.y()) * width + (i + pos.x()); uint16_t tile = selectedMetatiles->at(j * selectionDimensions.x() + i); (*map->layout->border->blocks)[blockIndex].tile = tile; } diff --git a/src/ui/collisionpixmapitem.cpp b/src/ui/collisionpixmapitem.cpp index 52b025b3..48b8b368 100644 --- a/src/ui/collisionpixmapitem.cpp +++ b/src/ui/collisionpixmapitem.cpp @@ -1,5 +1,6 @@ #include "collisionpixmapitem.h" #include "editcommands.h" +#include "metatile.h" void CollisionPixmapItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event) { int x = static_cast(event->pos().x()) / 16; @@ -18,11 +19,9 @@ void CollisionPixmapItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *) { } void CollisionPixmapItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { - QPointF pos = event->pos(); - int x = static_cast(pos.x()) / 16; - int y = static_cast(pos.y()) / 16; - this->paint_tile_initial_x = this->straight_path_initial_x = x; - this->paint_tile_initial_y = this->straight_path_initial_y = y; + QPoint pos = Metatile::coordFromPixmapCoord(event->pos()); + this->paint_tile_initial_x = this->straight_path_initial_x = pos.x(); + this->paint_tile_initial_y = this->straight_path_initial_y = pos.y(); emit mouseEvent(event, this); } @@ -48,25 +47,22 @@ void CollisionPixmapItem::paint(QGraphicsSceneMouseEvent *event) { } else if (map) { Blockdata *oldCollision = map->layout->blockdata->copy(); - QPointF pos = event->pos(); - int x = static_cast(pos.x()) / 16; - int y = static_cast(pos.y()) / 16; + QPoint pos = Metatile::coordFromPixmapCoord(event->pos()); // Set straight paths on/off and snap to the dominant axis when on if (event->modifiers() & Qt::ControlModifier) { this->lockNondominantAxis(event); - x = this->adjustCoord(x, MapPixmapItem::Axis::X); - y = this->adjustCoord(y, MapPixmapItem::Axis::Y); + pos = this->adjustCoords(pos); } else { this->prevStraightPathState = false; this->lockedAxis = MapPixmapItem::Axis::None; } - Block *block = map->getBlock(x, y); + Block *block = map->getBlock(pos.x(), pos.y()); if (block) { block->collision = this->movementPermissionsSelector->getSelectedCollision(); block->elevation = this->movementPermissionsSelector->getSelectedElevation(); - map->setBlock(x, y, *block, true); + map->setBlock(pos.x(), pos.y(), *block, true); } Blockdata *newCollision = map->layout->blockdata->copy(); @@ -85,12 +81,10 @@ void CollisionPixmapItem::floodFill(QGraphicsSceneMouseEvent *event) { } else if (map) { Blockdata *oldCollision = map->layout->blockdata->copy(); - QPointF pos = event->pos(); - int x = static_cast(pos.x()) / 16; - int y = static_cast(pos.y()) / 16; + QPoint pos = Metatile::coordFromPixmapCoord(event->pos()); uint16_t collision = this->movementPermissionsSelector->getSelectedCollision(); uint16_t elevation = this->movementPermissionsSelector->getSelectedElevation(); - map->floodFillCollisionElevation(x, y, collision, elevation); + map->floodFillCollisionElevation(pos.x(), pos.y(), collision, elevation); Blockdata *newCollision = map->layout->blockdata->copy(); if (newCollision->equals(oldCollision)) { @@ -107,12 +101,10 @@ void CollisionPixmapItem::magicFill(QGraphicsSceneMouseEvent *event) { this->actionId_++; } else if (map) { Blockdata *oldCollision = map->layout->blockdata->copy(); - QPointF pos = event->pos(); - int x = static_cast(pos.x()) / 16; - int y = static_cast(pos.y()) / 16; + QPoint pos = Metatile::coordFromPixmapCoord(event->pos()); uint16_t collision = this->movementPermissionsSelector->getSelectedCollision(); uint16_t elevation = this->movementPermissionsSelector->getSelectedElevation(); - map->magicFillCollisionElevation(x, y, collision, elevation); + map->magicFillCollisionElevation(pos.x(), pos.y(), collision, elevation); Blockdata *newCollision = map->layout->blockdata->copy(); if (newCollision->equals(oldCollision)) { @@ -125,26 +117,22 @@ void CollisionPixmapItem::magicFill(QGraphicsSceneMouseEvent *event) { } void CollisionPixmapItem::pick(QGraphicsSceneMouseEvent *event) { - QPointF pos = event->pos(); - int x = static_cast(pos.x()) / 16; - int y = static_cast(pos.y()) / 16; - Block *block = map->getBlock(x, y); + QPoint pos = Metatile::coordFromPixmapCoord(event->pos()); + Block *block = map->getBlock(pos.x(), pos.y()); if (block) { this->movementPermissionsSelector->select(block->collision, block->elevation); } } void CollisionPixmapItem::updateMovementPermissionSelection(QGraphicsSceneMouseEvent *event) { - QPointF pos = event->pos(); - int x = static_cast(pos.x()) / 16; - int y = static_cast(pos.y()) / 16; + QPoint pos = Metatile::coordFromPixmapCoord(event->pos()); // Snap point to within map bounds. - if (x < 0) x = 0; - if (x >= map->getWidth()) x = map->getWidth() - 1; - if (y < 0) y = 0; - if (y >= map->getHeight()) y = map->getHeight() - 1; + if (pos.x() < 0) pos.setX(0); + if (pos.x() >= map->getWidth()) pos.setX(map->getWidth() - 1); + if (pos.y() < 0) pos.setY(0); + if (pos.y() >= map->getHeight()) pos.setY(map->getHeight() - 1); - Block *block = map->getBlock(x, y); + Block *block = map->getBlock(pos.x(), pos.y()); this->movementPermissionsSelector->select(block->collision, block->elevation); } diff --git a/src/ui/mappixmapitem.cpp b/src/ui/mappixmapitem.cpp index 537a5ddf..ce4611af 100644 --- a/src/ui/mappixmapitem.cpp +++ b/src/ui/mappixmapitem.cpp @@ -1,4 +1,5 @@ #include "mappixmapitem.h" +#include "metatile.h" #include "log.h" #include "editcommands.h" @@ -10,15 +11,12 @@ void MapPixmapItem::paint(QGraphicsSceneMouseEvent *event) { if (event->type() == QEvent::GraphicsSceneMouseRelease) { actionId_++; } else { - QPointF pos = event->pos(); - int x = static_cast(pos.x()) / 16; - int y = static_cast(pos.y()) / 16; + QPoint pos = Metatile::coordFromPixmapCoord(event->pos()); // Set straight paths on/off and snap to the dominant axis when on if (event->modifiers() & Qt::ControlModifier) { this->lockNondominantAxis(event); - x = this->adjustCoord(x, MapPixmapItem::Axis::X); - y = this->adjustCoord(y, MapPixmapItem::Axis::Y); + pos = this->adjustCoords(pos); } else { this->prevStraightPathState = false; this->lockedAxis = MapPixmapItem::Axis::None; @@ -29,15 +27,15 @@ void MapPixmapItem::paint(QGraphicsSceneMouseEvent *event) { QPoint selectionDimensions = this->metatileSelector->getSelectionDimensions(); if (settings->smartPathsEnabled) { if (!shiftPressed && selectionDimensions.x() == 3 && selectionDimensions.y() == 3) { - paintSmartPath(x, y); + paintSmartPath(pos.x(), pos.y()); } else { - paintNormal(x, y); + paintNormal(pos.x(), pos.y()); } } else { if (shiftPressed && selectionDimensions.x() == 3 && selectionDimensions.y() == 3) { - paintSmartPath(x, y); + paintSmartPath(pos.x(), pos.y()); } else { - paintNormal(x, y); + paintNormal(pos.x(), pos.y()); } } } @@ -49,29 +47,26 @@ void MapPixmapItem::shift(QGraphicsSceneMouseEvent *event) { if (event->type() == QEvent::GraphicsSceneMouseRelease) { actionId_++; } else { - QPointF pos = event->pos(); - int x = static_cast(pos.x()) / 16; - int y = static_cast(pos.y()) / 16; + QPoint pos = Metatile::coordFromPixmapCoord(event->pos()); // Set straight paths on/off and snap to the dominant axis when on if (event->modifiers() & Qt::ControlModifier) { this->lockNondominantAxis(event); - x = this->adjustCoord(x, MapPixmapItem::Axis::X); - y = this->adjustCoord(y, MapPixmapItem::Axis::Y); + pos = this->adjustCoords(pos); } else { this->prevStraightPathState = false; this->lockedAxis = MapPixmapItem::Axis::None; } if (event->type() == QEvent::GraphicsSceneMousePress) { - selection_origin = QPoint(x, y); + selection_origin = QPoint(pos.x(), pos.y()); selection.clear(); } else if (event->type() == QEvent::GraphicsSceneMouseMove) { - if (x != selection_origin.x() || y != selection_origin.y()) { - int xDelta = x - selection_origin.x(); - int yDelta = y - selection_origin.y(); + if (pos.x() != selection_origin.x() || pos.y() != selection_origin.y()) { + int xDelta = pos.x() - selection_origin.x(); + int yDelta = pos.y() - selection_origin.y(); this->shift(xDelta, yDelta); - selection_origin = QPoint(x, y); + selection_origin = QPoint(pos.x(), pos.y()); selection.clear(); draw(); } @@ -286,18 +281,16 @@ void MapPixmapItem::lockNondominantAxis(QGraphicsSceneMouseEvent *event) { if (this->lockedAxis != MapPixmapItem::Axis::None || event->type() == QEvent::GraphicsSceneMouseRelease) return; - QPointF pos = event->pos(); - int x = static_cast(pos.x()) / 16; - int y = static_cast(pos.y()) / 16; + QPoint pos = Metatile::coordFromPixmapCoord(event->pos()); if (!this->prevStraightPathState) { this->prevStraightPathState = true; - this->straight_path_initial_x = x; - this->straight_path_initial_y = y; + this->straight_path_initial_x = pos.x(); + this->straight_path_initial_y = pos.y(); } // Only lock an axis when the current position != initial - int xDiff = x - this->straight_path_initial_x; - int yDiff = y - this->straight_path_initial_y; + int xDiff = pos.x() - this->straight_path_initial_x; + int yDiff = pos.y() - this->straight_path_initial_y; if (xDiff || yDiff) { if (abs(xDiff) < abs(yDiff)) { this->lockedAxis = MapPixmapItem::Axis::X; @@ -308,38 +301,36 @@ void MapPixmapItem::lockNondominantAxis(QGraphicsSceneMouseEvent *event) { } // Adjust the cooresponding coordinate when it is locked -int MapPixmapItem::adjustCoord(int coord, MapPixmapItem::Axis axis) { - if (axis == MapPixmapItem::Axis::X && this->lockedAxis == MapPixmapItem::Axis::X) { - coord = this->straight_path_initial_x; - } else if (axis == MapPixmapItem::Axis::Y && this->lockedAxis == MapPixmapItem::Axis::Y) { - coord = this->straight_path_initial_y; +QPoint MapPixmapItem::adjustCoords(QPoint pos) { + if (this->lockedAxis == MapPixmapItem::Axis::X) { + pos.setX(this->straight_path_initial_x); + } else if (this->lockedAxis == MapPixmapItem::Axis::Y) { + pos.setY(this->straight_path_initial_y); } - return coord; + return pos; } void MapPixmapItem::updateMetatileSelection(QGraphicsSceneMouseEvent *event) { - QPointF pos = event->pos(); - int x = static_cast(pos.x()) / 16; - int y = static_cast(pos.y()) / 16; + QPoint pos = Metatile::coordFromPixmapCoord(event->pos()); // Snap point to within map bounds. - if (x < 0) x = 0; - if (x >= map->getWidth()) x = map->getWidth() - 1; - if (y < 0) y = 0; - if (y >= map->getHeight()) y = map->getHeight() - 1; + if (pos.x() < 0) pos.setX(0); + if (pos.x() >= map->getWidth()) pos.setX(map->getWidth() - 1); + if (pos.y() < 0) pos.setY(0); + if (pos.y() >= map->getHeight()) pos.setY(map->getHeight() - 1); // Update/apply copied metatiles. if (event->type() == QEvent::GraphicsSceneMousePress) { - selection_origin = QPoint(x, y); + selection_origin = QPoint(pos.x(), pos.y()); selection.clear(); - selection.append(QPoint(x, y)); - Block *block = map->getBlock(x, y); + selection.append(QPoint(pos.x(), pos.y())); + Block *block = map->getBlock(pos.x(), pos.y()); this->metatileSelector->selectFromMap(block->tile, block->collision, block->elevation); } else if (event->type() == QEvent::GraphicsSceneMouseMove) { int x1 = selection_origin.x(); int y1 = selection_origin.y(); - int x2 = x; - int y2 = y; + int x2 = pos.x(); + int y2 = pos.y(); if (x1 > x2) SWAP(x1, x2); if (y1 > y2) SWAP(y1, y2); selection.clear(); @@ -369,19 +360,17 @@ void MapPixmapItem::floodFill(QGraphicsSceneMouseEvent *event) { if (event->type() == QEvent::GraphicsSceneMouseRelease) { actionId_++; } else { - QPointF pos = event->pos(); - int x = static_cast(pos.x()) / 16; - int y = static_cast(pos.y()) / 16; - Block *block = map->getBlock(x, y); + QPoint pos = Metatile::coordFromPixmapCoord(event->pos()); + Block *block = map->getBlock(pos.x(), pos.y()); QList *selectedMetatiles = this->metatileSelector->getSelectedMetatiles(); QPoint selectionDimensions = this->metatileSelector->getSelectionDimensions(); int tile = selectedMetatiles->first(); if (selectedMetatiles->count() > 1 || (block && block->tile != tile)) { bool smartPathsEnabled = event->modifiers() & Qt::ShiftModifier; if ((this->settings->smartPathsEnabled || smartPathsEnabled) && selectionDimensions.x() == 3 && selectionDimensions.y() == 3) - this->floodFillSmartPath(x, y); + this->floodFillSmartPath(pos.x(), pos.y()); else - this->floodFill(x, y); + this->floodFill(pos.x(), pos.y()); } } } @@ -392,10 +381,8 @@ void MapPixmapItem::magicFill(QGraphicsSceneMouseEvent *event) { if (event->type() == QEvent::GraphicsSceneMouseRelease) { actionId_++; } else { - QPointF pos = event->pos(); - int initialX = static_cast(pos.x()) / 16; - int initialY = static_cast(pos.y()) / 16; - this->magicFill(initialX, initialY); + QPoint initialPos = Metatile::coordFromPixmapCoord(event->pos()); + this->magicFill(initialPos.x(), initialPos.y()); } } } @@ -691,26 +678,22 @@ void MapPixmapItem::floodFillSmartPath(int initialX, int initialY, bool fromScri } void MapPixmapItem::pick(QGraphicsSceneMouseEvent *event) { - QPointF pos = event->pos(); - int x = static_cast(pos.x()) / 16; - int y = static_cast(pos.y()) / 16; - Block *block = map->getBlock(x, y); + QPoint pos = Metatile::coordFromPixmapCoord(event->pos()); + Block *block = map->getBlock(pos.x(), pos.y()); if (block) { this->metatileSelector->selectFromMap(block->tile, block->collision, block->elevation); } } void MapPixmapItem::select(QGraphicsSceneMouseEvent *event) { - QPointF pos = event->pos(); - int x = static_cast(pos.x()) / 16; - int y = static_cast(pos.y()) / 16; + QPoint pos = Metatile::coordFromPixmapCoord(event->pos()); if (event->type() == QEvent::GraphicsSceneMousePress) { - selection_origin = QPoint(x, y); + selection_origin = QPoint(pos.x(), pos.y()); selection.clear(); } else if (event->type() == QEvent::GraphicsSceneMouseMove) { if (event->buttons() & Qt::LeftButton) { selection.clear(); - selection.append(QPoint(x, y)); + selection.append(QPoint(pos.x(), pos.y())); } } else if (event->type() == QEvent::GraphicsSceneMouseRelease) { if (!selection.isEmpty()) { @@ -740,8 +723,6 @@ void MapPixmapItem::draw(bool ignoreCache) { } void MapPixmapItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event) { - int x = static_cast(event->pos().x()) / 16; - int y = static_cast(event->pos().y()) / 16; emit this->hoveredMapMetatileChanged(event->scenePos(), event->screenPos()); if (this->settings->betterCursors && this->paintingMode != MapPixmapItem::PaintMode::Disabled) { setCursor(this->settings->mapCursor); @@ -758,17 +739,13 @@ void MapPixmapItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *) { this->has_mouse = false; } void MapPixmapItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { - QPointF pos = event->pos(); - int x = static_cast(pos.x()) / 16; - int y = static_cast(pos.y()) / 16; - this->paint_tile_initial_x = this->straight_path_initial_x = x; - this->paint_tile_initial_y = this->straight_path_initial_y = y; + QPoint pos = Metatile::coordFromPixmapCoord(event->pos()); + this->paint_tile_initial_x = this->straight_path_initial_x = pos.x(); + this->paint_tile_initial_y = this->straight_path_initial_y = pos.y(); emit startPaint(event, this); emit mouseEvent(event, this); } void MapPixmapItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - int x = static_cast(event->pos().x()) / 16; - int y = static_cast(event->pos().y()) / 16; emit this->hoveredMapMetatileChanged(event->scenePos(), event->screenPos()); emit mouseEvent(event, this); } From e50d562efea3ddd1798dc51361089be146c367e1 Mon Sep 17 00:00:00 2001 From: BigBahss Date: Fri, 2 Oct 2020 22:13:59 -0400 Subject: [PATCH 7/9] Update CHANGELOG and docsrc --- CHANGELOG.md | 3 ++- docsrc/manual/editing-map-events.rst | 19 ++++++++++++++++-- .../editing-map-events/event-tool-ruler.gif | Bin 0 -> 236431 bytes docsrc/manual/shortcuts.rst | 9 +++++---- 4 files changed, 24 insertions(+), 7 deletions(-) create mode 100644 docsrc/manual/images/editing-map-events/event-tool-ruler.gif diff --git a/CHANGELOG.md b/CHANGELOG.md index 0aaeeef7..469fdaa5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ The **"Breaking Changes"** listed below are changes that have been made in the d - The New Map dialog now gives an option to specify the "Show Location Name" field. - Some new shortcuts were added in [porymap/#290](https://github.com/huderlem/porymap/pull/290). - All plain text boxes now have a clear button to delete the text. +- Add ruler tool for measuring metatile distance in events tab (Right-click to turn on/off, left-click to lock in place). ### Changed - Holding `shift` now toggles "Smart Path" drawing; when the "Smart Paths" checkbox is checked, holding `shift` will temporarily disable it. @@ -22,7 +23,7 @@ The **"Breaking Changes"** listed below are changes that have been made in the d ### Fixed - Fix a bug with the current metatile selection zoom. - Fix bug preventing the status bar from updating the current position while dragging events. -- Fix porymap icon not showing on window or panel on Linux +- Fix porymap icon not showing on window or panel on Linux. ## [4.3.1] - 2020-07-17 ### Added diff --git a/docsrc/manual/editing-map-events.rst b/docsrc/manual/editing-map-events.rst index 48602a19..4a7ee536 100644 --- a/docsrc/manual/editing-map-events.rst +++ b/docsrc/manual/editing-map-events.rst @@ -237,17 +237,32 @@ The event editing tab also extends functionality to a few of the tool buttons de A brief description and animation is listed for each of the available tools below: Pencil - When clicking on an existing event, the pencil tool will behave normally (as the standard cursor). It can also be used to "draw" events in a certain location. The event created will be a default-valued event of the same type as the currently selected event. + When clicking on an existing event, the pencil tool will behave normally (as the standard cursor). It can also be used to "draw" events in a certain location. The event created will be a default-valued event of the same type as the currently selected event. Right-clicking with the Pencil Tool will return to the Pointer tool. .. figure:: images/editing-map-events/event-tool-pencil.gif :alt: Drawing Object Events with the Pencil Tool Drawing Object Events with the Pencil Tool +Pointer + The Pointer Tool is the default tool for the event editing tab and allows you to select and move events on the map. The Pointer Tool also gives you access to the :ref:`Ruler Tool `. + Shift - You can use the shift tool to move any number of events together. When a selected event is dragged, all other selected events will move with it. When a tile with no event is clicked, all events on the map can be dragged. + You can use the Shift Tool to move any number of events together. When a selected event is dragged, all other selected events will move with it. When a tile with no event is clicked, all events on the map can be dragged. .. figure:: images/editing-map-events/event-tool-shift.gif :alt: Moving Events with the Shift Tool Moving Events with the Shift Tool + +.. _ruler-tool: + +Ruler Tool +---------- + +The Ruler Tool provides a convenient way to measure distance on the map. This is particularly useful for scripting object movement. With the Pointer Tool selected you can activate the ruler with a Right-click. With the ruler active you can drag the mouse around to extend the ruler. The ruler can be deactivated with another Right-click, or locked in place with a Left-click (Left-click again to unlock the ruler). The dimensions of the ruler are displayed in a tool-tip and in the status bar in the bottom left corner of the widnow. + +.. figure:: images/editing-map-events/event-tool-ruler.gif + :alt: Measuring metatile distance with the Ruler Tool + + Measuring metatile distance with the Ruler Tool diff --git a/docsrc/manual/images/editing-map-events/event-tool-ruler.gif b/docsrc/manual/images/editing-map-events/event-tool-ruler.gif new file mode 100644 index 0000000000000000000000000000000000000000..fdbbd12f649bd09bc63a29f6bdcb4c492a601aff GIT binary patch literal 236431 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

6p&tna(y|J`G=1&N}vH(IaNTHD+ag-%>edrH1F1 zrD&**YN@X1jHc$Q&S$HpEN&*@VYb0|$+(ItMv*1|=!bsir%7j0f~M|i=i+T@W>(ax zuHLMkYpkwod$wr2j_XJRqyrUav6kV3E@-pXtLYSE97F3_W$1<0;&tXny>4E*zU!-& zY>kG(@@wUBt=nUP7=^@a9t|0b4ANk`Y+TOl(010*_CC)Zi_=Ed)b7n&W^I@hZLK41 zPL}N+;p~E3ZP1==XWixb;p$@oX9r|ANpKu{MN)f3Ge51&d2Q~fZ05(FZtAXX>-J|f z5$-vAq@qI}Bhy#%^*uy|Xi1678ky44gYLY9>+5cB_kQms+vjVf4y)2_N4PZUiOA>1AlDWj_uyg?YHRv?9%>h1vU!ZPVkh$?aglR-F|Qjmv9WH zaI@O*qL^^i*6;^AzpIH13}7c*LLpXJ|&jZ~9pB0q3LV=JDwEaUs8QERSaSHq{_AZvfx#@z(Dq zU-Ebvb1+{;GavAY&T=-#w~aipyvZa9mUSm{_F1I$SqINrm-c73bu=l}USHC&E^n0m@<0yuWgm7jH+FJA^Kln&IUWp-RJZnMr}k-Yc9lmw zc=t1GZ!b%~_&nWlUVpEF_V(cY^+5%9n*%pwKdifX2~|sZmXG(Pr}?H&vY79;nTL9P zlW*OX*9SHApa=SI=lY-TZ*(vJc6uWEs6zR9kNQ?e`*weN53I^-;`eUScTSFrNl&M6 zIk9)lLd%eH=fzNw%>X^WH_`jc`Gij7G{4oq!qmzaFB(1@RxO`ez z?vL*_T#=)W&H0`>9O*{E!%Owb701)R_SB!n)sOeqr}@<9<;OoghnwLmHE;~{?~{4<@dnmAHmkw*kJd0Zl4g}?=9fpee8$vbjNz` z7kQpPA3DAAlxl^*5U^5@U1SV8fms?(~Z ztt`WCO_>q^+O%rdrrodstp^Wm=h9v47Ovd7dfDCu5O*)&wr~CB4ZOGSU&Dt7Cste+ zapAcsfx3h#Q!3Q2Nl(1gD)cj1(3B~I?rAyn=h0(Jn~sTEsA|wHTf4^Ux$;Y|HNlG2 ziq-5V$7mr7f6O>?aka#g^F7YIIo{`Xo$sBzS~lsRv1QY~4SQ^Mq1|6=2Y+3BYwzXN zqc_bSb@-s;ZIcE6epdK$>BFh(2asR?e|vq@5JUwU7!gRmOyp5T8y)zdLjx^HkwXtc z*pP$^4(OnT1xBc#h7Fd~Ax9X3$Y6yemYCp#8;+IZm6P=SW|m%k?Z;MQfobXAU}|*<*q2{Mr&yU` zrZwhb%Bgv#VQF%ST$_T;IVX*>-Pq)2N_9q_XjzpgJtjg8HVYs-oJdscGd|W21>e+7p!DH9Fg( zxeofMe7!pVsw=R(&Ihcm!5%9XaAdBUYMjr)I;ym#Qv0g4fVl{xNi2q#BDWv5C?dBb znK&-EFpB#vf#t4?V!Pp<%PxoN&O7U8dnTEijxX^zmXCer6y%am9jO$bmGa5xla5k4 z<-)Z!oM~{zVY_Cmn^ueQwRTSHs>j(zdoi3|Zd|gnB)3{BzC!8yV@?d$=qr@*Eh;gh z4c~exu{H}U7G)0?yf4m}{?x3+A#)7!mLHF-G|F{0Ewaffdz$prOVibIYRKxWtf94j zZEV0+gGW?2 zMu=1Y*pA}$COFXHCq5qeiDS1z#b*ud4FFs`BpV36PzoIb< zOJH(f1z(837!oj5--F@ZNG3SeNzNjuBV9#I=ei%NE{HtLoDVmby3PsFT%rTw4jBah zIw!u4iAOx05~1ihDYlM^M4S-%)K?il-EKRw)6x2l;yd86QF#AzQVFB2Z z`3m^J2F@^tcB7ylvj!Lm{xN(s%%cs*heN#qAdFL?UHaH(Dfe{^ekwd63(a#$xMebq z8wBB2OhZSRxosuPL*&P9*hf`HaE}u-WFTeO%0n(vk&XNW2I;rS`B`#oD>W0at7e$z!MBFPuM zxkYelWSb@;=Q_>VE_7xQMCBCGIW>~bdy>RK^z0_SOoJ2jc!eis6c|AzS(7#Y0?&;| z(#`MYm%rmJNuq9}TPy*YHAa^2VjR_@NBh=MrF|4yvdkzfH!4z)3dSt~?a4rc1yQDu zvS%sOAFY-N%$fbFgJ;WWF>?ewi?&cxeq07plZsTTeW|2QJE>Eds-~y{uBj_Esa1>9 zC986+n45fG{k~esu=*0HWc?|2bc#Qo_VkYT$*OR+I@PN_6|Oi`sa7MC)oiv?oECv6 zU-QY$C8{&9^VDZOC&JHux^tX_U2Hi2`Pg{k^RR=>5M=u**$llDW(lpz?QY{)nJRQC zLTckpj^fava!`{$q3Do^>eheKlub%iYHk6y+uI74w|6CPZ-blO;dZsU&;_ec ztqWgW%6F{seXo7#i(ls+t(m`FuX+0z;PKj3z~p^UNa|&v1SxnS34YOnEz;o1A!Nd? zv+#pE#9#T;WU;kE@dyS?4*bWfby#;$iT0~Kj|ugBjR z@7l&cesBJAJeO@Y>beOnadf9#)OaTM!wZd;ewHNHH2;wQJRM~7n`@5dmGdXhlj!r* z0iEY24(HB|ZfnL8y(B>wI@6PWb1qr?pf7P~Vvw3h>W6e9F6^&(>rq=AB{V_9*iWU{9;2F<2 zIOM0{_@&0Z@|M3m=4It>iY+tnls@#A{Z1^<_kGg+wNB_wKk%xjUhs*xPv&DUd$tc< z>NG!kUv1w{+^0zQ^vrq9E7I8AFCFQ^_v`N~tMlVOo%ikXy+)`$cw}?k$CTW9kL{l0 zh(%lM)s`cUx2ze&V|4cBKR^1@ZH6Z>y;O3Q{>p`IW?cM7AUjlw$>^a|x zn26(yi#&~>=1hnQRu&2-kqU;$33dw!TFwfF)9@k03o=Ly-rzyxAVut;U*TX5zSL(~ zpL$Rq?{wX2K}?d2lKU--)%6(njUU>*p5lQZ7G|Lq3I`D?m)Awi&5T{=p%vg!AWw~< zTHTC8O(B<6A*QJX;~|yf31H+EAOkP}<87fH?qOYEnjc;u8dA(32BHA{A?gw0=@}v- z&ek9D(m`{2IPWt6c z?xkk-C6Z+3|7@m45~fhD1yLF$YkuQ0gribkC1V=bY(nN_)~00chi&R+Zi2~f`etu7 zCT(AE~Ge!DxUy$BZ&ZjV8y976)Q1=XLsHc53HDaHo$_Cy*|PkoMz`0_lS&~zX>Cy|e}asRPAZ%KDr%)}s@kn7rnYH^>f@1?YL8OHxTGp{n(B6*DiEn^T(YW> zx@r-@DqPBHke+IaO`pKvM0Od}*Ocdt<*A)c$^J2+#!=U0B1y7>)hU@&%H$1k{Y|Ix zksw{_#e@n~Q7g78jkZqfs<0oN>dvwb4Y3|8U$T~!q9?kBrn>Gavw|FTJu3h*UgKq` z!OfZDiQ~6+%(ZUo$#iSh^efYxRJCR+s{kzD_^ZJR>`4*q)BG#AE^NU# zVr<2}38|hcuA*v)*y>w`?2*3e$gV2LuB@%1Y^<{EtiGVQrWv``C9slbB-Jdj@~L(` zXtR#hvUaIMjvgNWL95g>tinob#wP5@Swl+X$;Dp%#I%Aw#;x&^k=n$s6^V-0Pi5HHn)vY2`IFEFkSJ!_m?zL6ge~ z@A;H2SOg5%>8W})Z+dcRHM(w{!Y-XsDfIG**%qb?#RcOzgEOeDHhvfR8sIY_?(rHg z?;Zz7@Z`l|2n_HHfF@BPZ}`R->l@h>&mZ}19m`$F#Mdaf&iu3C!j zDJC$Hmh1tKF6FAA0vjX)525m&2J_bL-T8$6u&)15FZOaUF3K)m{t9eque_dZ#r*C_ zy0GuMQX#!B0n@Pl4)6`PZw*UE2LH(h=i>E3sP#su5Kr%&7BTcL=<|}WE}AgzB8~T| z0Qicp3Y2g8&aeNbZw}jV7T50<$L|hfF$8IG7w>Nv_wN{caT(+A8td>Ei?OwmaT=TP z8>do{-Z38Mu^!_w*F?-<7F1{@(;s8)%Ybddpw{jBomixBlH_07vDARMTqN`EB;Ri( z+g5@95!ip7S0?jteE6|N5^EvrPM-!0DT{DXfN&{4k|8%CB0I4n&(=^%G5FRp_(B6N z=dv#Af-X=pdU5h58(1g%@-SQSFAH-pYjWWdb23ZvF)OopIdd^%ax*jYG8^+Wr_?h8 z#vXUGH-9rY^J5FYs4^{TB&+m4`}017ba>HpaiR1}yL3I{^jd_ob^0`q0`))t zW^Q#h>0tf||4|`!?apZ=wYjqLfFd+lMA~=eBJo_8EdTAwMI6Pk+^NBwHbb1sbv0MF zoG*)YAC~S)9JOmWHS+v0;W;#0muvLSbzKJWI!AT1P4&L5-Yjo)G(-bnM+4(ggJDyH zM~Ah{d9}kS_EwLzSsOE2pY>vw^;fIgWmjBgGd5VK^khqRWkdF6TXti6c4%9ZP`7Go z_ajlScFgLrQU7I2xb@9SBiYQh;k`9f!|7h1233Qf?fQ0K=dMKS( z_IrbNd@nb2!*_kl_kGiMWb5~6A9rUbw{+w8en0nsyLWyQcz;Ltd`pi{o2&$XvxBd8 zglp%;jmJ~BA&hk?QtP(!em8;oA}r5WFDhGz=T|V^BZ{ZEepI-jTsU?|HJuV-agcd_EQ)#^B3o7LcfI5hS+ldn0Gvv{Pq_;$1PhhM2g=lFTnxSi8D zTnnocrnw;ccs8m4kVk`%M+1=?x{j1^&8WE<3tkp0&R@r+0g;claRd3%nn+yzBamk2)-u`Xd55Mh`o&LxZuWyTA`T z!592%#!hb#33w6soyd=DQ2bZ~wO+2;5 zJg#SC#(TWia6Aat_PwR!)~jjCV}0Ipz11gY-;X`JUw6fSUE9w*&y%>$|2*4Y{LSM# zQYrn?n{U(m{oONa*Ky~^4tH3ifW7kga-fv2^KVX(BOs*13d^t_z)rhg$x}=v`BCwfQA+LLHe zolr~AvU>IDQ>R0-QjKc#X40f##ey>Gl_*$AWo@o4J98$-gbOuRlnXKA#=8;o+TDAw z?_a!h^$G?|*stM%fg#RRic=>~u3FPh9eNdOSE`%4{={rmGv}>YJ%0{8c{JtEv`%kL zEi~#+wQR|Xh5PB@vSrVnsZhb2x9(}vbSpkg(fC~du0KbKgYdUWQ~ zw`1?FJvsOA-p7MCElYqD-^_a}sc? z*~+TTES(TEFfzBqV(>P;=vwSTf(qj(BMcAP@S+Z{`!F#J3lh;h6QMH*M2kd3v97&d z%rHd&=Bsb1)9?fEDgj9w&@~84v&u&TQ4_MN9%K8lz@83FlE@{E4AMzY9;`Aa2KlS0 zLWFeV%{Snl`EtxgnfYeo`f%n-&i*<7(8J0FTu%{kkY6HYqa)Ds~- z^IUUJK>?M^Pz@0+RM9>I{Zmp#BR$klJRRl#D85cT{S?$tLA?=2Np$@01pV6L&%UR2 zyiCccm^`w|D^rb-HVGSivPcCd)V0e*DaCYBO=}d^*f%X5cGF_hBzDveBht%G zsUf0zO{*Wm8d%*_6ylajkPj>PewMJ-jhdZyB^UFQA zd~3|X_FDC^Eed_*vrmV-b+ccuU2@Y&M_A_Geg7SJnP{S~W>5TM+xVe&b{cuNe@?#d zzimaU*QS%MX=%WbzBj4cJ_q#iuyHRv_1VQYpLO&#A76Cc(_Xu0=bIm@H0c3HOK_$=rWoeC3!tz3fyF)6P~?lhtP{n{`e+9 z>J1HtWJy}~9+X74Bu!r%3z>+dXfi6MY*8y~k#4xiMJr~giW0k`U^Xl9tlk zpg1iV%1K&tmYFIC@y{Bi(HnZ zq$edwN@I4L$KViW!W7{0kmp312I-D;%a4Qf=c}hNQ=j&FTKC}65Dsuaq9i(MQq{Cn ziZ&Ig1nJ^%s7h6CdeEukJXBT-y49#^)ln{O3ry{G(|F}{oj@I;J=3LD0OE0{yh4yX z_jfC~{>`WSEUE{%>Q5DHa~Y0XlTp9gRY&zzq+VsJVxP)buu=rE4t13X(csCTUyd~6swz+Y-lN4m#mW1q$(8&OJxfZ+Rh9vFNNtj<49A; z*tBPHe5+3D<-fd^#jUY9ZsBG^SkG4Wxvo_$MkhPfs#?{Hsg164K?~jP)IV7p?b1?;hb=+@aC+ygaqva*5hpzE0OSfE8@&B1>J?X4bopmF{-$OW^*36siWE zE`l-3*#Nhey8@0dgbPfN(VDijs8#BMb+=&!cO-bX6>)57IAYt9c!nna$ZbDGD&XF= znL-`wcp(!&IdQJo7P4ZoAmh_Y8Eu%fn!Fbsd?RNU;i4|!R~dO=S&Se zm-g6tW~H!=Q(_bY`q?!MbfBF*+i15q(Z%C!qh%b#ZU4=WQo8c1$;u${ZdtD72G(tG z!)#CYOH9LwH!p7k>|q!C*exCnjBDJ^#^yMkJq`_!M?>UeukGARQVqM`9q)F}#@_ip55NCC?{}yB zNN9$=2=S1BkCFMy;aW_azcY_BrjeZv77UQY5hPj?+FZT9{}C|{_7DU{_B9>Lg?2%`9IJ8(7WGK>Q9vX zAw~bg*ncjqFZ;!pk@1Xk901$yThl!@kOP3rC`^14smDvvWrkn1QU=sFMnTn_;gP%%iaOimB=cB9^u?)_e{ z^>AoAq;TM%aHevo`hH9E zZUXyQP%z9d0b7v!>`EubFAU8vC(uyH#!v^z&_!Ud4dpP%+;9%@uTAi1lr*Qa=Nr#r=6faF_geZ=fq81&ka3}?nkmVP_CKwMR zzid#~j`26j1P6UFp@6X&4TAQFK^lo+8>(>|rV$&n(HgID8flLRf29MhQ1ZwM3!@NK z$PxP5>KtLJ9N+0x&=Cpai~3%rN`lW8y97Pt0zXy*`Q*|22%=tkf*+Mo@(Lm#PhcRW z&?pR24bSkS{vsa@BO(Q3A|aAI&f_8#qarh97zL&yMavoLEaQ@_5KGek|H$P3;LaJ+ zG8m$o< zz0pR7hiB%;KQgZ!Q{x@kF&*D!FHx~C&2b+2k}40`>_)OoOwuG#6757z zE2AYe86qaG zVl|>fZa$P2#BnupN<>NYGfebD#c}IuVmvSAAwMQQPewdNi9BOeWo9%rM@Bw%bTxUD zMpr2%>nzCttBZI805fitd=yP;G(1scH*2dm6X7>+GC1*JI5n|2kMk!V5!Ke{W-Mdj zjPh6P(r1vci2kTLx086fvq7AaO|cW`nDkCi=1Dp9PR~>SCDn61iDMbsbJyrJa|CsD z=93%r6HycOKKWB^vJEK#l*SNrLgNcUkMJlQlu|3yQh&+vGBrRObW#yhQ~y&!?NLKN zflv>^LqAkSR|7@eB}7*=DTAU!*^65+gGDRDMQs#DUzB2e6-al~PT>?uB)Pv=`wOeE2TTfypZSqQsGfOkEIJXoW zkaMNN6?ndsK*!PNBosq8bG=?e7R_+#7!*UNlFJJ8I_m@ImcxYH$Auo~U~^4LonZi@ z_3WCpEMcehDAxVxQ&BTEKjm^herQ&^4?EfPQJ*LO)#P+6isx-2wN%QK3oA8bb%j)2 zHe^}WO}oTm4VbDAJ)}4+qFwaqHcRfUOV+ndCa$3kzQ-g75P=C4%7p!vKFf+P6@WY+U;gv z=xV{IYQ;hVZoPcZ6|$mhhfjweUtQk+pcuY*J{z%eF$xEPfUMT3|IS z@V9?G!tOc|IQ13*5I`FiSQ{?j0*G^6FVS5~L4aupehv~ar*}Y01wS%aI-SRPtnPQ0 zDPV79guyKPJnEWEDVrSXqDD^znpHMsbCt^SbVJI87wRBr&lq~xhktkhf>?-iAs2qw zh>gK@>yisI^<{6@O`BMFJCJ6fSaOMHim4c8s~C%ScZ$6;g-3}Yc?4G3N?wkHdSlgA z)}@EA_l>}1jg^ElmB%P?7^7ae!!nBhp>$ZJ?D&T9*rN0}hg-Og0U062Oc!)vY{&MH z57~yxmyQvPj}M}PTVj$~qLNqQl1-w3cM^gVn1LJkf%O($-(i9?`FAcDGaJ&EN|l2x z!-LlegndSYE%%w!N?^5EkXA5~1R0VExtDp_AbdlHXSgJ5c=h@?lE2B94fTkDScrp| zh@07mlNffzi;1_`2(OrmSyr2&n45L!vS)hLTpZR&2k$IpU*^l?Qpp_Yz{mM5EIg#CWk#(Vw6*`~^ zdZ7;j+TK=fqb+~^SEK2cqX)SE0jr@BA$Wlu7^N@Zq%UBUtJEIs;iEJ9Jv#aV9TgN% z@Fs-I(sCtbaYm=pg*o}MUuV~VZc(o4<#ti{SpUnx2JE{g%yWk{8hpdF^wex8TA-l1 zskM5CxuJ*E0j$Fs9^iq9%Q_c=m=E|Mti!s8srj62cblK)iMP0%aT$y2dYqdWuf;j8 zhw7U<%}yEuFvqyPCq45?SvuK|0oD%-O;476Jt zB2pUwsk*eRT7HjtS;?EVN4u-Pdac!Atj(H;(ORwNyREt58+msYbyu(D+OGS0K?dBL z1w5}`cCWjcyZsuRy?Ci9VzAe_u(xHgu@|TnTZj-_1U3Az_b9TR_O-Vfyg8ezMSH|u z`^4Wn#Zi34G26Xi9KOrDv`?FrQaj^TTgF?Q#b11DqExo*t`hyWI9J+lFOkUi_8p27 z7jOY)OqnFYYe9V)j-2~fY-Z+|yUO*ox>4m7OSZwGo2Ry0!QX=2#;(cCI~oqzv<~^I z*?Z)8*oVQohoQOuh>al~(&32de46=tE`cd|QkGPS`g*LmO(U0!AN%&&DUHPP<wE#C8PE0Hi1~cKi4f2WbkP93&<7UY!`#s=x6E^8@$Q|L z3mo4Wy^0;&(*FX}r<35|hST}Y)63X?4pP(;yVS4U;UAvQR6QkI9qnFS$5EZuPih_3 zVaSQxfj`;*fem=qd;JoBJ!VjjCB&-OAJ^8*G^bfUTf98_AY_C`xP$!_oNM;XA>J?! z$)O9e7;;>qlM$;UPR{e3&(k`H$2zUU-59_+&(nP_pX{15&xsM8-m$*&_&t#L9ULd! zD)D{m!M^Lk{_CF!!tVl2drUB8J{8q*DBs>M!L&7`6Ne<5=ks3gnXI98VVDc?;$=PK zb7|u{-fusifkS>LM|qS@9@ufaBvhX3hPr^L@8yjzGyt>ix2)##-I`6<^TYfL_x>(? z9+CY|68L}^pn;Kz-rJ4dtIIv<`C#ecq3NGq9ppRek=W0PT?^ZN@~)oimC5T*cKDTe zu8+U}098P$znVi|`Nckq&)&?f{UX+WDOLG21is6!AN%Q5`wRQ-MV$1*U;G85@Bd!4 zW8L9N0y|A&(bT_G*kAM9A4lMyDd7JxNaBEA+VFMV8UVuDg$vrWwP<0^+`D((x-DFY z3smN;4B#0iurNxJkDGNwpRDo3(Z$?~L2l{it> zB*`=A%9KNe3VrDblu}SKm4=0R#mHp>RJ-(*soi=o=v-{?b=Uw(}sQ9D(m4^wIU7~ zG^bCV%2}39-W+=K63>}Ow?4gkPvz2EzN}i+tm4IN$CE#6{=8VS>d~fepO!uR^@iuW zm2W?OeX#NR$K%DzUMj>DSAY7gm0x1`B?!QK0Av)~MkC1tp=%Pt6jOz&T}YuuBSDo> zR-f2o4>;g7grY<5SR)WY1|g&nLn=Zf5l1%Oh+~dgg_N2kHx1<+QW&B}(+M^$r(AVE zYG++fMg>LHQo8lVBTz?uC*@Vbfufa13@W%EgAUH8SX^@nhL?ba9PmjY=PV-_VY-Bw z|KOPLHTGC!ok^AsW|?i4%bt5e78(GfSyftWJ;sJxZdCrZrK4Kr)~KVv@g|#ZjA}Y* zro9mtl5vM2hh0wHC28fU%Wc;jlhdghq*Ow^TB=T1f(MFt3)Z=7es;F^t9rqnH!OL@ zE_N(pWBT`BfO`?Bi-BMwC}ywrIXEG0vKmEXmDwsr!sp3Pt3(L3OL8QWHVt zQA8#tlp?(|zH`kr;)s(_LiGGgPeeIl1Pm|(AFPo_q?IIzle2mk<)ty5WK^t0ozL)9gGAI_R9k|G)vL z95cxTmrYG5H(n{s>7!G6>Y9)z`&MbXFL~Xm#NM6_ z_Sb4h#kRy{k1OQJy>sK-e);B}cMkgJnzz*-fO{@6BfneRC-Q=0Z$tJzgs;B*_6u;pH6lDw!Psw45!bvo>~VKuR~4J%;#-OF z;v9Qye&7&~O@7KGqn}f`@)IYbm&DdCdg-Lk?vd>v#V3Hio1_H{>a zR8L?z(jG+&nLUGX4@cf}&H9X#DoB3lg;3#`l1lKmB0|SujyqBj?T50exP(@q1kcD; zwx0NaC5ow3&?>>`9%|9)ieZV1UIOzBo=rmp2{^z35>SB!vS2{E|4^1JsU^l(s`4wd zb4)RwS&VH+a~p$L05XsP&0+)~0N0%6G@q$KLvgTc^3zTH%oao7pbVXH%hJdsCbp2d z^M1aGC;V))PP&y4S2NVxOn|tYBW2Q5HzcS)HKs`*3GOF3q(wp-M-)#I^e6Ak6)oEm zrdhJ`KFjpVM!%9#WL~s9$9yHrI@*L{CYX*-~AhG?`)1q6%8)x@N^irLOF$ zM`PMbuCUa0Luz9j^~tt09(8T@Qz}o^7|AnM$!%Oxo*nPlFLUUz1$;Dz9|3vCL0<1h zh%7}}%eu&oG*UH>td2`?Q^_Y?a-cujB>N)j2~sjFl=GA5|C07|0~amGT5&H1+0#%>XBKZ#c4?t z@>z)7QX`uM$=~IQUh0AuyezN~2*j)^_Mid)P@u6xu33>q+GUzjaB7#SnwhPJnF>0l zJ{}PvU-QY%ivBo_@{AupQD|KJ0k^kurY8x7iz`tX*@i!n=;1O}V;e&U(TU!!br{`f z=(4J=G4``X5qlUW$G0t-#x$qBoMbQ`8PrYAG^sbumQI6I)Js0Kr&I0fRhvaX(5N*u z1oUO{sG7^8rYW7EI>`qsI7-4cFtHmPoML}ZHxs^Uh2L>uYh?Hu8}9Ij1qm=h4s66D zHgQH!{7)6jm^vh}GopM~X%;Ik($v*!jx9aP|Lc_U$68TxSauEGFo)OP?ag&po_v=m zzvy=($RP>2C+Ip4kBH>>X*Yp;x1YGpn%nlU)FHLs=3Dx~L}+gN8A@{`W@)bpS7 zyd^mE+2fWb`H%Z4U$78blFe;jPaw^1n-2x&IX^UwbFOn*are%p{(Tn-}9!7&vN7^|M-?lzM!e)GzJ%1NUGwwqbaQ%@3$Lr z(S>|<93fSfmKq0BScOMBX?CrcXkIbc&B$B#&>>~ci0wq>p*xb z*b#=;TZnft@AG0&<#^>Me%Q4t<%fCmMo*X5Dw!8(Gz4ExH-Gone+pQ2M`&24XBPuk zWd*kY8Q=gEKmqorf3VkpwRd~L|Cf8d=X+e3d&B1e#W!-%SAEc@a?e+WX((H3$XjrS zhHnTdcXoZFr+qXBM~`!Z;Fp8p_j8J-P~G>3LKlcPMtMBQeo8om5XXQ5ScF$-g$wwI zlDL0asEFaEZSh$I#2#1^!Kgw24ZMbZ#=!$QHTcxBG6HyJ- z@J!Y7cVUH#fCn(oBzP^hgU8ZcS#j)IAnf7#1lT4XecL2Bmq&3P01}{j1&07qsAZrNj#t=?+bE7=9Z9T!%uiKk6gil z$W}5yM`_RqbWlQ#Aen5NgrY#3IJS5lSzyK}M3J|BIcJSKR&#=Lmq7LjO6ij|`I0i(ltu?} z65jPzrYVoUo>o%sH6OS(wq8iBCCeDqxhgrWZ+xoYdKH%lVf*2>@z{Te!kTq&ZLKsf_6P zTMSm7;4w$n*p(Dfi;0j3*%X%5bBnl`O|_Vo|5*x+#74YHc^0UQ1bUlwX=5f6a?@yN z<)>RJBZOZTxF$(XA*0S@qb77C(YVVS|Fnfyqi0=W)maVQeXHKNIyGsJum z37acAk*gSyG@4H@%9k;EkTZ%mEQuDt5n;x7n{N4dz4?&|N^_6b9l<#^T&X`HDy36O zrB!OBS1P3f|DqRI%B3>bhVSX1$i|+-)mLI#k?9GaZ%L*McBAv@mG+6B`S~yVsh`l~ zp8$%M0(zi%iFpPZmwZ~JZt08+T5@H|jEdKw@)@OF%BUB*7a5w48@d1!5CR79p^Z8p zBMN*ax|y4bqAL0kLD-@-s-rl{TcsMR)7PVC2cxQLH>|p&u46)(MdZ%~_jInh)MEZkh6R*8mW9f%i?v|JPWR)eUpoj`s zGqkAC|4Oi7p`naPsShv!15mJwp{@@Lu@Nh=b%z$UTC2>*d={Ik7@LtAJ5C%csul~f z9jmb;8?wk{77kWaM|!V1NO>$6_=muQ1oJJIk{@>$5*ArP8Xc*Sf8E zL#@|pt#o5FueAxY-a)Tg>#~Fxc?9~e$#s>u*t$0)yv%5$pj6Jn0oCmhGKQUWp)WU@r!#kwH@ie>+ z`l=TX@O41hu~|i@zuN68HNtl}o>3e8$CVyzx0h0gS*iqs6N>#|Hw%_!;V#9}~tiME| z8>;LPa4cWZoX*n>&Fn1ArjyK%tUjJh5?)cs^X$#_+!gn%LzjFdBVo_||LX~hXiNk> zx(4l8O@q)Rwb06B%Rj})5zWYsY$e@{$)2Fe^4!n#oXHfy&w#_xF$l`KJF758$~fqZ z0M*KwqROmn8mausiyAZTyw31!(*{e03u^!ZFaa3gp>o^KH;qOAL(?-Y)L(SeR;13> zyvp1+&SpHrnX3{O{m=P~6yfY>D*e)~jB@8Jz%@E866*^Z6h1Et^D{Ui`x;rGqi zH0RkH4%*s`dEbrN5qa8Yr-rJ{-sMf+1}@;s{n~7i%L_XI#eLoh?%D_b-@%R7I9}E~ ze&a2U;4j|eK;GQXUB)UFzbKu%51!wDDB&9(B;5Vo=R(>h|K5fu4&W-j+C#qL!cF8{ zzU7F)j{jG=$EbNBq86n3r}i|pgDNTG?$XO+Hqm}Nub`4 zqGEO4d+O|)>hGuLT1JJ#JbJB8n6fUNw61Tq-f*~1gu2d%c)sVno^(aW7DhgEPD+<+ zj8}%v*fi$oCS%Fl4L&sN={6Q&rA|Yup66co>)I}Mz&>BJUg+?!&jb84~u0FP+6t8yc+&=5}Uh7%c?f72r^!Mis{~qXr&Jp1*>EupV?^E!ObMT6n z@IKk_PH@+^Py zyPonezw$EQ@-+YQz3%N>IiA5 zxeJ>WrMUQa*PPGi4yfbR$@We;`pQX)K3V$G|LOLlnEIk0fT;iaZy);KdHNOWzA=Hh zkiX3&>2p|r9g1K0?7r-Bee}LL`PEhJmXEw^AN#D|{B2+R&OiG^7zVfUo^VKlZB+{jE>?=&$V^$h zvt9)o*6LTQT)k=)n-(kDs%FQsRU4LU|J$x_C&+GY$+Fu;9Ue4M&E2Snp-ZeJwYRE7j=Gpgd>t{CQJnPM$d{nmk!B_ELtmOO*5| zTcE~>ELnS6?K8FN-cE}`EjpE|U&)-|BL4iCadgeln}eQy-KuNdxk0M7&AX$;@8L6& z96wuj>XEi_8#F0iC0*>+w>r;^*>QFI%sFt#ud~Sh3-G!8^vfy|1tTFVs{|K>Fv3Vm zp|C<K7BOuaf5`h-0oztx|694s-l_M@WP7k+!-q`VsGq;9l*h z)(MZ>@JnliJo3+X=lycEO=r7x^H#TeZr6zy^6j;wJ^`uTpNBsB106Jw?6MU^J9`dk ze!cGGU0*(Un!pDh|8}{RFJJFIdFq?TZ%^Kqb{%cU_qfD`6S8rCafe)b|NjSI00lTe z0`4w!>+=!m-uFJ#bx3vIJ0JNVm=oEJPkzPIpX2zavjTQ-cfUhk1cygF){Sq3Ar#*0 z!dE(lIM0JGgkk2WcRlT4t6uTqQTzhOHbVstCp?r}Yj${$K<$l!eyf=ebttRF-EK5a zM4)Mgq`@cFFLyD-VivWyMJ{gffRj?7y#@zAl$FmmIV__Of!HCHs4+=UY+R-|*hM-H z=7uFhi7Y%n8ns%Q=fhUCgrSYxq()$paRXNK@*Bl zYKHBglY1yO8w$3FI&`5By{JU%qMUt_jF|AGUH&A2PDquLnPx2MMFwdk^x0E=`#VZN zF*?z&Rg|I`wJ1%)^38LCGd1dT-*A9hI+OAfr59XjjnZP%n&R}PI(_Ojb1K!SYSRNW z>?Ti-|LW7940VA*ohLcLdQw{wNs8}Wkr3s1(w36ZYE>LfC>y9t`~4GOsAMQrn+nzZ zFx6{*JrH2~>eRjJ^{<3IEMGGt*u^3?u#O$9TR3_@o1s;YYi$ZiNeWVOg;S;X#8g}7 z`qn<#^^|j*DnTLJSj9qyu~pHkSbrK;&(4;twe2cxgPKmz8fmGkbuDli^V;9?=di|o zEONoN%>^k^t1BetiH^y(kHBWSE30mNIt#&XON+Fn=;@%R+cfkX0v67D~=j77)#6T9Xk&A2R0yj9we0H#(^9<-e zazAOyTv4_sLkU@|AH5GaoNn#AYV(2Hm`3IAc`LVnK3(37wWlqbs`;k@N$* zqvI`WSj$tE?V>L1C*&BK)1MAYsQpVHf&H1+I~($48fxp!aA{i3O`N3N>8K8i|Ib{z zU72v81~cx0*0dP@UbuLKzQxt7y=N}UzG{bQ`@uKZ_bJ+-e=VI`?}y!Y0nD%k?QVG= zc-=0Jw^WIp?{pv9-S`%^zURH}di%QAy;k?Zfeio%6KR(5WHv$Cx#J`~yV=q9#2?dZ z9^n*@+;L5grj8u&ez*JHqo%jO?XB>4$7SN0Ws1eW>g|pt@DgaJ*70C_SG@Yu4|8!jNHlkn8~+u%%&GP z;x7Ap%N=qPkNoEg-?PvM&hmmMyzW6)I?4&Ia)aMJ>3%o*+gtATf9sv@|9rPQ;_(jn zsx+K5fxB$YUk>XM;(Y2fN8`p-7;`axJJWY`7DVrKk`>w}jtLZ&DQ3`8D?`U&=u~g20si;GaHY$2Y9ch#&u=!T_^FSOlJ|6_Y z`3u1tJVUVfKr<{s5&S_nEJGe#79o5?G;BjVtV1;vL&AVR1$;WxnYik*2_sa&&bq>; zp}gOy!3-R?4LrZ8SVK7sLN?69-a9}_d@&S^!m2~UC!|0_^h70;5gDAp+{+gryckT} zK{7Nv&6te2b4C21m{;@^B0L-M6CAa=2qp}vDdR=1x}aYK9IoOzFVrKKxFcaSomNXL zGfOWnR5M4^G}BAPbsIVaqs3X2MWM+?ZrnzoVYzFhj#k9R|8H!QZUjekJV$dZLu-V^ za%{X$s3ILgMn;N3g22Tf0wkMI#+ieg(ec7v^1f))LJs60anueY8%Kl`Jce{PvdG7o z3C2*=x`|Xmf26)xV@7}kxrKa3j~o?RbVzp$Np>7Ql0+6;#FmJp7mIAdW%Nag?8W8j z$DD&FklUvt3dCKMNnoVByg3aY6F;(JFK0AJkyFToBu9|cMrxEll=McY>^F66$8h{e zr5s7CEJ>*ZI;uQLt!zq$lgHAcEFr2#np6*#oD`SDLPoSLqZG&tD@tiJx73?Ns7yzb zyhOZQ$Hq`gA7M*G#K?OTOq-0di!{ull18SCO1rE^|FGN|tclEt5gLzaHzuQ&m5d_B zp{#-YL?IzXS%XIDOF>RFFDWcb&IF;ue96%)su~^EzcXzsYuVgB+vjQ z8l>}2_T*3XOws;qP8A)|In3tg|!oKO_9 zHVxWP5N)#Myrrtr& zYMDoNdb$V2EYGYq27SKo0m>;1N+N~RMwHFC0ZQ>iiU>@fJblFdOw&U})I?R(%t^F7 zm6YdeQ!JHJFon<9GZfRpvD4&GFkDm*YE!eaME*(`-t<;LtN7F*BPG!{sX}S#g z)S;l$7qnASJ=N-~Ro=qWdm+jP{ZdHNR3;6#`@A$j?Z8$=)?`&yR&7*X?Nbqn)b|Wk zEj`s<^}%1isFzS&7AygBkCND$qp#o0Lvg)c*O*M()+h7};klT>k)xWjQci8Zx< ztjC?D+`m;2$BWH>z1UJ@A)oA_|E)Tvjh)s>g4|MiQ!1mq#eLbBg(c*WFbJKQ?5xYZ z-NQH2Tca!8U_0HBOWogE-P3E`8+=_ojNSW~-NL9{y13oVC|$!?FwTsmIOU?kz9KwNT`kS=gms z(>>qmh2Hd4-O(M~_k~};E!?r(pX-I&?l~RD4c|>U(^@U)CieBN$TlQsL3wB)$Hs1)&D-NEi^W|Op^*-Q*DOn}p>@8l#Jzhsu zyUrEg%~iYdm0b;(14Wnfd1VcMl(Bwn(2+_P(J zVkQQQzST8|k&wQfUyxf%iUZ#iZXNNW!g=aq3;W_R_7E>NsucRwi%Xg*Q;7N{)DB&q zHrAkP&6J;W;sb?ZJG^5(&SO2qH9scDCyui{24q6E<32v*K}KZ9Fl5l7Uq8v>3z83P zZPV-8;+K@91$X1WNm;z&s4-sPmYyfQzneKWe)9R|4oMEH?CtwUgT0f=TlB+V!pF=)@4!S<#$f8VCG{*wr5~Qrfe-btXBM8{u};88 zp6Jr_Oqdg*|D2}2oF;1XA|1tsIJz$3U*hY*F6+M*Je{)Yz+Sw*7QL0$>XyE$NO)<( z228j{OpmK+n{Mo(HmX#Cjn_UApq_2QbnMvvU8J4sxM6B23g_RpqRSp_!p3aCHfzBy z?#u>l<6ds$)@-7C?#*s)=00xfzHaF*>BGzJy<6*fYHPacvYjSZj&_x!uIr`_?)0{7 zsfccqo^I`SOz5s|`u=Y6HrGj`X`Ene+=gvSY6`b3A(#{Hy>{>V#_srrZ>^3*R=h+> z42!;PzcEpe(+(wU)5n3f*7Q&rgOKg-n2Df{4G-t(KjrWdM{$P8x)6uGjwa~t>?QW5 zB4zft{{oL;k(+SjUPV-tKM3z}2bWPFuRkE4L?PEdB2Psl&p{;raULIXCqHs12N~2Z z4wt&m?h04P)$sC3;~JOov-8jxuk0BQm>jpnAZPL?hr=CT^Sgj)40j+*-rx7Q?VDEd z7H4to;s^}KEb+1Nx-|2`LvtxNK01uUG>`H&PYVejKvy+wVYuSWg!9wb@?oU&4v&ow zUzI$k8WLY|m=N(t(R35fx)9@Xx$*NaS352g^L!fawhQ!=8+1i4aztNpLgzzUA46PM zKVFaZyqop1W^-YGa9z)JUvG3;Pm4F#L@n3UE?dAjPhq@<@t7HNFel1Z*XtXH^<*dZ z|6tegVn=pE?+a$P@?ITcOFwZtkHJwdO7YtBX7|Zz&(3WJbZ-xLa6j`R#}2O~QGY*E z$P^3F?)Uu53JWL8Z)%+%UgO_bL8L+1x1n=EyjY1(4~kbEi!b&3b@=S7wogK{Ft_#@ zPp_F}%)H$0SWJ0%obRdB%YX;?Cyn{XocRH*d6!@Llkdxx@5+~VWXk;>hHpm7%}IS6 zVaTiIkFTGD&i0W{-ZrCopO5;S$I7d0NI&z#pf96ox4?(*>4g3A68awQcqfGTc+vQCQ50@l5vVDA{|P$$ z7B}^vK%KKEc@AWCr~hZDw|S|*e71i`tKa;smRJ4GcXPdO39YaFP4aqn&-k#v z__0TivQPTlU;3jw+qeJ9xYueYeM~ad(H4zxVOaUAVDw}boG=1kSx%X+_j~jRmkE@W zFxz-jR~M*xxW4C8yAFAP@Z_lk!4fA<2oxx3A;X2B9zu-xY2qgU7B716aB(Amj2t*{ z3@I|B$c`R9mP~1~q(_h{M{0zL@?}VpGF{T#XtU-?oH;G-^XA># z_aLp-vc;kzY)!5Z1Z9PQXd8EyzRzigRHkyN_nZ}-w?lCCjgAhhIVR{uB z7h#6WZFpjjUUpgCmoJe=<&$v{ncjZ1L5Wsw@!Y8+wU?v<*0vU`a2=H7vX%ao zs(X0R$LE7cCOc4rv`%U3t;LdCZc@j_IwY!;I%%GjMUMLI|AL~@8z)|1fr@RD=DDgE zTem7_uD}D6+o-OMqTB6~q~2AnrF&r-ue^HFD_p##hHCMs7^_(?!`70uD#O}Z$X2?u z78mZn;}YDm%P+$mv&=KQoN%ORPTHS95hWQdT+`~yENZ}sd>FXfn%phQqxCE9pEN_g zsLi4Q-SDJCU&^q=99Nv_zV}j@uhp!kj5K3UN1Zm*2Iq<}MG{htGpp?q?RCfNUhAa2 z?iSeY-g&dpqyRveRJf!D$O>1=X zn|41d@W6vQKI?rVCvxnQocq+ZJiXixRJVg(_44vJ-i5_?`ukq+1UNwOY#@Uh;FSh9 zxT_8t&rlge-Y3%a7A6_#J{FUbB!YH51`%$0F7!(b*91fSjqQ3a#MppL1+txyk4j)k z-S(WtIv}~OF(1?*2bs9U3^oypPxPR!Iv7PN=E{mwydoF3=*8ria5N|^$jureK5yNP zj5su!3LV(BA9})ZLlk1S26v<&BGG(RbmAVR|JX+?E=r4FRG1jymBPM}&OtNGS%7K? zJsLugFs2e(5$||JWIaTWS>)p;{n*7nUNMA)8liU_MUgN{N@E0SBO6DvNM_xzjjDuY zBXKxOYSmJfGSuC~3g^RzS@Lvr3?CxTB*$SU5m#OWxy?$z%r1n$u*86g3l-iiYT-9@LB|Q-aZuxQ&ud}e!rO%U3Ze;qx|C83#cfVX@=aNPklOFO_NIY9afAY~yHf4`V zMXFTjxm0XE)u~O@=SDM1(W)wSsv^WHQ!RScsD`9WiX>?cfpg4;Q1Xy;a!vPkn!|4j z^`Q{~YB@*4EvFSVCr5>qg~TB$ik#I36AspIgf zQLt_mvr_eHQueyp5OuU9p0!9wku}z|)^)9|NhxDrT9CyiR%@?CX=~#IQ`*MXVKil{ zPRYtsG~JagbcHLGD!VdecJ{BI%_?V!GTO}c6@$v9s%E8I-OEN7yUjJ~bfLRly>@pa zf_)2N>zdFhq4t}qZE0^QIa%QP|5Uh}La1HiOH}PzHM!UQYIgY>*dLj8u)d{~Nf(P) z$F3B&2!7=CAPW)6{u92&y{~`s>)h~icO&=gZ%913;qO|+!_U-8M@6h5(u&6eWlGHb z^!28K^sKgq+wDO;6&f1fR8u(Ct&R1vzV-j_a$Ce9lu3wb338Hl$}wZdvR4 z$#VvPx_NzTVPBfvW+t<|>pX5D%5MANa^KBb^X!xJ5tTxu7^&%A#ARw247y>7Yd^{lJ*velGNYpe`}(!RhMj z`j6JPZlJE`c-8QY|Et9(erSyoHRw62uG)DN-L}Jo?fG2$+vo0f&A?qlc(;4p>kg*9 z{~hRj*Sp{YPjsKl-SDv9z{#DCwHSZXxGQh^ys{4Vmy7-EWIu93%wFHkCnxV*0=$^~ zUV73ay~&MdI-V$I`Ka3w>nFWD#ACjB%x@c+cojXMP>*=i(+K##_dSTJ8`{2;xRk3e zrk)``Tfg+#JhHcX*Q*|Auv?$@sHMKvW6Q#D&$aWJ|GbjZKKRiW{`Bcj{o)lLY4@8O z{v8*3;?;ln;tL=D#3xbx+5dj~FW&N{iu0Wp9qCf*Sq%4Go%ivJ?#UO;EscZi-ud<3 z`VF52>K_L3|6kn+prtt9>k&lsy-W6KpG*1K?Ge=YN#JpP0`KkG{?T9l)ml_}(hN3L z4N{qi|V9~tH#ys;sexFH%2oEoO#8`2;a*D5h3@SfDsbdo*5tx8KPf6A?D@Q7p`F0<SEBYx8s{*?F?l>DIGEaqYy zmR={8qb|}SFZvoMqT@LBq9>B0pqQgPwj&^};X9sVJdR;K-r^@3V-Ye$<*iafxsxIW zr0Xf;G)7@8QDQfG;WoA+lci%GuHy#I<38#mJ8siI5~3)g;xclc68_moDr6OYV^5XG zD;^RzvS3BV;6-XAKAz)c^dn7XVt8Q14^G2Q^5jkmBcmwa+XUGABx3^70x=cGa9!Ti zT^#K(rS?&eH<|`EK4sUjnnO0FXn#fFE$By*fRMg~Gj-`i`rHGtmSJIpBw5BKT(+fL)@4&n4N*E>D>+UX?Ik%;rJgnq0BzrGB0T>$E3A24^o#PxqOJN?uHj&S-=VCpkgn z=8a&4H7Cw-=#Ua=ks4{R;AVm{C;6>tX9g#7F3?KiXBS@Fdj+Wy9VyKuX>U5IY`AD< z!swIYs5PF6gV`1=f@2tF>6&`zGJxoa&Sr_8=tZ#2mWGqoeQAQ)D2@6ipU#(<_Nk6a zr%?=oRAI=nc}ILYqXwPySgj!(5ed9Dz3umu0BJr&S{-; zq_+kLvEtdiF6%cU>%A(gYu!+@X5oyD-?}PUx=V(Ri)HjuG0j ztw`#ngQI| zHQ5vB<}L4Htwq%8txj##67MrytQD};?E#H#zLqU7 z8LfiY?nnt|?Aor7Ca&-Ht@-{f`UbB0;;!!AE&CQO{2s3SmT&IvuKl*p=~8Lr8qVtS z@7Zpw*;Y#I9**Xc6#;gY+q1fQgm2mq_q)2p!iTb1u7H{z$Z`M9k-7HdHOz_9XYYp#`jS4XJdL7Gctn}It z%<3=z#iD$vlF#5vng$S>o$&uXar~vQ3HKotGglR(a1=W+7DF)?OR*NO85m=l7;7RK zmx;w06ujKw1kNqjAPHvK%k*Rz@<0;TInR|JEjtu`ri0F-x*_WpWn-^K$j^ zG9StrQ)wD^%o+z#8$)l{t%)M?X#&9w6ChPraLalSd#q7qK zQ%PziBBf%EPBivnv_(9$23gOv`*Kw&hc}KE;RFTjYFHNP>(6hW^5~a^y74MmV9(c`}F_e^iHF6PFFQm z|1p9ZwMh|mDp!&_Z*-`Mbj!9*Q&VsSO@vFI|MXP%w0DLaI_@G%yBjADbgs5AuEH=v zqnJW7s4W$3vjo#a+YwkNHDNQWE5}wwuX06;^-`OTS^LXVQ-oUIG+d`NPtP@FAD(9a zG-pe-Wm`2{XSPjmHfeXZX@9n7OR;Fv+bH)nL(fZB=kQlY^eZa%Y&dpV&+}M2FS|}Q zYOgkEW3_O%^*(>LYil*g3^F@a^H%>UMMF|!J2g}9c5Z`k3j%k}Wm;ti9SqW)ci)`` zmPB`CL@=7S4c z&RJjgQh_(}iT8IeczEC61|~S+J$MX8|2XzG&K=yVWVb6Z+8P=q^pNYGhGtc&nd$^-}kNHnH5_pqya9jzgv2UWX z%OpnLdrTgCmo2+>@}n>2yS?vwn)SPP7Cf>Cd~_Z>zb8CU(>lZTkLZ~Altg@>hEBPI zIt49ffNOk9BK*MDBFL*_y(@gfBX`7B{Bv{r!xPcA|FF9IS!1<(T)q3uSE2$_B+2{x z!W+EFf4t83{605|vrBu?LxZ(jJGL9+NTs|$D%^uKy#-6}xyQV@Bhb2oJJsu1x@*16 zP8{%TywQNY$1}Xh=lmtp|2x{>quKi*+oydBzr8!U{n`Wl&#V0%_9M@SeBEa|j&A$Y zSMV8GJi=joi;umXv&!K+XVBMu**8AH`@G|qTi-{$#Q^@-GLFP+G}aXU*LOVPbNu(- zdYCv{#ZotBcbQ$y@igNaVNGeko)Kzo?$_3yfOc_>dB$#(0V5Rdw| z1`j?Q9Y3aPel`dB@~hzEg#E;Pw3^oY>TkF8S0wgVf9t#ThHB_`HYWI!r}kGD`A3)e zr#^ZLDC-L-u_2L2`qQj0PP)W@A~*lwlZ>JsDhrtoK!6fB@KeE001zhh;2~i{01G*A za5$0TLW&PPM7+2W|Kml75;<06C{km{g#`slk|glN2~RI!zEoL)W{H+HOT-*FP^C;s zF=y7iiBo7xqeo*V^)!@dQJ^ZJs@yphR7{*LpGK8Rm7u|i7D<8(=@9JKjA8&>K%>9M zDnwY8?Af$!J-U6XaHQFi9EAx(s7n_$ztmKyfHoMKGiTAF4K^G&Fv7eDQG(ivRjH?- zG@0gvNwuftpD-`mJkb>MQPY)SW^QWwH0q_JNtb3#8MSJnvyHlb9lLZ^ty~9MbqZSR zR^SE?!VNo@ZrrfFbA#|Yk}b?I`Mi=R$iJ$mTox1-Gt z|GWI|^vByb8+o$J%KxD=(`l;CI`io&*jB^MzuFKajW*AU15O~}dLu4E36V3)IsMAp zkh+eRV-LUeI6CQ*lvV=e!KV(yNx+>5{LH|jVpDLz%4|E(x2Pnn3ML&b{0&2|l(UP& z5=V3|yAPRc(#f|TONcMT_#&*Z!xDoguyME?C$K1yLlL#mWP|NR$v$f-#so97k-?*C zRPars;>2yv97VGeN7LfmvA7grl+lw4efkqBs*o$_$we7$)X_&Fja1S}DXrAfOPLH4 z%`qim)6C6yO7ny@Z=}=Q>4{TG;J&pC0wPfo=mR?isZ7o$k9lSAG<3fE_;DHfM6x)RvZrI_6A&yw$hS25I zQ<~ZpmDG3}baP)kp+$JWS4H#l!kws{Smj46{;$(@fAu8T*ET+u<9k0=b~t8R9ob-$ zg+y85m5DA|TPeM@@=C^3FwALZ%7x6J30>x`WL{Hr*Qj2B^f)FP&@f*C{=ETcwv~?CHf+05kKz zSAFX9tzTYsbi)}x7H7!OHr{N~lP~l5#c^vK^|}ilo99`37RYtjx$oZl@4?4BGTsB; zJZn)87u>($*_M8F6d$)fR)Vt!W&7}n2E1zZ&Hp`p;pc_C;#KH$@7t983Meh@4Gn)y z+Q0)h04WGY@KF<#9RQZG48HIsgB@H3LYNkq2kNdMyMmW!n!>55knSZdB8mW)MLc5- zC3>B!Aq{5}!yCe;hOpY9^Oh$w)}60#%*#zu0=1Q`Act8OG1NsK*hGpvks?uyl@tF2 z#s3XRaUxWlh!vxP#o}m@iw^OkL%;|XF=~a3SDa!NtGGosb`g$Wlw%m*IL0`ZaU#G% z(?u2tJLH(qGcI(I%U1ZB7Sia2i_>8aQRu7Z`4N6ZJfIN=mqbh6uYnUAWV#B;$U~Yh zk(4oHO<-t4Na9dzl$;!jiYUVyxpH+&WMC($GeHSLaF-)AS3@$mL0xz-gCGo{FQryO zPy$G2DufCP2PH~WI#QLYiewM3hDlSg5@0@DB@ZF#O>1&xjlXsxgmj+~YeNa>j{+L|PPIaXt^dj0O$q)Q zSV{8BxdcP!P7d2hpSUVvy#+3Qz8ju}fLFNWC9ZifGTii{cf9y9?o*H})U;M|t-$SHr3uvZm9l zcnwfxG+AG3%9pNn)h{HY%U2JZD#bsXZi(ZnV!<}kbBg^h=>j~f>sF7nu{AAgQ(N1| zzP7bLCUTH}YTF~zHpxSt?fg`03KCzRrd5UR}K3I43qxh6S*8`5db5RtwE*X8-Sa)r_PABihi3 zcF22)183BPn9d{K^PK@J;}_F-yEYEapV2B{9ovsc;cfJ(6|G=-Mzu&0rl3V%-JH2x z71kPZ2!*FHjSGWS1;rHWh7F}SwfRwr=M$T;>e?@rUeiA`NjA)IxNM+4yKK@1=OU@C zJZo2|cY)q9g-S)(K3C7D#Sx&nO^R+KsvB!QUU!ts4R7MHyU6dpZM*+;Zh6;x-up&! z>N-ovD+>yA{vNo#?``iR*D^%~0n0)n5%EYooY4@MIK?S0@rjQF!5Gmv#yw!%;t2bQ z#I|IIpNDL?Dx2BdE?mB;h*DG?Zko-aDEcUTkymDxR)7mo+H_UA=^OSzQ(=jKt!8?)xma`bwhBi>k5B0FurCBu>VB$8(H1h`Wh;9wO;L(U(MN( z*Y@P6ZTaR#oAQuP{m&HCG~ z9`?Jh{p=0C<=g9C;KB#^X?-tyg%gtao*lDN(f)L$yIt;ahda>Q9`!Z{JAlL!P_a>j zbr^%5>zyAx>PzqS7>e3%I8XcZoo;ma&%OHC7rOkjPyhexzd!%hpZ|EJE-Do7`%do7 z9FKS^@AI~9+su#byv@HfXYAH*)CdMS>~HC$um3KP`u1<==7aB6?L9!y@5E~a$Lg07 zB7<@*gRr3mvBAQYLBoXMfdcTd)JALMYuvDGZbStq6wqoAhq`_c2=m1UX@LlXFf)b_ z31KD(39G-vuG_$mD+b2*#I6e64OA>^vjk)dOREcAj|;Uh48L#;2TlzA$P2SD4asl~ zg-8waEv+o;3d`_9kVEM-&gb+n5Ajgv_^=NFF%Q|U21CmyaBRj2j(BJfNAFVI~{gEF5G9dpE4r#9+15&vRQXm(y^$^k@71H${^4{#wAWShBixDG% zkr+2J6}yqkZm-=^R7yl=5B`Yx|3*sVq@(-)>7kv^Z;V(U`Bkv&W z?wS!Sxw4_6ge|Jg%;a_xH+$1B1EwySa5!610*$jNEfG4&vpkz_EW`5e zL@+%~@EKvPEUn`#J18xG&0M52F8_N|H!sMIqwtr$nh;XRN>?j@)8s{7ZgIDkT^}xNN;gGbF@jF^huj@ zM}agyLFF;0G(i3HFMXvuBecJY6RnPuNuhL1|L{ZFgFKMLLqy~v@`5`GkC-w{8->9{ zAkC-Tvg*hU-|nYL=6?;T=dg!K8Cx@_-lT2l`W$d&!@su@# zWKRq9KMPe!C6O>06#b;~6J)hmjnzqMRZneo@$%F+bQMr}HAx+@QEv=9bF4>V^;pN$ zOp^pnH{wi>)=rv2X^G2+uUdyCc zNrPHH%_Xn3N8GG_40crw=wM6LReKClQ}t9oRbeI4R5$ft<7ZMS)>AEZdKUI!Nz!2{ zvf*S>Tc0#popo8?)uf(vP+`Vj2NpQ|6<`UM6CEN_vNZr!$T_x5kUvu#~PZwXg! zku;|M%Yd>qX>oLFeO7A^$!a6_YjrUQ#rAB;cCaE;Oda=gZx(W6MPM6=az|Hkv6gG& zBy;IeS~(YB8y9q+b7|A!f*Rs!$3kk^RavX{N3Yg$!PatB_iKl@Ym2v3Sl21R?RAe9 zZShucry|}C({3a1a1}RT1GjJi*Ls^Odf|3@4flDqcW}iQamlxSuJ>-yw|oC9eSL&+ zM^<*rQ*;xlcmHvxh?ldX>0`lh}!+*j1t! zdaam>rx)!8jDfSd7WIjK}y7(KwCyP&#W1fitT|Ul@h8c6d3ZQf=6| zYK~eoZjDRfjL{g7%UF=jSdG`1ki!^}**FjVI27GD$>8|4@Fm;=R{-M5LGnVOCG zo5LB1m)MJA6O>Q+kV`p{*Ljg^^CM|FJO8yQOIV&yIG5{KUx7K$Gb7tcgof%o3 z(^-@Ynv@UPln2_N7aE}(TA|+=gip7HOKO%wxRSMWRW4b+YObI4nWMpuk0nl^`c`28CDdtmT^YUMCU+53xNF8w1C=Ph5F^>MVp=i zX#WIAH+-Z09BihYsse`2b*!r&lJFo?NunBvu-8!k~8mB!|r(1)k zujZ)LDX)=isrfoq{JO9)JG0T4rJZrCz4}AI+Os>Grs3J96FaUKd#-mnoW8Cu>w5HD zyQpE?r)9gf?>e$sk;y2Vui^L1I3l#41h}JGtb?1lhx@a0$+)i?x$#c9zuLJ$8@iL* zD{pe7HT${&`>-Xug>N-g8Cz`}J8^FNc^dZKhK;Fv`xCHxz1h3HFwpz@yv1lN-UA!?^BNo0u{YOY*!KBuLL&!sW*{ zD!jiThr;{Y!l4PnJ3PcgGGvRkR95GoyMooeG9)Bysug_J9t^$u4jK!b#t+=a6CB5z z`^9H`#eX}-=R=VNe7zaGdZ9;Wy4#{nYjFOB!yhEWNBs5(rZ_uGeUVeWhdj%*yuFJY zUmOs^716_|)5&iH%3)F7rd()69i)Boeh)9X&h zVI0&$(8n_!$nQhQ-@LH%{5BUf$w@fO{k+Ky{mBo#(WQJ=s2usMJYiP-*Ma@7TYWl% z6V@eqcxWBOZGG9#+|hxxG$Q?I3nJJBTrB0BJ=K%WW38oEJny(&#<86ndv+E7Oh3*0 z0Ix^6Q0~m*P2CMJB-=f$)}06AodCyinFJEu(%dBjF4oig+jkt>@7&uvyW6+D;K9At z1YXqr4&X<9;SF9HBOc-tUhfXx)@EGct=%kCo!SFibPKWEt2EXb-OmpaP42zkM?SMk z{6JXLVFBFZWuDqWp4<=7-1)nlPJZ4^(ofu-a!@sMK8SYy-Ps*(-96>GUf#8y-oM`7TcbuDGDcBv*I&MM48q|v-r}L2 z=_x+oH9p&uzUk>6?w9`V=l*rsq<%?qNDW~W=zpx3Mxn)f}WWTCt zf3(Fl_Hq9rrk3Xi2dxqj^4m~VNlSWJ^|OpWVRJqC<2GcOKUCjl*RN;JoEk)KA3d*s zJ+mJfxBotLAN%p6_N_nscV8sFU;D`){5u`}wWzEkL9Knk7yn*gjC()q{T%o|R`}1b z`IjFcJP8yisi47w1wknUh0x$aPy;=cm`L%&34#a}HhlQ0ws7HY*buj_-L`M>-UTps?_RfT0pIQG*REi} zb_o}bd()`Yq&|NJ9lEe+L4lCF{;Zm@a@2vBH*ndLSyZB(b#Ni&!n;3a=z0jLKH~$_y?r`GE_g-I|{rGg~)#W-* z-d+0i^1{bs2hKdb+eq-^%a55>t$nqPVeibmbn-x`IAO-0XsNv>8*E-xW#Cs?4YXAW zx^>1IC}Xu$-+eQcgrS8RZm3d+80L4NB$-_#8AX)g6d+OqQbpTpv$e+Af??g}U~VSv zW*dbbap+-LApTfNT)_<&-g?%JcO-Z18QI=*MJoB^T_PT&nSe`KqDv86U4 zgJ6kSqnE0oX{J?Z(rBiEZi@L3jWz;>V}fk5*_%gyH7VtH#hW{ghc%hK@RcX+bEM|GamY#HZP()y^ zxg(ist~qCIMd21ygt+R-V@IVH`%;i-nX2r4W;Kf}eajw;-zQ~~Xd;$BX^G;0M!_f` zu(qZdY`DT!Tc<>KhIyv26-w(aNT>SvZYlA`gsGwTLfPr2`cmqtrT+3uCAGP-%Bp~{ z%KF*2Ig%^xx(>t1tFE=hSzyHzzqxC!=ROE-o@wscQJ(=9+Ha%(X1cG*XZiN9w%wqFR%x`_X#sK-x}3nPm&J_%X#`S^VOh zSovB}!{hGSF1*o_&1~89KI@XR#;V2ky#FyVZLQO;CfqHWPG7BY))~vWao0Eg3O2-I z_lPvwHN9>2hCbuP0SBM<`FP}axivY!m3weGaUv>o@N9zHJu8a{s=GJW5T7n_wKM*m zy5GBwtNO-#d(Em-w2S@ur&Y)1-1hp(OA#3uK?^+_$=1wf`=558PS}ZRJ4t(J*)O3mk;%*OUnQhI*1SAqgWj z!bzbpgiKVT6Q7qnDl!jyQiNIWsyDq7b}@=y{2E5m`mM_tdz)1rZShw%w{_Cnb3^pD2X;I@cB=G04&8R9kUbz;z(Okab?3` zNg!bAl4HCqm+Kya8)7PGPXA-Mpf%@7&w4J+Bd8ROD#1A$ah^t9vE0!tCG^f<-ffsf zEatHKXwQb4M4AwdD517lI`e(=RW58LH(v?Ra>~+|1g+&cfB8|qkyM}{#brT*$)L%Yc`c0%#gWN3HGTbtk$BBoU&YE!G% z)mm+Eew`s;6RR-B&URO}y_Gq0+go~e_PT&7Z7PSWnF#R}xqc<=V`Iz9*|rY0%RTRS z)B8^JKJ2-Yh1%eJh^yRU_rCbeuYNQ8*=oXdkoRniYlll*?}oLn;eG9T1uI+HIvBe0 zZC_=@63^;dxVqZaCwEO`;G`nhwa#Vk-NXxDsj61GxUKMom9`hBXlDZnYH?Fu9OJvV z_&7DT%Z;0pppM9~g{&;DVx8ucfT}dGCp~gvRcb%?CYixY7HpFh3*Rp#Whn!V=`!cC zol$aGJ*52dmjAgt<}Qm;%*sS_GS!SsHkZ=PoEl^IRvaRa{P=4Rif%q**bpN_S!3#r zEXeW}nH06@ZevMMN}SRXMWck#EOGQnAe|CPn}pIR>G3D-%oU8ns>8D3GeZ1KH6))^ zM}mGBp+A@9g<4u9m_Es?O_IKXq-0Mhk#R$4tS((6gx3f0b+B>VYa7p)*az{k3{N}6 zJV$u1+!RoeJxX3cw|Bu$E_IZhOyzB3yW7j%^Ob+nYWt>{%;z?9DBw6jkv?rD=%+t!|Ps-d##6~+prx|=mfVohsxExIX< zw)mql9{*{LPnzSERu{lEEby)9Ioj*%GqshRaK|p(GY!Ww#9i(2OM^VqHJA0nZH*FK z>zp$T>&fW!Qv%cW1qf_g_<$7Sf zj%r?dU13feIJ8T=P(l%AXVZDRq}+}ixIahk?`|C3^$sY!$D8lp@%y|156b?|c|*Ve zMsG#*7>q*3>PWpd%bP;>YEwS!4z{w|g~j=!5MAk+Vft)94;j(_6^^BcdeSfd^w2~d zYHwK zQU4ELxu`e(^heKn>AU_YQnwb>S4n$NPkHhxZ;jZ^o_ouupZB*Pd;8HpYRscuzMBu( zK`DI9z}J25efNKPCo}mbfPY7TdxwAlNO*T=fP<%i{>Olp(o-Iic#C&PjW>Q#lTo!N zV!C&E>KA|P7lQYPFecYes3Ux_L4C+~blV4g)fY!Eh<(MEeBZ}{t><~*2Ycctd*l~n z=I2=ScYI*=f$s-aCCDQAheIm(dEJ+KRtAMSxO}D1e7f~~H0XPxR#90?`MNm z!-5R+g@IKf219<4CtjULgz(2VG?H9CWJ_cChKCl1306bZB8U2yPpG9wOvryS_5Wfe zBY`wih!B__h-h~`12p-v7{jq0jChERXo!w@iIy0NU^a=DD2V`Q9+dcqg<)of*KcZJ zfgyp4Afbv5B{%y~B7}xO+@^=Q!iTi@g-D1xUL!cUm}(#fg2#o6T_|5$NL0gEhV@5k zS}22Vc!p>gi!L;a7=wprcZU;Wi>|Yad8JWRW{f~bjLcYvVt9k<(k0FZ5-G_$vc3f6}4h=OomktRuzo0yUk`TrXfc#4Xb ziZQv0GueuV)DZUwjrw?7`e%@9hmf_Xkh&;Dyy%Y)hH_*$kM4MkO4*O>*pyuOl;bEv z&IpU(D2v~Ai}Xl>K5#?wh3a%J z44E#GM@MscF0GT4Sb;ww(U!;wjB)9l#(9_Psh;k6QntB*N|;xFnSzALo7lOSkJ*_1 zshz&bo`wma^5>8yCY+Lqg6cFDqDdW+@}S@mp`W=^p;@6ks}nHZWm7h0MW3ZfC2 znjw0cC8{s5i6N{wn^{$xEyz*0d3ET-b_Z&didmz;8DEh}T;aK&c1aoWS(xPMFwmKo zKguoZnUGdlo%ng3`nj8RsGETqrIhKN=+cl3I-sdhq~$rEt5+20IdPY#H7oLsWXeru z+Be3PrndKe-lC3h^dPiA3p+WWP}){(XGe;urvS>Q{0LPrhyQ=W6@u)-Cmnf09Lb5B zGAPi)s8w`{idra+dPS3ZJ(Y^6kjj$xa;ZPVsnnCA{$@yT3Xdij6mwdqQ8lG_dX%Qt zR17Dms70s)nvQ4sebZK}Q#ht-I%LC$tNM7B;aI8^ajL|LQhPc{tm=GyJ-!HAAThYpDy1sRHYgau%v}Caz*g zt|efuPKvI`daUcZkoOs@_ByNF3a-#fvLow(xvFy8TK`zUszAS2u5?i??^nwsOlebc?Bed%fDbw_KFB z*6Y34+qdTnzIqFZ{};G|D-&B4TufSWK~`9btGw*WyrtW_I(vew>$F*TyI+c8wHv@q z+q<-@yIK0XF$yd8d$rGNy!u;GK`XsW$Wj9=JJNNz>Z4JzOE0V1RDMQDI_jPzoS>(7 z!VNN+kMx}cR=?_6rPj!k%SvC8RKt=qhd`7=w75eB42|?ld#nqQ`&Gn7e8fmxN~QR| z)8e_K^TPgHpz->TG`zz$48TAfygOTey0@|H3 zOu#r?wVul`K*oXpipY z@`F6;$kk|Wr~JE z%QEfJK7G+T-OWfhzmLq&FzwJPozj3h&r9vj4-M7EDAD`8#Ruun0-e=bz17l0(57h6 zq;-?I+P@}!(q+rkHJj4OHG31y&q;03ARSL4ozrr?(?31bK^@m)G1s+`(5~FpC+)^K zysA#U*80pUR*lPC+tYL{!8h$e$04B}X>Vsn+3RN6eo@o%r_PWOgJm6~-IW=i{d-_i zBBSk9o{d+bjoL4&&&Az)mikMAzz5Tbp9e}~D+Z_tr z$4%VH?SI7`*-`?kVC`ErZ2#0=721zC+n{URNpad=qup$sE-`9!tbyAq7Tx9zzu@ec zoIP%)jorXo+OmzMu$|iSP1>;yCfC;x)OFr2Vccc5+#%WA&9U2>&3@|*-`8E=tli!U z-re`T-R?c#tPBSfT zC@;=tUd`VpQQ)8#mIw~v4PN0B9^n}N;NQLB8;;-h`QhbF<47(NHr{(`VTr!&<-!f-5gDm_(HPPigGh}n(o5t-K3QvCXvf7>t9?;~ zCg-$G=iq4P7R%;v?*HZr&F5*zm&eB@M`U=WyQU&t~fQxa#BfeuU0Yq6I$LR8OAn zHbJ$@nKzxR?kal@>jgCDtj${8MC??a=iqoXxfrImPEWah7QSHVLnG;9Ztahb?RH`2 zBj)RUe(ZN%>~Rk6!G7v`4!k^W?7)uhK3M1E&hCJY>ZPvg=DzInH6ng2Q-hkXA`*iX0j_m0^?(6RA9^ZoP)9kd)NxXIP^dX9q&XJiY zk}J89m`LfGI6lW`m6s%QuSlKCCZtAT+j7*5Qy=S5Z}m^lQB8lBTd!1I|3*}w^>vt# zv)&OS*?=W!^l6_Q9|`m$dh{4c^p~mjD9QFkPm*`9_d<{Kbg!?OLxGCJ^Cti4A#w6P zuT6*arcA$_PH!!I8BmWu_LA@QkPr2h|3*lc?}K0RJU{q_FA|7v_@V{+gDdLw8TKzk z`P4S~SfBZ;|N5yTG5VrU`kxQ?iQe~fzxI4D_xzgli{HVm4g0lr`CRY# zme2aCzyJKu@BCsf`_aF1%n$a|AN!F%`Q}A+0C?~q*|Oyg8!m6=Jh`&x&Hyrp4oz9I z>Hp57NpnVxnzQQFm&FDZEZ6MWw>x(Z#>+RY?vK1d%FGR1BJJV6?-~~#GbT>s$I1RK z4!pVD=XIlB4<5Ae>Cdh=!;TH!d}__*Ew}#sI=y<(@!i8eFa9$5^6W$7kF6g){rK#| z>^=4Tn~y#N$0IPm@Y++5vPdG7a6-ful1ecQt#S;j4H24cEZZ=`t*_{6n~pdVnM2Mw zyP#9?MCDwxZbg*_E9|kRAj|M69l7dpM+~>pszV-g1ahGdy;9tcM(Ui@?Yby` zdlJUFs+*F=?t~f&M+<*E5-cGTnhL7(4umhk`xfl4!TsD^jm-f8OtLnV&U#788UL}& zu0-ho!>&c`UKF&-<@!7nMJo;MElWOYgp$!jwx zQx)_y)lN%IQ&m^xgLO?->x@-EP~{};Q_(hna6(`!6n4xYi7b<#JCDnA#73`NG{!;| zee}-~siag!O9jRBMjwqNw%ahj&9Ka4!5#LQFxo25_?%7}hZ{AhrqW^VH7-ENO zX4>eOTm2PS3IDbF+liH}SR-srCQIacRo0eel2`V6u(4nMK z@5YyJ%{R|jZ@kf#_q)y#Zya&PBiPQAx z9!ZCkqMm>8~H3bnLTVonP;lm)$cCIHjQHyTbL!aNsM>YahFLmYv9RnA5Km!smbpNdD9slxoKMVR# zcp22+1`DUb-Ek0uAM9WVNjSpBf$(AYQ=!vXSi%(^4SC7CTDg=5K%QhofCyCI={~0@ z2aZm4J{+I~hgchKiOYuHT4MXgB`}6G4=*|-)cKA`Jsw^WY}pE;vy3=F_AwEP?R#JU zVCX^-?(c+ZOyLBMJ@Spm0rvvD|^XHL1rw8Vx;9#fObq|CR3Tql>gi(D0UmZJgRFxB$>Q` z89Hkks+y9zW_Pj)#FKq9kl5s=HjUUZLNZgG>tts;-T6*<##5g2Jm&Ez1f<3wWR}Eg z$TLM0&38?+W83tmIqfD+d7)Bk1qEj?_Z2vNZYZA-)u%+qSWGi*G5r|#*~coq-jli)=!WA6QltZDK*21(s8boVks5sLW6qJ zqK@>ZN%iSLftt`SI!|pjrD|2JdR44uRjZ=%But02(dFS(T_!BFCk&v?y42G|{hObSikws8~ZpR-TyEpeju(RR2lJR;4K3o}-(6^bVD!eSjkBrT(6Q*XlYtn)xyTEuo1uBOdaYAH5axyCko>8xyRZF^hX z<~E-84Az(e=Do}QHM1e*ENNGpTH`(mxv^DlXo;xW*}n3LOW7w=eyi77Qg=haT^3-o zQ(We%Xt|#iuX9a@TJu6zs%U%cbTx!g-NyH(L&2)o*%}TVB}acT4+q zt=0m}-vRqqw(E7Nd>#B?2uIkqyuBw~wF_MO3fI1yt<-sst6%|(_H+O3?}0rWU5Hxv zy~JEGb{Au;?Pj>Umg6aY5iH`UT!`4-0TU1nxNl}sb+3Ykf6CzAod zUAs_GEs^T6$(mco#TpopSq^b|OT6X6mJ`ciE+~l1EEn1;)5+^xvpU<%%r_U=$W5Lz zJL9b8I?$vDa<08TDXI_3g*xxZhwGJw}>y7mHE(qR>JN2KhR4j&rK ziN3Ly6O3pcYx%@zmhPmF1m``Y`p8R8wVYK0WlIxUH-@fq%C5ZWP%ApYjJCC-8_nym z-Fnm!Ni&jLjptP#^UlUjHqe&M>Sp)s*~&gPvz2VsK6_w>5i&KpDt(bl3l`Y;5_Yf0 z-CSN9cO;SScDv#B?KsYw%Az*+r*Vy5Q2*om(O6`+y9uWr)j*9t0goJj2(IV%$wrEv zuJx4PqP{6DZrqZ;6zEg`m(ZU| zbWHz7>7Qddj^+LErZ4^Jv5h*_ccgNhqgv-^Upv6lP8zEhb>m?7deOBWcCL@T?pc?~ z)(fq7G3TA`f&V+$K@@doza7tQFVD)=E^}%#J~ob*v*cGp`Nc!traZTx&ns+ps>D6a zb2mEP3t#%Z6Bp#EuQA9EUvkjL9{)(9@3_bZUuMChp73ASJ?>9`_t*DZ_60c=e^Smg z;=iACS3>2|h|N5zH+1Re{`af!)>DBlC_M_kZ=>wm=nwmU; znE!I;Yo1iYt6<~Z@22C^zgPHcKGP&mp7&!r|C7Js!$0L4z=t^=_VBaM8@{E0KF<-q zu_M3q>$~hLzwrw{44lCAOECxhz_3_2(2_pBQ$MAuKo2vGU zKO6)=1MENj`@j3EK>_SS0{@(q9IU@9)IlyR!$NX9EZjjg^c@9k5C;4+8T61JgsLNK zJt=HLJ!C@kTf!&2q9_EvxvE1$M2G}bnrKrT zgxN&m>BMWRK~R(ozcMTaLm9(cFp){cGh0RKQ$lWJqs}$cH>gioC}vszUEzKV#&Tj;s|id>m;6NHP@2 zfAmLaG|7})nvq1wepDuEj09`cHqUFoIwVLXlt_i-Mpwi|dXz_m?8#k3u^3dx;ls(G zq{X3(M{=A;jReYzOvsGP$5Jyy9Q2u_!62d8psfs{nXx*Dl1fwL$$M)oj2uf?oTFJ( z%Tr`aKD;I??8+FDOEjWOMN-4744SOmAG>@cymUjXG{d{>OH2AoWV*(h^gN@CB8YRy zElRAkETy%S%(kRVeOyec1Iuwd%XVByvFuE;bjv^Vqaee~ymTGQ(@VkhOTs*woY73j z6dlN%Owz2(+W&mZ!J9aCxU^02RL}JEO_lwz&{m+Rv!`8?;o=(PK~neXH1XQP6}>540K; z)lo5-x*cU69IDZLF;G}U(EpT3B6Y{1lc2Io(H`|42@O%`yrdY~&??O&78Oz>Jx?U1 zQ3AD5|NlJC1=Z4~3)3!rQ8A5CqJ+>7^-%nDQ~QKd5}ndCl2a+ApO~3bJRQ+H1;aY! z&^BEh6FpHHa+@E;ups@?A@$M&Ez<-|QwMF-CFMofb5g-MRG`CDj!INX1yC6+P)03M zM?KO8)i_GM%pK8G?vXH7g}V%MsaATfZF$v-{2R52RqjJ4T2&}pg-={PKV3}{UR~5% zZLC~%tf>2hR$W$RZPo`HR6<2jVmSOTh|}`)?zhCa^2N#^-_4PSE#zzAaW^G1q*k5(zkI|X1!N^?ImoL*KjS^ zKL6U*=0R9*rPqDkNN$bTcm>yoMLdDcSdHD-nu6A7E!1!M*J2`Ah&5P=ZCH!7*OFb> zgH73dO;#Qq7FG3@be-Au5m}}n*@-pTiXGOAMOmL!*_~zClkL~4z}d;-SO_cEa*Zn{ zW!j;QDyWTGs)SmnJyoW?+BHp9t$k3g?b@PcKcyX8vMt-gq)DHfinM(j6}4Hxnc9*A z+pvu~xmBB{ty{RQTO6%QacNtC_17M8TUzql#DH6cmD;J*+q}iw#AVzjHPpcU+kiD& z`7+#?O+^p5yyOrC;_1wk<-OLr;lA~PHJzdlVkD655ZM)RSbur7OS|j>gu>Ymq zuC-mQEmzm2*)bv9OnqIjh+Uw~-O#Pw;=SGDCEmxi)Nm=LI59^1gWmR&-pi{tXdA|x zqh8XOw#3uk=f&Qa^Ir52U-uwi1u@??LEiyU-&|qeUU6UUJvsQbUTT})nOR%%%wPT8 zU;gc1|0U1wr8D~lU$h%w0VZI#GhjQT-|j`==yl-fh2ZK{U_GN?ma|}0li=-TVENVH z0B#)o{a+CtVG=H36Fy<9Nlj(U%M}L94OU@NVc{5d;TDcL89tC3hLs$a8XBHq8}4Bo z24Wo+VjlisBhI-o6u=#}l_fTw1N1W#j$$dEVk)lU#f0G?KH|q~;vD2+%>OesEFNMl zuDm2>!!owNFfL*w_F}~Y<1;=(Hcn$ECgM3BFmcIL}N6x zK{3q2FC<1oe#1A`LO&(sLv}+)R^%{bWJGSmG#unJjO0w-!bR5P>c!+w_T)+ibd7V-{pp z&gEqG*V^WN7r5Ll+a=c9q<2(`d!;=#1v*R2At-18KnhK$F(1l%|T6o~ehX=#aGN zg?8wImg$JL>50bail*s?-qV-X>6qr}ffnkS_UW1?>YGODoL1_cHtL=h#iMrWp_b~R zhU%wQWKhIt>}u)3CFzacT?gc9-iw z*1cKCSl6#!Yqjp%&K~V^CGEBT?3(rJe(`KTLt1q;?Q})$)&Ev)<#BBcvF+A2ipdsi z=A>-8PR+lLYuzzU-wtfxmTTdTPU7Zm=fv#YKJMYRYv$%_#}>}w4sO3j?(B~4!Jh8K zcJ9m8>~iiN+zx4(rR~8f?~?{?^aktHF75MfH}yVR*k;$&+ z(*OtXEA7w$*VAqm@B$Ci1y^u1veF07Bs+~#3J1{&pKuG$a17t@1Mkyorl0Yq@0c~~ ztKn+jWg8O*-f30w5^wL*w(pT1>wigc8IN%iA92yH@sM@#*oN`f*6|hB(f>y94>#}z zC-4Y2@+4>QC3o<{+H zbVhGX>Vg6psPVZ{`_TNvRK}aukQ$KZ7Pjyw_Jhc5e zODA-d-t_zq_5L08Y_#=D#C7tPby4T_vs-mw4|ZW6c4CKgt(Ni7u5&||?H=!SKG$D5 z=X5`x^=04RX#e$M&vtF!c5d(X+&XqPPxe3eab_oXYoB&!uXboh_mXCJ{=N1L$>0N? z_XWmaSM%WU#rN{n_w(iV^!4}k1^D(A`1d9F`2WpbgXds`r}qj@czdUn5LRc2pLmL| zcuAA@dUtq@XZQ==_>AXxjBj|5zxR8hr~c*FtLiU>>DPY8&wfeE{_O|<>&GbZ z&;0H`|05}X=hgk&N50no{YJKZ;4fxu9)9Q zu<+qPg%J@JYzPseM1vFwTD-V0BLI*BJ9>|0ZJxwAbZ1YMk(M%DTIwm(s8Xj=t!h;&Fkn%$Zq<7AE7-75xsLVvl&sja zYRh(QyB2LJxNz6f{VLaNT)blMy8o@~*D7DOZ}A5HYZxox#D^CPKC5_e-@J^~{_J=Z z=ue-TKPJ6sStsVoD=*8;{260sh^HUo^thUHX3eBg#(rI}wdc{GON&;Cy0-4$rh~Ii z{m^z$mdHcLT+X{WaoEFs7Y9yVdhgA*jW2XgdwA3EktR=`E17(Gz30&{Hg8_7d-d$= z#y4Dl{^9$6_2b{K{(XOG@kiHy0ZNtKY`Ccw-FDV#mt0BSDR>-%5V}?XOF*>0A#=)M z_?(8Fn45|sUf3dsBf^MchatxJqK!1lnB#=qk=Wx)GXhDI zklei_UQ-4V_@8`Af>ofCPcmuWlu`e}SEYYb0cd4aPzs18mr`okWSC=``InbU&W7W2 zYqH3kn+paNCxvsK$R>((`eR_Rg))eWZn^MZ?o|l4{X{UUSh$K^Gs=6wxt-AUutg*^EE3LIoRjE*(T8e3&pax1R zubc+^sivk5yX&aE7AtCYz$Po~v&5FlY>L#@=xnpfPK#}|++M5gvAHhm?UAUCXDhnt zs=F?`?YjFey!eg#5(ga2OH;k~=9=%e^xE4mzW?$Xu)ZqsJMg{&CrdEE2^XBx!3#Uw zu)zvv%P_(fKip8n7f+lq#1{W|>+i-MbUZS~7fI9*s`0w~GR!f{JTuKTA4qY?C7=9l z${uTsGshzH{ISG8gB-NZLhtC~&P$UFw8={2*)z&S`O;2rg)kYVM_0dr$jg(SI z+I%+JX{)_9+il;RDBN+&JvZHT+kH3QdF#D5-+lZ2H{gK_J~-ip%gwUcZY#bx#e)~I_$B_K6~DwCyqMq zx$C|=?*`KTJMh5^KRofp8_&A!qW8W$^UXW&JZeK`c98TxQEy~y*XON0-rV2qz1`r~ zEk51k&uzZk=*O)--0c4+>VBW_FLc5Qp4flCM%52Q|NZ!*q`yG;*FR6>4|@d>VE+oZ zJ?brRQRX_=^CBq02~u!v(KDd+7}z}xevgCU^WgYESUwS+kA&$n;rdY6J{7)?h4FJ? z_Fy!T;^h{rqXk&l2R2o41~$U^clfq$&y2?j|>9vbqHj~t*M=O`RNG0`b?k%cVO z;tOA}3Y4NG<*NTonU+z`hn1-e)fX$;fcvic9WZ;Y1t=Xc}rQA$(UCmrjs0M z6^QS-Y zzea_ZfsKkv(?VFN7?z=j4XI-z+tHRT_9>6GtYCX7S*RqIuax~PVmFIfx?HvtoefK6 zOVQZSvKBw7T`gxt8_U*?*0rEz>|Y)GQfnf$sYdl}Z+V(mpAHwOQ5EiSiJM&G5*4^g zg=ul2+FayLSGmXzwxzbj{1 z%I(dvnCr{sHKwWlzuwJn!c#JNlkCV zz`Na}UiZB>%5HrBJK&6laKZPj@IntfK+U>=q z6|QSe3gj6V`Nzf8FODCITpK?LAK{C~_fnaD+rD|YlTGuq+ML=r_cmD5YweyB9o#@i zv(Re}?xMFj+mmebn>{{pXg*MiR=+ydv)-SGqkQTnfBDxt&hkdNT z?Q17{+tse}k%v=JX+Qbfp9+$gt99l{=lRkD-*mt4JgZFidCm#{cf$)F@kjsnuC;M~ z_{aCX=k+Z++m~5&t#iKfp8xz*W`wk?Nv-2l8=BXyHu|t>&GcMDJ=ngsdfAJO^kcI< z?pa@Yw$lWYTMqiryV~ZSyEXFEuH^8+UHr(iH~BILzS5B&ZsPmh%mR%1?5{=>{n`qp zvhsecz@KhOcc1)!5&x^u@7Z^$zg6x3bE`yOd)?oj{<)`p>v{irr=6bv``=pXbxrK4 z-u&U;?!jIE0pI`%U_&eH z0K(q(-443E-z%}7`S}G4*3t_mlnWx9yTo8a%^+Ri;9(q(5B?w!2BH5D>dgc)o(3u% zBuO5)9U#EM6EdC?9$pk~+Y~n55mu62MP1;`+4q&$7Z#R)xk`&E78r)#8IGSA zt|1z-VW90`8m3Kgtdt=g;$iz~qWje${9)pNg`p^RA}F?CDe7P`og#~|;(Yia zEXJZN&LZakqS6^(BMlIH@f|LfASCVL5`G{N0b?UZA0Ww9^J!o%_74~G&ACC4CE_6| zN@FyNA{-{%G+JYwQ0v`59z3DkKatWI~SOLSkb?@}O-| zq#B-Mn1oOgVN*w5Py-ziQha1_kR)fANvPyRu%r-ukV_g-NX}$TNP;BrqA?!f zFYXaP>ZCp5WCRAIwe4gvZlF+hn?D|5`Cpdk|juPP*|p=S(fBlo@865qygC^P%>UoLYqGJqy`eDQXb!4w%J_@ zV_$~bUs~W%2INx;Bu&^W0Eu{fflHNwo8*O zmvm(pZ#`Fo;@5*JD0E3^gkINz=G25*XofNvXc*yLa$p(n_k zZ_1|quxL)Y=!*7Ti_+tZ(rAp@=!_Dk{q*M+HpTyEd6oHgmx?KdmIR6>WiQ^S2QHZeL;v@)xz zQERD&%BiaAv~p{;Vk@wD>$Q^Wim)mU-D>~g&8qZ4Ags1)1==dS=Bl~^rk@_BT>zwK-m6MY%w3(syC(B`e)N>Tk8VBZp8{vqK1x!wu- zU*RfX_Ay`q0`38tXyU@&;~MS)Lhk?KDlWeSrzBvKO|I!X((5wvDZTP#|AcN(jxOmM zrRgRj5n--ye!?fzt>C$?Z}ay5#P`?JmGpn!E6BfC#Vfrp4b{ZsVru z;S%oTN^ayLZsk&L;5u&fI&bwt@AN8f^I~uEn%wg;@AvB8&tR_RZmtua?&qE^>fVp~ ziZ1)AZ~DG#KeF!4x-RVQti3Iq?f&ko6fb@dFaNp<0Kdxs2X6qkN&zovJ1#H-H!v;I zub*yi=3-#`Dq`p6>LJ4KBWm#Zt}L~cFXq~n>)P-A+O6+un5>kR|B{x99k2=?aDTio z3!`wX$Z(^D*b3k9iKTE0&oKWE!?0gCun-S15&Iwndx8Y7X3Ua)R5As`3eA5(C93bG-)uUw6+kB;!`HW5`UCcE?-tx)o;Sh5dO zSQj^3ChM*Mb8;B>?kCUgCX@1P>2H+Wu_~`JD@#ru3ugr1WMI-`A@^~7`lKxzAtL8; zAm(Kvf9~h@Pa|V7Bu|ATuL~yEFesNYDu?o<@vtd#m?xugG*?(NGqWbY@im`vHqS9z z(qspzB{;+6Tdrg|x8(mhzhqX9^E#ttI?JRxCyMLRZ`b}&vOUHs+VV3X z|06!Lr>_2UFn_HCJEbGMrX!6gF-@s zf-p~TAFu5{-zrKwpg*s)F7Bm3qqIH~^g%PS9&h17JG4&kbik5lb($x4hNn+oCs2>4 zYL;eD7xf4Yb#^Ls2{Cm@!}358bT5-FU=HG%>7!n%)3<3g$r90xvMjB}=C+MA2tTFk z^0Zp7wURRRb{che9`$!7HC@BCP|J0B*7Z{3^-t^dQ}eYzMD@*%ELG#PRgX1S!=_g+ zHh5)qQf~D?9d`dg&n5ks^#JuMD5N!8Z#HKyr`Dp#my)UWqUmSjRB1caXoG2)21RI_ zX=}4~n5uSai}q>%7Im#QbG&wLZ-8JEc2`9)V794z8C%em7kiPJd*YEk7NVbuwIb$b zWhXKHj`S64c4uEVc6(lJPbqfIwrj^WZC9;qZ}*mxws?nkGMV;ye>ZMFhi6 z!*+XvHgA6d`A+q3_p{l;G(CCM2qyO(E%%vC8wCz{QZhFZOM-J-p?vjX9#8j8SNA7m zw}oH0)tQ>3erup~tG15nhjX~4csRIjYlnxcxsGdym+OjWYl(ySi;K9*k@$(5I6?Gw z+_D!Yx$OTw3lMQ@8@0VD+#+{+JsZugS(~A&K?9PGMz}~zH%^Z*v9>Xlvqu8w5*z<( zmCsU^>l>GEIhKR@WL)`}cR9dWxtUkoa_0Z^ZB3qd0^xBlb5uP4-k*jG!Omwcp3SSGuxzdTbe!DwrWbd- zLZbiWjeD~_UAVETSMRBlhcH@~dKu%om#=Xr%W?kBJ2%_A8RM<&{_wr~d%p8~91HxE z1AM>3dcEWO!Rxy;GrXxgyfsVwzf=6cL;S)Uyq5nuv={BO3$4;RY_*Sk$3N}Cn!K-_w2f`hDI5{@x3I;uHSi8~*=K z2)12;^@88>WalFV|6aN0C*Kv}@{RSmcOa1S>ID0?j)wY#)Zam%YMDX27e9p^f2+T}@^cpC-yh>1uk=2C zjtsu`V!z!N{`EJ0_Iv;KTmNimKjL%$_=A7>C$Hp#0_EGJ<*PL27ah2F`+RvmdfmM9 z;i&cT5a$AfCxHV!oj6efVM2ul2}*MK&><*^6DfYO_^DJzjlO(o+}P1$NRc8rk_0&t zWyq2$Po{La(j!clDP?A?In!iLoHSe7?71`M&znGf>Lkk2=+Tc!m6p0Wl<5D{pGT!O z4a!t$RjWmjZgnbjYE-aZzhb2d0Bu^eYuUDS`xb6oxpV2(wR;zDUcGzy_VxQ0aA3iM z3D3RwNuoo74J9c=Xwcw7$def^7U;M{WXzi@3)KAi;AYXC3x)o(%as;({v3LA>C>rKw|*VF^}~rJSr+IJ zHssW93j%tzlv@{63#f~oRiKv?YxsWw{~=EgALS_L{IHy}1p?zlcWYN&yhI_I;|Li*~qvsSz5q8}pGvSYQq_QqzP%~ngt zuGRK2Y&RP`@WS_AtlKlcg;89y?M2n1m^FGiB+EV88s3rQHIiO~CHJ^vg*Qg|W0_Zm zxn$K(r@3^ETh6@o%V%bN_KYy!ymsAhr#<&lcGpOA;eY?Dqi_gm_MHQ-i==! z_|$Eu9(n71$3FUo|D4TB${@m#u^q#=PccW!_wRhj##g^t^TibZA@bvAe}43fP5*n@ z+BfKZ{L2;i^5?$#!LNVs8`1mzcY*-YW+G_ejz#bSHV=3JFc!pMTZko*x7mw<1H@kf z54gYs3UEj1GhzBrn8F4=kaLUy&EK{)t#9`cQ@fgvLi z$;UO~&ys?aUnU{>M@cSHk90I7B_l~c0a7NEiJW9AIY~-Sn(~pZ#NsDM$x27&(T}r) zB`)WvN>JuS``5V4(4Y?0xdxI|+*&WSWcNEB-`#c=kqmwXguF)8B3 zcj3k>W&DjoMRLY8zAJ=myksM_2~chdbE1{R=rt+&&5V{(f7{&TMmwp?kXm%475(Td zPr6c*8nBkY9H>Y!Nm5w`Q>7f$XiiIt({KNtFO}gVVBWAfzo8ndsQMFNPp@@UrVdk) zA$+P(5lK|}QB|rpZE97aO29zc(`#=5TinMyUNw6 z8r80J#p(ggv?Itt)tot0$V;tso)Q2Na6{xzU~!n(cPl24PL(NAuZq{K2GzEoy{l5&xLeOIRj;`P zE^c|t+1eKOL!B+8Zi9U!6@_2DToOt$52D z-}<`uzSWH?bFJx+zlM*ov>2>U3CFAqJ9eIzMXY-0iCMz}4o3j0tcOjU;(p#!yULv~ zaFP4f$pwhCI9aVnQd?TqW@N{uc&$NVn^y+U_q`3Cv3$jwWF$uzzDs_v7NM+U*;+ZT zSibF(9jspTcDcP&2D5bSJ7x)AnafgEk(oUKS3Mrt&A^1Shu&ONclC76c(!w!=`80x z$62C(?lT(!UDW^J*dhdmOEd!V zd(-Xqv$ofLXh_QY+nFZ!yX!4(#`XK$|K4|A;eBa=r<>nBEx1l8_X$P6CDMbkOT?u~ ztoR!IuF{^jx(A-sh3glj;SDA`P0d48pBP-PW_7Gd{47|rd_1!jdE;&^BYxHzq7ub- z3KxFJh7&v4Kn}W6knNGfR65_71~Q-O6*1OI1ohRMt z8&5daJsx$Phdtk0ziI!$-BsaG7n6W&`t`d~Dfc$feYSQ#w2k9V#kunxk$TS&-g_x{ z{np*@cem%?yGyP_Kf2M7HZWQvFP8v=?X@ICJmTGMPtNCj?{E)%;zRG^te#X`FE0UH z!^AhosJ>e8DKYFLJDye(Ro9N|u(WP|&&}qY^n+i#;u{Y^gu*HFe%w6pJ8!Sg6PoaY zH2mA2&-3WZZ~C5RKInxn`uAnu`P+v+;J+XI!;9bgq;;~^;oY=yhEQ3YvsViJzkLZKrD%n2>0H_TXs)y zkSh12$NrVvz&jEw5ScXsv+fD%CZv^Qt3qjBcn{W%C z5c~eG|H3c|nQ#E1@Cx-04GYi=-|qg%#qEAikETx!fr$>ONa5bE4xuj&@o??*&=2Pj z5dTRK`!M(B&IEG}(Nd+rIDiB20s}9|5h0NR*Q!Hm3;OcV5b>@MuW%2oZxdUH5Tz>x zWsjXk@lVPL=1^=PR*@A`4T-`;a%>IeGOKYo(GCYu2R$+I_-WYU2bbs0UGU zFkQ(nDZ&cXQZ9SsBJAWYbFMEZVl>4PECDk!NfR~Oax6>p#aa_HS@Seq6D~D#HBFN* zV-q(oGcR9rHg(fCbF(*VQ#EO`DtXh7QnM?QQ#OT@Id{`G!7ngN5;>QVIG58pkJC1d zQ!uv^IInXppEEeCGaJD(EXOlCwNo|A@i6KVEsS#J+ZSq?=w8LZ+#5& zJrMJa7Bf6laWNm$BNS7V-dPZ1mEJk68Ox^q2)@)zj@K0j+2=aVyU6FrObJN5tb zK|z#5Ayh-%GDIa5KjV=^KNLmxGe2AOMCsE*?Gr{vR76V@HfdBw;Y#j+P(aQII$!KZ zr)fIX@{0r{E#2}+ZzD;QbV!@DNG0J(qtr=%6iQQaO0jg=QgSXC(LL+pLbVh~h15!^ zG)l9yIolFVgESEX6p0uQB6x5?-=i@p(^^U+B%zA4D59`naZl6KN6S=9iIht{^Z4*Y zBf?Zow{%gF)JzBU=pMCEnN(5()lrp`iq^D4*+f&pb4eo=Q$Lka*)&rH6;R3aQcsmr zO_fwdbxb|=pjdTNOEpznHCAgCRSDHnDK%7Yl~+}jR)5u29imh9(^YkKSf&3|R$-M` zm(^H(6;vlRNxSq*?Ltv^wMuc7S(Q~=pS4-LwM8EYi&_m%A3{#;6gBE}o#+%#WiLKj z&r$fa#Zc}~leJivbXpBH#}M^eb2VFqbykn{N+&g1?bTUZRA4JLR|_^^p>kB zooQy3>1OYuX8&SmS@vaRc4Z9%!N`R%)K&I4hX{=}BX7{v3};zhFy@?gM$F@W*kp!U zkZN-Y`wx{gO)FPwlC23Y=72f&2}%;_HEggXXXFaXLHsr;1*@+ zHf{BGZSA%$@RnxzHZER^Xq!c8nME)gX-;ddX`glmODt*~7ha8!imo z`+{(JBuidUGdRcY+UG=UuyGTIX=RXjCk#K&Qd^cQdTZlQpL{n21N1iTfmYhZmJ>h=8py5l4hTW$;d+_CV8he)c2u;!%Q^Y!fS#NMr(y!=i)N zn2p=mjYAiReOQQpcYkphiJ$n6<+zD^IDdcGi0!znl6a2?`Hzd3j^pBp0~wDMS&x^v zk@L8Z=h%i5*@+)Hid`^VsJMo#STqwUiy8QEzWA|t5W`R;jE8cJPnkVG(@4_zD&82D zV_BAG**9Ro~nL+%yDF9kQ1Uf+o8bJ*DKoGiX6?!?inJ%JPn<0*xF9n;8xtlHe zp(h%cGuojm(3_!IqlcNJKRTHi8KXV=q%AL`nOUMcTBThYoTYJ`;kk+5+`oJU!n z*cs)Px1QViXzf{yTam>2XP)(yIT(5=x}u-e*g=%~C7ilJpn5r|I-jNbpRrnOt=c&F zc#v%vbtjM#TNtc=SF8(i@*q!;!&iDJz(ji6ged_Ps;9w96tZX4|wA+P>*qzG<7acO$-Qo4;Qhd-J=$b)zI;R}vqQ zxknfwk^6%i9J(J|!E;-}mAk?h{K6?*h9UnPuNi#89el$-Ji?N5HveA8zs1!pN~TpWFephoF~k}D~Nn7 zn*7OITgit!%KdxFN216L{K~PS!1Wu-nS3j{{JyOs%X5Rs5&R%m{H2vS%}ZRx-MkUi ze42f^%}@Nz?L5xmJi+z6&Qml4SmqxGn~DJvuvEZUu>Hk-6MA# zlXV=&E4|0XGrfb_#}{#*x16bI+c=Iq$+aBJ$sE+@d(5e#%1zzOTm98tUDacq)@Pk8 zocz>F{Wowu)MdTNs}FKo@Cy#?D5(uq1Y zB#OPw*tADGNJw2Hz&#_xJ-}_9K>pin(cM7Qy+GLg+zC9@cOBk!z1!p6H{5+Dj9uUN zo!|T2-wOlTlgqJ|J(!xki&gF95NCPeb)78>)PNA4v;7zw&VupXLC78Bkv!DBeck6B zzCC`w>s_@$9>7I@ph+GmEdHwJo1y>Rs^nB`A>RH+wh=z7Pk$PUT zn9?Y(Z>~GOTOw^{pwe~*N;Nx!(Qyi zp6oY-=7|c|2otYx&F5i6ax?!Kaonjg_;Khs1%&mOy>167) ze$@@%%SV3jVLR(nzVSPL@in4uOS*P-xsEL#kp(wzF&{1f7iTG7d^x|rM89lfwrx#+ zZb|=AFmKt=-V`g7EQucF7N?XQzJXS3fjK>qaR1o}UNTSV(l^r$7tw-g+4zqi`IFy+ z_g3|Bruo_C`5i6#Q+WF0ruuLA`aQq$K|g)7U-JXk`@^66-yrVmN>(SMUg z+4grISyE1FwsB^Rc;*-Enr3xB6h%lkTg$x@ydPW)LCX}79L4{HzgFjZJ!|%=+og7Q`rY|iv;e{zHNTW9`SRmwvSpomvtHDH!j5Y|NXq95fA#j?G=pt{Nma?gepN1;i zsHTc~5UC%k3hJjBvI=8Ku)5kQN3;4SBb!}1nI@HM_G)I8UD3$pnO2IaCYivtsidyP z4tu1p$`b!OrkB(vYi+c_{(7yn*<$%DSjc+IYq#6F_lccw%DGrxb+Yy-YnkmyXrG<^ zi71_()a#g``{jFrqJ~mPnuUHzsxPG#UOLdKry3M%tqc%R1~SGaDV3D5Snkwvl`rcQGqgd~EUr{I=jznXTIrmV%Ur@7w9G@(T(r$B z^}=-1Ofzfl%}M9n^VB@EZ1vAoL#?gUT)XrpesRq^7hIk&_HMjyjeQuUY$w*Qq;e;= zU%hkR4d`i$CR}#Bs~x;|z>VHnX=s>|j8MoYXAGjsA2*(naf-`I>*OR!?znQ8OT78w zo%O3U8PB#s^QMKoOyU?oR-Zkx6 zyI%V7K88&g+mX3__Fiej3t#klL9ch*cq5z_+_Y>jcin*#>}X(s4?MWvt~FdS=$?Dj zd8hH;R(a;j)z3Npwa(9R$?t!}zuJT=d1V?PO>Sf)16E603d9xzh4ngMHIQ5hgdhPW zXu$(UrGi;OV2+Z)v_l+%4Qy~42}Q^>50Wc(=9=KSTA0BFa?( zkA0}OwszHphkCQy-NYw8BhC$p-P>M$@Km_cL`rT?B;0Ba_rEM^af@8+q8Gmi#xVaf z#Dz_o;qYMC!3};eh7L624Ih}s0C0dNGm*&~rXzpZOJZu!m~TX8Fmb}nLn70J zBxHjKt7%O>lF(_+ROXPPNyuU*^O(XMXEV$BOrpHTPW7Qw5cS5l2eq?o?=)rhM7czF zO;J*vSH*0EAk$SY7Ggaq6*xAla@+F>@ znx{}F<2}4xub`n+sy+nidM98b?aNRxy@dnaIT|mt!vGi*T3+PuL2F? zU(H6??F}}!=!2@ECM4S^sxy^0Zb}zxf_PMeLJ_@#c^g2JIKF+2va#sn-YSh+Dcj0-w~n>yYml2& z<{sp-(Jion4~$^jkaxihZg7LM``wqGHp1X#t%ENtT1e8bH5zl#6 zv!(j{=i9y#z=tljv5$@HEiUrQ%l;J^kJW5tJ-aK@rdqXmc5SU?dnGDRfrR_GyWP3; z5Z!*#w$pU(Yo+^0>qZYy!dB+L*t*V@RNo}w+hO?ni$MD}F}^hkYgRv&pp6}3z>N#z zjL1S36RELA9Db68H(bEJk+?)4juDKP#NrXrI7v7T5s!}q&EP3p_=vx~jNixK_E_tvCI&P%nCC<$iXl*Zt|iW?ubT{i$u9 z-kP1)wsx6#ZpdH0LG=wNIK?{PX+N>SeGR8TN46m#?|$W%OZbX_AMqovy!XRT{`9Zh z{Om`+WhuV*@xQtdlTpIMI*b@Qju=vqxQIqGJd&7GmKZ#g z=oGC74bWh8pSU}nSbOJ!i4jza7j%jmq=^5QsEJD9gJnZD_hm_za&N@vTVGdplOkV7 z_-}@VW*fF%)F*K0LxuP;Y_Jg#DCcrBMu!PVhHHor%XoLqn2ePNh=4bZUDy!JsErz- zjMg}T)Ch;*D2;m8jc%6^<%o@nmyY0wi0=r1?TC)i=#I_^kA6sxGbdoHn2Ac$k5u!B ztr&>{If?#giUi4u28oIYxf7h|iJ%CPq9}u;$dCuAkg7;LlJ+~r^N&|!6t9>kMJS6u zG=0d&YyKv7x`>ij=ZkfwXTfMNOvNb07=@r9Xbka<`e=?B!Hw*gk6yTrjz^C5*pnHT zjXwE@K}m@5_>()Slpi;gI{B1fc!>W~X^%{qlogSaK)ICon3d{BN0*mVjr2xtbVz0y zQe=6Sb>vZKX;X;gNN!0JEa+(w<}^vCQgWG>Y#En)S(bjemSS06)5kZwrZ?|Wh5hk^ zyqJ7NxRUzhn4|QPd-gXnsV`5MN;bKD$;O$T>6xDyBQ~U$5u}!B373BH9?nFMrEr7gDUWrv5Aqh>6*MLLx2gJ!Z{N;lqZTQZ>EHp*@v7G;z?u^ znT)wq(OFo)NSUNzSeI#xmU3Lk2%6ssp5ZB;48b)Qg;Ofk2kEJv>4{S3shT`>PBhh? z^SM(p6`w?rQY_JJAMgRSNoD_csRI0ompf>m93`Lid7wRIp7a?MRL5(SLSg~6Fwg^` zUbk-|*-miAF7u?JerBEJvsk;Ri&cnF3ALFg;(+70MJak5EQ*EoC^0S?95PyQFj^}# zI!id35#>oz?kSr9u%7G5p!d0;2#TLR+M6FWqy~DVOR5w5*`F%lH2>K&P&%MuS)>Zu zqfYvk@X4fE`fkD38V_1F5y~I4$YT2S7G`>($;Y8cxS<&eryfe8CAvy{Q>O@ZlOLj^ z@~B09YIrt!5rB%6|3j!kxuSwPQHP2Wc9ov>0I87*sqBeim1?Qf)om`|0`edakP4AZ z1F4*2{~J3+Xs-^u^%h0+gh`0TeBzo z0Vyl4E-SZjd#)}ZvlGd-d8-oZRCVuKo#exH2IsT+I(+l?vj$O@5w#$0C&DxY#o4Fh!wwn8upj(w&ySZW8xg-&0U8+OkZ;pAyNt$?IggD=y3{BSY~T?z*NHdZv2C zX8OXW)!T$FDMW{oAYE6OcGhP@n{{h;NyAqkiyJRaJD%<9zVDlCwaX>gsm&Y4EC8Ipy?eU^oVy$FyB`p|FFU-g%c;iu0m!?&2E4lyth`KiWYLRB z6?$s{#jjk)SSLm=+)K0oW4Im~w15(;wphMfcfQ@rYwAlq>n#6}ElL@aGp;*f5uvYbi{Q%ns}EDv`p!9|S0Pj|#hOl@9l zZ4d;KeD=ME*-nd_A91FfLHHlEa3Hsq!fpJrn0(+u3?8ko$$P%T) zO2NYpEDt`c0zfRp%*MonJi9y>WL&(&Nxa3x^TfKqpH@u8RZO>73=K2e#Fb3Rk1WYw zyc7RpJicq3zL1;7^X8m#93XIPXRw^Yscgr6^&pk$UV0owe0+t049vkS%wpt`IS3Te zAPql!$SR?FvE&Pe(n_o1xGn+ROiy z(vrNoFvlp-SB=$KjVl8QEy&!lh}_IB0M;(R(a3|5sW>KRoh)iCEo@DZ7n#--xsYAK zg6Ubm*~+QunVV)E*Koboa(&i--Pa#okm5qmB`i3y#;Pw|go>?1yd^&UL|94))tMP@ zw_01mCAkEv)t&9xpM4Pl+11kU)jk~7V_nv^W08cNkgVO2G|knnz1kjG*tFf+JX6fzNL%K(V1-VA`u=iSI{M4Z1l-+P(U@_pZ7*_!|Mz2B-? zLAgD*@}SqfFrdJR-~Iig2CmzXnc`(` z<`M0r$gHXDt*J78Qbr19iMC!3|>RmbN z=g1+cZW69u60q(?vMv#6E)8q0-fb=o#uDd>o}ffp=fHmFNqXoiRqXG%=!kxxejcUg zEa-!-q;x*)>fGy$-lWowq}1*Kj=sTw#&y3)lBs%Im2OIzK4+Mo;rq7ftaQho{?xo& zqMN-qvQFzFQSTu^@2s97_YM;L{t^D}5di-_0>2QSh0F(k@OrE83l9K@Oq)K;@DV@H zVoK>E%7hgjT!6(}e{1m@uaa)&VLGeJB6`d1{;MWV9B!!Z&gg&p-iKFt94aq+kE3@=>kN0`6 z_hqGFR}S@r!(JDjOG|cu^srITa_mB_wrEU>L*(sRsBAS09 zod5Wek4v6!t$R=UrEmJDKbTwR^kAnL!MOTJ2&>gu`1N)89z1aRRrR)i(2n2pM`@In z-}%0u`NDts#2@^?|M|~2`JnIi$PZDXUlR2Zz`e_B)1MX9Kfu@Tp>bjTRe}AqYZTwF zxU@&EqdPyYY%5C2Lbs{r9iASh6h3?3AC z;zS9C4IL^RSnwdhg9tq-beORO#)b+xYGmk9Ra-_+P9tFOH8M7imijp{r zjG6Q0OqvEcmMR4?CQzb9jUFv36ed!pO_jcE8rA4ifl{poJ(2UORH~k~M(z65Y1W}) zk%l#U6m8n1WS6pSs}(NMwR7vjy~{Rl+P!A`iv9aF@Yb#`0RY&Lc*9}FjU6}cdRXz| z$CV+wHH=uXWzGO1YfjwR^5@B-E0f-A+A-?TsxRl1oZ9ta)|6*^#w;*)>)W+&)6VT_ zx9!=!e;e-|e0cJ%H7h1$sZpqNNz@HOPkHho%IyCuKepWdUAp)1!F77#S@WjL^D-y) zv`G@^;H&hl+UFX4E?xcmvC7>KKd|}>kU+Z(#0x>a6y%FRzZ?V%Lct^?jKcaXybr_t z06g#|T0W#jsFh%P?Indk1X0A1NM!7(6HyG2tPwK<4yG4TR1qf{akKFR7-NJ^N8MV) z?8X#jTyaMieS|Sb_J*v{L?&@WQb^&5?D0n@pDGbLEvtO;$|${T5=<_!l=90U!|d{+ zDUV$9%rV_m(@iVeH1fkOF~jpsJ{J@5(M7u>FC&F` z%E{0}L0PlT86zTSNl%lkioYz&j1#i}!9YI0xY9)bRnezbC6mfj-3Cwp4YcRTkW8#l1FNWY-;6-gldg_f9nNtrtoj&CS=}Ijseh#e?ZhSV>#8 zHF#iv8x}a*ZzHz2UpD`Rmt9`_ymjM+LzYwGjtdsqWQ5VJ_~DCF&e-E^*Mo^rPii{! zxnReWR6LNpiw@F9Pg-d_Ox@d*Q$)*yH#hzA)?ri~ zMb=|?9ca*F?>u+!c0YY~6l(|Z_RL=gUUuARM}BqQQDQ(SB(HbT z3t;iGSH10BPl5aMT><@fKBpYq70o_Ll=&ahfLHW6$#kI8-8($EaV~-y(mQ=ZZU>d{Gl1!D8?arq=;Aq zBOKkBMP7-|BILu)(Abv}_dRNmAStA!;1@sZ&`)WlL*pCCc*QDCGLCF)A|0P-$0*|Q zj5L&_8q0{uFh-J(mfT|=QK`u^a&nEHoTDjKDN0I?k(QT)WhQ0$Ng&1&l&8F9DtReK zUH)>Gt{i19wYWngX#^%4JY6$0^2`@T^G(k5P&F?n&Gco{i`K+mHw6OCZC-Pl-Yg?H z6(~+mkn<$rYzQ^KSx$J`Y@FKveCImjiOwCWlX~`SCq7$J&l1Qpo%GZvK;1degcg*a zarCG16e>_|?(?2K1QnwGxGjOKuTtBonIJz}l8{PDAoFYFp{NQNNDNGr9(}%LuraQ$cM2`y8g;sQ;J{>Aji~78lo|C3Z{i#)h zn$xH&t6CK+L6d6KtcLZgYMm-G$NE&EI+dpelq+1X%GR^G6{>b! zD^-_@*0(k^uz59XT;m8>#fFZtdlhV3$(q*0LKd+^wd`W&de_2Ywyb=8>}Mm}*U5HP zsxJ*6e8$I7Pk6LwiYzJrrCtltml%>PDAlN@>X%K>ZuYR6)vIVPds^WFx3a}`tZy6p zywFnCv(6n)bA%9gXQpYxvHeHg%sx-Dy&z z+QX+_HKr^wE#g~RPKpSaeH{m#F<=JtPdK_#W0U13)#@VKdY-TcNy4D}Q^{8_l zZB|d)$zF%%++EKi7t!#s~zfXH@nY)W;3^U9qt;pJIwJu@w;=K?|S$9$RGRP(aWCZz~6kxjSior??e(zC%%=Qp7$_K-=xmR?bVfb z&&U7&e)z$sefKT@{p9Q3_+r<*tx(yu@L?H@n;ZQuLEyZ-#Emp|`2@B8?_fByTg zKlj7E<0C)y>%Rd+KLo@-|I0vp3nUI4!3h*W6YMw?WWjmsKoVR*ky1eyq`?ieuo$et985tRgfAWR!T4gQql1n_ zS-P+zyTaI+093-+f-UT;G2LRm+M<*l{J|bPK^}a;fdj%UyuvLk!5j2KA;iKK)Iu>d z!!JZb7%W3J1j8A$Eh{9$H?+Yx48o~XVW~D#a*Fk16aZS#(283`JwyL}Y|RWlY9a zJVsHBMrUkBXk12VyhdtdMMV5WPE_%qXMsyrUP^`wA^EIHs zL+N`RU<|u>l*f<5$J0}|eH-YaY(K6M<)bG zh|EWcY{-l3$Bg91lbc9h6c>l4V2JfxH4$dM9??8_}j;|j7hM}%9_;7yX;KVoJ`4lOvfzEqclv@Oijq#OV^A|*o;Wld`;54P2S8+*<4NF zY)!@-PTlNH!7NVU+)dXKzfOz6Umy0EufmuL#)sIgwVkJx$$hz^1#pt-B1gSPW;r+^yE+x_0ag_sS$n8 z5~WWN6&ezy$`9So5KYk+HPH!`QT@!&7M)SLgwY%wx(=n$6^&6H1yUZZQ5OAC7d28L z_0bDe(j4ni6va^~tr)HID$N+l~w{gT9lzEd^PR4o%!1yBZJ%M#O` zSQWHcwNP1w)myFATy@neR8>+W!(TncR~6P6Bq3U5RVwM#U~Sb^CDvvI*6%3RGQ`u0 zV7p4S)i_Pig%eixvD2ZfIzJ*ZKIK(s^;Kvc)^k->b7j_bjaHVJR*yPXT}{>_SypL9 zS7U`CWPMh5P1km{S9Zl$f7RD)6mytuHQd1c+rCxY!UbG{a#f)?Trd5@$t}~wgm&-Ty4zVcp!`HMZ6@-O%M+%EjE+ z9bVYgUCkw4;JrcN_1)%0-sn}{o!VXK4c_9tT+dzq-sI)o>CIl}wL|QEUhTbJ^JU)Z z6kL1?O*P--t?8<0@mOBjoGC8-cz+`)xl0RCSA4q*OW;RY6A z3uIsdeqjxaVa6R`8*X74E@AdPVHHkc7XD!u-r*6hVH3V#BhFzQ4q_c{MB+QQ7_{KR z^Smb>!6EtX=Dvf?W?I4bU9E*4`jCgU>p;xi88w=?53eu|^p z(-}z=d|hM8MdObX#Rk2)Wy|Bxi(@!$V>zz>xj=rcJ+`|+UgSb1WJTsXMvi1hZe&PK zJW0M}N}gm(#ym{!WKGUwPR3$UzBo@FhuWKw2hSO!{I7GzL6dot?cM2!&S{=LX`K#g zp#Eu}4r!b|YN0M_j$UenZfc5t>XsgAqaJCcPHLjQYO2;ck=|;gu4=3fXs_;StNv=O z_EWRQRJ68Fwa!nrzEQU(Qn;pExh_+>j_Hi(X{OFc~jgso9#_OqO z*O^W>tjp%Tc526lYRE2Z$v$ku=C-u<>$A>m%zo^??(Dy|>xrIh&yH-;9&OOx?6pqq zwqEVGZtb{!?YWNax}NR3zU(x9(0v}1Kvqn0?dROSVk_b8-lpB(_HEt9jNuk;-d^r# z2JR+qZgGC@R}2&7u5RYO?ja=qM)!DTR_(FrhUx59#H7_e@IFlI-fibT?%)=0<1TLG zHt#Qv@9$o3=x%TLu5ap2Z|Tl&Rorj)Zd3k#Z}$Fg{2p-oE^q=*ZtPBQ1YhvsChh~b{!ay1WgHXn00FLO9Q^FT^-I$v`;Z*x3% zsLJH-k%aKt{qqKQQ>4NFaV-}|Un^-@puPS5mDXLV55^Ej{dIp_2|&-FLIby4qi zQvY>Rr}bSAGQoyIL-+L{$Mv=)t70#7WtVhVZ}nh*bzS%LLyvWApY~n1b#BM?YiCDr zuU&D6(`*lSb02qfFZXRH_YtP{H=Ol&e_8MxS$f}D?X36v%y(?s_jBs^Zu<9q3i$EM zT6>>&eZO~ue_Dkvc!WQAeouIZKPQpAMHtuO?EUJ*Wk+_p@zD%he2;jDe|Ucnd6FM_ zfG>HJKY4*qd6r-Qd4i8yhL3rPZ+MYkc$%Mio3DA3zj>X{d7j^SmG60=|9PPgdY7ke z^Lh76^m%5Nd8fyDsBikWz0QFbzN3eEsV91^H~OMSdaS>Cug`j_2l5}G#6SG0U;M34 ze8vxaz~6htk9^9Xe8|6i$8UVXe|*iae9U*;;Jd=a>`05gN&yZ1%^Q7cX332{ea}q& z2VDKvx9Hf1zgH#w*0=rAcYVS{{mvDAGR%Dg?S1jXeby)b<%_~wC$iecy+D;8%U&NB->JecdO2**AaM-{|xwe)vcK^}qeu z7ysI)f8LjW@84d4C?T-KiGl_T4kUOY;lYFs6&^%5P@=$w4<|;XsF0z-ix@L<>F_2-nkrXXoayo>PoX($k}QdHB~hh4hr)Df zlxb9uPmeaWIyIHYJ;C(^YAz^AcJJDStMh0EU3+-$%1>t>uev-?_2Rp?w~yPt`~By``^0=m%RjR2Zn{vi!=bTUG$(~{gmbf5e5Jsr~ zA%+|ZMq!2%R%qFUihlUuqau>XAYCW+Ii-_GW_l)-e1?fuKB(ajd8LU9X4yzKgo*jGStji*6th3cN z>(R4iMN6i#C2U)3xV?_ME49*oTkfw3srxCo*#5a-gLiot(S(#rIB!O9F;=OA@!GZT zVk1h3FTjrRYw28=ii<6@*P?r5yPHlt?Yj}fSaG@za|^Mz5_8-z#^`Ab^2i33oN>tH zu59kbAFF(Fw^y1BGs!KlJCMc{*97d1WqbFwuL z4Rp~`TdTB12hZCtvXA;pZ@vo(>~+HbCP=ou1K*4A*!Tvza9j^-eYMb26J52_cGs;p z*4aY6^u|v=6!qO%2Tr&{hWCxP)qWoic;SLm?fBl1H;(w^inA*?mW~z*7n8|FI{J5| zw`pPMo|vvW!>*$AI;ygr76u{xsOa6mC$2AH?7bC)hy{#&CrZjGy!5wV>!l>TKW(AKJV( zL?T{~Z3R0b_r`ZA3DO9KHk9H3smMVq%J7CXG@%Q*2*Vmyae*fkV;4y{LJw+jj4F&G z8NcYoDYg-gYs?WAbyz|(&d^ScdKCTkn4vxvN??GD9vEZfM+6P>YlTXrAa{4jMLIH& zYh&ajBT2|N2I!H6B#N*|(aQnqxZ_-Z*(TIO=1v&7{q168|rCKNyZWGFvHTF`f5 z^PdM*C_Yu1Qj!AHqzh$fNKG|Tnl@CXErsbybz0L*o;05?#c4@x8dR6Avz>-Qk5Ve$}a1<*HW4T9U4A^{izL>s8q*p|lDNtlyMt z=N{^yf*4Vwu*7IbnaI(KX4IB{{p&_wXVtfwHLhZHD~1^Vt0>1xRi|{F>SE_w*?Ue_ zvX`Z7TP@pJ%x+e*pXDrKA?sDomKL>*RqbP08(E{GHL+yPENs{6+S7t|w4zOIZh1@E z)%F&+zin-Bi96ia0yVa#h3ndAn_Sx#_q7Kb)Cuyc(ZO!CuS3M{Ewu~2!E&^)#XGEU zcU#`tI`@;xy)ARW7FzVa_qpk{=6a)x+vDEXyvEfpa@7l6{I*wmx`pq6yb}+yBuRGrnw4|ln=RB`@&#>;btp)w) zO3Rwq!>;wRzpQIy)7sg%p7gPEJ#Am76WN5S%!RjYn{IC#(cTt!xMMwTbC+A$iX07_ z&#i8EGke{&X?MEg4e!I=`_=Mx4ZR6f7*rGgOrqWkTXrF8YJdYdl}1K5MUgnz4O2Pa z{e}>^{f%ymzq{V}*0{bUF6@2tX5wPmIL7VGagk#N%tvl>rR&`3N9Xs_rC#-vUw!3K#|)=` zh%6y?Rn-~wF2KFZ>V*?o)TvxME+O7?qQ4#LLzjEenf`RUPd(&WNBY*aK6kwDo$7t( z``@iTc)=GQ>xb9-;<=r8zt`RHk0*TO6+d~zlg8~rak}Qe!ucvoB=lSdJv&Q3n$C;< z^rYYX=z&;z5k`t9sjm&{O;7vPd%pGm@@Bp2UC;a5`#$%*-@WjGPyE@truMPvy4UbZ zz3hpa;b<4T^bc-*wj;4#C6vAGlaG7k^G5l0>>u}Gzq;~|KlV-m|6#u0{qVcr{Nn$7 z@Y$dF_^1E;>wkay>(BrD`=9*bAN?KQ|83v?319%`-~8zw`VpW5`iS~jh5a4i1R9_P zLE!LZpz&>>_bK25BH#iJU;~CA2wGqQ79a|CApCtG37((`wx9-<;MxEjhG-A;l^WSO z5!&hCM)9BzVIRS4iv*el1!CX~%HRu{U=d#6`K)07r63GO;SySe5jr6fav&CZ;1s$b z6RMyVvLF{Gp%+Tw69S+ZW}y=Qc3~AZA^CwJ6q?~c(83(jp~V>?9oAvY-60;*f*oEU zANHXh{vjXwA)EkWA?nZ}3Zfwr;vyzuBgSC~C}Jc|;v2q1C90uSU?Lgv#3r&KBjO<< zb|NHNBJ)|F52l^LEKy%6-1BKj^|hiZR?684;c0ndO6*}MI^rnmA|;YyCYr@9iXJHD zp)dBLB?^QvzTP7qBQRQoGXCB({vszj1vD0)G&UnOYT`70A~O~vGD;#h;^H7?V>j~R zH#%cVSYs}tqc#SkI1ZyX!s9ZY;~a`&HO^x+s$)K0<35(-I1-~h?jk<^V?5SlAR1#k znj=9fBtXg|LW1Kul4C>v8YDvsWI|qKMDnBknIiS=U@E#z+pwa+$s&#gSuBR+Dvq7k zafn0)Bt)j8M7ZQb-s3hFBt2RrOu8dBQY22=WKZg&Om5^vW@JoW;!wV1O}^tz2IWyQ zWj_k#Q?g@G?xa5gB~&`)RZgW&F62*AWmhhxRubiOupaRwBOQ`u?wMsc&S6?sr1IdQ zTjC^KqGgqoW$>J3TiT^s;w4+sf?Tp5UFzk2+$A){+UJ2TXo5oMLNaJ`<|lb7D1}OBgCeM7 za%hBlsD(PHeom-Eo@Ym@9bj41YYrK0g4!&$C@z&GjM65iWT=S_=#5rng;M8+ifD&= z=7(x%i1sLvz9)|!sgD+Ekp3u$GU<|L=Y^i9j^ZSe%BPhID3(fTj+W?-Dru4$>6Lz| zn1*SVjwyZrBuRs!DR8Linx;mZt|?c*DVoZuh`Q;U+Nqn?>79@rRct0v*Rh(5rlh5=B&LE|_;A#OB&woT2czZ*srIR( z(rIXzs-dFlpSEhCzUrW^>Y~Ofq7tg8;wi4?Dz5G+uc~UTHma`ns;CaDq84kR9xIzytuvi_>DKC7>4#H_L@u$HQ|o+`9XE4H$#w$=o-jw-j(s<$Qtxb7;kMk~5*E4k)Q zq+Y6|mZYZwA-rblz|bal#p|RdneLctvp(v&O6#|ZYqhd#sH&^L7VNDaY`G3>xF&4B zrmM04My#^}?83@n!=9_eR;RrmdD#|*9%Ff2c zB96(n?8?4u&Bm<3+A7V??03LyZ`^Fp>cr2+2hrAu(f$b1ipLzHsJyaW4|dn6ajL0t z*VKv~cdeGv@@&caEY1S$$8zn^dTr5;?a`KP(w^zOC5CEz9<8(AKTr1}@-^?AOZd;DT-5@-5;XuHxG5-zM(fJ}%?xY?8RG#% z?r!GxF74*7?f&lMdam$}3hy4T?!uLI971lO+w-!BE{uLbWf2CIhtZmtM3I}lu5Ah2Z zaSR{v44dx=C$SDMF%Lhn4@WT&9}9{W@YE8pq~hxVx8~DQY8G41XxT9J67dxO3$YoO zG5Rtw8XGYiBe5GRu^L0M97{1BQ?VVNF&?L}`mV7ax3M3;F(Ah=AI~u%*RdhrF(T)& zBB!bfJ*p!&at=MRBu6qSO|m6d@<3g(CTFs)-jOHgk*`8Bj*N1TlyXy?a#W}gjmGE} z4{$3R@GHO4k)dY8)uQ%EY$~UPE_Velvk)hfG9?EyCJ!?(o3bz;GchN#F{3gvH?uN7 zGc&8QGfy)#SF<$lGBszjHE%OE_p&yBGdD*wD2Fn-`tlBW^DmQg8i_JEt1~&*(I&5R zJa;lY$C0z1^CyFH9kKE(gI6sB^y&I@7I!f$Cmc&km^r&MI?wYxE2~5QGb=>vsYJ`O zJ?HZo?K4H!b4FiuIp^|1>$4}*b1^q`N3*j+i}O1dZZK=kH@CC_y>tY{bYaYN?$q>J z4r(^vbYJGQOG}PV_cToZv``1NOb@kD7d1^Ub608Vs=aQCI<-X|bW~?lY}JWQAGJ~^ zwM}O=S8p{=+bULnHBW~%P?t4PpEXjawN|gSSGP4-*9u(sid?%4UFQs2$2D2!bx+;3 zTkrKyk%YzAwYv;HDph=WCJ#1N48^Ewq{>8Wp}n^ zClynxBvnf_0!MW#k+!5-^{I&UTW9vSG&XF%HpV2?(9|~G+%`-9cXe#j_CWRaPH(ns z2lsF9_H4sUZXYvne>P_$cQY&ZI$4azH*(ZBf2TKq=eK{~_gM@$ zbp$wpHyCM*w}Ah*g5yrkvX6wb3WfWMg_~c4L%6G8c>ZZPg4lq$d zcAKLSXT$mX$a%22d7Y2goeQ^*?D?Dn51zY;o}Wyf$9bRId7%$_pd)(G5IUV3dZYjO zqbs_jC;C+bOQo~+r8D}ZM>?kewV(43pj$ewh$&>qdyX6@Bsoy$g=lZg<`Kxz&tnc~&(K@c% zy0rT`rvtmQzd5vTJGKkEw*yOGGfv|0jk#kEx?9fQY<0PB&bhyPy2tyvM^3v_PTtUa z=5)2Y-x%lU%)LKOzN>pp^Lyv``?}yvoBo%cuOldpx_hHOJ<~sZ$jiLcFFnfd{Lm}?)>}Q-W4+T~ zec_UhM6=Nx4M`o9eGaAlZI8X#HwoI)5!uJR+qb>i&%NEBz1-(L-Jg!$zrEkrJ=^y^ z-@6Xp|2^T?kKh-+;wQdu-#z22^cJ}}-0!{N2fpK1KIAhr8d3h?TmImG{^Dc4=WBjQ zt5N7T{^SEb=$Af5t3KjK{^_^AM~4yYZ$1wH&HhQt5$eZ&8FBvVi~j5L{_RWt@7uoV z`#$cE{^bjQ?sq=(8~^YlzZ*6G^0U762Y>WCKk%o%_G5qdD}VKizxR)S_#4!6huBZ~ zm-u?IIv&|g$o%fJou2H z!G{SOR)l!4AVi848D2yv5u+!L4Lu6XI8o%tg(V|uOsTR2%ab8tIxIQ!W6hX1LFTL} zv!}_IDuKGxSrp|_o<@HzP1@8WPN7Pp28~GdqSUKUvs&Fq)G1A_E}6naD%NaRpJ}U> z1>5#1+pca$o?ZKPZd|-%_13is7wumElyo`TojP`K-@^M)C_#x9Y*4|}5KOQ?2^pkNKno#sP(uhSJdQvN zAM`Lo5GO3~!|+Z7FvasOM6pB_Ut}>x7dLDXzZLhx5k8a}&!LO$;V^iM(e^z%?f15MISGYyrLQA!bQ6jB}Kywp-h z6V0^BLMv5sQc_3V)Kg5s?CQ}~U263&RzG#s$5~^2)z+QD%oQkDb(K}sTWbyWS6qqh zl~*B?-St>yn`O3BPzR;5N{C9e>RM}0)s|DOvVG{=gTftXTp*D>QrvC9RX5#kv1ONB zc+GV-z;;uuH(qzSz1LfLzdRS;d7 zTIixF78ux|k1jcBm_z1x=9{bKS?VEIhB#`Sr@q?coS&|lYOSsQxoU;U7Tav3ja6FZ zv%lV%>!!1Qduz8@p8IaE^A4NtvDFsY>AmA#J8-P^Hk@z4?M8fX!0`r{r4%8L9O%en zoSdb~DKFb+k2KGmbBFiEyrj=d4_&L#>9yQ+&r!EZb!b_CeRi}vzo>QGY2Vy-(NiYf z_1;teeRbaZ{`hp^VJBX8(B81=uF<8JC zUhsw)oFNHU1i~1iaEB@^AoVg-p$HPuCNZ-P5_h7+ATiO1G=yRirRcjPer<_XY$6t) zsKqF%Zi-H{Nf@~}MlVtkjAs<%PRMvfHI|W$Z*=4Et~kf#)v=0n+@c*__eJ8hF^_lL zV<7v8#y`rDkh=3@`v93nJudQsjXdNd4arDEI#Q63j#8JuoTV#qnMiGEa)`VnrZ01O z%vL6|n3yDGGuMU8EJkyc(==u^pLtDYZZlohyyZ8g8BA)1vzz18W;va?OKie&o!K-e zIO8QwGrqHz@r36**~v|Jl2e}T6s9tv3DA8C^qlof=RFOYPksi}pJk-QL@5e7aZO_#1l#3@7sYyw?(v-GTpYc*@Oe-|gho;M>2-RIqBkDSy zqLZZqa4~R<7a;JM;?PgcH))g*xKa1MXCil186|Zv1Yg*8Xb-TSquVcd-U%L91zT8y~ z9?h88iSBoh{XOk}+r!^D`j-{}7A{3Fs$k_Zn4%8GBZLXuBLg3%!37TRfd`ym4KFzV zB^kExhA|xB4?j4>CLS?}5iH?BQrN>QMsbTzJmC~qm{u3wiimSe;vK8F$1Lu!i=zl* zB2&@GHGc7pV;tle4_V1YX7Z5*%wu8cILR`$F^#pnWG*{-%TVsJl)rpsA7>fNUKVqj z$-HJW3)#vc!}64)jAS~G+0JE_^O^6=<~+N3&u|9vo1YwKomM%*I3{$M4UJVqD>~4H z9(1G`J?TSpxY3+_bdwjY=1i}4(^ST^r5!zLNME|dr!IA>IZbI#lUmcJZZ)cZtm;^^ zTGY6%bEtPM>s;4*)~g2guhHD;Hh)^UyvDP#{mg7*{~6iJb+)UI4Qo*Qy4Sk@UN*M3 zt?g!W``g}r_OxkTY-&T>+Q|m@xYvE|Y3l?!41qMfS0(RO(>qr7#s>-XWsIfzue<7*LcWj?(d%O`{xM9InQnG^P&U&=t7SX%()_S zqYqu>P-nT+UB2|3bDZiow>r_Y{`9R!{p(W?d)1we^sbwI>{>6o($|jlw0phnA3rwM&5zkAc`uJ^u^{qJfIJlqG5_PxvH@OVl5Xco`!!qYwPfRDWY;3rS`${YUi zZf|^THt+D$a{cX?zdYnWZ}-g0J@kyPcSD#Sz>2gUheU$C4qtzD*R$UCv9CSeMSl8x zuYT{h55Dek&-;bV-iETzJ?)Fn_umhn`Or`P?w#NJ(MKHkzVH31r&p!8! zPd4OZU;60RzVO#i{Pc&v^x%Jf`=d{P@4tWk;-5eHtIvP=TR;935B|yQxd&=BL04WYvir7sfg zZxZD&MDkEBD)AB3LlY6P5Ebzd8xa%nq7y|i5%q8p`LGRB@efxq6hYAuJ&_S%aTG_R z6lw7kGm#Y~aTh7E7cFr@Y7r1$Q5IDZ5`S?MSLGH_@fDdd7ESRJolzKF@fmS38g;Q5 zv9TJZF&9Y@8H=$Mk1-p)aU5;&8=-L)x$zpwaT~R98pW~y9og|6Iq@8=F&*8p8_lsC zhcO=Yu^;(y9+j~k)$tzXF&_c)AgM7RV`UlfaUK0}A%CSI4e}uovLc&86Ok?>5pE+n zt|LG0Bb6c~F%lUyvLre3Bt0@EL2@NUvL#7!4NWp8QF10#vL;#bCS5WoVbT$0vL|Ws zCv7q)adIeivM6~nBP+dfE5WiW z7vn3*GAzwXtOtM^EYubICXP4dGr5#^EiPs zIfZjMiL*J4a|DqyI+b%enX@{b^E#nZ2BmX5sk1w+^EaM=^FRHwFfvd*-%~5+lf&{eLHlz-1GGWg z6F?zUKn>J9DHJ^|v_L(tLN)Y4IW$9c@I&D*LXv_=7NM0K=9c{E33^G0DbNM&^YNNKc4ZFE9~G)akcNsY8gk@P`v^hkYl zN)2g1tb<4+C`)N*OI4>!iRVk(CrmGBO!=ow3+PO-)JU~-O}Vs9z4T4NG)~2IPRX=R z&Gb&uG*8vkM%lDa-Ski4G*IPqQ0cT#?etLbG*R_*QTdcg{q#`*HBtq2QVF$E4fRqH zHB%LJQyH~W9Ti9+HB=>aR4KJoE!9d>1618cl+rXvT=j|?^;P$DR%JC-KebkI^;S<6 zQ+ZWWeU(#z)l-FaRe_{cX?0gw^_O6Ei)^)7b@f?^HCLrIS&emBku_SCRaCW=RJqku zy%kl#wO7UUSIIS4&2?DOwOGI8Se>>1{niZ8m6e)?+19 zXp2@#RTg7W_GdE|F*f#TJ2q-R)@kK6X^(bljh1M$_G-7*YLyggzZPPdc4&bXX~EWO zRaI-vmTS?LZN+wJoaoqb8`Q)av}8pa-}qLg>-X?v~!L0b8R$q8Mh}Kw{#)*bR{=+DR*@( zw{l&75IP|IDr=!f*Ux3A6SAb zn1V03XO%aDp?8C=w}ZL&gUL69)i-AQ)h@#WG=FknPZ(Y&Q-u?jh4CYW_cn$hWrh>C zh9}mAY4|b?cZYGfhf(4G zi>=r-fp{ZVIEiI=hzECz#rTQMxQfxZjBR*~vABzgIE>l&jO93u>3EHGc#gUFh{5=a zVK|QQxQ+q&j*a+_3AvALW{>^&kf|n-5xJ0&c##*Tks0}s`S>I)c_uOWg&jGP$!3xz zxsnz6l0`X_NqLhgxs!3^lRY_kxs_4*m329md3lyuxt4Dj zj)S?4wfK$6_?SB+J<4X8(WaS?=a~&dIus?EuOn*FqdO9&n#+S@v3We0Ih(=xo1HnF z$$6Zixt!7YoTa({m*eA_TOys=`IqfunzcEet$9SYc|GP?JgP&S{n?xWTAc-2p1T>I z*BPIc`JTD?owcH!=fj{KnxDOypc8sbqB)@N!=4eEq4Rm6_c@}yVxkYaqB~llIU1xJ zTBJi-pWWG`QQDG`37dZZ5%G23x88)`UPW;|O{Ks!_{`>{patK(W?BU`aIo3sZaAOHX%`2+<7 z0096jTmWMMpaGx&00{p80|*>Qu%N+%2oow?$grWqhY%x5oJg^v#fum-YTRg0n8%MG zLy8;;lB3C!C{wCj$+D%(mla9MoEZ|P&6_xL>fFgwr$>%IdkP&&w5ZXeDuZfNinOWI zr%ytYTZiEszt9{!-^eC)+JbqXUnQx%eJk;v=ZUEolCcFR=E)I+TF{y z?@qlA0s9?HxbQ~73=tb%%(!tv#czcg>00IIH0Kki|inwF0JnqUXj=ug%W3a-)NYh8mFw;x|2Q|Y>vdrLGtcAyV zlog@Sx!9fuSFv0-ePP>6Y5Co8Dy6I8?@4WQZYwx}I=Bw|%{Pyeb zzW@g;@W2EYZ1BMdC#>+o3^(lX!w^R-@x&BYZ1KeyXRPtY9Cz&T#~_C+^2j8YTr2=6 zr>ru{8??N^$^dxaK_oQSOtZ=4!3?v@FRv`K%{Jrw9m*WtEOd56Z)Eh**R@=9Bur!H zw9-&VEnU(YEp7F3SZAd5*2#5^k<4I2C-y~Tm#y5{7O|~%Z*Ef*_uID3Es@=HzlJwN zd*}a+THg)$tO}dq%wXu9oV-3r`mDlp9}r^1Cyy zyk*EgzghIsL+^a**H@2u_HA>oedpfG9sc)&&0bOQgJ_~|=Fefx{O4}W3u&oBD; zcjIsWT=nnISO5OA3jhNcJN@y^fCMbd02A1j1u}3gwtL`SA}GPSIIx0axgZ9^qQMPr zrGp;K%K9dPz7XPMg!wZeTPUbP1tQQPC~VT~gP=|&Cq7M>_ zqO&3zv4}(D;1QR2#3XVhAOIox1O*KM001oX0hj?m02u%P2>$>Psn7+WpuvL(6DnND zuwlX&4kJpOIMD{hix@L1RKu~O$B!UGiX17@p&At^Q>t9avZc$HEY+BVNwcQSl`;N)m2g)H{X2e|~6n1te|Dxx%zVWSEh$!MDBfDwa=4}mE4Fab_U z$!MKbuclBliG~WohE*WW(e=g^(JGt_kRc=t4@3fir@Nf;CS`Hpdk^+i`(*p`F|4J# z?h1sAi#TS?;1vSqt;;q{q?CnmD5Yo6dN6>d8FVN)G2eA-XyH{#{Q1`sXD_HwgB94R zU|>Nzm4*Zh*^!{b3RW0b8UQoY0Gn(yuwX-s6{6G|St${A1R|WcbzD)&jd)rX0TO`% z7X-A>#cNP8Rz?6~B*8+BDp+^KN<@S;R#`x)K;la*h!<5-U5;s{hh?4_)rSBur6y8r zy7{J1agt=`op^#25C9?h1O*5H1pqAI0fqro04o3h2>$?8yeL4hpuvL(6DnNDu%SbP zCCELTNU@^DiwVzR+{lsRIgK4digfsKq{)*ES)g3GF&)d79m|oE2(uJCuF@KYY$=jKN^+OJnRy8nQ>%jCHIHDUvi~UrHrO zs+qBkC0j&AjeTdRY@s39D@rA)C`D3HDs7kN9CdZy_xJuC&++_@@AE&LpV#}fz27G- z?-b`#F|@=M!W>tEBs#&e$nHcTr- z=gaX6$Wke@YthoZrwI}THY02llX`Wdpo|#-+ky{H2;a!}wFx$mFMn2W=4K3{4u4ZR zSX(g;ZGoa%NyDbu2+@4=?mhwSae6`oPLM{22%C-4;qZb00P#iT3Y4r}3nawALAlJ& zXFV2=F?56Qk%RP$U>IHM3``*JbvHaqlUm$s1pssc0v4^#g-db!u!Ny9wvCv6C23R$ zaZFc%Y~&HG^B$L0<&z-Vmt9jcVgSL+rB5#M}#hAhj&{LIVU3WB(mULsYSts&exB+E(+c}(Ak3E!T!hb2@v+v zq#Pd^{(}93%@D|MBJ%r-jQHn^to)BJ5+owRHmMT7iHLG*7!P5TblylcmD-(A+E(o) zeF#6CM-;Y5wYwb9os0`#@Jil1cl#1v?KT`FA}(xbhGv~qb#P@FRn}DSrC#-pxb2AS zju3;IlwhwmwA_}B{u7yx4b#O}!~E`FmMjXtaLq}uZ{ORg*GIn8zHKUvFt6T~86rgv zvXs22wK7xiB5U{?8jfu(Zi(w~+&D4v^~?>}CAmwo8oLm{5NcbE_bnMZpK!(AmaUyW zHx?h)`^=rpZ=ObI7MLWli?Qb2?E(Os>&a`U%dya zrZmD4L*YprxYZDbqvXpvl0$!0h!<~c8$Ur!_nZNXj}ix(pHk`jcq)5`e7 zw59x%<8yV|xNt=&B7hLA%3{jgA02%IZn#lL1>L0-GsR#7cq=J0&UAQvsMB(vM~?b( zn3G7o-6AZA@E9wwjf#f}7^QW`ku2rlaA}=hpG4^r!*Qh8KL4U#=hr$K3;;=A(jgN` z)#})NixF?DcrT;RykoxRY+4uFLU5-Pg98z>0w8b^EVmpkEcbX6jWi)Mg|s}1;?adr zBCOP$!?qQ>JxPLDG)tIB+_X(gR_TG6;Q{`5eSk5{N1@eP9y&R6SOPBg8^tklAGNKe zA*?L8fCW9P3_Y&UO%SmV<;NlLIW|immgwUlko__w#x=JXjm#D~z1}a#e%B!gTq-Cf z`h_Xv@0OALZKmA0yra(dW=gk|uD-6UsEAlf za6uYS z>b}$7zc_MA*pV~6odvdgYneLj9bZ4r->cbs$=m7Zd-#p*>XnI| zKfkZuxuzy~y$6DXkcb<|pI!z|Gro25J%gYeN9kk)LEY!%_fPKKP_cLt6a_=$X5#Vn z?lXHt7yXNqrDcFUk=sw?Ka+7^!4|X7U4EowH3ecOpqX6(CG2wKJ+fN9k~F-84+R~+ zN_)!Mpu^3-t*Q_-;mbFLNNJ66L6*_FH_rWjb8IFSigQ6K8V51rk8R^DLkR{npZEfU zyC!r90tfIZNMYBoYzU4+*}>5ATYinEa?hy?r)4h%rD@LpdVc+7eF*u>F=BP6? zPyKa&QqxzE27rcL%uD}FjY?g9K~3fMO7!Vh5wn8s1=Y-7Pmn8WAAW3mhl_Xf`0Ym< z5lT`tE)0_qSRWL(HS55&eSkm%#}-OX6bR1uK^9ohUCLv^i7ws}lPS#`4yD{T;SM+N zJfb5?%=uPzt=NQdFwH24;de|iqrkgzoiu%}=I9N_-S@27-MTQ;)2TeqVTw<_LW5JP zmqo!jjbh6u$f-NyuDnu-iND~te^`Hb^R~j8K`S;F0ofR-yI7TV)@prBxi+JT3I`QL z91OpfCSa^r55#CYn!h*^LhQ;+J+sZb?Ipj@#bc}sho8QjD^1cdJyCjU|F_q$@VReq zIQt%YkbciBG@z{vISp}!xIuX0S^PgA)_;iS2SWq@uwuI=kVXAr#l(F>1w2;#OFUn$ zxN`|)QNP49<&5T@pqY@pCI7^DnfC zUzRPQ!tad7yLqJ?7a?Qi2=GDEb9bGsDv?o$c%+g@95QCW_*9c$%6P8OS?5%Xs{&G8 zMO(RW2`TJcQletEH8VJD`9^XmZ7lBGueoU4rj~l5$B2v)#t>f}G?qz$6AVdY3nA6J zUxUt)TZ>SHg0wZFC2O}gnpXbU4iEUPh*UExk0O6RQXlY<##L+9{x^XnYy}Ag4*i7NI3N0LAebXs z;*Jrf&sE=A1;krv@U;qtNvJjqCU`cWw_%8NT|d4#Z2mPco6rzswQ6&>6>FDAT4bC3 zZX>CCZ~2K3WQ0&a=6wox4X@Lp^J40~jQgn994nw?PjSoon>D&FZ&d!)dv~ zTsPXXo2Ppi18+2^B5sN(i7IN8oqd%a?9Z=pY$f@x7gZ`#Pv0La`?{!B*!69(f793R z&Gnm3oeLQ~Q2+DGzH`_A&P&Mz_$VYk$Pyjp$c9P|aFM1<3~U-3u14ubdoD4hM%YNB zfo`Fgr8qpM2xUv@5k0>YukKicb|2`GXkSVorWIiVDK}&$mlBOfiiD01+)x02OGv^L zW7m=>y#$$M7R9kxG;g3+)pR+TnpTXfpxo5-Tu$*ADVAs%xTzDfoJzx#NcB_t^v*A* z1>pv5?hf=BwlANKNGp+>qx73jE~iJ2lqhV^Pc{FxoI%Hw;`!_bEMz`pvK&hZl7j;_ zrXR90(@K@q>;~;UKV;{Rl&TsH4m!ttIK#%2soUBOxt{-!Q|VZy={`8Lv;9LZC#_67 z&~Dgs^26EIkusg5gTvn6KICyR<-{br5nq{)`2&vSdU=B*0j3|%ji#0BSJ>SO@%(sx zVx-)#W$@Pin2#5xF%`!BcDE0m|5z~ZSYi5b@OD)D$HJww3bQ%8J28_VFRqSMZ2dC0 z|IW#8A1?udl_WmQur35cn zMX|NNn|*$zRNbk{-hJpUXvmcjPggkx+TS}rxl(R?tIGN4(7lV_Rw_t>)zl>W@nV@z zl{>BAx-jT(2nM;$zeDi<;5PpO!50VqR}k!su{Oxz`Il(7qGIrW&9obuFBfuaCN2jt zvg<+&K?pW{=o&82QorZyAX+&wr1I zw=BQtHwxpv?S_F6T%r~D&g|Rr^n{YorkdyN-LD5O>|RR}QaF0-#q<8az0a@!;#uGI zO~QLm#D4htYPqCgLt*Dy{5x^iflb$p12!B%Wmi07ye|9Vb!^Q#XcS0@&Bicdj`Y)x z2oa7xP2}Iox)iT0&iH%SDX?cZ9>>rEV)@22=GpNQG8KhKLvkxF@>BLPF14!o&6nov{H9u* z?CsAjPV-)>JeTdMxlozldtSp07dAw{SgT5>SHOO(1z@YLJU~}eRhZ^#R@4$Q8894` zUe1O}`@Cs9{QSJu_G?WGwHLdfsaV1;(m9^=Y3tkBD{7S}6IV*66LJWId3g__&;Ij6 zIyG*W@0iL0aF}*HOOTqG8FvBtiKqdp1FnT)Y7V5olvOLBMsQ{^nC&6WZ**Lj`i=uo zG2`hu@;IS;2X^lwuq5OK+6I_VubKB~*Mh7*QN2oh{BKPZU7(8Hzr=6Px@^P=0ra3~~&whR$)WRoFC z{1poc3cd-7QyKv{cU;e`(VK=et=4(mK@Rqx837a6lA&mO-iUTE9v!Yvh7rErUV_VR z0(?>x&$P_2&^bBNprsMWM5)=S7nD!(pj%Qg8 znNLL|G}a2Qn-Me}LS{{}nY*qB!%FbZ;g=mE+qbxIagKopO;oVY*f(dLTI`PZHgCT0 zc~V5%hx?v;@AQD!-7Qb0Rt@3Tb%jxW5oEa$T4D!31oQon*qzlVGd(Frpt9C^@pMk& zm!bnGVJ>4M%Z9(aihE+|@Vy@sJFb_NhCoGFMQ|La8fFFTN57WBgwPQg;dl6v9Zb2k zDZWm9b0RYw>VZzM;hX!!^|FeT(OJOj?Ve&{bxV4?omaOS*JWz?hx$;}iF7^`2|xtV z;iw1zX~hK)QV*sU`bE24@euI7Etwz=XY5(J=FL*^@!+;Ye*X1bt@Z!#dABRqp=1NW&1KOJf2|Dp*mPL zV$bU1*)$12w>Ldgt)u5<)aQ)`UT^rkwLFLKjso)eTBx9jVzF_cQ#9rM306K-EW1jT zn&^^4;+K%N)1dRy=tsL_(zV*M&5a;}yY{>0FZ!ufA7CC%^V8?T6h_ys{iPUKxP(!! zT0C|~SBRdI$rK_XhN$);SJ*SSiX#%>KURbmim-do)*FY$EdBMhz0m6roO$y94uUC8 z)vkF%6fs*h?J ze)2Bn%e862hUk6=u)Xx9W8SGD=Hc+u&+T72mrggt&N)2$HuCN{`TcM zAjF~bIZi`mSGg!>4pVYu8o6b)8=KCFS96>}?_TYZy3I*68krF~zIp>M)X1`Rd@g!n zwO8G_F~xo4xx}^Ao5XbR2%+N(na8Vr#vR*9i*l=%Wm{hO2A9q*b}P0$t$8};e&Ej9-QXoXQ^Q)1YKgiOUV`_y z#R>dR5I6y!T#I^n_a-<2pIwUC@k8Embw90`Z*9Lv2U&Mtzbxvhqt4XgN=EI%4ulqkad^O(oPr%oj&!lNo}4jA)9h}q})7a3ctT}I=H3YqjYL^NB`!wC9%_6*fV z+Aq~g;v5$trQN&zjBC{Emw8*N$^LNbozZ0oX~IpF{IF)}vV74lk5}h{MX#1$h<;V2 zRG@Qqmoik6y=%Piulj@5!ZE7flrHV~2HIuP#>DAuPK4~6Njzbao=DJC!TQnc>4cQ$ z(R>n)c<6;p89Kl`mEN<4sw&NK_0tgjW!ue91m}S!0Zbr4+Z8G2T#Z)YO)QJ*8c{fu zKcm;v55QumHRu*s9O&J_ufeQ&W7#Eb zTq;cB%fgdQ?~?wOHxAc??D<8VBl zfwH0lPmj}^7p+8cW@9Pg7Ye3rJ9=mS|rF!Qvz2MHC$+ODVz>#F23q z6Iq5*+&$Z{aeyCHSEqwP7%v(4v}R1!ysJwN-zdX{QAj9=KG%$xO^2vnt=law=x?hG zMYodZ5|NAmmZ%5Nn+caF7>#kKogcF(OLY7R_5ilK%g9iP;&6!Iz(SsknRT*RqL9dT z8dPp9%IY3}?+zppoHLwwKHtz3hY$RD5*12T1%ifW9mgLTR;lf@3njs%NDw(XBWsMs zEVEa+XqKD_QU3smNG(;~Vdr4j_yIr5?>`l=YuMYK-}!}frgqEAVP7bJe#EYr)&=kN` z8ZFj=ESfEB_Pdkkxa(bPwOf!|r9rZcU`nJSpOE_jPx0>tVfXT-hR@ekAFd&xBZ>^& zLZhm-wfns7>OH=r!LPEyKty@pX0_=SNI8+R^2`ol5z03vOLStaphnIKQmatpe zGh7HFPJ`urYf_JlMcQAmd3$Ulx%$iju_Gsr*Y!VablN~!0u7uVpCfyB-j+4GS67-K ze4XZH;J^%N3Vn9F^V*m9(>GGrHf%e&g#wI~skPE(RzC@bxD8y|cD)NUO+UVQcIW!_ zScAE;il+!6`e-g0dUNg>&)dPD0`{-$jJSKQ`63jl4024lsQHGM8A%Jw@|C%%-cT7a62iYD(5{7uE|1ghZDEwtj2r6SskD_@A;2 z@$*Z-%+Fu6Mia8Fqd-8kJh|;NR}l+d526#cPaXvUkwe;>E9OF_qil7E41{o4TM^ou zz*wj8u#^55P5OjbxF(8pgc*xFUPAt#})oE0e-^45f?s{kWxXsrp6$%ofrb*mE6+S6N1#7{akAK2LIcb`{zvNVgHa=Z@{i0wdwI zU(OPDA0H79>Ciow0vFikQMV%XLulsxnM3T?Oo4#>tOhJiE@eaG4^0p$d-ZPBirZ4( zeZ~q;(}tUJI-FXbe0$qj<$GG1{T(JqA(67<`EQlQGI~I`tkiM(Gz&ZoS3Oa1{N$zH zk17sH;{kURRFtO18*d0UPgzjv8;9M$JXwA8_cPxJgXVfbjK(IQ1T-k`pATg7!gGql zfvX0sJ-zT|UD+`07}{Z}6K4(8HF9RcS$I5Ql1BG3Cu5+QkfGKkC> z)s7l{eZW%_1(hKrXd9TlkDIgX#pM(0zvX9cSJ2=Bed--W@>+jskGfr0DCsk-Ubd#K zP`)3!TWT=bXnD}l&SD|Df2*E)MvNJ1!%qqYi_jy)Y0omBqLfGqO=j!f4*#I#|Nq{O zs&=U2e|tM~sz(%^9Zu5G8`Ucms-^*ND*3m!vn|8Vs_;*UBnN1}fpkHV0Q=u~h#M&S z(*XHZ6pJ+G{4R?9Hd=&ANv^-V?jIB%(0^7@Tlc!1&cX25eBjLVEuPoyWXztveGy0m zz3#|jW*!b{SZJTSu)P$6h*{zsnobn-Y>PrH87z7BaUhoiru__EzldrXZ`XQ(rCZMxW4O z&e$Fp40k_M285}&Bgm{gtaMEoXf&(^gD_<&4UYa1ab>_U$KaR8V0lDjfB&e|77lfQ z;Lpt}I>K59Cp;8~KssW(Gr{nYbW{|N68RPXpg?t3ekf$Y_ z{>9UzA}h&<=GkEM$>o#ypM&#BWTzGMT7^$eo4>IFGDzw8oI_$uiT6Fv0ni zLI~ch)CL{mXc31#_by_p5HWc0hWO8_>E9HMMI2PNAX-SqiBrH9g-Bp}Xm6o&WOkD1 zegzk-7)t)j{v9|vV8KKf)4OB7Zk$yWWtlN_TF#$*{90y~mn0p`_vtIMpf~y+A!YIx z_S-Bjgy-&*YfO|lmgfw0Lq|Q=k{#sD7Gney^;R%ylRoaYD{jdI`DF_&v$b2L z_rZz;qTs~6!Gpr<9=4j^(@zJ%UWaAmlZ)!s(tui*F(F(E`$fzPg^w%n>Nr?%rysGA zuSv@JsL|8i2De6g1HasgNB@qdW;EJ%cq`DQhPI|R*J^Dyro{b)k}*3gI3E#(4Vnn5 zmw8$2Y(&^joQaKW(CQz3^q`SDd-_q<2DQlHl)rG_mimQ@Rzn63to;lbJ+=1t(p-br z&mRKpQ$O+w9!srz-H<2!|68v+=@3)?x7V%yZ(g@FDn-Tcr5H7`*p_z$Qb+4Y` z^V9uRAA~GRRB|>}^J+DvdgtY+STvg#l<``o z&0tU#bgx=v_z0*`BVG(0c^n05)aZ{Xbv2+yy&m{DL_V!iXXXZO2N$<0-uNP6n+E-a zePaZxRK8txC;pTAN`|F-+v=0!|H|@V;#go#C=A9#2A! z!LSMv(VoK6yVf)#r|C>|Q>W%)q3n@}XT9ArwpwQ2AHEIDl3eTR2t9UqZd7AL^}>m3 zN8fch?XGy&{PV}m^02Dffv#grVHphjsYeJdXqtgi{S%Za7%K$){Cbp3e{-VD#+pZ_ zerwc|m3{F=IsH?|_>?0U2x!VxpJe?9K`%}#U5w5;q}4P}NRx&VmC~&wf|Xez9XFLy z=MKMe42wc#_XInEsG=s7B_arM}{VH`SGH`W5pfyX|mxA^+HpLc(JUTXaRxpkDIPK(b z(sd&#Atk6kiKj%tk+}v+(F`=aSEI9oWCem99$Ow9JTwax^PrK^_At&PM4>$DRrd}* z3R17kh5uk)WR#F6aSIk?UU)2Foq0{16{!?DsX3;$&b+RgPu7QR!RK&AGyLNUXdOqJphW^9uCDspCjJLqRTem>0h*=w6*R*}%#_Q4if_dqdM9-V z6A6<*xA3HB&bk!k!QA-Nx)ik-dAm-!RwsS1J{{lRoP?RgUW7v(M=CCbl&YsSX5SI66!)AAmpsMzXwe z?2_h_9~5?+xJS3Q#BkoT7&^rJ6dVt; zqA~>zv`W5QL$2yO@RuTYRQ4*+xV=M8+svUdplT#SFvc_hPh#=qB*6FXO5@kW|CXzY zei13|Jh^IBOGTXCKJgAvQIGR+*e%G;Lo?|}&s*CBBP`%biSx!*jtu^>Vj@4-@r|F1% z4%hW;D@J5v=wOA{H&H9rgvzEf;zjF0Sz2bu+5elMtSZZs^It((NwIwDiIcN1w;;w} zCKd?3B_cfJ1%l2L<+*x|`)oj0 zF9vk=N(bYMNZz<(yk5TG_MKjXyk5SVfAtdSvg++iB&CH}5DHy{tv2nSAc<9tRcIB~ zdrj(VjF;@Jvbh>_q{JER-ni9zh+*kb;@WuDTuY)Z>1x;s^phQxqcG0Fd!Lm<4c|Rz zJn;P+g59Dy)$0BFWOc+*&Wrv`rN3UaI^Y@n$R>L33|5TGQ{dWBZlY*+sS&K>4X_ zhveTHBt`P6+Ic?Y(3_{XuC=^>#*Gu$;2e8&5MCbeIAC(S(@ikf`a`$=a^I)djS#qU z$#m_Za~IgznP@vYhw$FKe`V>#@b&tOeoQ#Zf^KAbvTJQ^{(fE-oDUa7V}N}CQuKQW zSS?sNsNBQAsm^oBz>4itu$lwRBt7CsjRA;Al41gc1Te|cJL4%5ZDox&h3_AnSBxQL z7WLtSv1}A;RI!PrsKHu(5hVk*UKnZ$ToO|-jnqw2Nc%$g-PEB5D#iZGTqEuLgJ^iy zES9hf$L|cEHjxZd#?Yv_Fn>lFnjG6`nZLzNKVEWkY#S37SlSqm(L^bdMEo)II0-P8 zj{n8n)?qE-4vk&_^F*ybH*|Ob zEiBV@O2Jm%I2vM;H+~`}e85j?Ik>n|D0KyAk6Gj4T7kXYJ)@wkNKO~@&B{HnT1N*E z`Tzuik;5|}u%)?THgR?;_?C0#6Q3EQt#gJ`_u9UDRYmrO!mlONIP&Wpku&Yv7*8ES z%_MG@jBD6rRe|)wsRx5aJBl+2$h+2Z_cF6dwjHeW&1ha}dN8U;c=|N-MrXz2+WHFL z01azti=&~NKuSk?E#`~D!w6{+%Qn_=?ryDe+7XBRtPLtHR6YZ7P@QyNsw_Pl4x*Vh zD#ZGcl;{LvqiQ7`r9KUXc#bC6yvFR96QD~)i*FSVOZ9krS0p2#wAI$S8d6KZ$&8jl z)hcIfzHTm>!RjJZ)twRB=JWSAuBuebgsUj%NLBoMyV&VSD7n%i=lw^W=t} z=f~!+WIflQhTh65mil?)rjA9pJ$h_Z>Y>L)y&kL6VQKr~nZ8itq2=_u2VXd(-00s5 zRtsWFOa4Ds3uH|o>Q00qm;ZCMKvWdh>^Q3ybMst!G>iojGHbD5BwdWgc5%by^6KNIfilU#y6dZNS?ux*RybK%4*zQf~83;<#)HUO~!m(D0OGv!Oj29ZIv#*PDuEFMhkyg4+vaJ8Y zRL$59Tz7JV!PebhgAIO}Xgn0-H4iuajSqV? zCE^uC>}j?($o*xat*rsbflD&)#QO^mqVk_}fyx;*upnilu1JT=tUP5bJJHBCNE2fo z@0-}0U?XyPpou2B6U9wXQ=oI<0+UEmDiO>k=!l;FCtzWb1_bggOHIqT zOD(@R0~w+yCCY3i0&#Yt;4j6ddEoa`_tA|cQs$TnB!#p~S|C*_n<*8n0PZ+oXzC1L z`|DOEGK*K%UGF^oNVa<=wWV@hq86!=Nd7&h~ay>O5m9v%C;Rb7iYPE4MNaYkO zj{ko5>|9?_xvI=Kt<^zoF#YC+fF>IDjrhJ_CfZEpzaXzXGhMOY2P{7AmvtKDGTEEW zX1WDP6TSnz;l{;K6&16BFjeh{Y&wknp2%x z->)n=$}mt$t>cZ=8(T0Z^`2B_2)q;cIygUy#Cx^L9a;I7T=m{GNGH7W{>djW0cdDg zTwkx)I7c{FMX(a*&lWt@ryUdriTDK9MUjx&Y`El8Qs!Ne_`@4h#mFJl1p7q@QYuF* zG9U*hZ($dZ2>lm{S4m`yd$Uf0ufe9qYkdVhnw3D{ACBsn0+ zq_`5#mmMFr-glTDv1e{dI5JtMQe#9NA} z99d4&6+P`d!s;`$d97l)49GsA^h3IJ)ehB`C}`;8KCiA9q&EEa?5P0gQN4qVL5>21 zb+|D>!AaErL7J2)F26h~KS~y}|1`MFh_TD;iAN*V)4(Xy-vUrTgVjjIvf&HHMm^g2 z8Nlg+3AojQqR|;BJ|T6I3E0O>N17_{NO3K@S7T(3)u!U1aiu)G0H8IGay=mt)}{vC z2thoFTHtWBKIzKQH=L&I=z9-des@3M%{|F4X*krpQBwd`E2Qo9W$9@bZsYc5 zEh)M$^Sn{qyC2dA_n=)Wnmd7WOg_Wn*C9Ico-1J^CHoFvbhvhS@M?7hVIYD9Q)~~( z*4lf!qwV7_(sbgh*L3$80zD!KI3)g`a3kz}%d5ova_F7u=`G)Rp1u2fg^<{EXh##|T_MJ2&D ztEiB@b~f@~%mVjREx?)$eNJeaSF?$#{~zVbHE=!WIb;SYtjXar#SV`aF{}L5tKzck zXYF|v8+^zwH*C+VA&N>=4roBx#~Vgt7|B|GSzt*zjR?Egs_6i& za!29TqsyC@{uN!GN17(e%{-x7H?Nm#4*j82s9)t860zYNhifN_$dI&>>Qc3rYzdJW z<=X8|BTWZ|^U5_sHA}&j-m}wSk6H?H@i(QKuYMD~CGO}(Q3H708$nO0#@cncnDxlD zC%)WGsUY;&Yl-h=mNw?#rT{|DFSvdI6p3S|86xkoA5EppKwE6hC-IsEom_FOxvyrk zw9Ul%59o>dq6E3^>bkuA^0}7E?i%dpW4eyJ>zWe|YP|qZou@TGZAcEi=RA8t>HfAv z$<^tXGaAk4j=Mf3BDBykm;fjclPW-gI8dD**V1E%61~IP z2W)=k-3!rsN^m5ZC$Nm*p=w|FV&0AMD0fS%X!DkF7KCHf!IbkRwP z9=yH$WG>=gObHP)gYtl2VS@t|ZCZX>W-jONW^WDDbTgoNT(G!tDWW1#?d_&8ZLlP> zwSuWOcW#V6M zw{4m*xE5{l;rCkfF})mc8wqT72SxP??vRp^kXIMN*PalzW8uHjkm zozM0wGU$fs8!RoI-6PQlpEIo=RYyCvePH&T)(|rcYuh{(c=}TE1G!y`es?PWN>cb4 z{qglUXBe6<$eq@^dvtIA(-XN-;o>d3^K@!2v>ar21-nO`=rH*(3!D|6TkJ5k_nEl7 zuYcpC_M^FzR}Zfl{p{=*6r4Ykp|-!v+;&BFT;R^zuB|rnmmh9#xpNBg_x#5r51-Lt zKP&bggii+2=(8%u`0&>+`|-zxKJ)p+imLW`CH#P3XTlWZ27Hn>K(Wu`zn>104_Aoh zLim6XV|k`#On-4IF~wuw@wHE2se*+3x_iHcMDT1DMYU=++tKiK>6v=-Kea+tN&mB6 zyix^CbxcQ!a6t5oBPQpW1*)>lUd%jRBP(E6sTmZE<*cq(CNrmEufd<6wR>f-(J1uoJ}}CpEl4_u3b7}m^yixX{{OV zKmN}D?bVFsb2Cln52c2)rM7y8UwQ8O%BM|L;lexbH{YUsIk>J16Q?(wui4oCSt0R2 zdhX{p2O7HG+JkG+6(JGeTJ+S*9wBfo`V4kkSYzJzL@i>6#lqFMeFttzUm~T;2t4e^ zUr^Dbt6W%=uoQ8@A0BGD`BBwWyZ-gK>xkea|eR$5=e2*1aADvaWmg<-4 zZF&0(qF>wR>+}57cX|&5hZkF4SL`MNK+WFT@9)-*-2&cb1!9>aqg6gXmIu@tetZ}) zdjI3&sO_eoE8|9Yw!FIxJH>0gkU9>8jH~>;I-7T(iyY#$xBc_uqZwOP=lVCT{rFJh zB64P_@r~c#oq-MJFbJLd#SFLgn>6TlW0HTWGq3yFC7)W|b?Gyf2;uu7Xn}A9o88ge z6^-Ojkw+U6E#{Q??+QU~a7Yld%q@UlW*jkXX4Ndebc=YUoe04v!!f8G<1q~h37rvG zvu#S$TEU+T1>)soEcjIhu!;IBF3F=&mWoa;r{cb6EmoFyqEK9LFPr`V&0=XwZ4%tQ zO14ai?rj4Yn7|)#LT+@H%>W%CK(-PS_l1cm!$qtCD>RY8Crz9^9jHtvhBieaS!*gia;)dXE6 zEE*!Pl#lgZ7)wU^bc^L@W{PV+=R4jClgOmA5=IX3vDAABLjWHfO@`@{z_L3rE>3%C z>*zU2a&w~f1{0?wmGgoK88rYB&4!5Lx$g-}06H=~Z5OQ^&0JbbkT<)Bw*($HyU zNUEY&dFOjeU2pCr(@f!j8)ko%nP0Uz=FM`@SuN_{^RE*es)+LCE z38N;2pdo@zqY#WQ39&){9-dTLwNbhozNOby7?IhHmO7X$Ur86uatwABDM~u0qm0~X z+@lzLEVD?#2LZa00{aK!&0CM4ys$x

zan&F``xG85t>=&&O-N~~sA=d5wtdF#=_ zxBIQmJTiS`!a)D+6i`uGBE6lRXg5ki-~@w&CZu+p-Wdt#VJ)Ph>8uY5pYbfmZoFu_ zi_%k)fK5<&^u}S2{H~+PE=#o*lh{XNo)7SBYbKUE%15^;7T%^_tuReZP*6TAbj6(M za`pJVgb94f+)q`9#j|Z=@+~(;vv$1zQ)^#0US}(UI@f`0K}Ji{ zk1su4eRuhir6DUT>qoyKs2k>XP^iMs<4yc5P<)1z^oLZwtt4NhC6=VXl6DaPu}jfc z^{|D0hp7Ik`kK84k86}Fr;1c6=;8MRFCO7QwTv6>iSJUptoF73uuaQCD*1Ksm&WL3*jXCNq)=UskI}bbq8o2^1fqH}1gloc1|4ax zmP6f>O7AKBc8WsQm|BF2Kk=?xLJYJfBpF&#b}q{~;@oS(r#3mmyE$R)nTe}bZubDB z)<7H|#$>B~bju%cCy6_& zeOvxs&fMlbUA;ZE2~?=RZn%K5XEXFRq!Q3rCo2$8_7vfh{_BQ|HH+68qDHWP9cTEn zhPEra2S9<_SAM_O(27fG05mRt^AX+}T9ETaQ6V`hCyO}--f*$8u8s^&06{!+CNs@RGEHxMYMKPbot11;878X_JvOtUR zjH_tAq-)G$p4j=j4#JWfcPZ{oGPaN`c0jJI(v#t>QFzL0#q5MIUM_Y-r>9lnS1xvH z9#qGt2e=l8S@;hHr^g=Apph&bgo4hWR=g2OwLgc1q(pke;r!twmhhbf3YEMnjR$W4 zC_i+uki~%&q+c7Mjt`ZOlhPDzi_^e`PJ!K9=gJP#LcYPpM(a2O!pEl=h~m4}?Yv+O z%+=)3Yef)2R)j?l2A|kl0UjivDKO(@QmhVxPE1_&EuK=!_@$H@%Xzz^yn3f@?co9N z8~|#>+b13!y6R(tj~#D}L+5BiC^C$BCQB?3o{6mW>Y1LxvC9{b!tPDey>gM25lL;q z#(2w8{ipNeUAPqf#^^4GwJ#g%2^p9kq;rv@a-Qva0ZPui zuU-Fm)(shtf$rtjr$X!73tWr53x{O=(Qy=qcd2>D2ixvDM(>J~(2p{gCxly>8_sId zPsfAh&#W-z6J|3kc^9sWwJ_zL%NG$5tqYcU_ns6XUNK;tZluB<;cN>4l{z4He#_Rw zw`OD@Jo)8=Z0#_L`96L?|Dp2T%zJn0MeA?WTj0DyhmwKQ`|e%03XH!l@oiWHL^a!E=e4oEmHzAVqt0OIbx-7))T;u9zXggL>iqq|zp$6|NnN~yXev3vPPg|p z28dSinl$NZ*Ge$Ko3YV`aWNqg33k>+z?CM5pvRI$mw6J)>+<+LQ^l)>Zf{TCYGeF8 z$+dNwNkbl|GrBykCT-cO;}Y4k7jrj&ulW%~Wc#$moBc$jWm-+j+sh?~aJO` za(0r})oV94V%)4q5J}W1QzvIrnk&(2JY-MwP2yTdLb>h~I2-D$VP zUu$R-rv+*!A-UXihbW=#qMF&VTb9|?YQ-$g9fcwHYYYvlW%D(6lAqsi2r#JKZBRog zN295gpOnJ=tKGXbch)DC)>6$w_dHt=>9}i9cT6R8*P7{rOwRo}MuL|5tY&i6MYe<* ztJd$5=fkRZS8LOAYXdZ{?HGnWs5y5(%+KVp+nwiEuUw3-4cf+iG@5euigS4AZp7UO z<@^_4HG7+o{h-j_(?JT*Hh`u<%7Kve>7cv5q)d)`BJ_W{@HHS3cQu`N;p@+ISikV~ zKbDl$dc(KI^~5*V%^Mn6oau49jK5C`vM*t-?99y5sPeFe%11MXm<@MX zIP-A+=i1#lIQ0(j!qi>5Lm1f%7`lW0+u?vOIy?NBN_=`ku=^!{f zBAO0AA`udFCe&*z?m{R)u+7R*FPg7RjRE`G>%N&N7F!4pR9GujCG5(~2RGkv=U$h4 zf(0sY^KCgvNRus;&fl`^*{(-#9 z6j(0+iwzmA-G%RF@|NRZS=aXS_evca8Ai!&;$&)97DESn#2n#mJ%qm&5AsQT5Ndlb zq`ls`mD7wz>T|gK{F~_-gz%{S#2)zep+Jp{B^x<#2f=ai1+Vk*dtvSY`cF6tXk11+ zr_nx&+knTDHUzM`ZRNLAk_JVO^eQG2w2cqi00;dRl>~@CjIDb_uXS5C?zscDa*vV< z6JdIb-(L%Q7=K`*!;RNmE#)($d~I661!C(li>9RykGEDcDhlyAcrGlkexxZwt9Q5u zO;zuFKdFg<9O`n>SBw+f;inCkaheA#F>b3w4w_W?c9U3?-?u6Sh4m@r=46L&+A?D( z5W_b2<26n;UjOU)iS;Q3hQ`Fkq*s;^E}I3GAJ7vZ@-04e3}<+&-(5wccZ^)wFj__7 zym&}v#uc6w=rl_DF116TQ1TE*>xO|~Ff5aS?cu^0{MwX>$qjehs3h$b{4N2Uf>`zu z*v42*^w9C0vS`}IWXO{3h$T-xB%QMcjk?lOESg>n1=cHXk{f}Uw2on#Ui8tcbUV0ii_sCEH|i=g5QX{$ zA74dVOlHlXzWzU~y$4s5|Mu;hkkCR4y<_MQihzKCs0qDElU@TNU7CUjs3G(!y_Zmh zP^5P?bOcnSiHHgah=7RLuyURN`rCW|_qpeuaqnBm82PSetvTmshS*H2E>WDXpNfcW zK=axeQyZ4{YH*MA!WUdy9LZ@cgLX_7>~`q7zKu|eFV3)_{O(}B7+0Y3`r`JKpTx^u z=5OYnWYDfq(r@w8WuWz<{W?_9&=%-D{0Yf?5?6I<fYgz$< z>cm346;5~t{oB(dO6W^tisqymax`TGNXVV_jEzm6v$B4;ew2{2VLJCEHvQt3fO3t- z%VeXG-~vd1>r~1m2xHcgJh#l5#Od?AWOlR~$Y>o2;LUZSkZ2x)RW>GE?lJg0KL=4s zmJPYXz4GmM#|YV(fLlr97kC6e4s|5`M?&tRwA=a^hW><$VFQO;w-DkVH5yKa1&@JT z4<_M>f5&yGM`iQm;W&d4{;rJ)J-l=O8(+HV1lT^_z8|f zT*m`9k_*wPiRzCF@h~ap_sk|qKidgl?rdyaQgR13g}nYl!XIFGB(Nc^HTt%r)aM2lYl(* zFO!f;5WrJmm%!9v_+HTNgM*_kFbU620?tHgy9PmW4aI|`Ts1!Rq;pO=xoVKRY4Gw3 z%L|zn4%pRjoA`l>>t;A0{N_w=yr#okSuK(e7;x6|IR?K~EzR)R z7u~FFnI#={*9e>SJzoelT$Mr5NNh6h8Im%6Xk)W!Tyb-&dBTEnOKUOkS`j6|f)maB zgB+Q{^(0ziyJO|I=SIWRNhLINOA7^xrq$W;bfXNn-3C~f&$n8*uE+3E@?2qCJeKDU@`-2c=_qyZpUe?&GLZhJx7om8waNM6Vi@JL)tOx1ndLAU?d&;O zFp&fZB&04ge^HZ99Fs*%Qd~k7%cL zr)Uis_<$qeK8HW`wuu1zRU@dF0U65br4MnsQQipyc}Sg>V%Xs-a#Fk|a`OC*q5&5M z`3JhJbB2X8jH{qm%B_l2M9;QT=fI2{YX0#il~;D^ynCQHPFghRS`Lq{Ka9d}GCtAo za#aID1s-QH9Fad(MQ?$L%Dn~$1lV3yt!I()^N1wAzzZK~Pb!=i^P#g^Eay|45ZiU>JP(MgJ22Y2ZUMZSNmYL?-w=<$GQWCX0KmX{* zOfPw613m5W)^Hx$k{b_0x#m+8hktzQCC{0AWpJL@BF3RAE?%QrdTs8g)L5aQpJu5CoM}8j_u$IyyDI`t#U`(tlfUh~M zQYyQ1%I%Dgnb{$GvyM`+r&%k5{5>KADhKL$OQW-+-v0BDFrhrm&HaMz^Uo4}5<(1ZH-A?(WnV zUy9y9=62m)#fVoV{{}JS+xQye4fXpn*E>FM-fi{WZ(=do9I|y11Ml40LShz1maky3i2aO}6 zerXJ?q7@!8ZC*9>&$5_!VANMy6MG$t$f^SNKfnSX&q65a`>T7B!sG|K=Yw)C)f?*< zLeOVqh#)pDk5!WHxt8nBS50wah>j{8G|DLCns;T^<4vJ)eYNRjU@>%qLfu8fvsvtv zM2liY2FcWQOF9p+R=Q=PV2`**H^cZ3_nVB9jqUO^4TU3nU ze&-PD>4i=TM1YcR98>8R6(kl!3nHVU!vM+de$(}8n50XiGnehp#g*FDG-@cPCvDo$ zF%_BTz$z)H>}DOBA8tdfiJb;#+(|2~zDGt)uR&WG(MHgT)U z=zk^MI)|T;Zk+?2|8eVtFGs+VuONlwZt(BQ0RWdfFymNW z|3xG%x^J%a(46+6>909WeFzBxcfb^7`XYH5HkZO_C1e7qpJzaudYB`d@iDIqhA`xB z_2iPvUu)MIYYHFNcs#(@)GPyKKX=Ry!bUMc1X5Tj=-sU0#yQSjdc}O>M`v1UU90)Y zJ#(ORc_%5_Rv*zQ<7esWF_D7GPDf&tY+?n2ExbGrCa+WD7nc%hK=qWaC8b6z<-Oe{ zF>JT71zISVfm#iuer!LBE$)nJFJn+F84qCs^5%)tP3>5osQ^r$a3c|>g((7T^H}nL z5d=leD`u*t`sY%Yu1SK#VqU28%*v zdas^-uk%z+ZO+xNyzEK1hf-Ap4}jF-Pef59*Rb&vx}c;2o+NOS2|jV5jNtN1!m(W; z~bwt6_hKf3O{t3Sueqa%nH@z%oUNEDIi>;MP>YtJ(FISwXwo#B5m9lwKhj&K9 zC1o{`xyA|Fi3PcfdLs7%{OhoV#KWU7wy{M%(FHA%7_}V0pbSWUoNcIbfR? zdEOV!K4X613E))DEmnptKby!4YO>vMtJj6JI404vF=20+VOuk?C2W5`yMOKvP`zgKJbF|L$q#zGxM#S zwlm7I2`?lBR!rwf$ikD#Bz(SbZ{dFA#&q6AC_Q<~* z7>nU@l1CH8mPQ8}rRu>xUIeZL711$02THxMRXwRAM?q(_`6$!ReFe1!xu zg(9>q(a0e&(rHw8De-4`%moNDW)Vb%0QniGXp!Jy5(3Y9FR(1S6Cn&7pgurJ{6d8WTJ%XCP$ykH;U|nML+((LoPt#L^mF1u|D7k0EKIJ(lmh}5$BDc*Kw|4l%t4jUu_pq86jslkLxEFiD;uHzj_OlsICl=o6UeTWnc(g16-o}N3Wy{-){ z^ras;JAz}?s`XLu>e-!PrUFacS ziLPFxSh`F`R;=Adfi_kPN_h6E;AzCBrmq7}#O&v$_PZIaXizC`xsk)H!+?taIt>m} ze6;bzUa(;<<|ujmmT)4d&!)!=ufaP_gyBZHK(5A+_(lZm9HNj;M|-$KN-FAt>Ozxr zV29ye9bNcqJh07E=xfoWlB^6CZ1ty=wruZ{Kx0H4hw&r&>@jZAt#X6^2|N@zOMiKB zgtB!zx!^$=yfah5lMzgAhd|ME$;cXjYiYr7btWs+@GFIFr$E7e#`ue}iPxMXDpZy! z-veeGGaTC6>oG-u3^Y&K`@Cn)G=qcNiL)IbW|asl*q8F3IPu!_`0g?E%BQCi7(-Wx z3yxNe`BMw^s;{vm6;Ak34F5`<&vo?WCmZrz{2-xE_+y{fGpGVfP67Y+HygHzl|-X7 z=PG;ty9V)gHvFVDCw-UYoc;H+kEW^lPXYYKTc0=*7d)zTSP3(UgyKK&u;=He6FEj9 ziQmUd#G0$LuDRA&KHRW;HDF#F(s}}uX<#W{mfBD>bK51b#^N;)?0wWK=fx}G@J_Gb z-uM3r5BrhZ7D7=%Gf3xhVLtD{+E7!wzqgxADEFg#L(TPIDKB}6+>y#mg~|#EPv(&M znew*g+9a>P13?%hDNdFKt_7VsTz{x}tV;jgKn`38{RMjC4_I1_7lsn}4%Z**l!FW5 zBtAY{3b1`ze-Iu|ig4dph-1V)rsEDHThwiF*DE=5I+()~FpwwdfLV4>OVu+qjH#wM z#=W2@f>nRKlvqX|XvCqh>+Wk9F+o^hE(X3ZB1l^)bJ!+e`1>6YEo);XZf_%GY&-UGKcsxgRB-v-OV0 zP;hR)cdzI*H?>lF!<`pL7-7d8!h!-8&)jdDtvdyRzIvQ~{ALmc2iba7@?#$g79jiF zM}LJ<@00Q>VvATPn>!->D)1uvd;-`emMj|NST05L zf7YLo5-w_KcOsPW3PKGEWf{Uk_cX=$qxb-=EK%Nvs?=WXnlXqnm}KsTmjgQ1mhL)p zq5{eG$^LTABKcIn4l#ocgTe-SiAM^h+XZo!rF(m17F$C&CIGKQ*w@Td+Yo>z$x3iq zDL7bv0&keFWo&isIVS;X7^J{!x;G*^L#(%=AXsr@z3kfBNs&UCrWEpDc#s;stu>ce0B)Fb zf@WK%oh|qsY-CD0%lB=C@3H{) zxfA7=^iG{XAJHytqH#of+3RiS!|>6ij@ycz^rxb=j}bbSa1O`cb#>ogQCdlJ98u#Y z8`(Lzb~Q^XHJ06LCk;MC6azPgelfn3&$h1J@X_Hvb9AiedVte&kw2 zxKxcMa}6?P#CmS3qp}d`2D~k97PZEkWFiL)cTsykKh@uN=`U>}uwzJM@9T=X+BO z#lANvD6y%eFypp*c~zsKx1F9^fRcLo&cp@oc(wwS0UW}rl;H$&{)gS3mdc>NVN}5s z|5GJ({DS{2yDkVFrU9p_`tY1*tP}T#a`khwsp*MV%CZm-gh?-Ht^ljZ>9`uhW#9Cx zyF_&%c|FtlG~Gl~7^Tw0s8Qaf?7J>{evwTniZ6C^9KQ=6=O@<(tq0`Z@)W73*EoQ_ zP;zDeZ-BmUgqThehVn%>T~#}QuGZPhF(tXLPOWyf8-;wCD%zi3JN+)lC_La%c4u0# zJb#68dKn7If6M1lq42|XZ6^-Xbf)Gq zhWsGKiU(JPfm65(a!G*zOX(TS6v6o}ZUsu*P{=Hn+AON~xz zDQDicIPGb!Ts?D}XCalH}lkIacj-d@#gp$Q32{2+ToC%cEi9rX>%|8 zH}e*?O{}25r>tWjNeQxKurEmN;4ME(#iA45NBmb;9KEDcNgpKQFhTt~My(jeDYi}m zcrnq)?wL6WX=TV<$XWoJIe?3i&Ap5V&2QB66d8m@lqYXLDWeJ(=}>Oz!xrk44M9WB zyW?oMiu7I}n~i56wDmRyM|;~5?dqR+I8N=^w; z-7cdBqfnWs`)W)Sj=~Q69onesRW0@c^9tZy4yLJ$d7}{WS9jU zPtb^61g9Dm!rSO#>{9e=k|B<--h`6jkx8ir&NGL@Ig-&7%a4gJIUGI>;M_%750MN~y0G9B4@rLLI1E&4Wd9>SJTM60=g zDupTR0bv-9uxS%hk!Nco<|4HB79t4A`Ub|Dqcuv-n|zC%?p(k=&HrL!3+QDcGHKGOo*BWZ|z zw5MVb0=Le90|uY@Jb#yZ@UGSY4EFqoCVB6v4rw1t%H{s8IfW3C`=` zlxVjO{wE{~VF|0_7POt)%S0%^^!)zAg>IR?@!fd&ub}F3hsRZ94;2}DcxWzB?YIOe zRK8oBzf>G-*An%z4xnj`b4USIRExXq^7!14SHsnt>I8qeYVAS|*aG#vOI!JS{)sgc zL+?UL?@`hYAth2MdHhm3pAYxaU2M62)KR6`j`X%U=%^ywOmGaB2_SUo4>9@-snm%2 zED(a2jb^ai$roe(nOi z+bJ>1Jx&w#Y|+YywVeR(6QzBV78-7W<(D)7PJ3C^fUv+5Ewz?q#&gpH=n{OK>D*CT2d~2>U zi9-8}?BShIy=BJNMa)A=#2;5#oi{v9L;%nQ!{&H}&P?Q7&4no~$pq%!r#YUl&$v8S zjDU0md=!B?Emlt4r-aYV=Sts6ZutPF0Yk0pB)fHsZ(3ZkMyvN+z5 zoPPQWh)+{3-F#Dxn7~2?vhX-2(l!342?sukFIWbFe%eb3ShsF;U@n6)f=f`ecjuOq zl$PDfqR1WuFR7jS(oVsqwNll`g&j#fCal*`HAKNZK35iZHlPZqb#WnG7FGZ*;ps3c zD5uTQD;E**Mb@L3PGtP=D<^+@C?iZyS5S=x`06~mb1#0qn8Qc|~?fu2)z&*R63U>Gnxg!4e80V~|{LW5_`SS~WRGP^ZNjGltm234GReBGk^J>qa(M2C;L*M5dJaA(G z|Dkkm5cz@oo>Y88t#r3Z9n-n9b!yXJ8~2HEAgP2zh0JP^m3+JoQD%iPsAntk?g_76 z_sgEm*N^pmLfT(pFchrA)m;6t){@5ad>Ht0tQB{x7G$qa=`K4{54>&iZ>32!dm=R7 zCXK7!Xa3M?U>H6VU&)s)-Q_RJ*p6<5Whd9GagSe^|G_6i#2RnbOGE}=-}cdi!tCG^ zYV0SjB-a3jZG;w+B=ip1L;jOrcXPDEtXH@u;+NuHOn6QH{1ilq>cBH)sP_i}gEPX< zSBv3W?pq=E@_XdHOxI(LE3AkqlolS!RKUYV`sPE8i}FE1RLsl3!{(%~qNKO!YT8T1 zS`kW9T|$2r%1EUcsY>dX=#3F8O1Bg9;)^tWP%7WS;-C{}FtHx}@BI=sWK7w{lY(;T-^S?v#ueB|OSU&S>uAZA0um!6wx1xeg%U?e=f!%$(`N?_TH0@&;Xdwt_Av!;s- zLa0^H07azt$1{Ppt!{R;{AzwP`Z;2bHMGA+AHqw$mWCx6ewc@W&=izv{9cCQ-;fu_ z=y`nk>>E#9tc?(%6?qs^`gSUdJCXRjtF8ZOJiE+|hWR$%s6u9mM-wP4SnYng=)kY` z2oM7~Eb+Xd{ca?^fPeUGps|i6J$LY&)vROx;TomoaK$R-__6$v`eZQhtcgbE@?1m*8O!Af z#&yGsU!p3bEj9*3j$S`nCDB-t%2%D(un$BU@?l63BhvF{^5^*@U{mx6%oUXL#)H&O z9Aj@YeqU-p=h4*V4mOY=IyI-(Nkoa-BcMdtKi_<+{x#{$f{`^9z&GE)C*KpPfB)ng zHk2ebOtEw`alb9kGSefWtKm8Ysxt^OxT8|d`P(Yw;!;&hZ(I6WCGBi{YaB_RfnR($ zfzLp(?tdy3)ay_kA1VNEr_(SYBpA^TOSIedMW~-j6{iW&ki-BU&=2ba!xpswU&5@= z1B;pyXo3k9fAhFG6F=_?iwFj=m%F1|n)H`n?)ybCemo2$pd{+FpH%~_#DW^NS2h%S zd-n~Xz?C$h3LZ5Z(`JG#V>*=}Da?2WL*5ftbKUH@@A>?c*77sx*fN<={f`AfT`5DH zuG0WeqMCk0YT9=_vYY$Ga?;N^J*(u-wSp7laiFU=-_^pMV>rd~+lM5^<}Za#sDS*x zUX!9#pi214@!*tycUJaP=hXXN8mmv)>1XNhvz>&TUaE=!e3<1O>HgHt zCP|*lOmbRO$->*AH8sn(N1xs%Rni|nweUZhSAM&nv6b;%pIapL_hF-Nuy z!~7>Kpp&E9QtKHO<>g3bl5)0mE^J=dXnT&Ie#t#-MNmg&+F#g7Wh&QmJpo3A8;_K1 z&V4+-mQyNz&NI)z1}3YevZ#L8n&ZuoT>19lZ|sSJw>mMh1G&j|b0^rBsA5jPR^B(d z@o0);VNvVm8T5n^mW(AWB~p}aBaXQMQ38(=Q|IJ*60f(6ryi`*JPCs}tZVR#(Y!ee zwC0dY5{ra>xuFy^jFWsml~UDJY1!L6i8GWhlT8xSN>86G%44ZGZC`!UChvSQ8|!VI z7gguPVdoRJKb;($i#BU7i6%!tI0r{OWy#>!8pA+>HR}e7F2pRCucgZEbd6?q$oZVf zPqh!?Hq0oU%xgU}YaD)UDE1*IO42@8C|&om85^~ztTew(x%yV;oyX)*(Wj!*K0 z@Q_r{*z*@_U)l%Y5+Kz@aH-1YR@v)P7~6ye;yhc&-FH%cmnH0$xw1R!Uu*^N$1gnY z`+RaBW#dw--pk#W7Ci$a8!EGCJHU2a`?T;e#lo!^h&CAopi`LD7B|;ir~hp&k7i z@1$Lo!)9r3?w#CBI;?EC^|(*z(T6C71$*Atd)@b{8&hIy)99$lqP4f@R)FXR^>XqYE8t`?W5PQm%6Yy8q8lQeuP>9^xnluLHKJI} zv$TVP?X>qb2qGX+Cyq&B{>fT4&-XXz0*b`WW8~TbaXM_EN&uH4_!6&KtoV1f!WDso zi2yyUlujh<@EpBE$0rxd5h;A-O0buRXgz3<=L&v)DLFm_^epP9X4mWTqw6$cnak48 zMi987EJ*@a6e6ynnrVZd#z^MF5-j0o!!WNE54b+2eQk89UgTiFj-2u?$sxxp;{uTG=S21_YT?!nC2tyyJaNhj+)& zW2SirS8dz~QmLSyD<2R`83hlu$enlX$3h50>+Ch~4|Fr7dOyYt@B|OMiO{wuH~BR3 z)9a6Hb!5V5V9JhkI{xNw%(r||{079*B1mJKF7e~-1#Ds09AoGPiFj@TbVKM!Ece~K z-|O_lMZP~A6lX4=`M=0WpXR_YAIDeIhj^@JU zwG+3iOGz@K#EAN<40-ao!1K68$ylW+4MSFCG~Bg;rF!Gpeu>p&tfo=M6Ld$a=nbxx zA`qSXO%}C@2$hUt>cSC49*x6(Ir|jNwq6tGV4z>_vzYd&?+!GsH#7X)Gv1e=$E@}GnG5r0!7gw4X=4l6*A4-7NsH>C+JNVJ^CcD5_?!~q%~7c zrY~;bI6s-Q@u^aM#>3!l*Hj(uGxS8}TfIK%KyKANm zn4j+U61GX-XG^{-)L#(xwtUR>w6m+F{%X>exe*L|*C((>=VC49*{F5>7xQ}M)3u^1 zV-{IKGj~cWYBYt$Y|=~3DkKBNUH1vrjr(bBEsern7fy!SPKhYC;9Kj2q@5F&*{*^| z&iP0OI4!JkJ#Ed5s`EDDwwtH;(l+;5GVpr7{baz^uHtu+{`vWKt8z~}A4Y9E-2U-= z+@Za@@K=4%68EbGTz1!TYplu_8iruWulGAq(#Q51UXj(5b!=oxTYKf%d>@)_+0FF5 z%J2Q^oAXxz^6lf;YzYjh{b)#M$1QapL+N$0kF`i9sy*NNk@H>$jg^o8R4Vstd{q6aaEU} zY@O|DHyW}tYhNwXb9DaV_4D`jPW+{&>^5NLaQs$o-o=+e-9~d} zrOE#gfQE1VA7hjMZ@XRp$LvL#j}+FBZR>Phc^99-P4E@#3{l_xOrx|j+ZVw{O4XQB2D}#@L>!6r17PlE&EG%P8 zod5DJrjwIr@e=W?Z*(UE&)kb2N&(Yx=Ia(kixJUamc&z{Idz}ty07lA zHKf0xf6)ki|K@o4(|a#e!=SsAwd{M>5MirSE{mY+!{lF!uYy%DDO`u$uK(f)fDE$AIaVd)}uoa1CkwMr<82g`}s;j>FX)g4guLmrHp zNK`v;!ZPK~qesQRp}fe^x&Q$vy1F#;iKZVufQibuAof&8Zz?p!j&So_f^9X49h6h_tqdHS<|r!W#R z8A}^mzF)N-r`_h zlkJaMT#7#pBBdh{&JbW8!#CrbC!H{*@_^h&Wq3Hm2=C@5BK#K6M5E>3yig*4Q%2%#SW-|+>B$AgLt-fG6Vf|@F zKhhK#^EdcavU3a_PFk-YMhM8>Txu{cM6Q)rZ;$a;_FPqMQ=i|LEkwcvgM6v3xlf z_7fpdgQ((J8G`+qXsz*!V2jm4f3Le_R}@0zc6$*rBVmR97^g9w+K(3fPK^qB_HO-D zJ2DveG5%z9H}7%Z6}e2BNx+1Za6t29PR_M{vcOHra9;twtDK=G~f+d zuJe^v8?m9x+^Lt8gdNv_LmA*{XMbHVy`PRAdZSgzeown=-bPGhgZ_)Eb>Pm-!yM}0$(q+J&|vuV6#y2EBYaPwH^q>gsi zWM1ir5Ta0ApvrBkC{071jY}gU5_Zt-%CW0+=DE@s?+ZVT;=KV86n`8+uaDX4p{JA~ z(Y(fChS^Rk94Ho~u}K7q1y?<-h6%IG_*Uq}>zlUELoB*VTWfi(Hib%_Ne$d_g0^AH$ zq^iL~D&GI>JNLXy$EGYMRS%A25fl{GDC^S5(8T0Pot3NabRH0b%Xv~%d@EBYFV&KR zJC#F+OX-+d8Ck&@WXyb=91&KfCro@rlCS5-7Yr>7K&IoedwfK;4dY{JpQ_D|Fa43f`o@k6mI0k_@o7I=$$4{84Iq(CM*bb?`-T< z6oO3!XoHPiUt-dfwepX2RWdPEipBIYMLmI19TU(1cF*4%d zRigTUxUB9Wt-SAqk3rglIW;4>M&0!}2@~aU5+03AKI!$}nFKCTrC4ZnD^&Eslb&$) z>l?xs`|E$zUE!lvY4O;AS%YNyYfiU}h+mX%m|%)J(-CQwkX<+JEGpRMPpu!)hCZ$- zrHJn5lj(@j;Sb%Zi2>*LplpQY9hM<9Mk`9G%wiO@{RW=lo1BbderObp{WwP4#Y=}@ z2Pg+Gk=EDY53;a&n9ZuD;mMgeZH;cxIKb{3a)N<0#;@E zt~W)#4ZWhpSh9Gb+V<@@(bfXQk1f%jN8dM_vhktREfY;Y-V-VJPrbYURr=?LKIZ$O z@5@gbeP1ukf26!YXqSGlITxzd{kfwU-t%DuNUZKP-+UjsC!AP(;~Vj-Va7(-I@uI; z@>AcN24;4C`@eraW+7w!MS};K?}8lwW*XK1r@r%i4naoGsuFti9L|Us36q+0TBaT^ zN%N*+6#Z+s0hpOGWO~50%JkrMV5fpYwEojPSp_#B(Apn1<_+J1nltKTemG!es!4*h zX24_|Fj`~M>ySj=)nR}K^?_g~BVfE;STf)!L{G9o_8XNNm*w#oqar6EsuDk;$kv*t zF#zGCBmOfk`nKZ~K|u#CX-xs(JW$JoI1sb_6HZF-aJ^wEn1SdW+2T;4x45um>47B=7mwCWMmY8cOaL(>~3n)9Jp&D-%<*&?89}y*lQrq$s-Ka zA2pbbEu7;7;4b)YfC2L0TUT}cVuWH25%K3! zcZa0rlpsoT4URr_3t{o%7uDqR;*Oxb3~jjrB*#uH9VxRVa4qQDDlS%azZV+uC$yze zLn}aV$0Zte#0rJh5@Q9Ao8`UAS#z>+Wy>eP0efUhmpaKMACak5b@W|Z^3QiIjZHqD zSl^*4(KBp=F$+yvkxC+o`0|&L^}#fA>-bZ9Cj!)BW#mGd=N~yVu-~DFxtMj|#GJ-AI>wNIPJShtilZ?2{N%R1e8& zX#3uNLA)kRtkGGnQSaTOeT630`d}_%y{>VE2MZ0ghDn@&N`OdP{HPwZ%>Sa(k%t^0D`wOxN@bJ0oKK1h5OX2~rww z9M&GFvE7l@iA1!NJ*sW?R;N*axi$GN@|~sL%XheYkXMKa$+PvrKWsjwylMGyZ=(lh zQpNKe_-<82$C}xBa#o$mM${%5q74zCX^sqjhH^s}p%d2AK*`I*^=cPT3VW8bR>b*C znHzLl*4=vMqNl6k{l8DCi)PJ6S4tg6?|b#rI#tAoOaOUZ9S(tgSR*AL7jR%2F&Ab6 z4orJn)aPwen2XpnI5N(Wv-RNTi&`aoFFINLN$HM*qF(~8cQQn@Py;9mi7A+6(KxBZ zyX5}4D_b-f_D@o1T7t2`RyGZlf8(-~)9Hxd;^Zs^ zk*J9(Lq=!tD&{OlTptTyJ#R1^j^(VDVFW=`Egg9=G-SPg={s~9{QXS&!0DVaeYYlK-c-S zG$Ma$t??Fkk$LB5q>#{3T*&<8BH^^R!42ayfh!df6;&#? zuP8FOnCR_5$;H;FC$2?*g0?DEo#oFnvf=n#CI0KJhNBIxOhBPp##~JOqqRw1*Hq<& z(YJ=mHb%wLt>uE69%_Z2)8zy+f`PDv)Hv5nhG}4>2LxsJFk(j7Bd{oVu*TZnX1Xk% zrB3hCruyk8mSw*K2{2ag(?4uxIv$w^p5%RE|B>*te7Cjw2CKL;q-J8!dA1?%BGS!h zbS_t~x<0Tlbyy_-X-H*D4G+15`@Wv-d@#(sxVf&*=R)4ZWa%38DK${V{XB(!JiTMY z9&{YV7`{T!Ui3&<`bydVeHC{QC-laprld>jSMP)P45b4aQ^1rtA_F=yvRmBnBk6>m zG>qiIX-9R1yi_boUei_KRR3l&Xk4lVmI~e@lL0!Jse*ctU_q}KeekIo)9mb_f=85% zW-DFZsMXn+8HXIRi0kSEtW#yDZ}Op935x&|(ecslHT;IDg;*KDMD%Aduc0<*3>j># zwT>>U^wdiM)mk;Vy)NQq^>(#wxNSw3Id;->9+OmSa}kSp|MFh!)#P~dul0)%D$_=} zoDR81)=9@~lg3Az-eh?`^Q_NPn^}5XrA*+p4-8+i(l|dB1FVw5UAhTrAUP+v2QBEoBKdD!W)a6`AP=jFX=`VBe z48ud}Rh&?UInX$kV--RQGFMWs<#}n#JT_lO}0P%gi7OmfEaTA?-EE#-pG!7x%xb& zFGZ4N|A4tz;+cxJQqxZ9bS+)sy-}W`1-VT@?OKs#5qGij=v0Fds{gh z4QF}>QjP}M6Uq9nUC+2Xy3zs<_#|YOM`(t$ss%G26m@vBZBhUxt=Vl5DRYc^cbN1d z{FC&evX)6POvL+@{>dE2^!{7Yi;@T31X52qpE$N%kNQF&6AqqUQbQDRy&V9ZSa~kk z^Z+355+!RvQNy#lelpa@Bo1x=#S*IlnbHsC!DOB%UruzvJ-fXTCf(au?FgkuaGU3x#?0}EAoanp8ji%Bfiy(iK*o)9Gq^9k-o zG4*xdaJ@f%G2C2D0Eeg*DOcg&46)GD`2wPd;Hsjzav`Odxxqq3DiW!)e*ReMtgFI{ zXVND3HpAPY7H1JlM&!MMOn_bj;w1X$%mz%)l((w-4ic}a2atjH!%#w$7W6o=G(<{K zTRq(d{#t4XDVP;qFR?T zvwH(2$3h}`)SNocXAJgS55hhZ#3U>o-X^Lftz$Tm&+Dsochvl?I?p0#t>sPK?WBZ1 zg+H~`Sf`6rSdKIzne>-!SQO*}#f7U-&$vXFBK#|^(5FMEKz-!lv!e=UEh`42?^{nq&wydZI?Ls0VnDO^MqGORC#a}cxPhDA z`J7pnO4*8PL;umKg3;;96RXvRSLe^;e^1{=P%n09VM2n<1bF#Vxz@Eb?#zsaa|Qplx}J?4r*V zzM7kMuVI#XWNi)JyjxDskyG8#W_QAb#jW?dtcqYk4Z?FsOZJ3kG zdSnFA>zmZS=dEW5tc1Gjn_ku`PoM0=HUfUhNqGvF*vvZ5wrWJZ^Sua&Bmpyx$F2)G z47%84>;|<;M!j`pOqd~tlvYV3UGly2d}@oHty6T;OTK^FE<^8R*TmggTXP!wtq`^D z*}&tjm%8N{3{JGC1tP^B{dk)G^2*)k6_Qse$6kIi&FadnxFatd_o^~0^S;|>Upuh3 zJy@`VNJb$U&dOr}N;GTF$ds{vyYccZaF7C@sj;jXU23?YbpJM8qmXfr1?{oD0dJ|s zc>jeNHi^%JM(^Gyz6o*QE^8$UZEq*18d&9g?`Szj9}pSS^KumVZDi|Q)5Yw9Rgq$p z2I+j`_HkAA=zQ~Zd`+?Y8~sDSN-DAC#Jt8yPX5398XZWIi%b+u0Qn#6Yurcff^wZC zm48(@G~>%H>OwR(N)Hu|w|*I7=fo^p1rDw`0=k8&c+{#|4lp7kbvH6AA(UronF22Z z0SO(!FF&tg!31;ObiG1kW`@)`S}Y%GkYH{?!1OmI1}aEQKr6enSjXDxG@A%a?x$0* zn>BZQKDL?nw%>_2EgNwz)c?vN5f#Fm@Ojg6(X>4WYFfl&&ig%2pFS;mEnC5-^MUEv-*k8{%);I1 zl1qE1DQdk9GiJw663(A~+fZ?Rbzg=AGy%O;iD&lYSR9C$gAg+I`$EZvI?N;O=D_L2%-d{hAj>}?fGctIQ?lodTwNAv!p6?zUXff>su$K!wvvjaJ+NEET7q zjm_*(GC}#P+;@O^jqwk&(F~Z^`WZ43Q;7K3FQSZXZrhvM-HpS9M{5a|?$m@qgN67q z!FM^&z>S^`bytH}az&4^{^oh()R?E&-+}I&6+DX-j}T}FL*^3Q)+*Su3z3(tXu0z2 zQX)_Dg%_p5^49e4u~iS7fp;4_zD28@l7%hMzsbUW0k>x(FaQK9#an^$cj;@b`A6yV zDaDbyt-FSB$arQlz{l+&%N&yQbo)y)PSCbKe?_5+s?a^ZsHQx0W>KRM;C<`AUn3o< zihPTs)E_`5p$9Ad%g|g1#hF#?J>h8}@Cwev%fv+66{q55<`-D;GE2u+DH}#sh2&1W z5F6>EA=p;A;M-%u+YaNgqK@|l?V&lblczHsq_Sq-D@tzUifRAC8$MDhLdwdKj!53iq80=~JYeML1KF*XIrq;U(0V>Y}FA&!vFUIilXN01R&y zx|@1;qdk}Q=k_h>K)eUtGhx-zj6;oPF9zdja`rEc;C5Y_T%GpF8o4|aRpe)~1WRpj zyZ)x6$F1ZuDYh6&#}aw@L`~=OrAyHjgg>f0iaS0eY$PNW_7s$h?hdMyWnFSYNB}p9 zV|#O{^!^z=rRVIolNRtFzYf#$O3)wa83`?_#C33)93;~33xXa75-0}vF{WH_V2(|yLDC! zx${vjj;pF~4z_bHSP7Zq)A;kY#RCSXuN0B?7j8!erH})>^@nTE>OdlBc$rmm*(>a%7H`d;P+` zr4g(1-I=@Ehh&aPKF~wUC$?*OFSN@;J9Px*RV&8u4*(8a1CX52Y2+qT#G7rtuFJ9L>e}n zud|!S-DXdcl|M{vRGFvg1J%!l8eqIQ3vAUfCdnNJRT-6q_Td;VsEckGXt&7Y^{Q4> zk|B@Z{)Q zQ99Z@{dN0F=uJ(rN7bbYYYx20Cbdm;Rk7p+*6+QdT6_a)W?o|+Bqx1ry0~8w@k+>^ z>S%0&$FR)q^@jUs$N2Z2Vb1BF${t5`e!ra9(Jk2<4)qfgMJBtoV=|j0^Y)W#Bcs(6 zaRN8@k`0f4jaI1AmAI6fm={8gUZ>~_`*(ZYT!)X<@xHllgqZx4v8`X>OTKmQX6H1; zQ^vBrDM6p~bEDgqhOIXiij0gNTVzmNX&Lf?hTn6T$>)@8eLeLca%$52D9NbM!EWnT z<#WRekH+zpBkqOYE0`HU)-)$ft-Ix!-uk#Laa?UgPa2OaY{T$^zNroK6_s?O|bF!fWiRhVEN8;d`ZDhzv5{_4dK z+x?C4ff(ze?7|<*AK{6E+iq?th7F$-Z%TGCTNmg3{HSlzH`lcVc+l_H8yngj_Gyxf zdpNG&HdU(Xtv4$y_Pe!a@HA;GA!0WvQ0?BFL|sj8>;wPIo69`9-ecoI!WbgQHDiD7 zhEF}K9v{@_N^+9kH@L6Yjte=k8{V88UD&JVCz}?2ajk4o=F(m9S5B}ClikM@9=fsW z&PthaWp~vNTo^7sxbyb=?Bw1-E5F$T&-kROy^4s67Q@Mp@Q0@J>pT)&FxYnVv;FzO zaED;S2($RNj~8$$D_ZFsEt0P#Hx$3#ce&PO7M@o3F@L(&BCTkpXkll?sJCvUx@Wh@ z`{$}TW&K#I#$H+S&ox`k`iaq=y{h`3>&`FgKQ3zQ*G>N1@aV0d-tXCebM*78FJ;3F zk>)|uxnG+hnhkRdXBh`C8s>R5zjxgHwVlx0uyCdKdyn_8Zz#&wOG=uD1Ig3dO;(Tp zxb{yP84jS4@i=K@R7qHXY%mxSXk_dg|4pjl5jB*rUr6tAMz|Ko4*djeI-I&4DJtdG z2%SwnEfz1O|#s-o7oMjZ%|kj#(J${ zwLcR(^ea>q-i)#CWm6{IE1arl{M@1L92U!0;DP^nSbzcc$;g*LfJe2)8EPO*nxCjv zTlVE|glmCMG0$n;K=$5(vKBxQTX zDQ;Q|7*xwwo6hmdkLwN3bN7Y-o=O7!v&K}WA2 zK_2{-9$A_WtfB9;;bQ%rjdvQ3<@zjeq2Y>ZL0@9nWIN8+g&3iOv5>bO5C7Xvuz(fEJdP-*{gLzT4P zkrk+0ET+jb+mS@a%xDLb`X!+66yk&O&Iwgyi6P*n&D&r>3>t6zDGs2thzADm4~4ed zI8c%r>QhIkLit~VxATc3v;c5~TL1Rjm-q>)|AmNgAZXks7ko7rSc%ZJ!g@Bza&)l3JwJR{ZH@lAVyd=b}tsF)0U zxGqsADEx}8pE)hp>X;(#+#3J{Ii^vMq${f$Y3X}fQHW%Iws343$>*#2NQ=MOF9bxU zi372EbF^2VflVZ6DFpK1tQ}IVf3(>1T~Dc46cT_{jYCo7=SWkC&0RbE^4US1-~r-{ zl%jF=4~1c(VFNG{a*CZ`V-{RFav!!=6*NC23KhZ%^q*XHpj2jO#JcBOXTKwsBZ?D z!sol7>QIPrvKCjFhIs+-S4`R0`oi)5{@yPdZ@NG*`5bs75uEZAJb$v_mm>SUg zR7m-70g6hooZ;>CV)el-sNYVsA^n>CnOG72_IRHARQdq$I`wD7VoHMyC;%2pR|Uq* zvx$5nnSFVqB#Wjf$2=AnMiJBpABjOguH#XIgTLUxJ)ZgIAYd<|lz?Sr#!Ink5QN_Q+qRXsqm zclB{;RkbL#%vx#9?W^e44aDSsL z19&47)ikATwfmm)h{bw#S&F_)YSUY|oZa4Sd)+p93LqN9FlpRRZ4`=9&XpRxTH}`U zGNDD@S|m19-7yuF!p+Dl^UUs8-P(FEaer;$%3Hf$KcsHbq4bjMdZ@;uvTy7ZfxMR& zReJAC(4-ye@!a^l+-uD?ltM~?hT(T~2Skgdfe38nSUYs$5PHMC z>Xyqz^t*Pqw(>RT#sW%Jh6NFec?r} zx&QUW^Fepu*K#AhVgWx9Ngr1hDJVs?L1^>Up2(aksx%Wr{A#9v`X6p-5q9A4_d-k@M09Uhs zFFLC|7C=w`7;~BLOax|avOJ`fivKl#aJVrx{!`g*&y_?hZ!nkY*>nJ+as`$L{4j1| zZkW-mTW`b2ncWM<6Yuus>nFMw-psyE6bGeyHiWMB5VsT(w;#?o@Wj__mI{mEp?&%t z0Lw&{@Tn8g7I?YEmwv&hI_5JDgSY)CG4lFv8W;ug3{xplCU@gqm%DB#y@q?piVJiU z;nNs+u>0jrWYm(poV`ziuVHlU9lt?F6o$L!2nV^?pZy}+j1>ko$W-h;W-ZP+ z3qt-)8dK^8qI$OGMOLs8J!fDU+2oHgYx?OOar5+pOuyrWPk-8JBIXudF8f>(9))=$SPumlero<82nd_6XcpFq$C!x zP--}{yG7r}_rp15$`EPd4+AyMSVdliL`OHgpN3$~f}jQ8u3^iA_52Y!lEM#bYEy&D zjS~5J^^qI?I9_SSQV<9!1!*tl!tdn>6W6G3P5GxF8H9joT98Qrb5z==h%4$4@EvTx zuB`>RwSy})!FfI4{O!_a&M^O8XaF%>6DOh?ZhtaJHvoh5)us5pI<>bCXdq4{&!pi9 zHM3f zkMqIg;SU)#FJuwG2Q1A-i}tc5h}kuMQVmC&=2R25@e_iXnwYvE!ID|*II)qs6VNiL z5LB1nI;S6n>|z$36)qNQ3^QWC%i;eFIi)fdpJo>nEF^%wLnY1YhgNcfJ?5=EDPa{w5UjhwI=ZsP0TN%)Rja5;G5 zJ_xqVILu!NBmAx_$wwYS;I|_8lzK$`s-q5prZXu2*L!JQMP*0fEv}d|`x|0alNVQv zU}#Ipmj-!P@UGnn&g+iLOF?65HJ0y@34INbm#L_`?e~-t_!3{7f@Nr~3mCtWY*p#e ze2hnniVWbAe%Irkuls6E&`)|%MbooP_tjE>&9$%JJ9<1uzNO)iFG*`UBYnWGslpt& za60>*$9sb`Urho1y_c3ZT#uS!*hYR_r9W)oC5lys5BAfu&n{^vi%&fdVb}pg^z38{ zhvxz7=s~QKUlLIAKRS!(0Z3!Pzax6`b>e{ywbX8&R`{us-()x6s5{@Fx?{M=YZqfq zjset!BV|c|nh=<^M>|HU>UImA!!f3dh|#(UVAci{g8Ln#|0IoZce78_jpY*lPGAF` zcM&`q;Myp3`n<<752OAmeQ9&n6GYNpK7HPic?PeW4zR2lK8A?HXfSYgznaURxOB zV#87%;SY!*bdk;H0kUWMwn$ya*^a4aqK>yf9#h+_&!b~Lz0EUv&D}NjnJuiy~wPV zPTBOItJKtn8L0Z0IKOi~iNw}dd%b_NG=Cm`P7Q413y$)u&iCy=NA~A7Pc6-Dsm%DH z+a1U~J0u+ENB4G`>@3p>H;j)BiGPds8S>~m@P={c}EwgxIOu7TigmCXf7a3bdA^C{it7rEt+&jBF}ia@r(tPTa9 z`=zx454bC96oio5(>ez6oB?>iB^^G%X)K*~<%EaK^GD6EQF+0h$Vr*4U@pa!fju#s zwtF@k`TMXZ_+}RXyp6fFS2UZ-gUsh?Ok(qLDHe(>53(S#+=28qs_2xyf{->9RBl9C6aY6rAq>Mv9pr zUo)Fz_Q~U&o!<;T=NuX>V`1|Z8UQ&a-Kvq{v+@Or>Aeq&4b=Sodiz4|oV?z6q=L3h z0%Ys#w`nxvBb*^lo}DyK?CBmF9soE(Hh6A}(M2NCp93dKx`kRkWuZdO<%1vOn3^)* z2!bC1$>)H|2Cxo%mSCxD*YNSxoCL#Dc_le@*Z4!IgW}tRrAeY99`~}^;`r0eb67JZ zA%TQa-+lQkEeet^-q;WsJr%VwmKQwu0nw(1+wuJ0vxQkhsaF`kCA6vKh^7xxadB?Z z0Lp1TE||KC$6V5ww4a2gmij#}crrJ!4N1u|iJi`1%5=kmM6I#9TdHizTo!@QjEd%i zBAV3wtX%02%h6p=4qr<4$@7Z0FKalu55C&u;+5)G>2YJ*N&Y&tD7~uE`#5MYV=Kj$ zL~>h`2X+}XsKyIB57zKbl}#TY?#aOZXAp}+w zGJk+rz;?z{9|63hwvG%XpF*YmkXEKvX3+Cky=7dz0tduYN9+ZiGz3jT$6*C#yqqu( zNq%jQZle1BTa(J98CrpK=WkB2*9`gb>OFSBJW~1gpRigG_|+N_jmqFc9_uePqMc3m zD08*w#>#9W5-tebLe+d*9Hf#{;_1$hwHqp7YB|h6?BtJ_+<8d#0po#M#VG^+8Z4ZV zEr9_0R!3ml?)7)ZY@C|H7Sm_@C9yEGw5Jga=;T%0V{Ij-ptxXkhJ+>X&=)-^_0PWc z9E%duI>kyfr~c6(7SH2eOQpF$>mB&pTSFxXcx$497{dU^3lnYvE|I5TqbwVDM$rl{ zDsIP*_<{${9Gu-OsrnL&@epFVu;y3r9Jsy=c&5iqI{ZtxZ10@~V17M$rq`$d!)win zexoCR^$I}IIeVs`pHptv=zcaPo0qDUW=JnLl}^8Kv2pNbnP~ z&kQw2n5L4e5PqVlN+}VnMm(x4sl;6!fKCWv;GHskW zMwE~DT2RsfU=!g?D4Z9N_pu!|jA-Q})l8Y%Wu$p}t90znNuO;6^x4rlL~C95pH~Ob z%cQV4j5>ijm0v#GFKqg>#L*OrV@jiu3Q;^yLG)PADqa3Fv{@@KJxa9@Z#ZT(3~08q z>b|dOJboke$%5iVofog>^J?%tbL}f@n*_6~vo+t=ugt_%b2O&T-$qPBqVgM+U(4P} zDd{l}l5FN6z(ofnqYWzq*TL7P24V9_&BE9OFaNuV!E7%2B@5l+ zRoq@Fj&g}1vL~OT(!dj1I6sV?`~loV14J9RTp>;_SI1iVp-g9NY02>V6h1-l}ehoSyUnXjRC38Yd}w_IL$v>uyNY6U%jcl!Qq%m^DS#9 z@A@u>td@?hXX*^GMs2W4+vhg!I}eGN8_fwk8CimI*kA7olW^$|hSPLJ5?;&>eR*F8 zu1uSqY^lSgoz~7JOdb#t@gtXGC^SbbSEbt?p39-z#S?gai$u#8PCY}mNTM+l>f&XY zvLLo7soK~>oi&&|`#hIxAhgFd^&4ot%jQ~Z`*H7+=x?c&Gd5RuRr;t?W-d%rP+ghj zC%HcY=oWEou8)rQJo5UMF(YWB*v;SXGgprK1>D(|zxN}VT~mnFm!8reb_XHn()ZT* zuHh$XJ~OMxW`4!1#4XYvy>dD0Crh4`4?^onj$U^2ERX6Huy&$XOoqgVWtl50dhUDW zxw1cb<>l;kp0d&9Woy}A$)3&l8P26*%g)Ole2IR}P^pgy=)`kn+b}@SRq~jUCzLf;Ytlj)hGSUN)fm$is?5*L8ElqluR- z0FDABWEAf;8G=A&luZfA-=CO_P#k?Fcb8YFs`FMi^L|#@mm-%fsgXV;O80;@$=X z^84OoHb+s^G}_2)D)nQ`H+bUTjk`KaUJ%q-q&BEaMHQ)znpn~=KCI^ne-PvY{ydKK z2;;PVp#0Da_&E|@KYeYZrT(~=VG!P;On52$MOV+CG6zf}LU=d;U@76G%mKm8{%H--(|) z)}7hlbJof5ShO~J7@hDp@@4hcPmOk%#1J>!xzSSpQ}X5X`_OYX!z<$O@!s-#pL%@U zcl-*)M2e;X^`Clg9PRsIY&lUpU~}N?A+PT~ z~ zcoKUetz&E92n-kjj%Nb~jK@h;;_Bqfx41yf(i^en7H;H|0LKC25yFx?Da4ZAAG<1Y z+z>t?#4Vhzid0TlMaRDW^vXl@D-J+AtUuNdUg{iWa(U0!S=vpzVw(S!_6vW|NZHH$J9% z##h{aMJo)LJQQifB&CDU(8whG=YS3aO>;sgmhMx@b-c_|NQi-o@ew_jc2XClk)B3< z2+&Rtv^qz?<>}ZRqGP!ZHW)fyv10JqbOgy?$7jv6+>{ctPBp$(cz@_elVm3LC=yfz z_l>f4N_YCv;t*YryZgQw+P^mmZ4SpCMf!F+#7Spe0;O|2a={{cfU+N{WF?u9Ei1-D zc7=FFY)C_X12ri!5chqdMy8;6;_jtl1xjfzlS2om_d?YPj>ILIPL3Ki_mjN7g_M2L zPWv-{Nbg)rfOKE8-Im&PoNd6u8(5l=Py117M31K(Xn8JA#84`EMbb>{^pS*Drr)_# zue-0;7X+SDp;YttBYvOK#;RtxnvcyYY)@vx2b4IqRBm()gAxEs4binMUl;wHYp zkr$}CNzc*5%_EZT;LHFBJejMcuA31nsjkR5ziDaZm7F7ZyG0e@f@BW;K_!X3hZsZ# zKew|1U;7-+>2oJW=~oM&sKx(ZF-u=iHN#|FyWdr<&%b&+}<1}azf63e3_*OfVWl57O zRjH;Ya9RK1wqC{!1$#vr;J8vYgdQHszfo(in;<%zC`-<(CkNH9(itu^P_QxhP^Vc& zp`U$QW(i(xKTw9ZQ_!t;@5+Ni17UqS@e49M;`h9eX@u^tZWk_^RWBQb8SG>UtE2Cd z+zfl~PG1!AI^UA6W2|F37ESd^P+I(+aZ5%_rM(adj1+2eXS|3$??!j7;jY(^`@%?Z zd?CNqtevr+#6k_{GT+HP1TJ6O^Z&s;1jsqN(ltxreej;0qBKNFZH_wm;4J5Cj=uij zgK)$tU}^H8MY5+f;!)RUtaVkEqAW64ZT??!&WszFOq~B*{~FI1Ba{Fo|Nh6`2R5_%>*04^%l_X-N<_6j2EM7A%A-y6<1to1jXmx0Fd&|*w* z4KGIR3u-4(@JXho*h?05-M)K#V-tXNZ4A)`oqvimoFB0?c&_5&FW;Yg1u-r0lz!Kb z@JSNN5W?rTuAIM@ng>zy*~j$&3uLI-u-_;BWpf*kQqh(jHcK^x@*%dWNptC9+L;BY zvrS=2G@O!2U;=tq%dmov)_3^r=h2@dq)$N&XZh9Ws*bo<^ zQ>A}iHnU1gPSca~7g3f0SMq01@~sz=jgg63q3RPhJOYIwqN+*Gd&`SyzM?$5aMzJq zaB7=Mo;B*Z#ENaKKbzGQoXB<#A>a)?T*^toV_x>NjM(mgCdK53;_cf-=f+eEt$YDy z%j3o+X1BHn+}sG)!^KB7)+bTWWKxLG!k5{khhu1&iFSgFrK$y6r&`Zi7l4WIO}Xa|EbLCINe#up8DG(qNs zJmk)k32&k_FJ>!cEHPE|5sTEzp129t?+6yc2d_5THv{Zzs=X8T^~O02>z$(PAX>5v z0Lf4P%d1i3xH6oC1xUtppd(m_#gG%2k9OcKmc7gKrG9$TkFFu78b0=p(37!|>`nEh zz#RdXO!l7dVulcF&vlZ3gSaJSC5fx1ohRwl$1OY{Vc9MOf|TtIH6v!Sy*Ko{9vsAr zMuH7O2~r@9M;Wa!I^uW!HFJ#RO_lHB@*1sGT-4@AY9Qw}(g|<*r~OFLl0vq@ki+(B zR4%zl73_B){e-w(YY5tMx@C4kc*NBg0q0WUQ6^|X@uDbw z(pi=rJy|8z5Mjd~IT-6Y4CPILG*-H=E<`0CCg`{jJ0wdQ z{&;{xXnlY+q82IrqeoM>@3tC;tm36DF|J0OyUhMcCl-UgZ8m+~!J&(J=~?XQv+ye5 zwDLrp=dSuat=^UB3$>@Gm0-|FY|2hi_CYhREG}5(K%Y95xWHUfc8ul+T}djt0}1_2 zymwy6;wOQEmiRY~-v5d%<24t&V+SMc_KGWw9d@vl=`?Ps0~PZQW2}Cz7+#BIu`gTh2{%St;P=s!A{`#ub&1W}1AooD!Uob8=1;!Ru z=xauWV0PXD6HQWa_0NRX?ZWF7=QrHyhIRwo0C?s^&ZF18!)xyEZX!FLFf`0Ll6b!G zHX9M$FH1#zwZuPXydygvP+)Qba3o^{Qjz^2X;U`#XtX7O19t!Z9uB<{|tOIu)|$}hToPC$3h4B;aM7) ze~$qDZ`4x(v#y%bJH=U?HzZWBDu$OTz{pDS;fqeDs6XHi8^k4uS9tN{?qOrFeg+)V zqa3#DH;Fcgik6wQTpy`1emytkJ$Ik5nvzSHJLN#f#8QPx?Tx9&gRp_zPa4i)`fIC{ z<@b(n_@a&;ZGvCPDQjG(!)UMcU$T19DARhBJ+$;UsREFJGvoIou-OcdDg>o5L*@Sp zMMIxNfLa9D>v6HctA%D#`Ld)BW=})Wn1e!I$&o^a!u}7yt`8=V#!! zn1$i-{JDPN2U$js1OD!%cp#V)-H7B7&B~Jxlt_@}!1@K?>>gtF7Jy%XgCjT5fe*xd z^tzPFt~l$^+6LFw#Y&0f%duwwSV9&Cr(hsl!MeNw*TBh$DrkjX$kG&soe%|;AV%!k z4uL6N%pB-*Qd_=c&0fv@)>&Pg9Rk=2=gogHCbt3#0!Gw^4ah8@Weqxn6KcahCRFM&9RC1azIwadG!tql_sN3wsm4;kg-gBx=WU~E?dF{*3L^t6 z1Z2~Ni>13%o5%>ygbdqg^(7oRGQ9)gLNI_WdS8si78RWd8OrcsenzK4hTwMk5%UiP zyf-I{I4^8sIqb5mqVH5n+Q4*8RaGou$A#o(O}5shU1gQE=80Q`twVxG*+L&jx{iLGT_qGcjHegZ{$K zpG%Vgo7^F^=A62?rf}9d*^q?N7c_S_v+$V}sDH`GYcp{gycBN6)7YJrD{BB$|FV}U z3h(RCWwZ<4bPc{-#7=4Xxt~^SQI&Y6Sgwg>Aq;!>+Tqt8FlC3Oj;keFeM_Ek)lqL! z>9GK)>q~06QlsrXxV2VKH>Ia}uX8|D#=fQQN&8*jZ$H-5JQ$?;`NKwrTcpo#`!ed+ zybTFL_F2$?WjaLY9Za)C%f}!lgIdP#2E&ThQVCZo`|Dn5qOjh_8m?)_AU*^E80<}7 zksU3Wr+A#F6$B)5GZf}2T=wb@pQuO|BC%6e0_#5J*~$7 zA3V2{Zxjf~66*R;VDVIWp**e#ss5}8{cN?n%euWL2AXPgnWo+OrWfk;lie#3|AACN zy}**8bF4*buQW2ez=~IOyu)O#ETOx=`by_`kJnx~ioDQPN%cQc)7|**s_ClvVQ{s- z&uGH9J2=s}%eXki$2c7S1P1{@7FckQf`7SkRNaaE?N3diQvr6A;6LD?1y${n9i@Ft zcN$iqji^AwbR?Ph#_X^&npP%)dyKjXdy{iaIi1mj0Hd~jTyKf(VE!#qH$jY{%{Vqz zdZP`LGu={oGNXYgXM9L&fLLief;3BR`%7~`&?df&ula*J?Z8Izy2@4H;m<^b(ii4b zEDxg3f;LA>?sQ&%UAs3?NPMlFS;izh>{BBUw5ic>qR<95l0T}MC;N`rl+&Sc?-s_e z8%b8rov&^T9>)=PS%Je_)rWF>It=aM{w7DU$#K5VkE4Sldl&srKR<{Y?(|JL-vc5o z9{_rWPspXhjCTJdK3Rx&I!AyqeRej$scXUILjm~$QM1@*9ezQyM9UQU9=MS?{}!pq zJ;2_`oUd9(r$B5I_6YsuJH!xzg%x<6(fP`JT0Y=gA!kqf1zeF9Kfp5u7{JiPRDc?r z7Kz8NHD>AtQo2Nke$q*7vMAzTDrbe!tNa-Q9+ ze!+|eyiRETT2&tyuM`+r0=iJ#lrN&$mt{`@9*yaEk!NpvD!`7$Mlq3|o%Ux-ccWw9q(`9!c*03(YS?0qw#1wZyx z-%38)GzKv7bm51#iRQ=-e)JE!_7yWnZoGai_*85MOw(2V}?ADTpyEOtF?J}37PtOq5LG7tZbiWD{4pm=3!8rDS{e0vH~m!aT!T6u;0 zhut&@cNP5fE-4AS_~rA1lkMS@6}1|)z>-C!WmU_^Yi>)cWPY%DOvA_sqi4c9rLmDv@U~psT=nInCNmoRo<#XX-n#8WB zZtRXzs~LHoGJt%K{=Y^3_CKpB$N#J;7flK|O!HhbPZZk0b>UyY1k62w9S<{Z(%h$= ze>qgB@{ni%`OG?=XZ)bZqg8c!J88dRNxj%>v~zl|ZvQnlf?!eg)8WMaoBxtR`~SU- zKEB|lJXg3cB5_&3fu5>SJcpna;C@RrP>MJ_QheK$M%6uR()u8@xxFn*oz(#%5 zWRkgnzrM2QQTM9Z(cx$#MO8_#`kLjrqp>!PsnypJaDJ>aNmRo`$)KKi(%QC&CM?WB5%vgyn+&W8m6isJpkiNxVK*|kz)>$o{g z{2x@647fkz<@~XKt>b)Gtp7Ivz|bh#-jh1M^bieP7H`sjs9iw3h~XZ^iM|jW9i3$q zYAqi_U;&T-pW|_4T5BcUkkVtf=faOtJI5o<3B}_h;E@)E6PC&cf1Xz34n(OOSm*G? zp8){-MO+}`=FJNVtqCEi!do?#{V!x5m9RfJ8f^Ek3elsL?s6GXrH3LPkK8BA1qv;-mD!^NKxIa_UutF9@T0V}PM2%W!~u#lQa~yj-E~?(NgXZH z6u=5v2DqsL!Y=Kyeg}~0lXOmN4y;>9JeEC!hRc2DZ1j+QkbR<`e(y6uG9P#cZ^}8) zwVNEvm)gX+X%8irHvs#C9(}@9+>2y>i7yg0L2jZ&_W==7p$)_{r`I6qlwAXqPp6Lh z!saB|qS9u4OHID35MR6~twr2BwUA&YYiV9ULv3mh>B#!#0e8BSFj2rcJdup%EH4+% z#uvgQut@5>2bKKF-u>?e_(Y=?P`3CY$BXhX^Xp%1RcZ1Yts)id)9*UmhBPl5I1=~8 zDOYL--n@h7nTHJPD2!22Enw3UQvJ>vnMA|2RI-pGV1)}P`Q3c2FGl7;RVU}NVjBBKQ9t@xQlbQNB?rJ5tO-V%Mp4I!nx&y@gY zpBI+@z_QB|a?69fqPaKV#|#he-LWsSW;gQ0so!e335}ZhWHmRv6dkdl<}`>sq>5o7 z__906HRZPj_H-bw_EL_MH<>ivjbVKW006i2O&)z(*`IY{DDsF2Ssg$497$@`KObWV z0060`^g0#*0O0qY?aSzRv!)g96lc8Eg3OEcyxF5pb-YDs6!ohm#TV;W z8_H9!tu!(md#$#fqx`WFb>-`iZ+%Lae(nqz-v7BfW>frg@8hGdKlf*XFa0{0kH7!x z`%-T4o89b!OHcSS>YwV$p5c#h0Q?cqa6dU~xN-l(hC5r-?9^{^)^MxfWGm-M{~>kq zpSUGO<1(;2?F)41-g-21jVCKv5hiFo-)9ZW%X>_8`8|NR@iQmFkfIL=!i%oswX z#rFE=5xGjJ*N3;S`*D&Qke_@(obt5%(Wh}j#e<8st?gW37w~*ve z1q2ym@kggY#vTiKi>Z%Kjv|E6B~$>t{Ze`ePySK{a1>d}j8ud!XT=!UFJ~uM=P&1^ zxUVedqJp3+=&U&Vl{|D#{z`s9)yfK{q~#d8T2L`!zgk$ckPm<(_f}Sm8wmy0N}B2K zt(CU%VAjgIBv#kT`xFJ%D~1g2tyhj&W7exay05NR&jbl<)Xc}-+o)a2!EDs6RjqE+ zZ?*`0ZP*#P_w}{NmS3@I%i8MKw>Y_D_Z!dC$qB3avvfs?kX=bpy$HTPB>bLIsf$X4 z-lkxyh2_!ORx5k3;C35Vyu)@oUv9y6hhX*EcBgQw;I}TZQHO8cl8Xi3dZhQ)zV*ry z3GMXBGdS+_EAtla45(dM-x<_W651WoGj!Y?HnJ()9Wi~hzB_6jEVMUf74Nt=Zkt=U zH{npdzBlRIDzyL6b<}Zx%44x`fBNx$=lcF9U!sc#GXV@v!2gf8=wR;ol?~uSRl4~7 z^g~UsDf)i;p`wB>9xi3YI~^{gbBhjF08;1SYDw$GqqT}rr=#_n#iFB)hW!mJsq@m0 z&1Q!CKepOSS$ueo%>$_#}gR} zhe){*kNJ$$c_3*lyy*vdjso#2zXO|WA{h(x&)d@f#+&_PN&BB3Jp+XQD@V^TVc_Vg z5Y7oKY4dc6-^E=2pB+66_6=_YCRE^02Qg`2ubc=l)(C0aW4`1~a{X^$;ljTocboH9q$6}Fx?G^byF-~2rF7Fg0gJ=)=oT>Rus=i>^2 z7Rc-0awn58>Tv%yt2FI1M?Q8tU?92n^Yejix-tpq zDwhL6-t519-)1IO=5S)$?@13y+^QgWpjc`XWq{BI96e9IZPrmOkX6pR>vbsD>K?U9_EMCfF z6;RoV@WBv6`3`9bIr*#kn4QCpbdtO%z~M%V=*uECJ_@Gr0WP1V5H370I2V9UJ`u3Qb_5tMfnloT#W6WwgUH^(gxMZpBl3@i(EMhGbK2m_0 zEn;LQn8|WeTM70rNxi{of{inav}$C`fS~H&yE_kP7JJ{cI?4s^o5!0rikTq;fCZ1X zC=8E`1=U_bgWVSB;)@Vc`cS}{$nH6uI}P$3|0a=+Pe$OU7I{uuunSNqL5BPR+@~z$ z0wKYi|JX^yr6VOXK#8d#ul^Wkl>sP}AoCzNaOG^dLhk!4kFQuy)58&0P-7hiNL)|) zGJkNiTp?cXRa)2gbc*saC!$-aW~%e@E&KiupGzQ_f=_bITLQ#1D~6D1@-PBNzQ!8R zZdJ{$ofBwz3S8hDa0Bo;yO+S&h+*PtBE0lN{vV)v@6hW^S>ETpn~vJ9)OOr*A~#&Z zg|y8eB@^C}>Cyn8TnY4cp)b{*4ldd8-6g_rxalFSy6|Qv6u}*Z^hYam0XQwZ(nR^P z#2+Sar`6dM$r5l-yAqSQp|41`Tm=ORqy1WqY_Ib+2nVS>o=S6VlY_BFxor7QKt6kv zr*M~Qs=0E~_Ky(araae*z8ptNsu(&w?2By5oK%+P3_~RKu?w^{wd&0%vZ@IiCxU=W zXXABxhX_JaId0Y?T72lijAm#-0vn4&^OPH$P{8&*H%gJ@A%PBoV@)=JW-SpTdL8L~ zK*PC%g{h(L#PYRqJM9O2{HbCpY;N=kLCrj<3<{*`w3_@4wQu}L_ne^OWZz)^4ys@B zX6Ad|W1pm1svz_+9>$`ZMtO~!JsFL}($r!%2OAnI{8-4|B|XJUV*eNzOrT?V0+89M zQqWMNrJ>+UQrB{qjlTFyOVH!yc_=|?*w1AWpJcsD7pw<_ocdiwuPzsydEwZM%=2>k zt|z*S7zt_nYux>Uje;|oG0AU^K=6y#$mi(*elpd&!&y#%pX`;Mp>b2rsh{j#(o*xO zpNzGgcMf6L>74f;`N{rg1GU6I2kQTm<+*a5oss50C?)@w-}``4azVAq*j`j6B38)1 z`J?tX#hwJ2J0R91s8DG_lncG1Nadx00^YiX0;wuF`f{5|_XFmNmErod=wIq}z-~6{ zh7UDgUM-hqYRZj$*E#u6fSzF!fAQ7T{gnwIC;ctO6KVIQFRh01J#T!xzf32S22i}d z>b1Ink$Z6|^sUdzL3q3w$uK#inIAEsG74E(yEx;Y-AIIZgz96MawW9SP2>IXJvbdn z1PwuXlJf9z`qRe3!TgXakCcFIeOnG6o*<8@Cp3G!S`o*?XpWGvaG;)$1Q}BCV+sbs zo~gMIW=32dFq(gH#U%ka2|nSoa%YM*oQafo3Vo%JghE;IXNoP)z0{tz$q4*n9K!w7 ziHDdslEdAT&DYC-D~yMT&zZ-CD9_^GTE!rf9WaXMaY-1T9er*j_@Av}PJVwjQS)(F z2ed_KXyvq3%zfg@k6+5>3l>nt+vhI^T1CM!_IJz+0_P_B)!V~{>GgtHa+LZZ31`JIf6I^B_Al_JZOv(BTLtK=bFdy zg3P`hGz-&Wr@c1YMw)JaZm$-o&7EB&h1hiG0vv)FyKjvWB$qeW9-hwr(U~95gf)sM z!WvLFP1?np7ZPx(qzu?jX&pdI!i8q{tX}k&ol(ESDWz6Q;79c0>Nh6+c zFFXt`*oI`*K?SMw$$Hw~NoH_C)t@tcM~rf5!m(lx5Ed)8ZO5mBKon)`@=$&Ls|W^qUw;P8Tkm%8-qCg1HE?7?{JEF3$IGQfQ4Aesy<0;nJzsU(Lle#Rv| zcmhX1OB?|=s@OCiC%MxAR$%a>H$>SNMt%?^D=dZkhYN3Gw{sJl za+kwIc_vsRp@|L&6i0|`vqr3h*OZ1$3|~6f()oS32+VX)l6z*Ry_)$36 zDvjcr6N(dae6@v$SxQjrwLH9yMl1`2Jl7!6tr*M6A-WR2$VL+QyLQVOG3 zNWrDSPAl(#s8PQmC@vIXisz|$kct+A;WH9Dx-!`*K=sm(L!Us|jgo8w`5Y9KOzR@- zeqS)f`fUUv&+ybU3CRsj-{TTxzeLRv*XhE@f0z@Bc)*`qf%GN5;t(^G(CG2W4PkRt zJi~ws>r6uHL~VdnjV}aWm6^ArQG}=gqDN2lfx!Wn)UYu_jmTV9*2aQGoQqsvp+25j zZY22TU2%U+MpjH4Un$v>Z9RL*Xg;&8FasmY^ZBwcX0g(Ye0zPvN9aZHwwBCYbzJ0~ zVXmS9M3i_W*qiEoQ6(Mf7ORyAaPNx_ zD`#Z-AZX12b`Kw^DB%{e*A*z&NYRhgIi+XZR3=#b|B;^Yue(`X>6`EWmzj=u;X6SN{8~VMwB-L{ z?#=(9?*I4iS*yFzx-82gqX$-eLVTGBR_WGy5~Dije( zi;@=CYjmFH=lr}s*X{aT-`nl_;rbiqHqXcFaXgOWeh5zKOu8G-B6__b_svpwI-qUnY(17CmP(p_8n}7zEoZ5I>{sR< z1I9_4wh6l*>7PW6Zxi58M?}73~jn9h@Pl;M?n%;WGnoqIY-}lz6e*R@JL~j3INH_Sc*RSFwedfusoT31}L*Uaft6#YRFAN%&>wwiu555GUaT-VlMs=s_s%R%q@mR|!W zmKLP_EZ6)~;-;TqJ7SsqL%x19zIxJitCx1Sq3k+?wgKwSSEt>Y>_MfCO`0d`kbB`T z4#&P;q)gH|+E0x!qF6%|cuW>b5DM_;WZRMM;w$&~?5#WHxYe8diRnPkBxRl`CR_Ol zJ_@<{Gw`g+heHQzArULZp2P7qnaj^<+%dMkcQg;g(<$S?0;w*exn8G zSy$1$tzP-^iPWIEOrC#f8@SirtLf-h2%F0z@|DcTc3$s`kfjPD-}SOjMuX%Vb6?~N zldI=Wr;<)I#rcMWi%PHHKOXD@*g5(HvR z`bC3EAv~UX42rn<9h3)@(;x+I2r@uHVi5co2zxveMQW8O!{Xi-V1R?}Z3G>j+xEMN zz~klZR8rQ54=|aKVpvM?6d|E=EOy9}w`44X<`9+LH>`JQkH=GnM<<3c)1g;9x;0Uo z1ZLc4@pvY)sj?!2W&4q5d39fxVdE7lhnddQQZP|22%ULwQNltz|3Yh|0=18Ssujjx zi$_9a_4pacP$f+7F|W!ioJI>qn{^8e(b!nN9U?-VzCR?z@^SS-WD3PV0c8CmJ5a2a zMGPZjwm4$#4S|~oVasHO{T3NQ;@n(PgX9-q-rl*-RofRK3G8^JAqqD>hN|4R+EFNsSyy^Brtar+Ke02%c8R*#_800XLGF=s%i(8P+lCu6CX2PD1|b8 zArJIFp`naxtBcfdBdWHO*-|(UEs5>DILJmXs?{b&QO0<5TZt53jxkhTQ#+zwiD$V| z8l(Q8)QG!P1#$j%?{AnUh#x7&{LC%JL}K|!Vtv_V`3Yw>wYgYW^mOL?=~|WN_Bfu- zGEj(`kZ#=$!L0KF+;-;-;?@MBlp&~;g<4EFIg4_1cT1BGgNSYLjk)w#G3joVFf9R1 zYiMgEsdaI2O7`KQi8Y4#TkeKWyv?K}iPiE+5R23yMzF~jf9Ctzf+BeUo z=>De7wuM|Zs!NEbxs2B?h^nhtDngkZ4-OG8^uu_ZdQ>03)wOura9~q}G+}B0*qaQe zW9jHI8C%LR06nH&(rTH&vqXzW%17VCsafFcI8nq`V6{n`oo&{3w|Oa!WHLkxhsAxz!#tj?Y#D-eIwcE8G1caf z7Wf+>YtBz8w$uDP`FH|I?PJRL)eixGvN#C;p359y3n6yxLmqL|rOEOzxT0+t%2r2U z?9xgh@O8lOgB|-g#G$iLLKS6gkl)raBvefRj){Uf;^j%fdcQW_Ie7F;GJBQPKTf#u z=a?As;u!kx-4PhY3J@M3X{f$Gih-n|o%ermPtt13xv(U-%wJe520#!*w$rm0f(h1E zZQ15oEYADn#X8Fpd`#9rM~#f73gb;o5aYqBo0>RPGEPjH%EnJT|Z z_lllQ40+)op8f2qlJn)x;p={<3W<>pMe?2X)0O7B>M!IN>!-^?S}rf6u5X=evmY)t zT)*CS=DPoPf$>Q7+WA}dpY^tH1+AX#bs82pmXg~!(US70J!-5c_|2nm-5;>@&^7nF zZSm1Y0{L63Q&MD~<({zM_1EVD?p`;0_V`?*ee&Ent()IJw@xHxXej-9>*;X+vG|_o zk>laV=EsX3t@t?{3|`4@F@EHv_vJ&6`MpG$Mm7bI*%5`y+j(SU#FHYK=kK4s ziak_x@`W|x+{qI$TnxDj2}~Nb`C;hGH|E_wrH7Qc*UuHw#<^yaUn<*qD)@E2>hrz}>u4ekrQn5~oYf9Xji$D*_V_&%gf8Jv>fe z@7>#s+?z7*aw|hZq(d@7;$`fRZQtvU=8p_`o#@bbyB_2!&d7H*^I`I7rv$j*YU?#u zAKylPX(m7SF|9Sl=;?gz9tf1DW_ z1A|2BdZ+&L%%D?HdGN0@16xzjpEHBD=l}(!*ovK;vZJ3Fj)>Zrh@HM<0gU1^eiO|l}pGWM6`stOVYbj^*Q5z@w-Ku}bdGkOfnSlON^TcP;U?zKJUFIe|P z*z4%;e1Srb00>QxQs=5p2e9z!w)|Om<3Ap`C!%fMA;rOs&uL+OxFzM%Tkb!}@%9x?F7#=F^;2xL=KgI_Jf3Bto?DR6b zF6aw`Op>Lh#aLa5Fs4HP1keDORr?H>IYa}#d6g}sy#w}MHU@adFz71>g(dbDsPJ!X z2BD19S72gW$^uJ<6rd5ZlUgCNo)eb~%7IGR$KHqzSPazYma|h6u~&{NZmkT|la6J-)CB_4O0j3+0ZbDBHXnO~YAn zM`!0)Iu~xpa!m#K$>P_~g&pRu%;3;)jNz7*y`}txke_R?B+W@e*@8Yqs|}ZYC3%e~ z){~H@8iiII(TIb&gjhXL|0l9LLHBNq)VrX5_zROgJt^dsTzTxuBRd)+INLgNoJ&sv zjObB>U6xX*rLfzP$LD*`hZekfA$ObcVV)uj`~6q~%b>>yla^RfxM1~i2+yPN-(%_a zKbMt{*T;+a`d#|vHjGUTKbq58$^zMOocQ_nkdiW6{;7suwNQ8yCDJ0XX(i46XNLF$%S-g(DW8d@96 zBs9vQTJK8_p_~m3!4qmP2WP04F(KIvN_M|cpWXK4&>aQA;zAl!xbl_Yy!}tN!Co_G zUb_i@gjA?x`y72->2Wm|a$-zeEac4jNkE#FUjb*FD1b<}e4D5auJV7qt>}4&KaCV- zLo>Mm065W_4_(4MW-s{Lq8^Zc9qaC^M7~WtIkr@!yTix+@{PRRB#Nt{`#z3mEA`tb z$bweRO#(s5enx+ihB^F;SpjKhHpKPu1$EWI9bWl;@g=*95W`7%;S0Y|=v&3S=)rOsMb| zAblAid!d2M6Bb@G8`Z@8b+bo-6lDQM@k(?^mhZ|ff2DzpBOh3QuALWjg;1=t;)@N$X zhm_kQLXw|WUnt3e72E*CR-fmrcL5>x>5wj?sEBn=V=afFIh$#Ir`PmwBwNjCM~%(- z*{dacNVfUw0iOpSd+=V0zJ=%BTJ$J9b}49k{qB`(GRi--f6p{z$_$6RAI>R`cqZI^ znh|lorY~yS;^b+s(#9L2F^yu0bC)*K4=qp_+`|?EhSGD3!x8c2uCi>_TxD_JPUOCb z?{BJh_PzzS6G~rQ^K=cA<}o>yqHrBInL1^`_tNKw(xHO*TEn_CKC6D;@~IjTb!b(dJ8!R%Tst zcIQ@!gtNQCHzujk0Qil(FX470QjRJTRvWR!QNC$#RI$BgcbzD!+#-AL@Qh z`}~+tQ>WT%6xmLiQqxbIm|A$r_j2TpMbqZ2LXGhDWPgAKb;_KRE99YP|EcQ(_#f3@ zUq0*EyRJSK9-@Sv4;Xzfb6@tu&&?MsG7oQzGW8^@Eo?D5p%&vkScK?C7`32EKvV`#{K5mH{$ZqeQO2*gWNaTYR>7L zjF z49CWYEr2=vQ;$<8#AMvcSVM>OK|N@7uAK$w9w!xiJiAp)bEAyoT2h~=nRt>)_9C-| zi-DwrKa0a^4C_-OLX(-wVMZ!P6(J27OftcYwPXeq9t`UKm=3~;F}0KKs`)M=ppO0A zonZtFwe0exi5QgK1d_iMPbR@iS&nWU;o$-UpcqIj z_~T^_VMj4AsHcPw7>nE)V`s#+g1JnnPy-k-BdQaF9>gGcX34-J4rXHgejlrq1h*vh z?b)^_iEb>i+TkH8dmg4o`;4zJDE6_DS}8iP zrAQv!A~QG%DzwxO;T!NkjWCnc4|*kASVP!~nPDRE)i^MbOzP64z4xP}(dLe)7V}*e1x+V9j6>GPSq}PFwIQ_ks zcqXSbJtx6u36Oa%vcesA^Aq^w>}DDY5lj@6{gL?UI<|1;;AH{!XrDgCq_0f;ivJ9HPnGK1Y;we{Jq4HOq5De!>rA4}79H&a}+f#Gn%j zh6wJxxqBTkTmq- z$Lhlaj?=kx^5b6iM3PA zN{m7N^H>gU5CBRQvB#Vc*qIuYOt3t8kvt*vNhlD&T_Gt{g}G=^UY88)zLD(=FXq%o8LQ4wiFn!!9xjy``UwV?|U1CT;*HW3kDP zlQkG|O;bIOX?R?2UGBF$2=Um#8iGylf$L3adXBU-c3FJ2LZSXN#6Q>7w^HgyDL$y; zE92!bFr+ukMvo~dgOzf^1gS|eukOxGOSu0I9jV*fwrWBBRDVDfg%cgp!ir- z9B@`2u9q^~@}2AQx6k^*ePeSVC+PjVV7|JRS0?Abp?L* z%QwGOdX^Y|$E4XDvzxp6@@(?+oUhBXGUs%yF`gN535@P#Ndozv<(|qYn!CljuLThe zMHsZs6QRV#YY?hL+I1D zS`{!A#%VF3Is=Y9pAVc_Nl~i#H2&1Dl@`r&PK;S{f_!sLdJcW7>0Id+gYIDc`^wJ` z8O7qey(8a7eGe2Yx*@O^NqYe0OMsDyl>Rc1@p|wyTUJGDsp`kY-3MS3EC}9QFrvpppeyLk4-VgY zfv1)YV!VEq#iA6|fbI>aw-38mq5?vr1eEv29oQhpXk(wC_ikgM@a8`x|l;2mD(aAcwv-q zrwe@`cToRe-sX8uWG|GN*v-8`g)5Ntc=(5)Vp;gqj?_OR`nJ`7jc77O9z+og+rk4Q zIwoR^%xo8ytirIAeJmF$Y*(776{5soi=*srdiLqmlR2blRm!&p&816KFWpNegP5_k zdTT@$Iby%0Cv`*xW(C(DBW$Gk$13nGra-AN=swyAWBHWLWPi0lPAx^yvkbAU2KhE~ za}UZx?91Dp?t5RpVE(bI47Ap9hVg`d-=%zSxNWKU(vOhv#fL3a_OV36;Nv@B&^gdoBo{;+#6BeT${K2h6i2m&#Eeh)5a|{e;_+E%`$8nR00*Y$ppm;#I+W@3eqz>>+$Gq zky*9ca=yI6@FVilai(3jTDA-?LU}#8)bR{K5Jn}osBDGg7%UvQi8z{EJi-XuBCH6M zpJ-|ZaX%%4)B}*T#KYEb?HN1$K{v9lK2a>eBNFf}WOrZSt<99#| zf%|WfAQfbj^wWf{xU(IoN8VTEq94C)ZJte4jTPX|SkHP<-A4=Yu@RNnG77j@?BsPW z#!{C@K$7;{ENLP(vDWg)MF`w1OVX008?GBrZot^?IhwD;KEr9>>U1-r$oyp1d{5|y znO}1nzVpptg!gfHQlC|cVxHFhk=cdm`jdh_cbFdTeVNmKb`A%=^J>aBH{b?wwRYAHxUn$l%~?)@v>K!C^mnYLKly4FjfX$xXLIlYb0*!nmk2oHIF$iP&ruipT_=`;U}QI zJHS<7WP-m!K-};@jQs+20>9IDq(hK)6P~h1b>FT1G4|(C_ImPbD^$sN)%2+Z?#kAE zV}CuSA*mv32oFh=?LdU3eH5S@`_0!{lX)URO2exHS39Oc*8N(hr*@^G*O$tena4Iq z-U-+ZecTWT?)H(BFpK)((>)_Xrm2iz(_7gz+Aqjh?D?m75;{vSp8RTl&?T`?x3<(6tXg|9c{K)baB%|1 zTfpS1ZcZ1lTeD{YQx(S!CK%i}4H#I|UB-PuY-kz>ZUWRtstLEY9(st(fv6v)FuWJ+ ze`SO27DB&g$nTincXn+pI9nEE_fHe`?$?o{578*>d%sWUPg)V-hbHvCp-kiqI(wnq z4bza}1Z_YhCo8n}y^%GH(?pK@fl5K;X_6o?9>nd68ypu=)srOpCCH75Fx^1(i{QrK z%Gg+bEMW4AYO{_${#?+Yok3~Vibo-+WEGn;AZ147gy72{eli?lHXmJaW0YxeLl|Lb z(hn*}=2Njt*W)U;dU(M^(1i$9JlY(%SMi!Vf;zBkTAy*LGW$pSNdw7;90{h!dtdU% zWf|3DP)7?L1Yww1)H@EZOaZ-##;^hCITh<;81kNU6+*9}aW1Wj zwcYN(8r|=OeWOxFe3G7`kN3W=P3tmCqU+kPIK`93e_L=daBo!0aESxgam>|~f#+X-OX)WJO=`#D z6sI5g@9&IcWR$d8OeUqO|1$obXoxbp*uVeP>WQQAFJnSQnj{52(My|SDl=6JG1lZ{ z>cyaan{o6tOT{;Ga6`^yful=`9vYKQ7K-+wI#=~Q4#)Tv_DR0fQGc4{&(u=T17)G> zBKXOZ$CK8pm1pYvvfi{Njc3zOv$6LTJ49c&)hPa8AESKjOp*&^V2lW4a*HP#VuI}a#IZDd=h;O$Rt_~gR6U_W)w-W~`{sa@j zJs^|)xnc+e#;Bz!vB(o#jzd&2av~b6Mkh4fPvxVF&jF;qIClLMA=6JT5B4c~H$ReU zua&Xp6q-Jk94!FQ=#{G+E4^1GLjgj=7q>^(j;PPX+0h9N3@2!5b=cQaEP|4HFGkeg zTGiXOxW6~M-e^^KxWS1lS>5$ifjdCa+fiSeqn;OCDFO%$v>tCIW%xpGtnIy|Q3&g) zj;+N3YMJujYMB3&MlhbQN{WS&U{u2&nb z1NgkIOAR8djvODCdano`IaauBI8HG1P9D6=swwtPCpg;eSRVS zsk?IFMgKQVdAuhrsF3)~2?h6(+FubN69%sV57`Kjpi3$0a%u0s;PwEL=LR5uq>#`3UwA+J0oWu-R$A%k}vh!5{k#2B?#+6($>mBM2!kFN8o zuJ+R+#TCCys821cH}kH$U#wNz-l4hc3E>@!aE|7zbNL^Ev02tp#j?7G!?X$n-Ur+? ztx-8>ydN0bS!wui_vhD!7J-#~kBxeaFB*IcfnC@HeNDX zgVgO5EQHr?VoQ(hSO)ryRQN{!kC}3z@A0xvk5t26F5Q-jNMV-O!cKDTqfbi zRG%i}C9oS=JVx4kirdq&h!;x}1|?epAc#<5P@fmql3Fv-_%>i+`f{5A6F6_4%wf}@ zs5ZlxvfJL^EZRzw#{S&<^u>^^gBsrjoNoK?c+@DVpxw~G=~ljVB8gdX_J_tDja=e+ zmNX)^{|=q9p;zWn{^8Heqe{4S(Sn$KZpb_wNu$9OYOxw8V&TR2*%kMjL}mfzB^~s; zwNFvHdW$7g4*>nb?&x)Y>;S)0Jlh3?n}Bd|e7YBlbAiDO3Q*n)h=WNn zY{4LmR1Pr_mqcJ!^zY+`pb^ka`j9;yEfeXRn5yI8KP%Xh|5w0AymvU1`n1c^ zCy`RpFeBB0M3!1hh0mhe$uPb~5Q^`p2phzN!dz{^WjSz*XzQp%(TUkkKIE6->aPZVJ2Nkgix9;qt_V*95+k zBLskE+iGxX*;lU5w0?oX!Sgxhy_CMelzAqOxrCMRCPd*V)yW`N|KrTH`dNOYy>;N+v+lhMu)KQ8_be~x103%_FS9$X6isX08;|()A?iHNL@^R%YzuhU z&1!{IpU*JpO^q@petF4q0t559+Z0GCaMAZ=2XwZ-c|(qu3K+vs%mcrVws$8nC;(tQ5{ak`($#i)!?4e8_* z89`MKj1aK*wU2R5@B zbF+^`!R_>Z4+M_7#O|3GKCx@5e3XO7Ulopj9l&1xXl%Oy9IW2-t3LcV?K#gS$Q0-J z7cWxosDT?8vB->%F9|kM=ae4RK zls;!a8e4gbvA;3yclmV z6vpzRe#GQl4yiUAUskRxsO5`P|kol=~wy{Fz@)O2-QhPj-U# zmXC>g9x{VK{yHQJgA~_*S>FEF zEC<)p%LWto%La4Nin^QCHf{4%dqMYv^lr+#G{v|+m@T%M*QE3 zjNjUMPP}!Qv9(Mu_w(C{_{qxpuVo+Ck%&!T_rs^^jpbVH6`I~@4&Hd$b>WCV$qo)A zN2Y?qa-|1*wi6R=3Y?D&SeB3>DUw;p)!`VVNLU|*IcH%Zmg%sp3nOzeb}^pIw!1Xq z0oES`MUk-hD5h}){*vSi<5$kV!{bF$l@7y7$uNOj3`M{J=Mu+fo3waYGccD1)|V&t zCNZ7x;7g;PnC89mI1fS2Qs}FeJaLd!b~qik5~fGd`Mp}2;VM6iN!(!1qrnB3@!ZJ> zQ~Ro;<%BqKU>67%&kj4*MaY2#dbwXFy_0oMaB;=e#_LrN)AD&R$rFX4`AM?|indx+ zg$JM1)D^3Od!#6^i0{kkiI>-w`|a^VhHUl-Y?hrbbuTQqo`%jVJ5YQdJg4S~6ex*87ombmm8pBCuuVMek5j2`|L zZs;X=m!rD3(qU$^%5i9>x#imrn>|z_!FXC)kiZ4zPY-os6;+49-d>;DWzEam`;G6d zx68b@bvyv!#Gyq@wZ8doKlv@d+}TR0W_Bw_bDoyX8$Z16a);?CngTwaVWU3d@7%QQ z2?`vqdTOdIbbVB_Z||pXXPav2SE%o6#i{4QEdVt!;Lzc3H-n#t-I#P8y!9>JCDEQJ zCOV@K1KP5P*uev_PCoz;3~F6U`z!>AtLQHg($J?ELw+!NNx!%LiE!s=*b(NI1eU}X z8~AuhXA>B#Qmz+@kyYzKRf&RQS%_3>|Gman7k0JgW2|Og3mhWd$M6%=Y5xHszr6aBG~t zKn@1VjU<2!W&1(?rEp2EH<5q*SBYAH|Em5oFOvZBFn8-C%gqMCp9zMVKP{4?jVna+ z_QD2Ae{EaB+3YAV;3fsO1|5@{o5kBw;c(#kDUl0?g=2fa1Rp@{&vFogt^A)^4o_eU zk#lrmoLi04oSu+4HngPMiw!-L`_n2N`TcJ8JstQLuJWOEV_%G z&}N{eZ@|NlNg>$8GRTulVJGmtLamz&C$W9_LhQZ^S%(y(_#(GYASHw2Xl^<8(b*Pl zKw9mzfr`d1Kd=&(r4E_dh?$dz4D`kl1*Vwbz;K25lR%yMCejT<6d+3xdupQ`&WnJl zc4JuGvHCpmpoI6onBt-A6x0bkqm*K6klE^4;jFDa$jfJ5CmGGJNh;rv)fb;S9V=OW z*&#mPi>DOyYI!sYniS^_+baQ!Caio~Muw z(~_@ReBu)EVm)IQCD6S0Gq^#dOlmvmIWA-RbMana#knWs;>*)BD*Ob;^WnCZ#q2k_ z89z1{W#4k7s)u?!ir*wu7RD3E2$>R z8+m)~27N+2X^HCt3b*3yR3z>W>DOOa8m*iam#Sv-LF40j#=hM@W}Ss_cnpzWIMknE z&yFy17XXQYz(+Jv{bFy|h&jJgEm=Kq`9a4bkFn8#Niu_49F&~4_F&|iRXZw3h3cUL zJ>(?9nyam|qFQ2q9L{Qb;oQu8UW{V@nEN1uMo<}(=7WTX%C@~l9~(Um|FAzq&Kbj3 zx22t3y*Y7FqtN?qmgg9DZZboov+}t9nwj|uf4T^=}`5((zady-v&s$!%8FpZFKm@O~nfv<;T%FW#TPOW&E>CF8+pq#Ea7+LAH1 z)R~b&{>S7v=xlyh_Kr$6in}jvQix79L}_qJ?o2=oj1zS)p@{}IzLkW84^kjUmR__Uy@4ioxh#33i5wclv208efwncjzHnsCxdCi!NuCnP(knP>%vBXk3`i*0V+PK#8?JqQS{gAV;+pLUoMNhU(O{mxEA0`732~7cL|+D-0APSV!vmI3=8QjJgFf%q7rn-EJ4850gHN-D*m}(6MiO{{2^m zP8W3rR*bmJqeG*|<7!lf(&mNTD~i54`aoL+EnslrO#EzMJ%srfwN!u1&4XSCKQW}o z#r@c{cHv0xdR2hpDxLB)A7dzW#40fPw&g}-A^MCExc?&-R9Jy17Pk3T*x>$Am0i}K zfM+^gX;uLgPhyNX6lu+UEOtUMLJgEkGNVXa^c@3XWwdo;!0~RLua>x$2T`Bd2Ws2f z_Bz-DY3`NFW9yf^cPx{4o*n@wB$0nvmB#b&NgzHUC@aISB4j;#SyPN-3%#7+x+Z#W z$W%qH#&p!lp+25=cYEfvGG@RyEikv0fE%M5w)#bOv5@D;C5_OekNx5TACpXumUCPi z8jxl^3%)rN&zZ`1|J>2cL@P%cqL=WqZI;AhX%`iE7FT& z63{ow7;x79;5r;qZNro2yks12^@4=U%P=Yvk&x^06XOf~zx2C5-VFL%^uM=Y0B;cxioCK9eA*|h{%=5- zGWn&E6W~%h@aglrJ3m4;=kJiAOnRh#4F;%hzHcaRJHws7 z9r(3SQ{p9yASi8+dG5>U>G~H=?v4T#r)PstK0fDnOL=qF&*KuS-_uycf^YoOyGa1n zv1=s!Ag|J`gFZ`P!EB*LCw~N{7BpPht3Gv;UTp|9wgd{sBZnsCh+&rZ?p_3qFr5g) z?%mzn%U(97!5F?IUc(}#YZoZY@2;n!;;~p#Ot=crK+CEZMgya4@QbIBOCiLtUVGk= z*m&QevP1?5+SU6JqXFO+Ew6QjpzJ`Ds9>?&(}aV1Co2*TMWg$WI=efs@q~Kyf^>Ni z;6lX1j1{Fk1XIsC-8-A>nr&_EC6)8Q%U=2#b})D5iUB2=oNM;7t4bhf#_R3B??RvK zc?+B=;UEYN}bmzV>b%06sN9TH8i?XfWP5Ej`kR765#z)qBpD zop6lQ3oR2b@Tmt33eXz?PXHVX+Zb)LrEquIE1LsJ!q-yPQcQS)=qI79>RZkAbUCZa zQWEecC?sw5RVd);QFa45r)8)sK>F&;pD*Wr$B8+?-Vt_mX*o>N7yZ`h_dg}+nF6=H z`?PK95u5=mVr1s%XTGujV*lsgOxF1+WRNaKL!VyEOrcGC=c`}C=;=e9WNBcm!&5J$Gm7p z;-ePTDg`h7ZbSWP%Rn>BG5KHGRPten`-O+{0VyXKyuQfSQK9?vN8~}t!fuql=X-jn zzf?^~9vMRi`k?`!pPSIhKBmZxL3Tx)im|jJ@sp9`F}~89&iL6+-z&4brD&Zf=;SyDu%rgX;KsyWE}J1e z6EJ~iyTF{eKt_E^PV9`|aSH1?H7d^S=;)9gv;XQf?XAg-OKHalZzM|Co6Vl5rSpj)3hw-&ozE%)}Jdz@~J4DgO_@x{ED3&c61QH4^ z%8C>8MBYAdJfLhqs{UJC>bN2D3`v}MrA}^oNL3Zwl4fz}-g-@qpDzV#S}Xn(@(3B-f$qgiEvVxA~$3}W2Mm9geRp>wr=jdssS zvGg3PQTFn%ad7L&LtSz$91e13-JR8eZN)N|WFM!x`8b&bL$nSoA3wpqt<9||Z~Y8D zZK}R~a`5KcqctNZn(M_HRO00gE9aiHtFG5gwV9O8{3#fxK;8tas-}C)Zu38`Z3vxm z$n1Hk-tuU+!6>Jf+^0(7A4N8Xt)#H`3GlR~C|O|+sb0H*G-%+jYdovslX*L0rh`(o z?m@UU`+}LLt=7=jQ?S5cy7{a4L{gLQnI8_R*<&HsT~v(paX#$cJ2?UY$wqzv+jAiy zp6wQkg0ozC>MLt~-X8QhuOqJ&M*~S3^X;2w-z?>A0(YSoUCIQW{?l6kVRcD3$@$@^ z(^mDj_GQ18D8bJ!*S$v-dY%kjZ?|TqFqhwz;2(fcRj9uq-Qt5Lt&|IysnGKVy^QW# z5b2{X4BENk14CF9zV=0?l1k-&1{Gjn=mpb21)#pa4Gbo&rG(h19ie}l2*rCX;F0!! z$b?)fl>L-L>XBnW2k$30%|IpKqxsnu;wA@E%H;fT$63Z)-9ISs|Fc1L2Gow zeNgS22>*LI;eVjOi~pmX@LwqK1F}9h0dcCryyV!O9)Mg%M}gnD_3gs~U?QY{Gy{X` zaf9;_4)Tw0Ae;UYU{L+~vGaNTzt>BY#(a8mZ6Q+77wzo*S$zlN&8)ThlEUGH6pIoG z!!CM#4&EvA`l^I0N!}{kDNaFLUtLPY4$8hxQ=0**(s3)@qHvvetFJRut+50+195_s zfQtD0_+;#0SMC8fp^>i`Za%dKpAhjULkz4-m)(IkFy@+bLb7v0z7+|N@RZ()VSs+I z6V1vC2zM{!^#nnXXPl~K@|~ppW1yI%I#Ktto2Ip8V$*U<7tvs{Ba6~ z(4k>4`hj>Pxt&$k`&Gw_KV-sF?{Dm0m5b^2WB?I5-qtT}0*9v21Gm55)I4y<+tU?s zce`x;Lm%@Y9VObgkDfHzP<!{p$APa3OV!Tke31s@V0y@=q zTn3>BZ;zcD`pUQ=57iOKL3wo;G>h_@hI z7bao?x`4Y7aW>C)RFBVV;-5T(WBIIs#($rLYX)?2Yn26Ht`#m=*!9S0b>WM*+G?kEm8?I$OaC_p* z86#|Ljix1BAJe<(P)(u7`7&Z-QE`9beCj})?`}1v#!$(D;17LOh)q1)N0q63S+W?^_PGayTB@%j8OqSM4Jvs5Q>8#N(PiGfG~} zHYr5elHki0sc>7Yo}gHDeJl~=a4+eNGHYNt9NiSH7zTk0yv5%)rF!8pvHMr<{lZu}&WGW0nlcRK8S#SY6kR zF00JLQj2_$O!8M187dwTrzj1f$MrhX;5?OtS6sUmp7-%_=dz*9cGz27(q)CAoMGaMF6mB|4Tnf6~=QrCj8l1tfyu7cNP^bb2_9pXR`cGp=pP^frm;Np#y-_ zj^_e?a(XMo|1U>@^TXT!FGc~dv;6qB^?LMQqd-(8eh&nbT_D3CWC1v*4GBbsYj~2p zxR`;@VNS(WQf##q2?RqByGeQ?TqgMm974b&jN&+2w2R?wGR0hSsJ!vi;WEQnyvGy5jiKu@kJ)7BbG$^rSx zm3kPOCF8F`)8r}z{u5HWw1&xZXUHYyd%G{tF1bNU6HxyNsWq!Nib+Ndi6exV-z{HL z5huyQla=%T^0H-~+cP885GWC1WzN9+T>!5~(IK@=4UN1!f^r~9ReXIi^5_Dn1-2`{ z0YGZkW!vs+$jY@>WC1IT7#~m&GwA?8YH6+oN-=2(OXpItx{ zV!VK&q)FNFJVyYO3B2i^eJCic_0~rSi3Ver)OAVYm^Tl&&nxjKs~uY@a!=qBYtFk~ zScN_k(_fKl(*6LIhHF=?RC_)q`!J^&_+{*Nq5!}aD@zLs!o9ae20^$cXj2Fi68hEq1%76LW zn9>t;K8>HlL74u2(@EK!%>LRYZ8V>suZy1ZebeT_mcxEXEWr5V+ZFkGSws6zk;`i+ zq3_c%a1iJ&GltAaTCiv4n8>jSR{4ugg2IFzKJbQihJM)JeWF__I zc^4BW#xQ4dv9I`dnRJbZ=HX#dz>MLxBLro*#&D<647hd9#|iRL^ZqaD-uxfR|NkGo zW*=i|>|<@L*^(`UH1=H-*)^8ziDZeE8OAOl*{iW;PZB~JYqCYDtVJSg(V{))8miaw z{(L^?e9!HBZr|Ja3+9(=9*@WKz82kAiPG%>c7)Mp(sV_vZvtlyO1xybPt^QSb_4Z$ z(kC566Bk^I3_UgV!AYM8PWm$;dYm#fw>K^ctG?o=*;k@;MK6o2$)0s8)E8 z!k6@l9PlY~hi>-A>A#YH>sjZ>ow%SXf%)De^xREwGo=is*z_)f-v0Z&Ycq0VnCP=f zap!)2e?Yt!f|MaaW+zkNKF?kJuJCI^cFs`48l5SHh%SFx=-6Ajsr=+TeJ~+Blm#y z>fWi55Ht#HDo1dc9f;DnBxSaAxSb5c$T3OS2Xr7KO>X%(jeU?D!B9$B>Wl+Ap5F4> z6>=5~dxs8A@9)d(;KKU<9v( zXgzF%5f+YP)jonRn8M9^^C8dtS9f-)k|IW$KYv<_zqHd!@W*2WyEYCtWcxWsTEElN z9+cp&)0m(vD%S`f$1<-0ur*IkyQ#}DhFr;X=)UsDE>s{PX+7VUjw1@KDrGeuj6bevte z90=@N{RZ}lf0Y^KAwevOs=tjT3ID>9Hq#;*5v1%Kb{Ia(0~GYp(1O;DSaj@lp#t!d z9`zoN9ALH>-*ZpmlBq07SQiHjRS_i^L68g_xEV_l45`j8$9`2rl;YvPv42{mw@|XJ zJ=UL}9LFB?f!xD!B7L3$sV|A?$q0DUx2D7VGB#wQajLy=MCT-2&Is_VIgKurMwNo1a{J1*`o1^zyPX zX)#B0AH7nXgNtrQv3$jlY%`%kTL@QaL(mT7On?g?e8u!0_mV}+|1u#(D2`D!YrP6f zBy3iVm%hw+3JR(_Sq(7zrJUp+m$3>NPP62SQ^ZukX2Lvfsnnc$htQ1Ko^{71Ymd47u}QEXl2mh|ELfgkW!Z$Etu@ z&2w*t0KqWgS6ilIzNKwoi$o-6jxU`-$Vx;vDdAmpzSb)qJu!5WMnW^iHKoGehLXxY zVQpB<4CIzRZgw>@Ksz-$`Qifisl;3EeZT(F zWbzVKjkl8RnEQn}jv}_qq2XkPUN_$j3H}=ctSNC!gE+>q`x)QmQ&X5O3jJuzHnxA4 zmeucmjEU`c3KI^Hi3IQHu3vYw{GU4-^kt?9?Q}xUFv)0D=l{~~f_F6K0QS(fC*+?E z*zeu-66SoCCLg>n+($kT0p8I;qVzjjd8PPQyW0O9_WwUYDtqi|2o&_qe-5PQ{daDG zNl!Y7f@V$s97uit1Eli5d`D{z+i(1aRPIK95MTi4jh)-rzw*L#6juLFW2X;XJLblP zj+t2eA;Y#f)N!IPFk)swhKN9?g#qy#RRJMBQvwZ+;8=T^ENcu(YT5V+AW+OifLzqj zM76`T1VJS(qK53AHYk6Zc6lfNp;y4+)=_>0A}(MK!f=L2PBmx>E6D6;wjiL~(oT~R z$dyKqi^q9~US%=Z5+Ond{A&tPg49NSM0oeLJNFa6Z1WA&zw(2<7{L|cXY!wP18J~| z9man}Z7ReeQbjBbJgcDVFmN%UygC zy$%o#eK}aoWjf|U{%~#^a{(ii_^t4N#Rsk_`H{{1LW00{IooNIW+{=-Qc@jT=B+XaaN1@oLkY&I zu_GGHP`jV*ClF>^`nBkc+?(+b$Y8y0YH|4JH=V4p#10HmwK@gJnd- z5%i0CTOvZl&=TQ;oh|eaO=q=SgX{pGltuNoW?iJg4rM5QRW*jaBp`Y}$Zu`MDUm5) zoRV1c-d1+k3T6o2ga6P_gJC%--h70M6+YAdhlz4S=1bMCz4Xenzz~ zb-cD@vZEvQ#Z$Yokfz5;sKsf%1Enp#X#^BiX&0J~#C%Ue$QD6fx$|21Jt4-%(vcVd z#tCm@HXrqgZb(rqJwC(m{}CUaUJdxB}N#mMSN_1B>sv#?Egi-7n`dC%33!L$<9hYty_ z)_`{@t#|rpNpTxd-8zzpt6U;2Qdx$rm+3-e*qYs`~qyq5d~(Mzkw;FL?KU zVa++{r4fax+INx;*YL@jfSn`%k0|ES)=>MQ4 zAxGm1Q6l=NNC+GMni~=pr&^S1s6Z`(awRO?i3QqP?M<&M*`&Qu~2%a zkh!!>?Wl)uWm#WN+4W4c>5zAI{tk2(FpB z<$CG0n{T_--(Ke+P0u!)Q!(XnM3c5Ec@$HNSwHCSpfs>V6A@i}WmY(fCAfh8* z-s9hHRojxt37>_t=@OM8&c;AszrrqkMYe7CMpo1N8=7ya<$|W7o5~)U{*_HVh%2B13;Gsctu}Bg zPTq~=@GQEiJFShj(B*+mQxR+h&>7^8LN;27UTb0&)) zrHO}+$3Fqt>R3kdtGqgK1$V7Gt{D&0Pmj8Sv*`N{iaF_)9OJ$~S81xV5{F0@`C;63 zFxmzm!hKkaBL@%Tvx2ZlVWGS^R2Z(4gwbqtc0GesD!(&>27Mv?Uult&EszN0sPm&Y z7ASN^dBlZpS1}TnkxU6GflrsOv4Zh@uE%L-rQ*0pH?eHOxCaLToN8yI1oePZ8Nj;t z*Xn4j2IKeI2I;GVcraocuGeRlnoo#l9cOgL!eqjRDH2vLuHz|@THm#jpLgWXN(`&e zX>1xFCu1cMu2@d;J&^w38x9KnvVR)#)zx9*>cYKUUJn!8@KgxvDC{?j4V8e)jSN_| zi%j#wfL_%if^UEonf;KL6rZ6GX-|5ND+RA(EHM+VbQoH8%ByEXQXvi*bxk`-70||2 zI9hD6*obMTVFuJ>0asYP$>FOBQ3c`9mrOi;b}v(XDy2D9f9N;xD9nV*1EOVK^{t(_ zOYS{N*$SE2n<7SPH_w-Kl(77i=>JJKCpO|3xeTKk_tvFfZ=vpp{G>>yvCD&W*qmvR z>TuZ%9bA6t5o)|tHPK&@2;PaoxW^yA&YyhYhe3INf+)$){!H<*81XyzWT8l(s~X z%aL0kj@3mr6M({)W>enqWyCzw_knQYk}fCiPrJ%6{`6~k-QC(rAJ1>CV@)}Ow;K^ve#fP2 z#@}Tey~FH(FXWrU@h|m_3Ki)mGy5jz)jnBv8CPilvox2hu+B7O4 z<+&f~JQ0>DGFLTlS|!bSypmf-#K$$XtNGwY_p>JQg@Fh~C`sJayEV6JPt5m#-&oxuK_RJ0;8m+Z1HV zIht)d-@aUnKWaJ~_Qj)v))sgi$@=@%1g^8o5I0D|FBnH1U4+MyXj?9co|<3mgG6dO z1%pKMDjEJ_AByAvD4Bt0UjiM*>5Jx&z>xx`-MceE$77x$q%#JMQjI&=TQ(2-vJEIiUpVL(R2=)} z%HHo;r{!kVrk^YB-?^ENpB8`gOr}=U{MKCTr>K#t^Kb?I!Ecm zJmwkaI*dvFRa^IYj8G|+z*Illwlys&!+Vu!Fz6|e*c3;IwFQI*lbpGP%ISl$5?9Er zNNwC2l<*6G4az16I4Ga7{^y`n66|b01`bLuZB1D(qp0+0c_RLeP-i4KD9J^>7gF6x zgdGGUn$Ns-$QZ`<9jXhhIAq|7(n;CGdIU@9ZrQpau^4UYFoi|+&`d`@blCHSmR4gR zoYB007{z$FgS_fZyd*@O#!8uD5uvq2w(0FX))Py@UPZA!Hno*qQ0lf z*D|PKB$IUPA+Mv3;I#Y#twSu*Av;dVImQZ(=Pt1)Y^Zlv+#DQ-Z7VeeK({)UnAMY# zcf*IDG$c@jpXm}%)mlBPY}mFGF%g2-ZAh00^a?i)vw72dq+Vty2$mhfBW&Al0pkkz zx=g8r`U<_!GL+uDn{u;h|4or`D~BKQwT`W*M#9Y;Lk9NPr^MRO#pAsvb>RCy@Rr*> zuj;@YNxvWkD2`YNFxJ2Gg)z%~IBUn$-fg#&Nrpx(<}+%cwF@X6+E2OFR7EPoNT;a6 z7^7DpR6(TQyLJIvtCKupnM~h0`DX>K-cWo@KJZT36<`XlIAVvixo>f4i1R|?QgxS& zj)ruk2BxLjq9C@Op4XsjCc#YOGlR=L>5m(r4EHdSo6OU zR-P1!X5eH>-x?EO;08V7T8u9H20>m3K+5@5T|ZoilfVu%C)Q zcCeDzL2uHm)GEfZl&*pSqgJ=J^eWt<_P0@NXKHHlt6zXkn%|xzsJulmBQ(&?^s6_Y z!nmu^BA@o`K3HAq%5vDy}PA3G_y0&VRLQh@ac^$y~>R%-#&d>I}o#{9}iH5A3$V0AKtrn z{^!J9PVnkIqO{YQPS>5A{{hw`VYRu5WR4>}Lu8Z;7=MJ6TX=j96nP6ru-k)8not*2 zE%Xj1Il{TG#dMK((x~G$T&!GfBb-3sipz&X*Q}hQ;@nvsK+T2RRMOsZ6sWnd{RC<* z@U@`kLc<1>`^uF?oucPY1Re7@DIlyz4eSg$fRub4VQhwlz{A)`neg3$@$OuPVCn=| z9)uT2UpBiF6&xscJVH*NS`-2iUD1*(p8X5+FLy38}6^G!RA7sviFDvmV z@Q%+(p9bq_$*PO|!Z|%DU8Mt;!V zb3v88SzrF(t@2}n2FJ!!v?l(-dsgNO^C6AzK~4P(WK}Wa z8Y-00P69I3o~F2adTzw+c}C*7`A_@UKEccDH=xJ@o+74CjbT`B=}A?SHK0KV)U^No*# zvJ&`htq=0|-8BOSdx<18t`v{k!_x_^kDKlm?ZyDtW>sIfsiIJrpTx%j8B=&;>eE;JRTJ zh&dQ>$(^0VYi8mA{mlE;HKkDCtemYRmR;DNfUMhXiP^Hu2FM!A%s4$wNUoY5QIb$Q zsfa)H{1jGx--gAZ)Ss-{+>dMoUP&HI`Nzzem-wK+=JR~^P*RD~_3T`I<@Y&m zmQ>}22Lt}|2DtV$hM=ojgD1`1c<0V^?|W=yKK~h>_dMyf^3DIOt_PS)3H0iE-Vao? z*`Mlq?1fU@Pj-p%_8)C=zUWCG#cv6Tw#0P_~~}jUWNU$ZDD1=g$l>l#?P9@KmLEy zwD%v?_5VZDUgdmU(=Tv^F0A|)xZ-wlh||I&-PgDG+Q+O??bPU!9|Dvs;+;= zPqv%*6?*kwR@dLE$U64->UzEhr(6G2*H5!F{Ik0LO-OU@sDo{=$Y7=zkV@Z{gxG zC6VmX&N5l;02(fi3yHvz#u@^reC8c8{B#HXqZuZ0Ps=aI_gCD^N*j_MrQlCy`9?0-zI`$LG9^*Z^J)1pE;B64R}tId7gm%@(gD{ zI4PDDBucs=hAuu_&S<_!{*cC$NJjC1wy3E)#oh4|C8d9F#on_qH*-PN6>yE?wgvLz zrQnjUQgpezU;S>yK3&ACJTEavR)4qP7Oz}3^D4tJ1Z>4V=r1>yW#!y3osIsWN;qsE zNpHn&DvQZ-e`@3e@wj>i54s|-F1p9NCBar~HiqIWaf30}&xXGlyRJp%0>iV83g#>n zCsejNgK`JTYXxY@Ha|C|!_Sz{@gKbfkhOMr_KIN4qHf#GvF`4wlP0B!-03pzIVP z?c%NN{p@{~}R-aRXQ~Hz{tN9G@FFX0q;uX61?D>ZFj)#u0?(2FU zxjTd*=c2#-)3baovG-4PuSVG97~{3zo$NJK_zsSMl)FAfRDE`((zTN_&ac)^?1<;f z-}?-F{OCND@zeZ(gEM|vVcatk5WR8zdTV&f@gljNoo}Pgs&}XJSGHr0pfA*Oj?YfL zMfPyQGzb6`Jc~q$EilkFv5P&S7rPFxHafvXQOxU4L4YP;8Ui!{Pg8)Ha{}>Rl&GUX zEoUr8Ud36dfXJm}cbFucC8U8}dlcj-#A*l#+9B=K&6B${Ia@A}46PE}m}s3SB|rfZ zHjVyJuY!Nhh}=tS?=5*v>2LynUzm--%&TaSd69ulTA1mW?SX*Xl}Y_)A4gn{u9l`~x_aJA`c*l$P@&j>y#sSv{GM}X-j z$s5Y|Os1%zV7fHW)fE83M5H)%8KxK={8Y-3p}2)A;!#C{uFwWa`43FQDhg_SP%>fd z{QkR&Ci9ms4mlb-BSEW&T&lAjhOLHwtRYJ10wdf@i`%`v^@maZ7H_R#*N&f>#zd^( z6QI=nMf=Tw;V2iTBTqJ^EXHLJq&G_ov0gCQA} z!q`icIN_!Tg;8wU+#r-G_;W2*Uwctkx)-GP6$*LJUN#;0giH}Ei>>hicez4&_SZTi z)zviK5aW^SA3j_+ygXu&*gI0lzqicd!sA1^#!s#dEtK2Rclpp7xDDZQ8h9bD0g{3WjI>uk7+A`%nMF zE`Qede9IVp;l`QQCNI8@|8LplZ>ms-`d@N2f9{e?zM14{I?Frpxm$JcW^!o%tl+mS z*}@<4ks9CZgdUGy6>R%pMB-aK73C&44fOQpvwHXclbFvX%`iLyIvhJJC zE98Em2UzAj>z`L{{<8UJmrr~d3>yS@dH-uou&#o{Qb$FZfx8^6t1z!C;2r>XIapVb zTvxQ~f86Efx65t*+U1^R%l7}{F3)uGuHRr`A0spMn1 zA+nCQJq{OGGpfkGXob!lT6GAOBetAA7_R#LX@_h3g`LfH6G~Nt`UBdfG69W-Z{1tH@I7sG4Pbq2*dW5QZPjsK1*fWHp}{@rHY#J z%^Gh*uktU82;R7Hi^>*y{ATN*)S;^SE#v2c)Jk=mEFb&LF2P(G#9*YZ&uuv^2N`G& z3u(1sz`OZ4k~fU7Ti@5q1zvOWmom9J`(?5(JS_189T_tCj;Rsw&OzZF3sHk!%`}c}A^+wQP zSwxpTT;~FjSm{@7$j(xa7Wp!P<{Tv<+c>{+UQu-=fZ<}1;|h3R4V~25Q&F>rEv}S~ z#IEtzaVx$8*Ycq}urXP8Tk)_-isCZN!hm>3p7G!Cj$aN-tdq~Ul&U;w?z-B*O)?aA-g$h<8LkDR#ZGSLb7SJPppvK?D%c%XhW=!R}-bkHtBHHp>+3C)&TDj*t-$ z>d2}f%C+-13)TJ-#icA!AbAF73Fa<4a31AB&HKc*YQyLXXI^4!A>ZK{kvVvSvd&1S6Rlb_N z#9+cG#QRW1hqt!s5=z>7-9JX>5EwH`R)5k8DopU0bvy@-27}{CP$fX$CyfN@o>w@u z%5pp#tWX9GG8%6{^JQrp4V$ll9w#B=MvJ6x>}rf^16buOa{1EMpt_S}FE4)W&!)Gb zW`v>8ZXNI(!OH(RN3=HS9m)|08;=Tp3YBtjU52wfD28x-B^_nM16Vm)0dIEwlsp*` zI}3%_4@J*bCHikgYNnXUreUHqid+k!HPs#a%mJ*f8`E>nJvL8wBe-S%7n?00C6x74UY+hN#>5(b83eO6;yn6wc&53Jvd?+ne1T3 z$$044P>H>6g)4{#7=1?8lrL4@^QmxCVuF>QmQErv49H5au@%z{0El?t=Jy ze=8=f|I&eKeE=+H+1hUW693siMGpbRpxORxH;vN3>Fw?IpvGNm zYr8EDi2?NOrcoBy5tFM98geiE3@VE$kA0Jcr@kOEhNrmv<@HKz~d>?b& zK51RbS~+%0nVoGipnmmP9r{^qunD)6W0dUjl3BQl+k>hI*xNdz#+sRqIQC2q@ucb6 zV-K&I<(l4k_p0Y2gTj&DLc*Udr>AFoG7cZ?XfX|%9ja(o;OFs@K;;Dx?Hn5=Jrr9LjCm|?b`lL55m4IByVr#kxSve{-#aX$pK<^W4|Z9Q3+3n8{a??_Pe-xTW<2+W3FGWZ zRO=q=P%ArJP9&ck+AaW_Au)6AvE}GY4EK1jKq!pu6~rj63r)I!s0^Bi^}kjao3Xln~95*H^>G<98_;wIW}K`)qV&5>$DWOHJar>b;CEG^H0` z8+`TPb#eMQk5_V@g1wh>$e8MEI`BxsC(m~&to-DSnT_jLYPvV2d{fxRU(J-quv|8g z_3p)SyZU@ov&fB`>J_+I&G5>nxK^1@x=Ny4rLz2ff&Jw}k5AIbo}eM;a{Z+Jx7GTX z-JY*6x*jT&-K$wp;a&H`%(ntH%@s4>cr_J4;su3-zkV|<2z&gj1-GcYkC#-q7-!VK8yVmk=sJ{F5 znIOFMqLZj%p^7dHo7#w_lh-8+mDO(DU0MSpBOka2H2 zLAQObPX^y$qT4>d|F(T<^k}mNHv)H9c9aX*8b?>&4S_bSv?=&s_-zO3N`GFy1D7mv40V9TFS z>&_@bV;hX3OASB@9jF1ic)-r1olL2bsvOf{EUplLFk1@_DyD}SjliM_2(s}_Fn0|g zBvF%csfrkJHL4x$5pd^Q84)dt-#KN4jTY~rA+1S&%$xKsMvl1LzGH)0S^<9-5_UkD zrwPMT`78=bc5oeS2*!CR7>x#roN2bz-FSpg7M$4%+sYm;gi3F2<4mfdAu&QsV89pu z=>@97OOK#EVOmTzv~E$^oAHg_IvC`7thjbSf?!zzygIInNtNIVAHKSJb%>yl+(s9M z?D)MvarszUje6pfhZHgsY1eE@q(~|4qErBseYXcpGRYz#?n4ip`#}#(4uB*Vk@V|A z!6Yw$@x62*`=KoT-ByEIg)+yw&U~isQoWdb!^&00(_8*6WJma&l^)rMJIY8n0Ch|f z_1EmVdu$1mEm}lkG|}K2o#Zd$CB*FCu=&vIrFg6+b>}>h23z||1S_`M9ex2ZPS zeZdA;$~XXEh)Fd`TF*B&9=F7il5S3~Ap@EQq{uAWy)IY0t?&e3k0UvY5P)Y!gi4`eDJN8) zLh}&{6c)A}c1ob$K&6nZnhi&Lon@+GqS3C*v@w)w2Jo69jbcApv$frR*m&&VyLpqB z0I<_&1|s$2+8CND#hA;$p8-wVSq zfQs6IU=E+A3FUW0qIL?pe@>ywxj?PKZnE7u_q}+_;)_bw-IS7frMCc8lSCZK=hcE` zW_9X_U$|~rB(?k6A9B?2QpT&r!&{O-!6(J*W4F=)ZSN^MplZQ;FF{~=FIZXVwfB&< z3#YVwt;dUAM1^bhR26Tg-R%VC+<|7NS*W0N*xFc2#I=tjT$9v;0Qfu&nONeR2lg#H1jVvM%p zq}wjambr{yE-up|L$LgKvCA@c@pDvNO3rbbxKov|vydjr1 z{gI+)DRtk2khHnJWckOxV-d#z5}f5rKzauL)S_ojQjDBL89e(BJPO9`Rl2Q^(gjVu zlt3jN+`4m{fo=9F>IOtLPOcR2P*Muc4r*7>1Glgh^-@eTT})u%(6(x>@h>q5fi4Eo z+7^S5(4cBAC1!6-QHnlf<|idi9~6VsViH;-K%ueMv{vqbPhI;hsjY`br*YstQQ%Bh z#joV8{4KjF0~4My6)pQr%JAcNWTYlAI6&_wS9691PNfUJT;Q{5}3Tz z`aC=}szSwU)1?d}*@xG~Y0!Dh7=ygs7Pnj1w3%#ec{fIn`EKbuEH}pADg=NJG((#` z!Us#we8L^r!KzfeAJ9V9cx1KR!V;}a(mM}02$C2Bi&EQJrA%2=$8^W=h=)EAOSRV+ zLDl}k-iiPzIwgwe41=|P1#_%_d^%V+p_%?9snF!Me!IGshUMpXeYNlUMC8aw#3)0< zz(d|Qa0azXVl>;nKInE6Iv(?c3L=qI+M2hhkETT)Kb;1h>|-_xg9yLD%FZyi`4T`H zbfx4LRqU;4pE?aLLnA|5s+?n*?HXjdxBTVW%UXj)zf6SzR7@wR_?!OG8LWdL70W!8 zhm4wq$@h$u2pYp3S=^yhhqN?1w+C_QC=yq(7Jvm}H~y7%oifMq_CQ*}`Z5 zzp$k4*!tP6$u&(z>Pniit+{G1h27Tywdn^HNWwd(4WQuMj+8+QF_vA|5oUvD!O0M~ z9E3@gXmJ!SBKFqH2xyt#3zMV4ni?y$lov18Bo)iVQ-pJvr!yLuj)nPk2r&x8*|kp2 zMcbzpG>FA!DqzI@!+A^(3o8o!!Fjmpmv9=S6;Rw7Y}RP2!2bg05$+;$(c|#xI1l4? zO38yu%z6de;;?+zR#5dJZb+6tHV!gHueJB824OxJ)p-q2+qP{%D<>+9_QErLM9s8hv-x-!-9M!YAIp z5m?BSpQJfhzoLwD-<<2qdhbKG)OZf095&{%=ef1`IP5@$^A#1Pj zmgoBmsVx=kv`r~54}wH5-|P{uSgEaBvd=9oO3NXj+pBw5ZiAMZ-4%lc;!?0-S)T;N zQ-8YFxwkyVU?`?pVowQHTgI`w1hmw=uAZ<=Yi%--f{w7@ZSL07!Jg0CP!MTP>(`SX z%C&xcrH?Mv=^}@2;WWJ>&RCTT5*e0^Oh9e_-Wiq@Z8V$Dl%osp}U&YI3&_fdba>_RnS+c3alQx!lYBfAAfq(FjQXfXykN^ z2ykNuNS*S*U&3KS$<}c-S^`V+QV2R-7u535!3#4w zNnmj~ohJ@fxIhF+9sInqj0U7O_6%I7e9gnNYq=uZh8UrTxPrB%QfQ=6Gb&W{yl{(nmY-*bt*d&~1#WrBVD~B%x3e0okKyC$7SvX16A9b5@#m zV^WMP#z7!{P!nY%65Ag#3^Tk{EZ{O#PH}1PjkNOP0}zLL54Rf!9^)_U#TnL#Y|y+^ zMm;pX0P#HOyLY%P=U`eSH@mprT@Z@{sQ_{Q<>Fz9{#jEf$xrjFcPUysQ3&*rmq4^(Y!hM3{(|D|(WN6N z=Oab-91K1PUd5!(%H20(zhoqwAg!Ko5t|r$gfKXGmIh;zYprAfaUSc;Kt{I-h|;q= z!=R-m_0Fa7LnI;iM0MECd4rNOODzj#H^M=tX!7szCuxvO$Zg=j){gmypXQeU*;Li* zcjd}2F5&-uWTSN^Q0qM9BUfPqINmw;kvC-7w)R-XRi{2sfc$62&?6hCz{(Z6vha6g zBfIoqQ~o-Vmb`QG0@GOFTz822xnhm6lb-$8#JIC9ou_4a-JP{xTL-|Ig%M_tdowtBYyN7cs{_Up&F1kc_Y3&o#f zSn?D&&-}FkPh!QW3X%Dl8}cI1ym5I^0=zZ?u}t9$obenvaaSBB%Osqgc$3kt@xtf4 zY?74Q(UUQXK451YN8M`(iodeB`?nfl@zo^@eaX3WE91pNeS|4!`6OIbbx-vy%Wuze z&+wkl_9`ix&+)6Ls}X9;x-a9lHxRAZ(Y1T=^)(VwN`e~nRgVl|lS_GhHQ?jE1$ty- zSx)pua4G%pre$cg&Mg#CW2BaHFTV@+F3CB$v{(x6m~u?Z?y>xKl4s&frLdR3HBc9^D4?quZ@Ez~ja}D7{FljxJN!N}o!9K!+iSRV?06 zE&bbYiAPHqi+-)xdUxU6XO;aq@BFkMfw7Ci$^1Y(rD%NUB24or_;Su}akq!v$C5M?h9o`~X#}AX95BFa)bmO}siaHjd$lPz^nb1eH>ItTqtuCQ+Nw&Gq@Rc8qzx*1{m)8&+9s*3s|!eeXh6GN;iUBg6BJK=amm24NL`?X@^Th2^J!d zjhiVSMTjfzq+U(@O*l?8b7SdptNzBVYPOYoq!B9^nh3>>9;^OrU%aJ8xNzK$K?j26 z8O?y3;UykEI>b2E{Eu;`o`1K;;kNeLTiTn)Vck$y^ z>d5bHA#*(zndi15lPku%F`Tm_ z6$dJK;k003P`h>~d=0y?Y|FymTh6Q=vN~4hJ6mu4O}W~!_SAmr?LKR1WXn;JcUK(h zWnZ+D#+ITZa564k5q#?A8vAOe%F}-5CT7b=ZJYdk^a`EnVdFQ-kAm2|!^xFFzLO^i zRS};SpSJ{~9-hrrTzk=;`daYK#HqJ0eRz_cS*GQ^mYyDPyIwgJy3s1-gW2?J(U>{) zc5?rT(B!LkM?U~ohpB`szGvU3EyIR3oo}7{`J}Dk>G^?dF{(XW_(+Bqhp7dG0kITo z;lUs^f0TmQFc6Bt_@lW(kKY~tEjSY`}k z%>7H&I06lTu;;1T*`T6}3msHhBxaK#YGphZ_Gvy4z3B2KI0Y(RfSWq9!HJ%|AR~BZ z%i{=Crn^{`-9y?#GfA z8LqkbD|lxYW#~)sB*pS}f>~TLOT`HcWiJ0dDF@HiJpvD^Cub6v2zO|zs0if=anLu8xgxxvS=81 z1k-br1w=Ca-a^@JiG&-{j3WwcQd>GYs>!W;D(`94f~IIXP?YXKw_I+5T79kDi1#ep zYfAU*@UO}&xa^5D^HA{b?Hr*_cNGxO+A^T~Uw8{ukD34pNv=D_U zSwoUl+kg@Fae<|j#-QjE_*wPHFW{49Rsc%^pDasO_$K<3Wv?F$v-z+K+H@@79J3@1 zgikurSiB7u=TO_IAjj1xvkl0nsBtp2G47*|(Q^~o%@3korXd?OHh1M$riInPU@ad) zH*1CkVwY(?VcUp#k@rj?!Ig**9lD7cZ6G zq6$S|X(b833;}43b-?8fbGoK7E+X2Pd@VrJXFYCt~KWiTNYF(5`Qjp zZ?gr_eFuo<@XA4;Oxn<0hYUIOP@Axw1yzaWHDX;HcDKlRicWj@4MmOy=#nMaFZOF> zF2cvU^RfdX+;odDXf=Ibf-5q#PiN{W6%q8a*3leK`_`*>AeMs!g*8s16-WyDi;vF( zogxgUNM>TE_AmljZ9;Z6G~RJ)49Xg8-B2^jYa=1#B(CtK(S|_xZoUqBMi12J?XD&s zSCp6(lvPmWQoY4wOmnuh!*^Dk%=cHpMG5tOR^}9aLLsj~m^Q|TGC*BIW(2KgNI?%+ zd3^ammBZSWs}lm2T{+XO0$ifONeZu~9+`5I5)eC1Lq}igxTV~@!2B-QdLoj=HUOrO zZh31@Vz$8dPihr`Ra_S#VXGXZTyWz7*l!;^)u@~5MIO3#A6 ziBV*!x15--RCkTk@X*Q?Wb6;;g-v~=sCb38ti62W)1C-w*FsyC^q3=FfZDaM(yiCC zZ=C(qcQlxjTeJ>SLqeHOL-|yHZy_+fHw|(hk^=~DZ6OF6UPJx2{z)Qm8kw+F6M0jl zgN)z5Re7OD<~YQnM9;pu2uPTg67eN8x@po;mF}lRN>ol7)h+a0)6xNPvARNNj`j&z zI0G#T#lm0eGvyQP`=r9|Zo+CWXXWTk!4~_j@FT~^tI#|eX5;nSG4oS>&wShAJC&FW zd2ZjJGsMzI66D$tZPDCddT;hS?fYCv8xR*$bdJf|>uas^uc(>kkhp1Wk1~Gih35m! z4R2r2&a3QBz(+-;Ge&JyUeMEfVb{W_p93Qqinr5yr`UGzZ=wMg!n?O%dhaJe!8SN5 zinAJwZ2WmD3W3qZKD>4y(uE6$JsR?m$Nh!>_A$>NhS&bG`fTTU9x#~@#vucC>lV=i zu-bS^9d+D#+CT?e52*)?H=*${>H#k!W7SG)usl9YX-G)IXz13gB(b2Gi6jcUAf60> z%_oLh+j8T{2HHuMRa%~)=>q6XXW(4#5Cj!I-Hc4DG;N{8bcn&(L_=+Hkz}ej7K{@B z+ih75L5(Vt#23Bl?_>*iI~j&<&@(btly+~OXEqA-5}?dUsgIw!WLBpwQK zkByr&I<_;@R?>Wvn#&HG_LAXc+`%wsUOH zfpEeRic}pmeJc+u>FQSr2DILm33I*VuZun(ak<9?Zq989K<3BQiA{nP@f_h9Em=e zwFTNk3zM~TI>40QfDTUmmGKJD??gfiOA!b79<}6uru&^(KXRN{`C5BoOO`D6w)?jK zUR$y*v;BvZkIeSC_0DWd+NP!64nm`r0kdm!>4y`#{i#vf6lP)(z}})ljS&%fr+dTT zqR?BckRr1xk8C3`hUYB?qJNo&kiFr5ypuPUQ8K`^e(dZz%_*~v|B zc$VuwG1@OHH)G86m>mm}H=eHecRgBH`VgiFeJ%=#=Q$&}!|7d~|Hw1GU0525HJ>!g ze}8{WCH4Pm>`L6BUi{6U zI9kx&U=k8a$yN-Vl8zIl(sRzK_cy5Lyw7u8@Adu%^PPL&28Y8` zdujaIkesCnIPR3M2Pdl`nAWOHf6cZ ze#jFf$Zar~dg!I}G5@Zjzg22VufNis0#ep_{aV{cf$kp*e{%myVvOtg2gVWj|Fvn8 z!Y1jf7*}PUMqI|YSC$~gB`srI`ZC7R*RuYNaR&STAlq@*vdb8{3M&{#NH8q1`y|=} zgYjHm^z5~ON+=i(!);r1Mq~qw@;x3Z(A}Furrl%LwKk4ji#n!hKd&a_@S~qUk?oDr z^S+vdF1sIe!uzbW0s_cQa{-@SQ;GXKi=)?%KP=gHOs-*{Xu6Aq|7WewtrjrN@5mNQ zz$EBxqo7s2Ym)9aKkbZ`+3;;kRqAR&xoPApO*9z=w0#jUhW?#U-m%-+tj#>W8xYj4 z#L_;-M-B9qeLpLy*5oJvq)JX;;zTQD5v)lzLdh9i3KySGz>_D{6eXlCXWkD4scUv5 zvhX=G@<&;Od4!Jmkx*?`@B`!MS}#^(o%o>x2{_lTGE`^)9c4jT4f(T(L=?<0LD%L2 z=-Sk9UVSs%pf6m;xa5ohU3J@nbH>><3<61y0gtt!17~n3sv=k7@^WzxGqX}6I&5-9 z#kh%2{o$*iUS9j3mWr^GOznuIy6=-hV3V;B3i`i6P|M79Tmv%i6=2)U@I~`~u+~G5 zOgk6^uy#S5;mX=Aqeo@zBCo$@ULi)dYfAI;evBXjZ`EP3E0Fc0JECcTDGvF2M?SqI zjg>y}bV1WnNC^wZ>o+lflX0^#ffEn*V*F%XNtiHY#BG|2w1?8UHvoe77afMf2vl4| zQA=RbAH5#hv?Ufy`kMKq2C7IuWd(@mwR z-SE7BegCe7qygTZWUav`@o106h`;PVH;o?dM`~j5{t>YE9=FS zbz|I@*|AMU=pcE!2Yl+J8eVBj10f88xb>x2X?~sQq?nlw)iTl$NuVxqzuvWMnyD|x z>Q6os4qZcH(!G&;vdtB_p_inu0KT+WXY+0x)k9do8_x8LCjW$rU?k(mzMa!!7L~qQ z5~n1c4^ZjSH@)s$Ua(7sU@UMt@{;cx7}9cVxp%I3)?ECoGn6Be+KXXJ7|fV#tiQf%?Gd-T)km4`>&c zl!2*D(Mp-20Dpid_PiBlw?BdH+ROqN%vz8)FrfLRg8MVZprZ~%vx;QszRQ%Qa&P)* z%gK*ZvA4MK<8b1vQ@{;xHXThVS1>C!e(M8p$zP{H+qI*yJxLJ z+m72B{Ab_7UrRGLe-mRLZ-)VG>YpLopnv`E!1)BXQ?q{M5OYBAW#X)iI2=$GadQ7r zxQ{#wen*x^O&~|jh?18s#ve=^m6@g|K|@et&)aYrC)Bof42ntc0#YS!@~6|c)?v!` zZVEI6@1a|()z~1XYmu?C1}+XyXPm}r#RK}XpAW`zeB(X9D>KV8d#51^yfXj()7ajd zY=dQ82WsTLKz=;znZ6WROC8Z?)y4)Ae8J#peI*Da+;$#F*A6fEVLcnq^DXpGzuXab zN)I~$61#NIRbp58-EE>^OB1t8-A^EzQqR8L!&!6XUtNO$7*oVT%Gv;LA-M6ACDk@U zBB=QuI8{g799y@l`L6qEaev$+wzv=c)8a0ce1kcte448I0$4tFZ?R!)y);LBWgfG0 z>?}E46Ae=kh}Xa$>@F-0YOUzW>QM6f0F(WT0Kna{d6QCkHzh#@c=3oBV>0LDt@vVg zcbJ*jxE#o_Y<3485Eo)WVTNV6qO3d7H|F(AsqzF1t8O{)jo?HMSOK z;N=aBh6IPGs#hE8*3;EKeFqKpPP{IPG_%v*D^e?9}0cW9^@-ul>#6?|FGV@AED z8GE;aQ5}qrUyY0$lCba6Z#KwVW6lyonMjjsB3TPkyo{!c=7)maW|kPsZ&oe0z5fnb zCspur%nQ>RVA3aPnp3RMqoInNvJPHo^JtoaZU5TrU^e){vu!{_HSw``_%>iz*6O;2 z8F&Nc_pmR1?;@z;`yNQbmq@2^%^0a*04`HN>D80pj++rn;M!ZR0H6epZp&Fx91Ug} zt{L(=@-c-ZgMq;0Ep;U~(1j|_68F@cL(D*0SGJ}3qT+BM`Uqif4Y>x+O2J|ytJV;& zyxwB5c#cEU^AU&v)79yieJ=;Gq1q(BVAf+9F!k6f>r?hGYrzH3H4crzv!nPZ=)lzz zBRheZ1W%b__}byfH0J&R#@y$;&TXHx?V~v8*4utsEE6?}ZD0+y;efUcu0J+xu#ak! z-(3=Hb9{-B@N%(}8s2l!!hEJ3_UGn4g~%NB!JO=^W%G#RJ$Slu%A0Lpy6twy9<|)@ zw+x?tT8L%+>p>~Se1^_gbV$vAQz7=R|6=EO$Myg6uS+|n{dz5;+Eem}0uCakWiufG zz`j*@1;e0!UWh^A8+=*#=C1E?lYfMlw9&mI1MFJ1Tw<0B5BF>M@Vc_A8?!(|Py`Aq z=;qQ~S|TLF+5NJcWxv6dxRV3Pq|4qGDd8iVQkWI%-+jHxe_ZDxL6Ogm(B4z)Smkhs zHo#7~XE@Wm1PvKP9;pLO?F#-)As2*O+(zY+QV^@~dvwAuu+ zV}^#Pf(l_n_#|gxt94m-j7q*xyy(E4`zCnDHzk=HLB0aN&=^j*Q)L zW~b*rzd!!Voa?=qZ*RW-GT}!-8J8bAs>pds_YV_50I8wcTrhx@qwM$W6X=9Ks%DLy=u4?B87oygr_rL8rl&kxt=;Vxd@$~-d%jPLm4CteU50B4?~ZiUWWn!__!o!2?kqO^lZ0pW?Z^tK)Ju1T|gm1MXIJEwKA%vbe+#gK!oouTELOqRiVh++VUj#aY$t@ zZ9fDgMrZ5lTTK0HeqJEJ-vl2r0!aiY0D$;TXNArzpwc=tyskQ$Ua+A*?T&S?wyJMF z6=_v#cl67@9yt|F`$nfZs9v4q4d03Dd*Ly^)xl`PnEOe~xR|(;r&zIPkA4vOjURpLOp^$Fufl&)Y@?<4^mCChr`mEP7S*I^egwH=T1YW@mn17+aiX z4ZJ&?#r*JR!5~yrkkju;JPY}h*p@dy-L57}K&xR5>w9#8`3 zx=&|e=-P4_lzvB>0%w`dYVIZ$Mw9vWDb@SH)ls#?7-OwcuHGQv&F%M^BRQFAm=!W2 zOmd&j5u=ank2@ntR5)crIeo@2Ifbokdp;eB;=s(6gA#MW!D24t=2aZw`d0fvFohRO z%kXlkmUX$(cm+f=Fa0JOR#;LkgM%{JEqLrBEIbm|)?>LcmWvm(1D`+ZSKD+>m1X=Sk5(o7^XZe_{f}Oy^qi~N#_x3Fxp<4*9vtl1& z5j_XLHgdsg9}FB;ZxQEg%fX&OQ%IZlHBA5*>g}$o$sOGrEC5=dknd=@k~oI~)&M#s zkcSY;@=4AJvO;ZioYL>V!U&wD7&)o&QyQC!?0Tr?Gogs*O-r*2=d_c$7>_psTGQ9b zx+eA2p*OzSwNBK=#GHv8P`^SMe+*tI?>?!x<`7z*^!K;|sEMT=E|3<-!ppwt9x)Kuhf=rnq zy4eziTNJe*V{}v&<{kb)&$pbW#a{Utqd+XwsRM_{iiejdD}Mvw1(d$AY5-=TgoH54 zZjWT|l{MLY+Kji$gfame%MHL*}csyg`b^RaNGCg&nH)M>=C*wC*|@ofEmf73Sm6vRy+%4cPKO|4q>& literal 0 HcmV?d00001 diff --git a/docsrc/manual/shortcuts.rst b/docsrc/manual/shortcuts.rst index 01f5b01c..0acd894d 100644 --- a/docsrc/manual/shortcuts.rst +++ b/docsrc/manual/shortcuts.rst @@ -38,10 +38,10 @@ Main Window :header: Map Editing :widths: 20, 20 - Select Tiles From Map, Hold Right-click while dragging + Select Metatile, Right-click in "paint" or "fill" mode + Select Multiple Metatiles, Hold Right-click while dragging Bucket Fill Metatiles, Middle-click from "paint" or "fill" mode Magic Fill Metatiles, ``Ctrl+`` Middle-click from "paint" or "fill" mode - Select Metatile, Right-click in "paint" or "fill" mode Zoom In, ``Ctrl++`` `or` ``Ctrl+=`` Zoom Out, ``Ctrl+-`` Reset View Scale, ``Ctrl+0`` @@ -52,8 +52,9 @@ Main Window Draw Straight Paths, Hold ``Ctrl`` Duplicate Event(s), ``Ctrl+D`` while selected Delete Event(s), ``DEL`` while selected - Select Event, Right-click in paint mode - Update Event Selection, `Ctrl+` click + Pointer, Right-click in "paint" mode + Select Event, Left-click in "pointer" mode or Right-click in "paint" mode + Select Multiple Events, `Ctrl+` click From 273dbaa94f57924d247eed619f96095764c30db5 Mon Sep 17 00:00:00 2001 From: BigBahss Date: Fri, 2 Oct 2020 22:31:44 -0400 Subject: [PATCH 8/9] Prevent ruler activation when right-clicking event in paint mode --- src/ui/draggablepixmapitem.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/ui/draggablepixmapitem.cpp b/src/ui/draggablepixmapitem.cpp index a293aba6..d920662d 100644 --- a/src/ui/draggablepixmapitem.cpp +++ b/src/ui/draggablepixmapitem.cpp @@ -63,13 +63,15 @@ void DraggablePixmapItem::mousePressEvent(QGraphicsSceneMouseEvent *mouse) { last_y = pos.y(); this->editor->selectMapEvent(this, mouse->modifiers() & Qt::ControlModifier); this->editor->selectingEvent = true; - if (!this->editor->map_ruler->isAnchored() && this->editor->map_ruler->isMousePressed(mouse)) { - this->editor->map_ruler->setAnchor(mouse->scenePos(), mouse->screenPos()); - } else if (this->editor->map_ruler->isAnchored()) { - if (mouse->buttons() & Qt::LeftButton) - this->editor->map_ruler->locked = !this->editor->map_ruler->locked; - if (this->editor->map_ruler->isMousePressed(mouse)) - this->editor->map_ruler->endAnchor(); + if (this->editor->obj_edit_mode == "select") { + if (!this->editor->map_ruler->isAnchored() && this->editor->map_ruler->isMousePressed(mouse)) { + this->editor->map_ruler->setAnchor(mouse->scenePos(), mouse->screenPos()); + } else if (this->editor->map_ruler->isAnchored()) { + if (mouse->buttons() & Qt::LeftButton) + this->editor->map_ruler->locked = !this->editor->map_ruler->locked; + if (this->editor->map_ruler->isMousePressed(mouse)) + this->editor->map_ruler->endAnchor(); + } } } From 9c57a5bc46b2a29d7c68769917216223089c793f Mon Sep 17 00:00:00 2001 From: BigBahss Date: Sat, 24 Oct 2020 07:45:08 -0400 Subject: [PATCH 9/9] Refactor MapRuler event handling --- include/core/map.h | 1 + include/editor.h | 3 +- include/ui/mappixmapitem.h | 2 +- include/ui/mapruler.h | 54 ++++++++++++++----------- src/core/map.cpp | 1 + src/editor.cpp | 43 ++++++++++---------- src/mainwindow.cpp | 14 ++++--- src/ui/draggablepixmapitem.cpp | 16 +------- src/ui/mappixmapitem.cpp | 6 ++- src/ui/mapruler.cpp | 72 +++++++++++++++++++++++++++++----- 10 files changed, 133 insertions(+), 79 deletions(-) diff --git a/include/core/map.h b/include/core/map.h index 867b5bc8..4d34a071 100644 --- a/include/core/map.h +++ b/include/core/map.h @@ -113,6 +113,7 @@ private: signals: void mapChanged(Map *map); + void mapDimensionsChanged(const QSize &size); void mapNeedsRedrawing(); }; diff --git a/include/editor.h b/include/editor.h index 62b3d339..fc8cfe26 100644 --- a/include/editor.h +++ b/include/editor.h @@ -198,12 +198,13 @@ private slots: void onHoveredMovementPermissionCleared(); void onHoveredMetatileSelectionChanged(uint16_t); void onHoveredMetatileSelectionCleared(); - void onHoveredMapMetatileChanged(const QPointF &scenePos, const QPoint &screenPos); + void onHoveredMapMetatileChanged(const QPoint &pos); void onHoveredMapMetatileCleared(); void onHoveredMapMovementPermissionChanged(int, int); void onHoveredMapMovementPermissionCleared(); void onSelectedMetatilesChanged(); void onWheelZoom(int); + void onMapRulerLengthChanged(); signals: void objectsChanged(); diff --git a/include/ui/mappixmapitem.h b/include/ui/mappixmapitem.h index deed73d8..e9d999b4 100644 --- a/include/ui/mappixmapitem.h +++ b/include/ui/mappixmapitem.h @@ -89,7 +89,7 @@ signals: void startPaint(QGraphicsSceneMouseEvent *, MapPixmapItem *); void endPaint(QGraphicsSceneMouseEvent *, MapPixmapItem *); void mouseEvent(QGraphicsSceneMouseEvent *, MapPixmapItem *); - void hoveredMapMetatileChanged(const QPointF &scenePos, const QPoint &screenPos); + void hoveredMapMetatileChanged(const QPoint &pos); void hoveredMapMetatileCleared(); protected: diff --git a/include/ui/mapruler.h b/include/ui/mapruler.h index 7d0be579..0ee6e698 100644 --- a/include/ui/mapruler.h +++ b/include/ui/mapruler.h @@ -1,40 +1,40 @@ #ifndef MAPRULER_H #define MAPRULER_H -#include +#include #include #include -class MapRuler : public QGraphicsItem, private QLine +class MapRuler : public QGraphicsObject, private QLine { + Q_OBJECT + public: MapRuler(QColor innerColor = Qt::yellow, QColor borderColor = Qt::black) : innerColor(innerColor), - borderColor(borderColor) + borderColor(borderColor), + mapSize(QSize()) { init(); - setAcceptedMouseButtons(Qt::RightButton); } void init(); QRectF boundingRect() const override; - void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) override; QPainterPath shape() const override; + void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) override; + bool eventFilter(QObject *, QEvent *event) override; - // Anchor the ruler and make it visible - void setAnchor(const QPointF &scenePos, const QPoint &screenPos); - // Release the anchor and hide the ruler - void endAnchor(); - // Set the end point and repaint - void setEndPos(const QPointF &scenePos, const QPoint &screenPos); + void setEnabled(bool enabled); + bool isAnchored() const { return anchored; } + bool isLocked() const { return locked; } // Ruler start point in metatiles QPoint anchor() const { return QLine::p1(); } // Ruler end point in metatiles QPoint endPos() const { return QLine::p2(); } - // X-coordinate of the ruler left edge in metatiles + // X-coordinate of the ruler's left edge in metatiles int left() const { return qMin(anchor().x(), endPos().x()); } - // Y-coordinate of the ruler top edge in metatiles + // Y-coordinate of the ruler's top edge in metatiles int top() const { return qMin(anchor().y(), endPos().y()); } // Horizontal component of the ruler in metatiles int deltaX() const { return QLine::dx(); } @@ -44,30 +44,38 @@ public: int width() const { return qAbs(deltaX()); } // Ruler height in metatiles int height() const { return qAbs(deltaY()); } - // Ruler width in map pixels - int pixWidth() const { return width() * 16; } - // Ruler height in map pixels - int pixHeight() const { return height() * 16; } - bool isMousePressed(QGraphicsSceneMouseEvent *event) const; - bool isAnchored() const { return anchored; } - - bool locked; QString statusMessage; +public slots: + void mouseEvent(QGraphicsSceneMouseEvent *event); + void setMapDimensions(const QSize &size); + private: QColor innerColor; QColor borderColor; + QSize mapSize; QRect xRuler; QRect yRuler; QLineF cornerTick; bool anchored; + bool locked; static int thickness; - - void showDimensions(const QPoint &screenPos); + + QPoint snapToWithinBounds(QPoint pos) const; + void setAnchor(const QPointF &scenePos, const QPoint &screenPos); + void endAnchor(); + void setEndPos(const QPointF &scenePos, const QPoint &screenPos); + void showDimensions(const QPoint &screenPos) const; void hideDimensions() const; void updateGeometry(); + int pixWidth() const { return width() * 16; } + int pixHeight() const { return height() * 16; } + +signals: + void lengthChanged(); + void deactivated(const QPoint &endPos); }; #endif // MAPRULER_H diff --git a/src/core/map.cpp b/src/core/map.cpp index 3db6daeb..02cd15f8 100644 --- a/src/core/map.cpp +++ b/src/core/map.cpp @@ -353,6 +353,7 @@ void Map::setDimensions(int newWidth, int newHeight, bool setNewBlockdata) { layout->height = QString::number(newHeight); emit mapChanged(this); + emit mapDimensionsChanged(QSize(getWidth(), getHeight())); } void Map::setBorderDimensions(int newWidth, int newHeight, bool setNewBlockdata) { diff --git a/src/editor.cpp b/src/editor.cpp index 759df8f2..619abe3a 100644 --- a/src/editor.cpp +++ b/src/editor.cpp @@ -25,6 +25,8 @@ Editor::Editor(Ui::MainWindow* ui) this->playerViewRect = new MovableRect(&this->settings->playerViewRectEnabled, 30 * 8, 20 * 8, qRgb(255, 255, 255)); this->cursorMapTileRect = new CursorTileRect(&this->settings->cursorTileRectEnabled, qRgb(255, 255, 255)); this->map_ruler = new MapRuler(); + connect(this->map_ruler, &MapRuler::lengthChanged, this, &Editor::onMapRulerLengthChanged); + connect(this->map_ruler, &MapRuler::deactivated, this, &Editor::onHoveredMapMetatileChanged); /// Instead of updating the selected events after every single undo action /// (eg when the user rolls back several at once), only reselect events when @@ -913,8 +915,7 @@ void Editor::scaleMapView(int s) { } } -void Editor::onHoveredMapMetatileChanged(const QPointF &scenePos, const QPoint &screenPos) { - QPoint pos = Metatile::coordFromPixmapCoord(scenePos); +void Editor::onHoveredMapMetatileChanged(const QPoint &pos) { this->playerViewRect->updateLocation(pos.x(), pos.y()); this->cursorMapTileRect->updateLocation(pos.x(), pos.y()); if (map_item->paintingMode == MapPixmapItem::PaintMode::Metatiles @@ -928,18 +929,22 @@ void Editor::onHoveredMapMetatileChanged(const QPointF &scenePos, const QPoint & .arg(QString::number(pow(scale_base, scale_exp), 'g', 2))); } else if (map_item->paintingMode == MapPixmapItem::PaintMode::EventObjects && pos.x() >= 0 && pos.x() < map->getWidth() && pos.y() >= 0 && pos.y() < map->getHeight()) { - this->ui->statusBar->showMessage(QString("X: %1, Y: %2") + this->ui->statusBar->showMessage(QString("X: %1, Y: %2, Scale = %3x") .arg(pos.x()) - .arg(pos.y())); - if (this->map_ruler->isAnchored()) { - this->map_ruler->setEndPos(scenePos, screenPos); - this->ui->statusBar->showMessage( - this->ui->statusBar->currentMessage() + "; " + this->map_ruler->statusMessage - ); - } + .arg(pos.y()) + .arg(QString::number(pow(scale_base, scale_exp), 'g', 2))); } } +void Editor::onMapRulerLengthChanged() { + const QPoint pos = map_ruler->endPos(); + ui->statusBar->showMessage(QString("X: %1, Y: %2, Scale = %3x; %4") + .arg(pos.x()) + .arg(pos.y()) + .arg(QString::number(pow(scale_base, scale_exp), 'g', 2)) + .arg(map_ruler->statusMessage)); +} + void Editor::onHoveredMapMetatileCleared() { this->playerViewRect->setVisible(false); this->cursorMapTileRect->setVisible(false); @@ -1018,6 +1023,8 @@ bool Editor::setMap(QString map_name) { if (!displayMap()) { return false; } + map_ruler->setMapDimensions(QSize(map->getWidth(), map->getHeight())); + connect(map, &Map::mapDimensionsChanged, map_ruler, &MapRuler::setMapDimensions); updateSelectedEvents(); } @@ -1149,16 +1156,7 @@ void Editor::mouseEvent_map(QGraphicsSceneMouseEvent *event, MapPixmapItem *item } } } else if (obj_edit_mode == "select") { - if (!this->map_ruler->isAnchored() && this->map_ruler->isMousePressed(event)) { - this->map_ruler->setAnchor(event->scenePos(), event->screenPos()); - } else if (this->map_ruler->isAnchored()) { - if (event->buttons() & Qt::LeftButton) - this->map_ruler->locked = !this->map_ruler->locked; - if (this->map_ruler->isMousePressed(event)) - this->map_ruler->endAnchor(); - else - this->map_ruler->setEndPos(event->scenePos(), event->screenPos()); - } + // do nothing here, at least for now } else if (obj_edit_mode == "shift" && item->map) { static QPoint selection_origin; static unsigned actionId = 0; @@ -1245,6 +1243,7 @@ bool Editor::displayMap() { MapSceneEventFilter *filter = new MapSceneEventFilter(); scene->installEventFilter(filter); connect(filter, &MapSceneEventFilter::wheelZoom, this, &Editor::onWheelZoom); + scene->installEventFilter(this->map_ruler); } if (map_item && scene) { @@ -1318,8 +1317,8 @@ void Editor::displayMapMetatiles() { this, SLOT(onMapStartPaint(QGraphicsSceneMouseEvent*,MapPixmapItem*))); connect(map_item, SIGNAL(endPaint(QGraphicsSceneMouseEvent*,MapPixmapItem*)), this, SLOT(onMapEndPaint(QGraphicsSceneMouseEvent*,MapPixmapItem*))); - connect(map_item, SIGNAL(hoveredMapMetatileChanged(const QPointF&, const QPoint&)), - this, SLOT(onHoveredMapMetatileChanged(const QPointF&, const QPoint&))); + connect(map_item, SIGNAL(hoveredMapMetatileChanged(const QPoint&)), + this, SLOT(onHoveredMapMetatileChanged(const QPoint&))); connect(map_item, SIGNAL(hoveredMapMetatileCleared()), this, SLOT(onHoveredMapMetatileCleared())); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index b599705e..45037f10 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1357,7 +1357,7 @@ void MainWindow::on_mainTabBar_tabBarClicked(int index) editor->saveEncounterTabData(); } if (index != 1) { - editor->map_ruler->endAnchor(); + editor->map_ruler->setEnabled(false); } } @@ -2215,13 +2215,15 @@ void MainWindow::on_toolButton_Shift_clicked() void MainWindow::checkToolButtons() { QString edit_mode; - if (ui->mainTabBar->currentIndex() == 0) + if (ui->mainTabBar->currentIndex() == 0) { edit_mode = editor->map_edit_mode; - else + } else { edit_mode = editor->obj_edit_mode; - - if (edit_mode != "select" && editor->map_ruler) - editor->map_ruler->endAnchor(); + if (edit_mode == "select" && editor->map_ruler) + editor->map_ruler->setEnabled(true); + else if (editor->map_ruler) + editor->map_ruler->setEnabled(false); + } ui->toolButton_Paint->setChecked(edit_mode == "paint"); ui->toolButton_Select->setChecked(edit_mode == "select"); diff --git a/src/ui/draggablepixmapitem.cpp b/src/ui/draggablepixmapitem.cpp index d920662d..cde101b1 100644 --- a/src/ui/draggablepixmapitem.cpp +++ b/src/ui/draggablepixmapitem.cpp @@ -63,16 +63,6 @@ void DraggablePixmapItem::mousePressEvent(QGraphicsSceneMouseEvent *mouse) { last_y = pos.y(); this->editor->selectMapEvent(this, mouse->modifiers() & Qt::ControlModifier); this->editor->selectingEvent = true; - if (this->editor->obj_edit_mode == "select") { - if (!this->editor->map_ruler->isAnchored() && this->editor->map_ruler->isMousePressed(mouse)) { - this->editor->map_ruler->setAnchor(mouse->scenePos(), mouse->screenPos()); - } else if (this->editor->map_ruler->isAnchored()) { - if (mouse->buttons() & Qt::LeftButton) - this->editor->map_ruler->locked = !this->editor->map_ruler->locked; - if (this->editor->map_ruler->isMousePressed(mouse)) - this->editor->map_ruler->endAnchor(); - } - } } void DraggablePixmapItem::move(int x, int y) { @@ -85,10 +75,8 @@ void DraggablePixmapItem::move(int x, int y) { void DraggablePixmapItem::mouseMoveEvent(QGraphicsSceneMouseEvent *mouse) { if (active) { QPoint pos = Metatile::coordFromPixmapCoord(mouse->scenePos()); - emit this->editor->map_item->hoveredMapMetatileChanged(mouse->scenePos(), mouse->screenPos()); - if (this->editor->map_ruler->isAnchored()) { - this->editor->map_ruler->setEndPos(mouse->scenePos(), mouse->screenPos()); - } else if (pos.x() != last_x || pos.y() != last_y) { + emit this->editor->map_item->hoveredMapMetatileChanged(pos); + if (pos.x() != last_x || pos.y() != last_y) { QList selectedEvents; if (editor->selected_events->contains(this)) { for (DraggablePixmapItem *item : *editor->selected_events) { diff --git a/src/ui/mappixmapitem.cpp b/src/ui/mappixmapitem.cpp index ce4611af..0e02545d 100644 --- a/src/ui/mappixmapitem.cpp +++ b/src/ui/mappixmapitem.cpp @@ -723,7 +723,8 @@ void MapPixmapItem::draw(bool ignoreCache) { } void MapPixmapItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event) { - emit this->hoveredMapMetatileChanged(event->scenePos(), event->screenPos()); + QPoint pos = Metatile::coordFromPixmapCoord(event->pos()); + emit this->hoveredMapMetatileChanged(pos); if (this->settings->betterCursors && this->paintingMode != MapPixmapItem::PaintMode::Disabled) { setCursor(this->settings->mapCursor); } @@ -746,7 +747,8 @@ void MapPixmapItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { emit mouseEvent(event, this); } void MapPixmapItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - emit this->hoveredMapMetatileChanged(event->scenePos(), event->screenPos()); + QPoint pos = Metatile::coordFromPixmapCoord(event->pos()); + emit this->hoveredMapMetatileChanged(pos); emit mouseEvent(event, this); } void MapPixmapItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { diff --git a/src/ui/mapruler.cpp b/src/ui/mapruler.cpp index b3c8cd3d..ed404176 100644 --- a/src/ui/mapruler.cpp +++ b/src/ui/mapruler.cpp @@ -1,8 +1,8 @@ #include "mapruler.h" #include "metatile.h" -#include -#include +#include +#include #include #include #include @@ -46,17 +46,71 @@ void MapRuler::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidge painter->drawLine(cornerTick); } +bool MapRuler::eventFilter(QObject*, QEvent *event) { + if (!isEnabled() || mapSize.isEmpty()) + return false; + + if (event->type() == QEvent::GraphicsSceneMousePress || event->type() == QEvent::GraphicsSceneMouseMove) { + auto mouse_event = static_cast(event); + if (mouse_event->button() == Qt::RightButton || anchored) { + mouseEvent(mouse_event); + event->accept(); + return true; + } + } + + return false; +} + +void MapRuler::mouseEvent(QGraphicsSceneMouseEvent *event) { + if (!anchored && event->button() == Qt::RightButton) { + setAnchor(event->scenePos(), event->screenPos()); + } else if (anchored) { + if (event->button() == Qt::LeftButton) + locked = !locked; + if (event->button() == Qt::RightButton) + endAnchor(); + else + setEndPos(event->scenePos(), event->screenPos()); + } +} + +void MapRuler::setMapDimensions(const QSize &size) { + mapSize = size; + init(); +} + +void MapRuler::setEnabled(bool enabled) { + QGraphicsItem::setEnabled(enabled); + if (!enabled && anchored) + endAnchor(); +} + +QPoint MapRuler::snapToWithinBounds(QPoint pos) const { + if (pos.x() < 0) + pos.setX(0); + if (pos.y() < 0) + pos.setY(0); + if (pos.x() >= mapSize.width()) + pos.setX(mapSize.width() - 1); + if (pos.y() >= mapSize.height()) + pos.setY(mapSize.height() - 1); + return pos; +} + void MapRuler::setAnchor(const QPointF &scenePos, const QPoint &screenPos) { + QPoint pos = Metatile::coordFromPixmapCoord(scenePos); + pos = snapToWithinBounds(pos); anchored = true; locked = false; - QPoint tilePos = Metatile::coordFromPixmapCoord(scenePos); - setPoints(tilePos, tilePos); + setPoints(pos, pos); updateGeometry(); setVisible(true); showDimensions(screenPos); } void MapRuler::endAnchor() { + emit deactivated(endPos()); hideDimensions(); prepareGeometryChange(); init(); @@ -66,18 +120,15 @@ void MapRuler::setEndPos(const QPointF &scenePos, const QPoint &screenPos) { if (locked) return; QPoint pos = Metatile::coordFromPixmapCoord(scenePos); - QPoint lastEndPos = endPos(); + pos = snapToWithinBounds(pos); + const QPoint lastEndPos = endPos(); setP2(pos); if (pos != lastEndPos) updateGeometry(); showDimensions(screenPos); } -bool MapRuler::isMousePressed(QGraphicsSceneMouseEvent *event) const { - return event->buttons() & acceptedMouseButtons() && event->type() == QEvent::GraphicsSceneMousePress; -} - -void MapRuler::showDimensions(const QPoint &screenPos) { +void MapRuler::showDimensions(const QPoint &screenPos) const { // This is a hack to make the tool tip follow the cursor since it won't change position if the text is the same. QToolTip::showText(screenPos + QPoint(16, -8), statusMessage + ' '); QToolTip::showText(screenPos + QPoint(16, -8), statusMessage); @@ -134,4 +185,5 @@ void MapRuler::updateGeometry() { statusMessage += QString("0"); } } + emit lengthChanged(); }